{# # PAGE: SCORMIA — ÉDITEUR DE MODULE (design « CODE V1 ») # Shell 3 zones : topbar · sommaire (gauche, repliable) · canevas (centre). # Le sommaire, le canevas et le panneau thème sont RENDUS PAR LE JS # (contrôleur Stimulus scormia--editor) — le template ne fournit que les # conteneurs cibles. Page-outil plein écran : sidebar app masquée. # DONNÉES REQUISES (ScormiaEditorController::editor) : module, moduleJson, blockTypes, presets, themeCss #} {% extends 'base.html.twig' %} {% block title %}Scormia — {{ module.title }}{% endblock %} {% block show_sidebar %}false{% endblock %} {% block main_class %}p-0{% endblock %} {% block body %}
{# ===== TOPBAR : retour + titre (gauche) · statut + Thème + Aperçu + Exporter (droite) ===== #}
{# `shared--share-trigger` : le bouton « Partager » plus bas vit dans cette barre, la modale est incluse en fin de page. Stimulus n'acheminant une action que vers un contrôleur ANCÊTRE, ce relais est indispensable (cf. share_trigger_controller.js). #}
{# Réglages du module (seuil de validation du quiz) — popover ancré, fermé au clic extérieur / Échap. #}
{#- `scormia-exporter` enveloppe les TROIS sorties du module — Aperçu, Partager, Exporter. L'étape parle des trois, et n'en éclairer qu'une laissait les deux autres dans l'ombre du voile au moment même où on les nomme. -#}
{# Partager — MÊME modale que la bibliothèque, ouverte sur le même endpoint. Le bouton porte lui-même les quatre attributs lus par `shared--share-link#open` (`data-uuid`, `data-shared`, `data-download`, `data-share-url`) : ici il n'y a ni carte ni menu partagé dont les recopier, il EST le déclencheur durable, et #writeBack y réécrit l'état après chaque réponse du serveur. `data-download`, pas `data-share-download` : le second est le nom porté par les CARTES de liste ; `open()`, lui, lit `dataset.download`. #} Exporter (ZIP)
{# ===== CORPS : sommaire (aside) · canevas (main) + hamburger flottant, backdrop drawer, panneau thème ===== #}
{# Sommaire — 330px, repliable ; l'arborescence est rendue par le JS dans `outline`. #} {# Hamburger flottant — visible seulement quand le sommaire est replié (le JS échange hidden ↔ flex). #} {# Backdrop du mode drawer (< 900px) — le JS l'affiche quand le sommaire est ouvert en écran étroit. #} {# Canevas — fil d'Ariane + carte du nœud courant, rendus par le JS. #}
{# Panneau thème — overlay caché par défaut, contenu rendu par le JS (lib/theme_panel.js : presets + persos + galerie live). #}
{# ── Modal de confirmation : suppression d'un nœud du sommaire (organisme partagé) ── #} {% embed '_organisms/delete-modal/delete-modal.html.twig' with { title: 'Supprimer cet élément ?', modalAttr: {'data-scormia--editor-target': 'deleteScreenModal', 'data-action': 'keydown.esc@window->scormia--editor#cancelDeleteNode'}, cancelAttr: {'data-action': 'click->scormia--editor#cancelDeleteNode'}, confirmAttr: {'data-action': 'click->scormia--editor#confirmDeleteNode'} } only %} {% block description %}

et son contenu seront supprimés définitivement (un chapitre supprime aussi ses sous-chapitres).

{% endblock %} {% endembed %} {# ===== Modal : partage public (molécule partagée avec la bibliothèque) ===== #} {% include '_molecules/share-link/share-link-modal.html.twig' with { endpoint: path('app_scormia_share_update', {uuid: '__UUID__'})|replace({'__UUID__': '{uuid}'}), accentHex: tool_color_details['scormia'].primary } only %} {# La modale média (lib/media_modal.js) rend son propre DOM dans — aucun conteneur ici. #}
{% endblock %}