Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#62 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
php
Área
api, backend

Línea de trabajo

Comienza con lib/RoutePackage/Structure.php, rex_content_service::addSlice() y moveSlice(), y con las pruebas existentes en tests/StructureApiTest.php y tests/BackendApiTest.php. Compara el comportamiento del movimiento con rex_api_content_move_slice::execute() e inspecciona la validación actual del body y las comprobaciones de permisos. Se considera terminado cuando la creación de slices consciente de la prioridad y el endpoint de movimiento funcionan tanto para las rutas de API como de backend, con pruebas que cubran la validación, los permisos, las respuestas y el comportamiento en los límites.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Ü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.

Lenguaje dominante
PHP
Estrellas
20
Forks
0
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de FriendsOfREDAXO/api

Todos los issues de FriendsOfREDAXO/api

Issues similares

Más issues de PHP

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.