Nouvelle colonne _document_pages.vertical_align (top/center/bottom,
"top" par défaut, migration incluse pour les supports existants).
Quand l'onglet "Pages" du panneau gauche est actif, le panneau
Propriétés (droite) affiche maintenant l'alignement de la page active
au lieu des propriétés d'un élément — un contrôle segmenté qui persiste
via une nouvelle route dédiée et met à jour le canevas immédiatement.
Le contenu-seed des thèmes porte désormais aussi ce réglage par page
(seed_pages devient une liste de {vertical_align, blocks} plutôt qu'une
liste de listes de blocs) : la page de titre du thème "Sécurité
Incendie" est centrée verticalement, comme demandé, cohérente avec la
maquette d'origine. L'aperçu de thème (iframe de la modale) reflète
aussi ce réglage par page.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
34 lines
1.6 KiB
Python
34 lines
1.6 KiB
Python
from flask import render_template
|
|
from werkzeug.exceptions import NotFound
|
|
|
|
import document_engine
|
|
from core.flask_app import app
|
|
|
|
|
|
@app.route("/document/<slug>/theme/<theme_id>/preview")
|
|
def document_theme_preview(slug: str, theme_id: str) -> str:
|
|
"""Aperçu isolé (destiné à un <iframe>, voir la modale "Utiliser un
|
|
modèle" dans static/document/js/document-editor.js) de TOUTES les
|
|
pages de démonstration d'un thème — RÉELLEMENT rendues par le moteur
|
|
(document_engine.render_document), jamais une image statique ou une
|
|
resucée manuelle du CSS : ce qui est prévisualisé est EXACTEMENT ce
|
|
qui s'affichera une fois le thème appliqué. La navigation entre pages
|
|
(retour utilisateur du 24/09/2026 : "je dois pouvoir naviguer dans
|
|
l'aperçu pour voir toutes les pages") se fait entièrement côté
|
|
client dans le template, jamais par un nouvel aller-retour serveur —
|
|
toutes les pages sont déjà rendues ici en une fois. `slug` sert
|
|
uniquement à la garde de propriété (core/auth_guard.py, générique
|
|
sur toute route <slug>) — l'aperçu ne dépend d'aucune donnée de CE
|
|
support."""
|
|
theme = document_engine.get_document_theme_entry(theme_id)
|
|
if theme is None:
|
|
raise NotFound
|
|
pages = [
|
|
{
|
|
"vertical_align": seed_page.get("vertical_align", "top"),
|
|
"html": document_engine.render_document(document_engine.seed_blocks_to_elements(seed_page["blocks"])),
|
|
}
|
|
for seed_page in theme["seed_pages"]
|
|
]
|
|
return render_template("document/document_theme_preview.html", theme=theme, pages=pages)
|