Historiser les éditions de messages

a marqué ce sujet comme résolu.

Aujourd'hui, quand on édite un message, la version avant édition est définitivement perdue.

L'idée est d'historiser les différentes versions d'un message. Concrètement, si on est l'auteur du message ou membre du staff (limite pour éviter les abus), un clic sur l'indication d'édition afficherait une popup (ou une page) qui afficherait, dans l'ordre chronologique, les différentes versions du message.

Techniquement, c'est très simple. On a besoin de :

  1. Une table avec les champs suivants :
    • ID
    • ID du message d'origine
    • Date du message d'origine
    • Markdown du message d'origine (utile uniquement si on permet la restauration, cf infra)
    • HTML du message d'origine
  2. Un bout de code pour afficher le contenu de cette table pour un ID de message d'origine particulier. Attention aux droits d'accès.
  3. Un test sur l'affichage de la mention « Message édité ».
  4. Un simple insert en base supplémentaire à l'édition d'un message.

Ça ne ralentirait pas vraiment l'affichage des forums, parce que la nouvelle table ne serait utilisée qu'en cas de consultation de l'historique.

Il faut aussi prévoir de supprimer définitivement une version pour raisons légales (staff uniquement) (ça garderait la trace de l'ancien message pour que ça reste compréhensible mais sans son contenu).

Améliorations possibles :

  • Une option « restaurer cette version » (qui ferait comme une édition, avec l'ancien contenu).

PS : La gestion d'un compte supprimé est automatique : il n'y a aucune information liée au compte de l'auteur dans la nouvelle table.

Question d'implémentation : pourquoi ajouter une table/modèle ?

Nos posts on un attribut de position dans le topic (genre 3 si c'est le troisième message). On pourrait simplement insérer une nouvelle ligne dans cette table avec le même attribut position et éventuellement un flag indexé pour indiquer quelle version est la bonne (détail d'implémentation, c'est juste probablement plus efficace que de prendre MAX(ID)), non ?

+1 -0

Question d'implémentation : pourquoi ajouter une table/modèle ?

Nos posts on un attribut de position dans le topic (genre 3 si c'est le troisième message). On pourrait simplement insérer une nouvelle ligne dans cette table avec le même attribut position et éventuellement un flag indexé pour indiquer quelle version est la bonne (détail d'implémentation, c'est juste probablement plus efficace que de prendre MAX(ID)), non ?

victor

Si je ne me trompe pas, ta solution aurait un impact la dessus

Ça ne ralentirait pas vraiment l'affichage des forums, parce que la nouvelle table ne serait utilisée qu'en cas de consultation de l'historique.

Car ça alourdirait la table des forums inutilement…

Idéalement, je suggérerais que si l'utilisateur édite son message longtemps après avoir posté le message originel (un ou plusieurs jours ?), tout le monde peut accéder à l'historique.

Histoire d'éviter les fils de discussions gâchés par des messages supprimés au milieu, ou pour retrouver différentes version d'un post présentant un projet, etc.

Une solution implémentée dans beaucoup de "forums" internet est la limitation de l'édition dans le temps, typiquement 30min ou 1h. Ça permet de régler les typos qu'on voit après avoir posté, et ça prévient les changements drastiques de contenu qui surviennent après discussion. Après sur ZdS c'est pas forcément idéal vu qu'on a parfois des topics épinglés que le PO non-staff édite en continu pour reprendre les suggestions du topic.

L'idée d'Olybri me plait assez je dois dire, mais j'y ai pas réfléchis plus que ça.

+0 -0

Dans le cas ou tout le monde peut voir l'historique, je me suis dit que si un utilisateur venait à dévoiler une information confidentielle accidentellement, il pourrait éditer tout de suite et être assurer que personne (du moins les membres réguliers) ne puisse la retrouver. D'où l'idée du temps minimal.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte