Objectifs et mise en oeuvre du plugin Boussole

, par _Eric_

Le plugin ayant été déposé sur la Zone, sa documentation est maintenant consultable sur SPIP-Contrib : Boussole

Préambule

En faisant un état des lieux des boussoles SPIP qui parsèment la galaxie des sites SPIP on s’aperçoit qu’il y a pas mal de diversités/incohérences d’un site à un autre :

  • des noms différents (SPIP-Herbier ou L’herbier des sites SPIP)
  • des slogans ou des descriptions différents
  • des logos pas tout à fait identiques (SPIP.net, SPIPZine)
  • et des listes très disparates.

Par contre, les noisettes utilisées pour matérialiser ces boussoles comportent nombre de similitudes dans leur structure HTML et CSS.

Objectifs

Le plugin Boussole a donc comme buts :

  • de constituer la liste "officielle" des sites SPIP en proposant une charte réutilisable,
  • de proposer une liste de modèles prédéfinis pour insérer la boussole en fonction du besoin et de couvrir par là même l’ensemble des affichages utilisés dans la galaxie SPIP (voir l’article Reprise des sites de la galaxie avec Boussole),
  • d’être utilisé, a minima, dans tous les sites de la galaxie -et plus si affinité,
  • et donc de constituer un repère commun pour tous les utilisateurs de SPIP.

En outre, il est possible de créer sa propre boussole personnalisée de la galaxie SPIP ou de tout autre univers.

Modèle de données

Le modèle de données de Boussole distingue trois notions principales :

  • la Boussole, qui n’est autre qu’une liste de sites. Une boussole est identifiée par un alias unique qui prend la valeur « spip » pour la galaxie SPIP. Elle est décrite dans un fichier XML dont la DTD est présentée ci-après.
  • le Groupe, qui est une sous-ensemble thèmatique des sites d’une boussole. Le groupe est identifié par un alias unique au sein d’une boussole.
  • le Site, identifié par un alias unique au sein d’une boussole. Un site de boussole peut être mis en relation avec un site référencé de SPIP.

Le modèle de données est matérialisé par une unique table spip_boussoles dont chaque enregistrement est un site qui possède la liste des champs suivante :

  • id_site - id unique de chaque site (incrémental)
  • id_syndic - id du site équivalent (de même url) dans la table spip_syndic
  • aka_boussole - identifiant unique d’une boussole (spip pour la galaxie SPIP)
  • aka_site - identifiant unique du site dans sa boussole
  • url_site - URL du site
  • aka_groupe - identifiant unique du groupe dans sa boussole. La DTD limite les valeurs à 5 alias
  • rang_groupe - rang, de 1 à n du groupe utilisé pour l’affichage de la boussole
  • rang_site - rang, de 1 à n du site dans son groupe, utilisé pour l’affichage de la boussole
  • affiche - indicateur oui/non utilisé pour activer ou pas l’affichage du site dans les modèles
  • maj - timestamp de mise à jour

La table est mise à jour à partir de la lecture du fichier XML de la boussole. La DTD de ce fichier est la suivante :

<!ENTITY % NAME "CDATA"> <!-- identificateur -->
<!ENTITY % URI "CDATA"> <!-- lien sur le Web -->
<!ENTITY % VNUM "CDATA"> <!-- 3 entiers naturels separes par un point: x.y.z -->
<!ENTITY % GROUP "(reference|aide|extension|decouverte|actualite)">
<!ENTITY % ACTIVITY "(oui|non)"> <!-- indicateur d'activite du site : permet de retirer un site de la boussole sans perdre sa definition -->

<!ELEMENT boussole groupe+>
<!ATTLIST boussole
        alias %NAME; #REQUIRED
        version %VNUM; #REQUIRED
>

<!ELEMENT groupe site+>
<!ATTLIST groupe
        type %GROUP; #REQUIRED
>

<!ELEMENT site EMPTY>
<!ATTLIST site
        alias %NAME; #REQUIRED
        src %URI; #REQUIRED
        actif %ACTIVITY; #REQUIRED
>

Implémentation

Initialisation du plugin

Etant donné que Boussole est principalement destiné à la galaxie SPIP, il embarque nativement le fichier XML de description de la boussole SPIP - boussole_spip.xml. A l’activation du plugin cette boussole est automatiquement chargée en base de données et donc disponible à l’utilisation.

L’interface privée

Elle propose - via le menu Squelettes - une interface à onglets réservée aux webmestres et composée :

  • d’une page principale autorisant l’ajout, la mise à jour ou la suppression d’une boussole
  • une page d’édition d’une boussole donnée permettant d’en configurer l’affichage : visibilité et classement des groupes et des sites

En outre, si un site référencé fait partie d’une boussole, sa page d’édition en fera mention et affichera un lien vers cette boussole.

L’interface publique

Elle est essentiellement constituée d’une liste de modèles prédéfinis consultables dans la page de démo demo/boussole.html :

  • boussole_liste_simple.html - une liste ul/li avec le titre de la boussole en h2 optionnel
  • boussole_liste_par_groupe.html - une liste ul/li par groupe avec titre du groupe en h3 et titre de la boussole en h2, optionnels
  • boussole_liste_avec_logo.html - une liste ul/li avec le titre de la boussole en h2 optionnel. Chaque bloc de site affiche le logo, le nom et une explication, slogan ou descriptif
  • boussole_panorama.html - une galerie d’icônes seuls avec le titre de la boussole en h2 optionnel
  • boussole_contenu_z.html - une page Z avec le titre de la boussole en h1 et les titres des groupes en h3. Chaque site est un paragraphe
  • boussole_tableau.html - tableau complet de toutes les informations de la boussole. Ce modèle est utile comme débusqueur
  • boussole_liste_actualite.html - une liste ul/li des articles syndiqués des sites référencés de la boussole.

Les sites sont généralement présentés sous forme de lien avec le slogan en bulle d’info.

Traductions et icônes

L’intérêt de Boussole étant d’officialiser une charte des sites SPIP, le plugin intègre cette charte sous la forme :

  • d’une liste d’icônes contenus dans le dossier themes/spip/images pour chaque site et boussole,
  • d’une liste d’items de langue pour chaque nom, slogan et description des sites, groupes et boussoles, facilitant ainsi la traduction de la boussole SPIP via Salvatore.

Pour les icônes, le fichier est construit de la façon suivante :

  • boussole-<alias de la boussole>.png, pour une boussole,
  • site-<alias de la boussole>-<alias du site>.png, pour un site.

Un groupe ne possède pas d’icône spécifique.

Pour les items de langue, le nom est construit de la façon suivante :

  • <nom|slogan|descriptif>_boussole_<alias de la boussole>, pour le nom, le slogan ou le descriptif d’une boussole,
  • <nom|slogan|descriptif>_groupe_<alias de la boussole>_<alias du groupe>, pour le nom, le slogan ou le descriptif d’un groupe,
  • <nom|slogan|descriptif>_site_<alias de la boussole>_<alias du site>, pour le nom, le slogan ou le descriptif d’un site.

Un filtre |boussole_traduire permet de traduire tous les champs concernés d’une boussole, d’un groupe ou d’un site.