Historique des modifications d'un article avec diff (utilisateur connecté) #82

Closed
opened 2026-05-15 21:26:07 +00:00 by cedricAbonnel · 0 comments
Owner

Besoin

Conserver un historique des versions d'un article et afficher le diff entre deux versions pour un utilisateur connecté.

Comportement attendu

Stockage

  • À chaque sauvegarde d'un article, snapshot de la version précédente (contenu + métadonnées front-matter).
  • Les snapshots sont horodatés et associés à l'article (par slug ou id).

Affichage (utilisateur connecté uniquement)

  • Dans la vue post/, un lien ou section « Historique des modifications » liste les révisions.
  • En cliquant sur une révision, affichage du diff ligne à ligne (ajouts en vert, suppressions en rouge).
  • Rendu inspiré de la vue sources/ déjà en place dans le moteur.

Normalisation des fins de ligne

  • Avant le calcul du diff, normaliser les fins de ligne (\r\n\n) afin que des changements d'encodage de fin de ligne n'apparaissent pas comme des modifications de contenu.
  • Le diff porte sur le texte normalisé ; les \r\n ne doivent jamais polluer l'affichage.

Critères d'acceptation

  • Un snapshot est créé automatiquement à chaque sauvegarde
  • La liste des révisions est visible dans post/ pour un utilisateur connecté
  • Le diff est affiché ligne à ligne, ajouts/suppressions colorés
  • Les \r\n sont normalisés avant diff — aucun artefact d'affichage
  • Le diff est cohérent avec le rendu déjà utilisé dans sources/
  • Aucun historique n'est exposé aux visiteurs non connectés

Notes techniques

  • S'appuyer sur la vue sources/ existante comme référence de rendu.
  • Le stockage des snapshots peut être en fichier (ex. _history/slug/timestamp.md) ou en base selon l'architecture retenue.
  • Évaluer si diff PHP natif ou une lib (ex. jfcherng/php-diff) convient mieux.
## Besoin Conserver un historique des versions d'un article et afficher le diff entre deux versions pour un utilisateur connecté. ## Comportement attendu ### Stockage - À chaque sauvegarde d'un article, snapshot de la version précédente (contenu + métadonnées front-matter). - Les snapshots sont horodatés et associés à l'article (par slug ou id). ### Affichage (utilisateur connecté uniquement) - Dans la vue `post/`, un lien ou section « Historique des modifications » liste les révisions. - En cliquant sur une révision, affichage du diff ligne à ligne (ajouts en vert, suppressions en rouge). - Rendu inspiré de la vue `sources/` déjà en place dans le moteur. ### Normalisation des fins de ligne - Avant le calcul du diff, normaliser les fins de ligne (`\r\n` → `\n`) afin que des changements d'encodage de fin de ligne n'apparaissent pas comme des modifications de contenu. - Le diff porte sur le texte normalisé ; les `\r\n` ne doivent jamais polluer l'affichage. ## Critères d'acceptation - [ ] Un snapshot est créé automatiquement à chaque sauvegarde - [ ] La liste des révisions est visible dans `post/` pour un utilisateur connecté - [ ] Le diff est affiché ligne à ligne, ajouts/suppressions colorés - [ ] Les `\r\n` sont normalisés avant diff — aucun artefact d'affichage - [ ] Le diff est cohérent avec le rendu déjà utilisé dans `sources/` - [ ] Aucun historique n'est exposé aux visiteurs non connectés ## Notes techniques - S'appuyer sur la vue `sources/` existante comme référence de rendu. - Le stockage des snapshots peut être en fichier (ex. `_history/slug/timestamp.md`) ou en base selon l'architecture retenue. - Évaluer si `diff` PHP natif ou une lib (ex. `jfcherng/php-diff`) convient mieux.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cedricAbonnel/folio#82