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).
$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 :
function plugin_ajouter_boutons($boutons_admin){
$boutons_admin['identifiant'] =
new Bouton('image/du_bouton.png', 'Titre du bouton', 'url');
$boutons_admin['identifiant']->sousmenu['autre_identifiant'] =
new Bouton('image/du_bouton.png', 'Titre du bouton', 'url');
return $boutons_admin;
}
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 :
function spip_thelia_ajouter_boutons($boutons_admin) {
// si on est admin
if ($GLOBALS['visiteur_session']['statut'] == "0minirezo") {
$boutons_admin['naviguer']->sousmenu['spip_thelia_catalogue'] =
new Bouton(_DIR_PLUGIN_SPIP_THELIA . 'img_pack/logo_thelia_petit.png', 'Catalogue Thélia');
}
return $boutons_admin;
}
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
:
<bouton id="spip_thelia_catalogue" parent="naviguer">
<icone>smg_pack/logo_thelia_petit.png</icone>
<titre>chaine de langue du titre</titre>
</bouton>
L’autorisation passe par une fonction d’autorisation spécifique (utiliser le pipeline autoriser pour la définir) :
function autoriser_spip_thelia_catalogue_bouton_dist($faire, $type, $id, $qui, $opt) {
return ($qui['statut'] == '0minirezo');
}