13h05 : Après une heure sur Spip, insupportabilité. Ce que suis parvenu à afficher hier soir dans le code isolé (plugin révisions) n’apparaît plus, pour une raison qui m’échappe, et ce même en modulant en bidouillant les lignes, en appelant successivement tel X fragment de la page, tel autre. Hier pourtant, sûr, j’avais à la suite de la page article reprise du texte de l’article concerné avec une partie supprimée (manquait plus que la mise en page et les couleurs définies comme suit : rouge les suppressions, vert les ajouts, bleu le texte déplacé). Regret de n’avoir pas fait plus de sauvegardes parallèles, regret de pas avoir gardé toutes les captures d’écran (ne serait-ce que pour me croire moi-même) et si je conserve ici l’historique de ce travail en partie intégrante du journal c’est autant pour rendre compte de ma démarche sur Spip que pour garder le fil et retranscrire toutes les étapes des tâtonnements (copie à mon double moi-même de demain qui aura, j’en suis sûr, tout oublié du cheminement qui m’a conduit, je l’espère, à une version palpable de tout ce que j’ai en tête).

15h04 : Tout repris à zéro. Et ce que j’ai pas dit, c’est que depuis samedi déjà je suis capable d’afficher les corrections (révisions) effectuées sur une page, en fonction de cette page, en passant non pas par la page évoquée hier, mais par la page ../prive/objet/liste/versions.html en l’appelant de cette façon :

<INCLURE{fond=plugins-dist/revisions/prive/objets/liste/versions,sinon=<:revisions:info_aucune_revision:>} />

Code légèrement modifié par la suite pour donner :

<INCLURE{fond=plugins-dist/revisions/prive/objets/liste/versions,id_article,sinon=<:revisions:info_aucune_revision:>} />

(On précise « id_article » pour que le code se rapporte bien uniquement à l’article concerné, sinon il affiche toutes les révisions effectuées sur tous les articles.)

Le problème de cette méthode, c’est qu’elle nous permet uniquement de récupérer une partie du texte (la partie modifiée, plus ou moins remis en contexte), exemple ici :

Or je souhaite pouvoir afficher, si besoin, le texte en intégral, y compris les zones de texte modifiées selon le code couleur prévu à cet effet et indiqué plus haut. Pour y parvenir, j’avais laissé de côté la page ../prive/objet/liste/versions.html pour me concentrer sur la page http://zone.spip.org/trac/spip-zone/browser/_core_/branches/spip-3.0/plugins/revisions/prive/squelettes/contenu/revision.html mais c’est cul de sac pour moi. D’où le retour à la page ../prive/objet/liste/versions.html. Cette page en appelle une autre, que je m’étais bien gardé d’aller fouiller, et qui s’intitule ../inc/suivi_versions.php. Ce que je veux pouvoir déterminer, a priori, ce trouve dans ce bout de code là :

// Mode "diff": on ne s'interesse qu'aux champs presents dans $new
		// Mode "complet": on veut afficher tous les champs
		switch ($format) {
			case 'complet':
				$champs = liste_champs_versionnes(table_objet_sql($objet));
				break;
			case 'diff':
			case 'apercu':
			default:
				$champs = array_keys($new);
				break;
		}

L’objectif, c’est de pouvoir passer du mode « diff » au mode « complet » pour afficher l’entièreté du texte. J’en suis là.

15h31 : Ca fonctionne. En modifiant (toujours dans le fichier ../inc/suivi_versions.php) le code suivant en précisant qu’on souhaite voir s’afficher le truc en format complet (cf. le tout dernier $format=’complet’) ;) le texte s’affiche bien en entier dans le suivi des corrections (cf. image).

/ memoriser les cas les plus courant
		$afficher_diff_champ = charger_fonction('champ','afficher_diff');
		$afficher_diff_jointure = charger_fonction('jointure','afficher_diff');
		foreach ($champs as $champ) {
			// Remonter dans le temps pour trouver le champ en question
			// pour chaque version
			retrouver_champ_version_objet($objet,$id_objet,$id_version,$champ,$new);
			retrouver_champ_version_objet($objet,$id_objet,$id_diff,$champ,$old);

			if (!strlen($new[$champ]) && !strlen($old[$champ])) continue;

			// si on n'a que le vieux, ou que le nouveau, on ne
			// l'affiche qu'en mode "complet"
			if ($format == 'complet')
				$textes[$champ] = strlen($new[$champ])
					? $new[$champ] : $old[$champ];

			// si on a les deux, le diff nous interesse, plus ou moins court
			if (isset($new[$champ]) AND isset($old[$champ])) {
				if (!$afficher_diff = charger_fonction($objet."_".$champ,'afficher_diff',true)
				  AND !$afficher_diff = charger_fonction($champ,'afficher_diff',true))
					$afficher_diff = (strncmp($champ,'jointure_',9)==0?$afficher_diff_jointure:$afficher_diff_champ);

				$textes[$champ] = $afficher_diff($champ,$old[$champ],$new[$champ],$format='complet');
			}
		}
	}

Reste à régler la question des couleurs et de la mise en page du texte, car si tout s’affiche correctement (quoi qu’en italique, pour une raison qui m’échappe) dans l’espace privé, sur la partie publique du site c’est la mise en page générale de la page qui l’emporte et qui zappe donc l’utilisation des couleurs et du texte barré. À creuser.

15h56 : En plus de résoudre la question des couleurs et de la mise en page, trouver comment intégrer à la page ce module révisions sans qu’il soit gênant dans la lecture (utilisation d’autres blocs dépliables ? ça risque de faire beaucoup) et trouver comment faire, par défaut, pour que les différentes versions proposées ne soient pas directement ouvertes, comme c’est le cas actuellement. Autre modification à apporter : élargir la zone de texte. Tenter de lier (si besoin) une note de bas de page à une correction et modifier les paramètres d’affichage de la date de relatifs (« il y a deux jours ») à absolus (« le 23/11/12 »).

Tentative de reprise des lectures mais bon non. Ca peine. Terminé premier jet du truc JN appelé elle. Maintenant j’ai besoin d’un titre pour continuer, ne serait-ce que pour pouvoir taguer correctement.


lundi 26 novembre 2012 - mardi 15 juillet 2025




34192 révisions
# Objet Titre Auteur Date
Article publié Article 150625 GV il y a 16 heures
Les plus lus : 270513 · 100813 · 130713 · 120614 · 290813 · 271113 · 010918 · 211113 · Fuir est une pulsion, listing adolescent · 120514 ·

Derniers articles : 150625 · 140625 · 130625 · 120625 · 110625 · 100625 · 090625 · 080625 · 070625 · 060625 ·

Au hasard : Semaine 42 · 240420 · 110118 · 080321 · 011013 · Semaine 30 · 210317 · 091217 · 120625 · 020118 ·
Quelques mots clés au hasard : Michel Gondry · Ciel · Little Richard · Andrei Tarkovski · Kat Onoma · Fiona Staples · Alexandre Pouchkine · Paul Grimault · Caspar David Friedrich · Temps · Jacques Brel · Julien Gracq · Marina et Sergueï Diatchenko · Jean Giono · Bernard-Marie Koltès · Hadouk Trio · Melliphage · Bruce Brubaker · Pierre Senges · Gabrielle Roy · Livre du Graal · Arctic Monkeys · Boileau-Narcejac · Valerio Evangelisti · Kurt Vonnegut · Milène Tournier · Lüüp · Antoine Brea · Paris · Stéphane Vanderhaeghe

Guillaume Vissac est né dans la Loire un peu après Tchernobyl. Éditeur pour publie.net entre 2015 et 2022, fondateur en 2023 du laboratoire d’édition Bakélite, il mène également ses propres chantiers d’écriture et de traduction, principalement en ligne (mais pas que).

Livres : Vers Velvet (Pou, Histoires pédées, 2020). Accident de personne (Othello, réédition 2018) · Le Chien du mariage (traduction du recueil d'Amy Hempel, Cambourakis, 2018) · Mondeling (avec Junkuu Nishimura, publie.net, 2015) · Coup de tête (publie.net, 2013, réédité en 2017) · Accident de personne (publie.net, 2011) · Livre des peurs primaires (publie.net, 2010) · Qu'est-ce qu'un logement (publie.net, 2010)