Programmer avec SPIP 3.0
Documentation technique sur SPIP 3.0

> > > > ajouter_boutons

ajouter_boutons

Ce pipeline permet d’ajouter des boutons dans le menu de navigation de l’espace privé. Il n’a plus vraiment d’utilité depuis la création du tag <bouton> dans le fichier plugin.xml (voir Définir des boutons).

  1. $boutons_admin = pipeline('ajouter_boutons', $boutons_admin);

Le pipeline « ajouter_boutons » reçoit un tableau associatif « identifiant d’un bouton / description du bouton » (classe PHP Bouton). Un bouton peut déclarer un sous-menu dans la variable « sousmenu » de la classe Bouton. Il faut créer une instance de la classe Bouton pour définir celui-ci :

  1. function plugin_ajouter_boutons($boutons_admin){
  2. $boutons_admin['identifiant'] =
  3. new Bouton('image/du_bouton.png', 'Titre du bouton', 'url');
  4. $boutons_admin['identifiant']->sousmenu['autre_identifiant'] =
  5. new Bouton('image/du_bouton.png', 'Titre du bouton', 'url');
  6. return $boutons_admin;
  7. }

Télécharger

Le troisième paramètre url de la classe Bouton est optionnel. Par défaut ce sera une page « exec » de même nom que l’identifiant donné (ecrire/?exec=identifiant).

Exemple

Le plugin « Thelia » qui permet d’interfacer SPIP avec le logiciel Thélia, utilise ce pipeline pour ajouter au menu « Édition » (identifiant « naviguer ») un lien vers le catalogue Thélia :

  1. function spip_thelia_ajouter_boutons($boutons_admin) {
  2. // si on est admin
  3. if ($GLOBALS['visiteur_session']['statut'] == "0minirezo") {
  4. $boutons_admin['naviguer']->sousmenu['spip_thelia_catalogue'] =
  5. new Bouton(_DIR_PLUGIN_SPIP_THELIA . 'img_pack/logo_thelia_petit.png', 'Catalogue Th&eacute;lia');
  6. }
  7. return $boutons_admin;
  8. }

Télécharger

Migration vers la nouvelle écriture

Pour migrer cet exemple dans la nouvelle écriture, il faut séparer 2 choses : la déclaration du bouton et l’autorisation de le voir ou non (ici seulement si l’on est administrateur). La déclaration s’écrit dans le fichier plugin.xml :

  1. <bouton id="spip_thelia_catalogue" parent="naviguer">
  2. <icone>smg_pack/logo_thelia_petit.png</icone>
  3. <titre>chaine de langue du titre</titre>
  4. </bouton>

Télécharger

L’autorisation passe par une fonction d’autorisation spécifique (utiliser le pipeline autoriser pour la définir) :

  1. function autoriser_spip_thelia_catalogue_bouton_dist($faire, $type, $id, $qui, $opt) {
  2. return ($qui['statut'] == '0minirezo');
  3. }

Télécharger