GeotrekCE / Geotrek-admin

Paths management for National Parks and Tourism organizations
https://geotrek.fr
BSD 2-Clause "Simplified" License
132 stars 76 forks source link

[Page Statique v2] Ajout type Élément de Menu (`MenuItem`) #3918

Closed marcantoinedupre closed 6 months ago

marcantoinedupre commented 8 months ago

Je propose d'introduire un nouveau type d'entité Élément Menu (MenuItem).

Objectifs :

séparer les concepts actuellement portés par le modèle Page Statique

L'implémentation actuelle du modèle Page Statique embarque plusieurs concepts différents :

Ce travail d'ajout de fonctionnalités pour les pages statiques est l'occasion de séparer ces concepts et clarifier ce modèle. Le modèle Page Statique conservera uniquement le concept d'une page éditorial et de son contenu. Le nouveau modèle Entrée de menu (MenuItem) portera le concept d'une entrée de menu dans des menus arborescents avec une possible cible définie (page, lien interne ou externe, page des actualités).

implémenter l'arborescence de menu

Les objets Entrées de menu seront liées entre eux de façon arborescente, soit au moyen d'un champ "parent" ou avec l'implémentation fournie par une app Django comme django-treebeard ou django-mptt-admin. L'intérêt d'une app Django est de bénéficier d'une vue arborescente dans le AdminSite.

Maquette de l'interface admin: vues listes + formulaires

Pour l'arborescence suivante :

Types de contenu :

La destination
-- Le territoire (P)
-- -- Article territoire 1 (P)
-- -- Article territoire 2 (P)
-- -- Article territoire 3 (P)
-- Les actualités (A)
-- Agenda et animations du parc (L)
-- Blog (P)
-- -- Article blog 1 (P)
-- -- Article blog 2 (P)
-- -- Article blog 3 (P)
-- Se déplacer sur le territoire (L)
La randonnée à la journée
-- Inspirations (P)
-- -- Article inspiration 1 (P)
-- -- Article inspiration 2 (P)
-- Nos itinéraires (L)
Infos et bonnes pratiques (P)
À propos de la marque Territoire (P)

Et les pages hors-arborescence :

- FAQ
- Mentions légales

Image

(fichier zip avec maquettes Excalidraw)

Champs de formulaire pour les modèles Page Statique et Entrée Menu

Inventaire pour donner une idée de la séparation entre les 2 modèles :

Champs de Page Statique (modèle FlatPage)

Champs de Élément Menu (modèle MenuItem)

Migration depuis l'existant

pas de rétro-compatibilité de l'API

protections/contraintes

Certaines propriétés actuelles (visibilité, cible web/mobile, publication(?) ) devraient se propager du parent vers le bas de l'arborescence. Par exemple : ça n'a pas de sens d'avoir des Élément de Menu enfants visibles si le parent ne l'est pas. Je propose de limiter l'édition de certains attributs aux entités de premier niveau (c-à-d sans parent).

questions fonctionnelles

marcantoinedupre commented 7 months ago

Implémentation d'une arborescence pour les pages

Suite discussion il est acté que les pages seront organisées dans une arborescence de pages. Il y aura donc deux arborescences d'entités : l'arborescence des menus et l'arborescence des pages.

La différence par rapport à la conception précédente est qu'une page ne pourra avoir qu'une seule page parente.

marcantoinedupre commented 7 months ago

Quelques éléments pour la migration [pages statiques] vers [pages v2 + menu items]

Si les 2 champs « Lien externe » et « Contenu » comporte des données idéalement la migration devrait être stoppée et l'anomalie remontée pour résolution préalable.

marcantoinedupre commented 7 months ago

Notes sur le champ « Cible »

marcantoinedupre commented 7 months ago

Notes sur la notion de page publiée

camillemonchicourt commented 6 months ago

Fait dans la 2.104.0 (nécessite Geotrek-rando 3.19+) avec la création d'un objet "Elément de menu" complémentaire aux pages statiques, et qui pilote donc le menu désormais. Voir doc : https://geotrek.readthedocs.io/en/latest/usage/static-pages.html