Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Medienkategorie verschieben (`parent_id`) fehlt in der API

未关闭
#54 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
php
领域
api, backend

调研方向

先阅读现有的 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_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)
主要语言
PHP
星标
20
派生
0
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

FriendsOfREDAXO/api 的其他 Issue

查看 FriendsOfREDAXO/api 的全部 Issue

相似的 Issue

更多 PHP Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。