261112


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.

<  -  >

Partager

Révisions

Aucune révision

Commentaires

Un message, un commentaire ?

Forum sur abonnement

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.

Connexions’inscriremot de passe oublié ?

Autres articles



Livres


- -

- - - -

Projets Web


- -


-
Spip | PhpNet | Contact | Retour au sommaire | ISSN 2428-9590 |