Carnet Wiki

signaler les révisions côté public

Version 9 — Septembre 2018 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).
), déjà , signaler les révisions côté public .
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 revision.html dans votre dossier squelettes faisant appel à la page privé revision.html du plugin révision, plugins-dist/revisions/prive/squelettes/contenu/revision :

<BOUCLE_lastv(VERSIONS){id_objet}{objet}{id_version}>
<!DOCTYPE ... <body> ...
<INCLURE{fond=plugins-dist/revisions/prive/squelettes/contenu/revision,env} />

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}><a href="spip.php?page=revision&id_objet=#ID_ARTICLE&objet=article&id_version=#ID_VERSION"><:revision:></a>

Pour pouvoir naviguer entre les différentes versions (comme ici), ajouter à votre page revision.html public :

<BOUCLE_autres(VERSIONS){id_objet}{objet}{id_version>1}{" "}>[(#ID_VERSION|=={#_lastv:ID_VERSION}|?{<strong>#ID_VERSION</strong>,<small><a href="spip.php?page=revision&id_objet=#ID_OBJET&objet=#OBJET&id_version=#ID_VERSION">#ID_VERSION</a></small>})]</BOUCLE_autres>
<br />[<:der_revision:> : (#DATE|date_relative)] 

Il reste deux petit problèmes :
-  pas de lien de retour à l’article (rubrique, breve, etc.) révisé. Ajouter au minimum, <a href="spip.php?#OBJET#ID_OBJET">#OBJET #ID_OBJET</a> à votre page revision.html public
-  si vous avez activé les révisions sur un objet truc qui n’a pas de page public (pas de truc.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)

Maintenir le filtre |revisions_diff qui pourrait (?Comment faire appel à ce filtre défini dans plugins-dist/revisions/inc/suivi_versions.

2 . php dans une page public  ? Seulement signaler ) permettre de voir les révisions côté public

sur la page public , génère une erreur ( Filtre revisions_diff non défini ).

En partant de /plugins/revisions/prive/objets/liste/versions.html :
créer un fichier /squelettes/inclure/versions.html avec le code ci-dessous, l’inclure par <INCLURE{fond=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.