Réalisation de la version v2 du plugin Boussole

, par _Eric_

Les évolutions V2 du plugin sont disponibles sur la Zone. La documentation à jour consultable sur SPIP-Contrib est la suivante :

Création d’un plugin « Boussole SPIP »

Il suffit d’extraire du plugin Boussole v1 actuel les éléments suivants :

  • les logos contenus dans le dossier images/boussole/ dans une organisation identique,
  • les items de langue dédiées à la boussole SPIP, à savoir, le titre de la boussole et les noms, slogans et descriptions de tous les sites et groupes de sites. Ces items sont inclus dans un fichier de langue nommé boussole-spip_xx.php et de façon générale boussole-${alias_boussole}_xx.php.

En outre, il faut rapatrier le fichier XML boussole_spip.xml inclus dans le squelette boussole.spip.org à la racine du plugin Boussole SPIP en le renommant boussole-spip.xml et de façon générale boussole-${alias_boussole}.xml.

Coté paquet.xml il parait plus approprié :

  • de conserver le slogan du plugin Boussole v1 pour cette boussole
  • de fixer la version du plugin à celle de la boussole et donc de la supprimer dans le fichier XML
  • prendre un nouveau préfixe afin de laisser le préfixe boussole au plugin de gestion. Le préfixe adopté est « bouspip ».

Il n’y a pas d’intérêt à nécessiter le plugin Boussole.

Enfin, on déclare la boussole comme prête à être diffusée via le pipeline declarer_boussoles. Pour chaque boussole déclarée dans le tableau, l’index correspond à l’alias de la boussole et la valeur à un tableau associatif composé pour l’instant uniquement du préfixe du plugin (ou à la chaine vide sinon).
Par exemple, la boussole SPIP déclare :

  1. function bouspip_declarer_boussoles($flux) {
  2. $flux['spip'] = array('prefixe' => 'bouspip');
  3. return $flux;
  4. }

Télécharger

Ajout d’une fonction serveur au plugin Boussole

C’est une des évolutions majeures de la version v2. Plutôt que d’installer les informations de la boussole SPIP -ou d’une boussole personnalisée- sur chaque site utilisateur la v2 permet de créer un serveur qui fournira les informations de la boussole souhaitée à tous les sites utilisateurs sur demande.

Le mode serveur n’est pas actif par défaut. Pour l’activer il faut définir la constante _BOUSSOLE_ALIAS_SERVEUR qui désigne le nom du serveur. A partir de ce moment, le CRON serveur journalier s’active. Ce CRON scanne une fois par jour les boussoles déclarées - soit par le pipeline declarer_boussoles pour un plugin, soit par ajout manuel dans la globale $serveur_boussoles_disponibles - et crée les fichiers XML complets de chacune d’entre elles ainsi que la liste des boussoles hébergées.

Le plugin Boussole déclare, par défaut, le serveur « spip » qui est installé sur le site boussole.spip.net et qui sert la boussole SPIP.

Le fichier XML complet est issu du fichier XML de base d’une boussole en plugin (identique aux version précédentes) auquel on ajoute les traductions sous format multilingues et les adresses des logos. Pour une boussole manuelle, seul les logos sont à calculer, les traductions étant déjà incluses dans le fichier XML de base.

Pour fournir les informations complètes sur une boussole, le serveur possède une action serveur_informer_boussole qui renvoie le fichier XML complet de la boussole demandée ou une erreur.

Pour fournir la liste des boussoles, le serveur possède cette fois une action serveur_lister_boussoles qui renvoie le fichier XML des boussoles hébergées.

Modifications de la fonction client du plugin Boussole

La principale modification de la fonction client a consisté à aller chercher les informations d’une boussole non pas dans un fichier XML mais via un webservice en utilisant l’action serveur_informer_boussole du serveur. C’est donc la fonction phraser_xml_boussole() qui a été recodé pour prendre en compte cette action.

En outre, la table spip_boussoles_extras a été rajoutée afin d’accueillir les traductions de tous les éléments textuels manipulés par une boussole. Cette table est mise à jour par la fonction boussole_ajouter dans le même temps que spip_boussoles qui contient elle toujours la liste des groupes et des sites. Le filtre boussole_traduire() a été recodé en conséquence.

Le formulaire d’ajout de boussoles a lui été remanié pour utiliser l’action serveur_lister_boussoles de chaque serveur configuré sur le site client afin de créer la liste des boussoles disponibles à l’affichage.

Ajout d’une configuration du plugin

Après les évolutions décrites ci-dessus, l’expérience « utilisateur avancé » a montré qu’il serait beaucoup plus pratique de remplacer les variables globales par une configuration paramétrable au travers de formulaires.

Cela a débouché sur une nouvelle évolution de Boussole :

  • une administration de la fonction serveur autorisant l’ajout de boussoles manuelles (variable $serveur_boussoles_disponibles) et l’actualisation des caches ;
  • d’une administration de la fonction client autorisant l’ajout de serveurs consultables (variable $client_serveurs_disponibles) et l’actualisation des boussoles installées ;
  • une page de configuration d’un site en mode serveur (constante _BOUSSOLE_ALIAS_SERVEUR ).