{% extends 'base.html.twig' %} {% block show_sidebar %}false{% endblock %} {% block title %}{{ course.title ?? 'Éditeur' }} - Moodia{% endblock %} {% block body %} {# La barre de navigation fixe occupe le bas de l'écran : le bouton « Revoir le tutoriel » irait se poser dessus. On le pousse au-dessus. `:root` et non un conteneur parent — l'hôte du tutoriel est inclus depuis base.html.twig, dans un autre sous-arbre du document, et une variable CSS ne remonte pas. #} {# ============================================================================ MOODIA EDITOR - STUDIO DE CRÉATION (100% Tailwind) ============================================================================ Layout split view : Navigator (280px) + Editor Canvas Une seule activité affichée à la fois, navigation fluide ============================================================================ #} {# Solde de tokens : blocage + info-bulle d'upgrade pour la génération d'image (même patron que Pixia/Monalisia) #} {% set currentPlanSlug = app.user.company ? 'b2b' : (app.user.plan ? app.user.plan.slug : 'freemium') %} {% set pixiaTooltipHtml %}{% include '_molecules/upgrade-tooltip/upgrade-tooltip.html.twig' with { minTokens: pixiaMinTokens, currentPlanSlug: currentPlanSlug, upgradeUrl: path('app_upgrade') } only %}{% endset %} {% set monalisiaTooltipHtml %}{% include '_molecules/upgrade-tooltip/upgrade-tooltip.html.twig' with { minTokens: monalisiaMinTokens, currentPlanSlug: currentPlanSlug, upgradeUrl: path('app_upgrade') } only %}{% endset %} {# Logos + couleurs des outils (depuis la table tool, via les globals tool_details / tool_color_details) #} {% set pixiaColors = tool_color_details['pixia'] ?? {} %} {% set monalisiaColors = tool_color_details['monalisia'] ?? {} %} {% set pxP = pixiaColors.primary ?? '#6366F1' %} {% set mnP = monalisiaColors.primary ?? '#EC4899' %} {% set pixiaIconHtml %}{% include '_atoms/icon/icon.html.twig' with { name: (tool_details['pixia'] ?? {}).icon ?? 'pixia', size: 'sm', colorPrimary: pxP, colorSecondary: pixiaColors.secondary ?? pxP } only %}{% endset %} {% set monalisiaIconHtml %}{% include '_atoms/icon/icon.html.twig' with { name: (tool_details['monalisia'] ?? {}).icon ?? 'monalisia', size: 'sm', colorPrimary: mnP, colorSecondary: monalisiaColors.secondary ?? mnP } only %}{% endset %}
{# ======================================================================== DONNÉES DU COURS (JSON caché) ======================================================================== #} {# ======================================================================== HEADER - 100% Tailwind ======================================================================== #}
{# Retour avec tooltip explicite #} {% include '_atoms/icon/icon.html.twig' with { name: 'arrow-left', size: 'sm' } only %} {# Titre éditable avec indication #}
Cliquez pour modifier le titre
{# Statut sauvegarde - Design épuré #}
{# Export MBZ : icône seule < sm, texte complet ≥ sm #} {# `data-tour-step` porté par un conteneur : l'atome bouton n'accepte pas d'attribut arbitraire hors de `attr`, et l'envelopper est moins intrusif que de l'y ajouter. #}
{% include '_atoms/button/button.html.twig' with { label: 'Export MBZ', variant: 'primary', size: 'md', icon: 'download', mobileIconOnly: true, mobileBreakpoint: 'sm', attr: { 'data-moodia--editor-target': 'exportBtn', 'data-action': 'click->moodia--editor#exportMbz', } } only %}
{# ======================================================================== LAYOUT SPLIT VIEW - 100% Tailwind ======================================================================== #}
{# ==================================================================== NAVIGATOR - Sidebar fixe style File Explorer ==================================================================== #} {# Overlay mobile #}
{# ==================================================================== EDITOR CANVAS - Zone d'édition mono-activité ==================================================================== #}
{# Breadcrumb avec molécule #}
{# Ouvrir la structure : toujours visible en mobile ; sur desktop, seulement quand elle est repliée #} {% include '_atoms/button/button.html.twig' with { icon: 'chevrons-right', variant: 'ghost', size: 'sm', iconOnly: true, attr: { 'data-action': 'click->moodia--editor#openStructure', 'data-tooltip': 'Afficher la structure du cours', 'aria-label': 'Afficher la structure du cours' } } only %} Section / Activité
{# Zone de contenu scrollable #}
{# Rendu dynamique par JS #}
{# Pagination fixe - 100% Tailwind + Atomic Design #}
{# Bouton Précédent #} {% include '_atoms/button/button.html.twig' with { label: 'Précédent', variant: 'ghost', size: 'md', icon: 'chevron-left', attr: { 'data-moodia--editor-target': 'prevBtn', 'data-action': 'click->moodia--editor#goToPrev', 'disabled': 'disabled' } } only %} {# Centre : Info pagination #} 1 / 1 {# Bouton Suivant #} {% include '_atoms/button/button.html.twig' with { label: 'Suivant', variant: 'ghost', size: 'md', icon: 'chevron-right', iconPosition: 'right', attr: { 'data-moodia--editor-target': 'nextBtn', 'data-action': 'click->moodia--editor#goToNext', 'disabled': 'disabled' } } only %}
{# ======================================================================== TOOLBAR FLOTTANTE - 100% Tailwind ======================================================================== #} {# ======================================================================== MODAL EXPORT - Atomic Design + Animations Premium ======================================================================== #} {# ======================================================================== MODAL AJOUT ACTIVITÉ - 100% Tailwind + Atomic Design ======================================================================== #} {# ======================================================================== MODAL CONFIRMATION SUPPRESSION ======================================================================== #} {% embed '_organisms/delete-modal/delete-modal.html.twig' with { title: 'Supprimer cette activité ?', modalAttr: {'data-moodia--editor-target': 'deleteModal', 'data-action': 'keydown.esc@window->moodia--editor#closeDeleteModal'}, cancelAttr: {'data-action': 'click->moodia--editor#closeDeleteModal'}, confirmAttr: {'data-action': 'click->moodia--editor#confirmDelete'} } only %} {% block titleBlock %}

Supprimer cette activité ?

{% endblock %} {% block description %}

Cette action est irréversible. Le contenu de cette activité sera définitivement supprimé.

{% endblock %} {% endembed %} {# ======================================================================== MODAL IMAGE PICKER - Sélection d'image depuis Pixia ou Monalisia ======================================================================== #}
{% endblock %}