Slice-Priority beim Anlegen + `/move`-Endpunkt für Slices
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Inizia da lib/RoutePackage/Structure.php, rex_content_service::addSlice() e moveSlice(), nonché dai test esistenti in tests/StructureApiTest.php e tests/BackendApiTest.php. Confronta il comportamento dello spostamento con rex_api_content_move_slice::execute() e verifica l’attuale validazione del body e i controlli dei permessi. Il lavoro è completo quando la creazione di slice basata sulla priorità e l’endpoint di spostamento funzionano sia per le route API sia per quelle backend, con test che coprano validazione, permessi, risposte e comportamento ai limiti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Übernommen aus #50 von @marcohanke. Der fachliche Zuschnitt stammt vollständig von ihm; der Branch ist gegen main konfliktbehaftet, weil lib/RoutePackage/Structure.php in #58/#59/#60 umgebaut wurde — deshalb hier als Issue festgehalten, statt den Branch nachzuziehen. Die Tests aus dem PR-Branch (tests/StructureApiTest.php, tests/BackendApiTest.php) lassen sich übernehmen.
1. priority beim Anlegen eines Slices. Optionales Body-Feld für POST /api/structure/articles/{id}/slices; ohne Angabe unverändertes Verhalten. rex_content_service::addSlice() versteht den Schlüssel bereits (content_service.php:15-22): ohne Angabe wird angehängt (MAX(priority)+1), <= 0 auf 1 normalisiert, danach läuft rex_sql_util::organizePriorities(). Kein neues SQL, kein neuer EP.
2. POST /api/structure/articles/{id}/slices/{slice_id}/move mit Body {"direction": "moveup"|"movedown"} als Spiegel von rex_api_content_move_slice::execute(). clang_id und module_id kommen aus dem Slice-Datensatz, die Permission-Kaskade für Session-Aufrufe ist moveSlice[] → Kategorie-Perm → Modul-Perm. rex_content_service::moveSlice() erledigt den Rest (SLICE_MOVE, organizePriorities, rex_article_cache::deleteContent(), art_content_updated) und ist Bearer-tauglich: getUser() fällt auf rex::getEnvironment() zurück, kein requireUser(). Der Backend-Spiegel entsteht automatisch über RoutePackage/Backend/Structure.php.
Gegen den aktuellen main zusätzlich zu beachten:
- Slice-Bodys werden seit #58 strikt geprüft —
prioritymuss in der Body-Definition stehen, und der move-Handler sollte ebenfalls mitgetQuerySet(..., true)parsen. checkLiveRevisionPerm()fehlt im move-Handler: ein Move in Revision 0 ist ein Schreibzugriff auf die Live-Version und braucht bei Backend-Usernversion[live_version].- Die Message aus
moveSlice()kommt HTML-escaped ausrex_i18n::msg()— vor der JSON-Ausgabehtml_entity_decode(). - Statuscode an der Grenze (
moveupauf dem obersten Slice): der PR nimmt 422, die Konvention im AddOn ist 409 für fachliche Verstöße (Clangs::errorResponse). Einmal festlegen.
Bewusst ausgelassen (so von Marco begründet): priority per PATCH /slices/{id}, absolute Positionen, move-to-top/move-to-bottom.
Dieser Text wurde durch eine KI erstellt.
- Lingua principale
- PHP
- Stelle
- 20
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di FriendsOfREDAXO/api
-
Medien löschen hinter Web Application Firewalls blockiert (Pfad enthält /delete)Forse già presa @skerbis l’ha presa 6 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
FriendsOfREDAXO/api#84 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
FriendsOfREDAXO/api#83 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
FriendsOfREDAXO/api#81 ·
-
checkMediaPerm(): Ziel nicht geprüft bei Verschieben + keine Kaskadierung auf UnterkategorienAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
FriendsOfREDAXO/api#80 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
FriendsOfREDAXO/api#65 ·
Tutte le issue di FriendsOfREDAXO/api
Issue simili
-
sync-en
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
coollabsio/coolify#12299 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Automattic/blocks-engine#3369 ·
I maintainer di solito rispondono entro 1 giorno
-
0. to triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 67/100
roundcube/roundcubemail-docker#478 ·
I maintainer di solito rispondono entro 1 giorno
-
0. Needs triage 35-feedback bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno