{% extends 'base.html.twig' %} {% block show_sidebar %}false{% endblock %} {% block body_class %}overflow-hidden{% endblock %} {% block title %}{{ presentation.title }} — Slidia{% endblock %} {% block meta_description %}Modifiez et exportez votre présentation Slidia en PowerPoint.{% endblock %} {% block og_title %}{{ presentation.title }} — Slidia{% endblock %} {% block og_description %}Éditeur de présentation Slidia — personnalisez vos slides et exportez en .pptx.{% endblock %} {% block twitter_title %}{{ presentation.title }} — Slidia{% endblock %} {% block twitter_description %}Éditeur de présentation Slidia — personnalisez vos slides et exportez en .pptx.{% endblock %} {% block body %} {% set sdColor = tool_color_details['slidia'] %}
{# Données JSON — pas d'attribut data pour éviter l'échappement HTML #} {# TOPBAR — LE MÊME DESSIN QUE L'ÉDITEUR SCORMIA, avec les données de Slidia. Mêmes métriques (26 px de marge, 14 px de hauteur de barre, boutons de rayon 10 px et de texte 13 px), même ordonnancement — retour et titre à gauche, état d'enregistrement puis actions à droite, une seule action pleine et elle est la dernière. Les jetons neutres sont recopiés dans `.sde-topbar` (assets/styles/pages/slidia/editor.css) ; l'accent, lui, reste celui de Slidia. Porte `shared--share-trigger` : le bouton « Partager » vit ici, alors que la modale est incluse en fin de page. Sans un ancêtre portant ce relais, Stimulus n'acheminerait pas son action (cf. share_trigger_controller.js). #}
{# Gauche : retour · liste des slides (mobile) · titre · nombre de slides #}
{# Mobile uniquement — ouvre la liste des slides #} {# Le titre suit son texte (`field-sizing`, cf. `.sde-topbar__titre`) : étiré à `flex-1` comme chez Scormia, il pousserait le compte de slides au milieu de la barre, loin du titre qu'il qualifie. Scormia n'a pas ce voisin et ne voit donc pas le problème. #}
{# Droite : état d'enregistrement, puis actions — la seule pleine est la dernière #}
{# Mobile uniquement — ouvre le panneau d'édition #} {#- `slidia-exporter` enveloppe les TROIS actions : l'étape parle de Présenter, de Partager et d'Exporter ensemble, et n'en désigner qu'une laissait les deux autres dans l'ombre du voile, au moment même où on en parle. -#}
{# Bouton Partager — ouvre la MÊME modale que la bibliothèque. Il attaque `shared--share-link#open` DIRECTEMENT, sans passer par un `openShareModal` d'outil : ces relais n'existent que sur les pages de liste, où ils recopient le jeu de données de la carte cliquée vers un déclencheur partagé. Ici, il n'y a ni carte ni menu commun — ce bouton EST le déclencheur, et il porte donc lui-même les quatre attributs que `open()` lit (`data-uuid`, `data-shared`, `data-download`, `data-share-url`), rendus par le serveur depuis l'entité. Le contrôleur les réécrit après chaque réponse (#writeBack écrit sur le déclencheur inconditionnellement), si bien qu'une réouverture reflète l'état courant sans rechargement. `data-download` et non `data-share-download` : c'est le nom lu par `open()` (le second est le nom porté par les CARTES, écrit par #writeBack). #} {# Markup TEL QUEL, et non l'atome bouton : celui de l'éditeur Scormia est écrit à la main, avec ses propres métriques. L'atome ne sait rendre ni ce rayon ni cette graisse, et l'approcher par un variant donnait un bouton voisin mais jamais identique — or c'est l'identité qui était demandée. #}
{# Topbar mode audience — visible uniquement quand .sde--audience est actif (CSS) #}
{{ presentation.title }}
{# Overlay — fond sombre derrière les tiroirs mobiles #} {# BODY 3 colonnes #}
{# LEFT — liste des slides (tiroir sur mobile) #} {# CENTER — prévisualisation #}
{# Slide preview — prend tout l'espace disponible #}
{# Notes de l'intervenant — alignées sur la largeur du centre uniquement #}
{# Zone cliquable toggle (toute la partie gauche) #}
Notes de l'intervenant
{# Bouton Générer — séparé du toggle #}
{# RIGHT — panneau d'édition (tiroir sur mobile) 380 px et non 280 : à la largeur précédente, « Choisir une image » passait à la ligne dès que la rangée portait aussi les deux boutons de génération, et les zones de texte n'affichaient qu'une poignée de mots par ligne. #}
{# Template rich editor — cloné par JS pour chaque champ body/obj #} {# MODAL layout picker — [hidden] gère display:none nativement #} {# ── Modale Bibliothèque d'images ──────────────────────────────────────── #} {# ── Overlay plein écran (mode audience) ─────────────────────────────────── #} {# Visible à l'entrée en mode audience. Le clic fournit un geste propre #} {# pour requestFullscreen(), indépendant du window.open() de la popup. #} {# ── Modale de partage public (molécule partagée avec la bibliothèque) ───── #} {# Reste DANS le conteneur racine, qui pose --color-primary aux couleurs de Slidia : les interrupteurs de la modale s'habillent de cette variable (peer-checked:bg-primary). Placée dehors, ils repasseraient au bleu par défaut de l'application. #} {% include '_molecules/share-link/share-link-modal.html.twig' with { endpoint: path('app_slidia_share_update', {uuid: '__UUID__'})|replace({'__UUID__': '{uuid}'}), accentHex: sdColor.primary } only %}
{% endblock %}