Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Slice-Priority beim Anlegen + `/move`-Endpunkt für Slices

Aperta
#62 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
php
Ambito
api, backend

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 — priority muss in der Body-Definition stehen, und der move-Handler sollte ebenfalls mit getQuerySet(..., true) parsen.
  • checkLiveRevisionPerm() fehlt im move-Handler: ein Move in Revision 0 ist ein Schreibzugriff auf die Live-Version und braucht bei Backend-Usern version[live_version].
  • Die Message aus moveSlice() kommt HTML-escaped aus rex_i18n::msg() — vor der JSON-Ausgabe html_entity_decode().
  • Statuscode an der Grenze (moveup auf 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di FriendsOfREDAXO/api

Tutte le issue di FriendsOfREDAXO/api

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.