Je me suis permis de changer l’objet du thread pour le ramener sur ce vaste sujet …
Olivier Mansour a écrit :
Bonjour et merci pour ces indications.
- il y a un champs dans la table article liant la nouvelle version de
l’article à sa version d’originecomme les traductions … ca revient donc à faire une traduction dans la
meme langue
on peut créer une nouvelle version d’un article, on obtient alors
un article fils identique à l’article père. Un rédacteur, si il a
accès à la rubrique, peut le faire sur un article qu’il n’a pas écrit
Jusqu’ici ca doit etre pareilil pourra, une fois rédiger, proposer une nouvelle version de cette
articleLa, on pourrait faire un petit hack de facon avoir un bouton publier
nouvelle version qui ferait la depublication de l’ancienne version et
autres traitements (voir plus bas)
- le back office présente des liens de type « cet article est une
version de cet article » ou « autre version de cette article »Idem si on utilise les traductions
- au niveau de la classe métier, quand on publie un article étant une
version d’un autre article, on modifie le statut de l’article père et
on inverse les id des articlesPetit hack necessaire donc …
- fonctionnellement, on ne peut créer une version d’un article que
dans la rubrique de l’article pèreEn espérant que cela aide. Cette fonctionnalité est assez appréciée
des utilisateurs. De mémoire, elle a été crée pour le site
diplomatie.gouv.frOui mais il y manque beaucoup de choses pour etre operationnelle à mon
sens :
- Quid de l’historique des modification ? (il est dans agora non ?)
- Quid des documents ?
- Quid des mots clés ?
si je rajoute un document ou un mot à la nouvelle, est il reporté à la
publication ?
Là c’est plus épineux, il ne faudrait pas faire usine à gaz …
doublonner les liens lors de la crétaion parait une bonne idée et basculer les id_articles dans les liasons lors de la publication cela permet de garder les document rattaché à l’article et aussi de garder les id document d’origine
En fait, on peut faire un squelette qui n’affiche que la derniere
version dans une langue pour eviter le hack (les anciennes versions
resteraient theoriquement accessibles en ligne).
Mais ca ne resoud pas le pb des documents et mots, ni de l’historique
(qui n’est alors pas perdu mais morcelé).
Gérer correctement le versionning à partir de la gestion des langues impose me semble-t-il de traiter la publication de manière différente, la mutualisation n’est-elle pas source de complexité ?
A partir du moment ou on fait un hack de articles.php3, on peut imaginer
recreer un nouvel article avec copie de l’historique et des liaisons de
documents, mots …
vi , par contre pour l’historique il faudrait voir pour pas plomber la base …
L’historique des modification pourrait être réintégré au moment de la bascule de l’id en publication ? pour garder au moins un historique sur les versions publié (je n’ai pas assez regardé le code agora sur ce point j’ai vu que c’était géré de façon distoncte c’est tout.
Au moment de la publication de la nouvelle version, il suffit alors
d’eliminer l’ancienne (et les liens document, mot …) et de changer
l’id de la nouvelle (et des liens documents, mots …).
Pour quoi élminer l’ancienne tout de suite, il pourrait y avoir un statut versionné et une purge ultérieure (cela permet de se dispenser de la mise en place de l’historique si c’est juste sur quelques fichiers ?)
C’est sur qu’en s’appuyant sur les fragments, il y a moyen de faire
mieux (en n’enregistrant que des modifs à appliquer et en les appliquant
à la publication de la nouvelle version)
Est-ce utile ? je ne pense pas que la gestion de version soit un besoin si fréquent. donc dupliquer quelques articles ne doit pas être si lourd ? C’est toujours un pb de compromis entre la génération et le calcul des diffs ou la taille de base si on duplique ?
Eventuellement il faudrait avoir un mécanisme de purge, pour éliminer les vielles versions
, mais pour la gestion des
documents et mots clés, on est limité (sauf à traiter une date
d’affectation ou un statut ou des liaisons « pending »…).
Ca depend du fonctionnel recherché, mais la modif d’articles en ligne
est une demande assez classique (avec ou sans validation).
Il y avait une réflexion sur la gestion des modification de document (Paolo de mémoire ?) mais faut peut être pas tout mélanger …
Si j’ai le besoin avant la sortie officielle de la 1.9, j’implanterai
ca sur mon petit fork (tetraspip) sur lequel je dois deja redescendre
l’accès restreint à /ecrire(v1.1) et une gestion de profils étendu(v1.2).
Pour info, ca integre deja pas mal de gadgets (v1.0 :
spip_liste,spip_forms, spipcarto, mots_partout, remplacement de
documents, gestion des forums par admin restreint …).
Merci pour l’info,
Si ca interesse qqun sur la 1.8, le SVN du Lab est ouvert, n’hesitez pas…
Les modifications sont assez limitées et bien identifiées, meme si ca
touche pas mal de fichiers.
Les differents version de ce fork disparaitront naturellement dès que je
pourrais stabiliser une version isofonctionnelle en 1.9 + plugins.
Je suis plus partant pour l’approche plugins, je préfère différer mes besoins que gérer un fork trop complexe (surtout que je n’ai pas accès au svn).
Mes vacances étant finies j’ai moins le temps de « jouer » avec SPIP mais je reste un peu dispo sur le sujet
A+