Carnet Wiki

signaler les révisions côté public

Version 11 — Janvier 2022 flouvel

A lire aussi : Le Suivi des Révisions (d’Articles etc..)

Dans l’objectif d’un spip 3 en mode wiki (objectif déjà poursuivi par Gribouille pour spip 2).
Utilise le plugin Révisions , (Autorité étant utilisé pour créer l’espace wiki)

1. Montrer les révisions sur page public

Créer une page truc_revision.html (non pas revision.html sinon interférences avec l’espace privé et le plugin revisions) dans votre dossier squelettes sur le modèle de gribouille_2 et une page truc_revision_fonctions.php copiée de gribouille_fonctions.php

<BOUCLE_revision(VERSIONS){id_version}{objet?}{id_objet?}>
<BOUCLE_art(ARTICLES){id_article=#ID_OBJET}>
#SET{diff, #VAL{#ID_ARTICLE}|gribouille_calcul_diff{'article',#ENV{id_version}}}
[<Hi>(#GET{diff/surtitre})</Hi>][(#GET{diff/titre})][(#GET{diff/soustitre})]
[(#LOGO_ARTICLE)]
<abbr title="[(#_revision:DATE|date_iso)]">Version n° [(#ID_VERSION)], [(#_revision:DATE|date_relative) ,]
[(#ID_AUTEUR|=={-1}|non) modifié par 
	#SET{id_secteur, #INFO_ID_SECTEUR{#ENV{objet},#ENV{id_objet}}}
	[(#ID_AUTEUR|is_numeric|oui)<a href="[(#URL_PAGE{auteur_gribouille,id_auteur=#ID_AUTEUR}|parametre_url{id_secteur,#GET{id_secteur}})]" rel="noindex,nofollow">]
	[(#INFO_NOM{auteur,#ID_AUTEUR})]
	[(#ID_AUTEUR|is_numeric|oui)</a>]
]
</abbr>
[<p>(#GET{diff/lesauteurs})</p>]
[(#ENV{id_version}|oui)
	[<div class="chapo">(#GET{diff/chapo})</div>]
	[<div class="texte">(#GET{diff/texte})</div>]
	&#91;&lt;div class="ui  divider"></div>&lt;div  class="ps">(#GET{diff/ps})</div>]
]
&lt;/BOUCLE_art>
 &lt;BOUCLE_rub >
&lt;BOUCLE_rub(RUBRIQUES )>
 idem.
</BOUCLE_rub>
</BOUCLE_revision>

Il manque le style css pour faire apparaître les modifications. Ajouter ces styles dans votre spip.css :

/* Revision, diff, SPIP */
.label {text-decoration: underline; }
.diff-para-deplace { background: #e8e8ff; }
.diff-para-ajoute { background: #d0ffc0; color: #000; }
.diff-para-supprime { background: #ffd0c0; color: #904040; text-decoration: line-through; }
p>.diff-para-deplace,p>.diff-para-ajoute,p>.diff-para-supprime {display:block;}


.diff-deplace { background: #e8e8ff; }
.diff-ajoute { background: #d0ffc0; }
.diff-supprime { background: #ffd0c0; color: #802020; text-decoration: line-through; }
.diff-para-deplace .diff-ajoute { background: #b8ffb8; border: 1px solid #808080; }
.diff-para-deplace .diff-supprime { background: #ffb8b8; border: 1px solid #808080; }
.diff-para-deplace .diff-deplace { background: #b8b8ff; border: 1px solid #808080; }

Pour faire un lien depuis un objet révisé, par exemple depuis la page article.html :

<BOUCLE_revision(VERSIONS){id_article}{!par id_version}{0,1}>&lt;a href="spip.php?page=truc_revision&id_objet=#ID_ARTICLE&objet=article&id_version=#ID_VERSION"><:revision:></a>&lt;/BOUCLE_revision page=truc_revision&id_objet=#ID_ARTICLE&objet=article&id_version=#ID_VERSION"><:revision:>&lt;/a >

Pour pouvoir naviguer entre les différentes versions (comme ici à droite en plus minimaliste ), ajouter à votre page truc_revision.html public :

<BOUCLE_autres(VERSIONS){id_objet}{objet}{id_version>0}{" "}>
[(#ID_VERSION|=={#_lastv:ID_VERSION}|?{<strong>#ID_VERSION</strong>,<a href="spip.php?page=truc_revision&id_objet=#ID_OBJET&objet=#OBJET&id_version=#ID_VERSION">#ID_VERSION</a>})]</BOUCLE_autres>


-  lien de retour à l’article (rubrique, …) révisé. Ajouter au minimum, <a href="spip.php?#OBJET#ID_OBJET">#OBJET #ID_OBJET</a> à votre page truc_revision.html public
-  si vous avez activé les révisions sur un objet bidule qui n’a pas de page public (pas de bidule.html côté public), il faudra en créer une et traiter ce cas à part …
(pour les documents, créer une page document.html conduit à un conflit. Il faudra donc opter pour un autre nom, et filtrer ce cas)

2. Seulement signaler les révisions côté public

En partant de /plugins/revisions/prive/objets/liste/versions.html :
créer un fichier /squelettes/inclure/derrevisions squelettes/inclure/versions .html avec le code ci-dessous, l’inclure par <code><INCLUREfond=inclure/derrevisions code><INCLUREfond=inclure/versions /> sur la page sommaire par exemple, pour avoir les 10 dernières révisions, avec lien sur la page revision de l’espace privé de l’objet concerné si connecté, sinon sur la page public.

<table><tbody>
<BOUCLE_liste_rev(VERSIONS){id_version>1}{objet!=''}{id_auteur?} {id_objet?} {objet?}{where?}{par date} {inverse} {0,10}>
<tr><td>[(#INFO_STATUT{#OBJET,#ID_OBJET}|puce_statut{#OBJET})]</td>
<td>[(#OBJET|objet_icone{16})]</td>
<td><a #SET{titre,#INFO_TITRE{#OBJET,#ID_OBJET}}
[(#AUTORISER{modifier, #OBJET, #ID_OBJET}|?{
href="[(#ENV{url_modif,#URL_ECRIRE{revision}}|parametre_url{id_objet,#ID_OBJET} |parametre_url{objet,#OBJET}|parametre_url{id_version,#ID_VERSION})]"
, href="[(#ENV{url_modif,#URL_PAGE{#OBJET}}|parametre_url{id_#OBJET,#ID_OBJET})]"}
)]
title="<:revisions:voir_revisions{objet=#OBJET,id_objet=#ID_OBJET,titre=#GET{titre}}|attribut_html:>">
#GET{titre}</a>[ ((#TITRE_VERSION))]  
</td><td>[(#DATE|date_relative)]</td>
<td>
    [(#REM) retourner le dernier auteur modifiant l'objet ]
    <BOUCLE_lastauteur(VERSIONS){objet=#OBJET}{id_objet=#ID_OBJET}{!par date}{0,1}><span class="vcard author"><a class="url fn spip_in" href="#URL_AUTEUR">#INFO_NOM{'auteur',#ID_AUTEUR}</a></span>
    </BOUCLE_lastauteur>
</td>
</tr>
</BOUCLE_liste_rev>
</tbody></table>

On peut de même signaler qu’il y a eu révision sur un objet consulté (article, ...) :
<INCLURE{fond=inclure/historique} />, avec /squelettes/inclure/historique.html =

<table><tbody>
<BOUCLE_liste_rev(VERSIONS?){id_version>1}{id_article ?}{id_xxxx ?}{where?}{tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
<tr><td><a #SET{titre,#INFO_TITRE{#OBJET,#ID_OBJET}}
[(#AUTORISER{modifier, #OBJET, #ID_OBJET}|oui)
href="[(#ENV{url_modif,#URL_ECRIRE{revision}}|parametre_url{id_objet,#ID_OBJET}|parametre_url{objet,#OBJET}|parametre_url{id_version,#ID_VERSION})]"
]>
<:revisions:voir_revisions{objet=#OBJET,id_objet=#ID_OBJET,titre=#GET{titre}}|attribut_html:></a>[ ((#TITRE_VERSION))]</td>
<td>[<:der_revision:> : (#DATE|date_relative)]</td>
<td>
    [(#REM) retourner le dernier auteur modifiant l'objet ]
    <BOUCLE_lastauteur(VERSIONS){objet=#OBJET}{id_objet=#ID_OBJET}{!par date}{0,1}><span class="vcard author"><a class="url fn spip_in" href="#URL_AUTEUR">#INFO_NOM{'auteur',#ID_AUTEUR}</a></span>
    </BOUCLE_lastauteur>
</td>
</tr>
</BOUCLE_liste_rev>
</tbody></table>

On ne fait donc que signaler sur la page public qu’une révision a été effectuée, avec lien sur l’espace privé pour pouvoir voir la révision, si connecté et ayant droit.