FriendsOfREDAXO / FriendsOfREDAXO/api
Medienkategorie verschieben (`parent_id`) fehlt in der API
- Dominant language
- PHP
- Stars
- 20
- Forks
- 0
- Avg merge
- 49m
- Merged PRs (30d)
- 17
Description
## Was soll erreicht werden
Eine Medienkategorie per API (Bearer + Backend-Session) in eine andere Elternkategorie verschieben können, z. B. `parent_id` optional in `PATCH media/category/{id}`, oder eigene Route `media/category/{id}/move`.
## Problem
`media/category/update` akzeptiert nur `name`. Grund lt. Code-Kommentar: Core kann `parent_id` nicht ändern. Stimmt — geprüft: `rex_media_category_service::editCategory()` liest ausschließlich `$data['name']`. Es gibt dafür in Core weder UI noch Service-Methode.
Weil die API bewusst nichts anbietet, was Core nicht kann, bauen Konsumenten (z. B. unser `mediapool3_demo`-Addon mit Drag&Drop-Kategoriebaum) das jeweils selbst nach: rohes SQL auf `parent_id`, eigener Zyklen-Schutz, eigene Cache-Invalidierung — am API-Addon vorbei, ohne Extension Point.
## Warum
Kategorien per Drag&Drop umstrukturieren ist ein gängiges Bedürfnis für jede Custom-Medienpool-UI. Aktuell baut das jeder Konsument einzeln und uneinheitlich nach, statt eine zentrale, getestete Implementierung zu nutzen.
## Was muss gemacht werden
- Route/Parameter festlegen: `parent_id` in `update` oder eigene `move`-Route (sauberer, da "update = 1:1 Core-Spiegel" von "move = bewusste Erweiterung" trennt)
- Validierung: Zielkategorie existiert, kein Verschieben in eigenen Teilbaum (Zyklen-Schutz)
- Rechteprüfung `checkMediaPerm($user, $categoryId)` für Quelle **und** Ziel
- Direktes Update von `parent_id` (kein Core-Service vorhanden)
- Cache-Invalidierung: alte Elternkategorie, verschobene Kategorie, neue Elternkategorie
- Extension Point feuern (`MEDIA_CATEGORY_UPDATED` oder neu: `MEDIA_CATEGORY_MOVED`)
- Dokumentieren, dass dies bewusst über Core-Parität hinausgeht (Ausnahme von der "nur spiegeln"-Regel)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading the existing `media/category/update` route and `rex_media_category_service::editCategory()`, which currently accepts only `name`. Trace `checkMediaPerm($user, $categoryId)`, category caching, and the `MEDIA_CATEGORY_UPDATED` extension point before choosing between an update parameter and a move route. Done means validated source and target permissions, cycle prevention, parent updates, cache invalidation, an extension event, and documentation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100