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).

$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&eacute;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');
}

Auteur Matthieu Marcillaud Publié le : Mis à jour : 12/03/23

Traductions : English, français