# CHAPITRE 12 — Brouillon, publication et versions

Rien de ce que vous faites dans le Studio n'atteint directement le site public : chaque modification — un texte, une image, mais aussi le déplacement ou le masquage d'une section entière — s'accumule d'abord dans un **brouillon**. Vous relisez, comparez l'avant et l'après, puis publiez le tout en une seule opération. Ce chapitre détaille ce cycle complet : brouillon, revue, validation, publication, historique et restauration.

### <span style="color: rgb(35, 111, 161);">Les deux familles de modifications</span>

<table style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Famille

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Exemples

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Où vit le brouillon

</th></tr><tr><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">**Contenus**

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">textes, images, icônes, liens, styles de blocs

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">colonne <span class="editor-theme-code">value\_draft</span> de chaque contenu (la valeur publique reste dans <span class="editor-theme-code">value</span>)

</td></tr><tr><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">**Structure**

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">déplacer, masquer, dupliquer, supprimer ou insérer une section

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">brouillon structurel de la page (table <span class="editor-theme-code">llx\_infrasstudio\_page\_draft</span>), rendu par un fichier d'aperçu jamais servi au public

</td></tr></tbody></table>

<p class="callout info">L'aperçu du Studio montre toujours votre version de travail (brouillons compris). Les visiteurs du site continuent de voir la dernière version publiée, à l'identique, tant que vous n'avez pas cliqué « Publier les modifs ».</p>

### <span style="color: rgb(35, 111, 161);">La barre de contrôle des sections</span>

Survolez une section de premier niveau dans l'aperçu : une barre flottante sombre apparaît avec six commandes :

- **Flèches haut / bas** — déplacer la section dans la page.
- **Œil** — masquer ou réafficher la section (dans l'aperçu, une section masquée reste visible mais estompée ; sur le site public elle disparaît réellement).
- **Dupliquer** — cloner la section avec tous ses contenus (la copie vit ensuite sa vie propre).
- **Plus** — insérer une section : depuis une autre page du site, ou depuis un patron déposé par votre intégrateur.
- **Corbeille** — supprimer la section (ses contenus restent récupérables 30 jours, et l'historique de la page permet de revenir en arrière).

Toutes ces opérations alimentent le **brouillon structurel** : le site public n'est jamais touché avant publication. Si un autre utilisateur modifie la même page pendant que votre aperçu est resté ouvert, l'opération est refusée et l'aperçu se recharge — jamais d'action appliquée à l'aveugle sur un état que vous ne voyez pas.

### <span style="color: rgb(35, 111, 161);">Annuler et rétablir</span>

- Cliquez un contenu dans l'aperçu, puis utilisez les boutons **↺ / ↻** à droite de la barre d'aperçu (ou <span class="editor-theme-code">Ctrl+Z</span> / <span class="editor-theme-code">Ctrl+Y</span>) : la valeur précédente de ce contenu revient **dans le brouillon**, cran par cran ; le rétablissement rejoue ce que l'annulation a écrasé (tant que vous n'avez pas refait d'édition entre-temps).
- Sans contenu sélectionné, un message vous invite à cliquer d'abord un contenu de la page.

### <span style="color: rgb(35, 111, 161);">La revue des modifications en attente</span>

Le bouton **liste cochée** (à côté de « Publier les modifs ») ouvre le panneau de revue. Il montre exactement **qui** a modifié, **quand**, et **quoi** :

- le journal des opérations de structure (déplacements, duplications, suppressions, insertions), horodaté et signé ;
- pour chaque contenu modifié, la valeur **publiée** face à la valeur **brouillon**, langue par langue, en-tête et pied de page inclus. Un contenu jamais édité affiche sa valeur par défaut avec la mention « (valeur par défaut) » ; un contenu vidé affiche « Vidé ».

Depuis ce panneau, **Aperçu avant** affiche l'état EN LIGNE exact (lecture seule, bandeau dédié) et **Aperçu après** revient à votre version de travail — la bascule idéale pour un dernier contrôle visuel.

### <span style="color: rgb(35, 111, 161);">Publier les modifications</span>

1. Cliquez **Publier les modifs** (le compteur totalise contenus et structure).
2. Confirmez. La structure est appliquée d'abord, puis les contenus (y compris ceux de l'en-tête et du pied de page modifiés depuis cette page).
3. Une notification confirme la publication ; le compteur et la pastille disparaissent.

<p class="callout warning">Édition simultanée : si le contenu publié a changé entre le début de votre brouillon de structure et votre clic (un collègue a publié entre-temps), la publication est refusée avec un choix explicite — écraser en connaissance de cause, ou abandonner pour reprendre sur l'état à jour. Aucun écrasement silencieux.</p>

### <span style="color: rgb(35, 111, 161);">Annuler les modifications en attente</span>

Le bouton **↺ Annuler les modifications** de la barre d'outils jette l'ensemble du brouillon (contenus et structure) et revient à la version publiée. Les contenus des sections qui n'avaient jamais été publiées passent en « orphelins » récupérables 30 jours.

### <span style="color: rgb(35, 111, 161);">La chaîne de validation (mode strict)</span>

Sur un site où la constante <span class="editor-theme-code">INFRASSTUDIO\_STRICT\_PUBLISH</span> vaut 1, un rédacteur sans le droit « publish » ne peut pas publier lui-même :

1. Le rédacteur prépare ses modifications puis clique **Soumettre à validation** — la page passe « Soumis à validation » (un email peut prévenir les valideurs, voir la constante <span class="editor-theme-code">INFRASSTUDIO\_REVIEW\_NOTIFY\_EMAILS</span>).
2. Le valideur (droit « publish ») voit la page soumise, ouvre la revue, compare l'avant et l'après.
3. Il **publie**… ou **rejette avec un commentaire** : les brouillons du rédacteur sont conservés, la page passe « Rejeté — à corriger », le commentaire s'affiche en tête de la revue du rédacteur (et peut lui être envoyé par email).
4. Le rédacteur corrige puis re-soumet — le cycle recommence jusqu'à publication.

<p class="callout success">Le rejet ne jette jamais le travail : c'est un renvoi pour correction. L'annulation destructive reste un bouton séparé de la barre d'outils.</p>

### <span style="color: rgb(35, 111, 161);">L'historique de la page : instantanés et restauration</span>

À chaque publication, le module archive **l'état complet de la page tel qu'il était juste avant** : la structure ET toutes les valeurs publiées des contenus, dans toutes les langues. Le bouton **horloge inversée** de la barre d'outils ouvre ce panneau :

- chaque ligne indique la date, l'auteur, l'action (« Publication ») et le détail de ce que la publication contenait ;
- le **chevron** déplie la ligne et montre la différence entre cet instantané et l'état publié actuel : sections qui seraient rétablies, retirées ou réordonnées, et pour chaque contenu la valeur qui serait restaurée face à la valeur actuelle — vous savez exactement ce que « Restaurer » va faire avant de cliquer ;
- **Restaurer** ramène l'état exact (structure et contenus)… dans le brouillon : rien ne part en ligne avant « Publier les modifs » ;
- les instantanés créés avant la version 18.50 portent le badge « structure seule » : leur restauration ne couvre pas les contenus ;
- un administrateur peut **purger l'historique** de la page, ou de tout le site (irréversible, confirmation dédiée). Rétention automatique : 20 instantanés par page.

### <span style="color: rgb(35, 111, 161);">L'historique par contenu</span>

Indépendamment de l'historique de la page, chaque contenu garde sa propre chronologie : sélectionnez un contenu puis cliquez **Historique** dans l'inspecteur. Vous y consultez les versions successives (date, auteur, action) et pouvez restaurer une version — elle revient dans le brouillon, comme toujours.

### <span style="color: rgb(35, 111, 161);">Mettre en ligne, retirer, planifier (statut de la page)</span>

<table style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Bouton

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Effet

</th></tr><tr><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">**Publier les modifs**

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">applique les brouillons (contenus + structure) à la version publique. Concerne le contenu.

</td></tr><tr><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">**Mettre en ligne / Retirer du site**

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">bascule la visibilité de la page elle-même. Une page retirée renvoie une erreur 404.

</td></tr><tr><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">**Horloge (Planifier)**

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">programme une mise en ligne ou un retrait à une date/heure donnée, exécuté par une tâche automatique toutes les 5 minutes. La mise en ligne planifiée publie aussi les brouillons en attente de la page ; un conflit d'édition concurrente met la planification en erreur explicite au lieu de passer en force.

</td></tr></tbody></table>

<p class="callout info">La page canonique et ses pages sœurs (autres langues) basculent simultanément, et le plan du site (sitemap) ne référence que les pages en ligne.</p>