Medienkategorie verschieben (`parent_id`) fehlt in der API
还没有人认领这个 Issue。
评估
调研方向
先阅读现有的 media/category/update 路由和 rex_media_category_service::editCategory(),后者目前只接受 name。在选择使用更新参数还是移动路由之前,跟踪 checkMediaPerm($user, $categoryId)、分类缓存以及扩展点 MEDIA_CATEGORY_UPDATED。完成的标准是:验证源和目标权限、防止循环、更新父级、使缓存失效、触发扩展事件,并补充文档。
由索引模型根据 Issue 内容生成。
描述
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_idinupdateoder eigenemove-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_UPDATEDoder neu:MEDIA_CATEGORY_MOVED) - Dokumentieren, dass dies bewusst über Core-Parität hinausgeht (Ausnahme von der "nur spiegeln"-Regel)
- 主要语言
- PHP
- 星标
- 20
- 派生
- 0
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
FriendsOfREDAXO/api 的其他 Issue
-
Medien löschen hinter Web Application Firewalls blockiert (Pfad enthält /delete)可能已有人在做 @skerbis 于 6 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
FriendsOfREDAXO/api#84 ·
-
难度 3/5 1-2 天 新手友好度 65/100
FriendsOfREDAXO/api#83 ·
-
难度 4/5 3-5 天 新手友好度 45/100
FriendsOfREDAXO/api#81 ·
-
难度 4/5 3-5 天 新手友好度 55/100
FriendsOfREDAXO/api#80 ·
-
难度 4/5 3-5 天 新手友好度 55/100
FriendsOfREDAXO/api#65 ·
查看 FriendsOfREDAXO/api 的全部 Issue
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 90/100
EasyCorp/EasyAdminBundle#7875 ·
维护者通常 2 天内回复
-
[Sync EN] PDOException::getCode(): document the int|string return type可能已有人在做 @lacatoire 今天认领。 未关闭sync-en
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 1 天内回复
-
sync-en
难度 1/5 1-3 小时 新手友好度 78/100
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
coollabsio/coolify#12299 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复