Définir des boutons

Pour ajouter des boutons dans l’espace privé il suffit de renseigner un attribut bouton dans le fichier plugin.xml, de la sorte :

<bouton id="identifiant" parent="nom de l'identifiant parent">
	<icone>chemin de l'icone</icone>
	<titre>chaine de langue du titre</titre>	
	<url>nom de l'exec</url>	
	<args>arguments transmis</args>	
</bouton>

Description :

  • id reçoit l’identifiant unique du bouton, qui sert entre autre aux sous-menus à indiquer le nom de leur bouton parent. Souvent, le nom du fichier exec (servant à afficher la page) est le même que le nom de l’identifiant,
  • parent : optionnel, permet d’indiquer que le bouton est un sous élément d’un bouton parent. On renseigne donc l’identifiant du bouton parent. En son absence, c’est un élément de premier niveau qui sera créé (comme les boutons « À suivre, Édition, ... »,
  • icone : optionnel aussi, pour indiquer le chemin de l’icone,
  • titre : texte du bouton qui peut-être une chaîne de langue « plugin:chaine »,
  • url indique le nom du fichier exec qui est chargé si l’on clique sur le bouton. S’il n’est pas indiqué, c’est le nom de l’identifiant qui est utilisé.
  • args, optionnel, permet de passer des arguments à l’url (exemple : <args>critere=debut</args>).

Autorisations

Les boutons sont affichés par défaut pour toutes les personnes connectées à l’interface privée. Pour modifier cette configuration, il faut créer des autorisations spécifiques pour les boutons (et donc utiliser le pipeline d’autorisation pour charger les autorisations nouvelles du plugin) :

function autoriser_identifiant_bouton_dist($faire, $type, $id, $qui, $opt) {
	return true; // ou false
}

Exemple

Les statistiques de SPIP 2.3 – en cours de développement – seront dans un plugin séparé. Il reproduit actuellement les boutons comme ceci :

<pipeline>
	<nom>autoriser</nom>
	<inclure>stats_autoriser.php</inclure>
</pipeline>
<bouton id="statistiques_visites">
	<icone>images/statistiques-48.png</icone>
	<titre>icone_statistiques_visites</titre>		
</bouton>
<bouton id='statistiques_repartition' parent='statistiques_visites'>
	<icone>images/rubrique-24.gif</icone>
	<titre>icone_repartition_visites</titre>
</bouton>
<bouton id='statistiques_lang' parent='statistiques_visites'>
	<icone>images/langues-24.gif</icone>
	<titre>onglet_repartition_lang</titre>
</bouton>	
<bouton id='statistiques_referers' parent='statistiques_visites'>
	<icone>images/referers-24.gif</icone>
	<titre>titre_liens_entrants</titre>
</bouton>

Les autorisations sont définies dans un fichier spécifique :

<?php
function stats_autoriser(){}

// Lire les stats ? = tous les admins
function autoriser_voirstats_dist($faire, $type, $id, $qui, $opt) {
	return (($GLOBALS['meta']["activer_statistiques"] != 'non')
			AND ($qui['statut'] == '0minirezo'));
}

// autorisation des boutons
function autoriser_statistiques_visites_bouton_dist($faire, $type, $id, $qui, $opt) {
	return autoriser('voirstats', $type, $id, $qui, $opt);
}

function autoriser_statistiques_repartition_bouton_dist($faire, $type, $id, $qui, $opt) {
	return autoriser('voirstats', $type, $id, $qui, $opt);
}

function autoriser_statistiques_lang_bouton_dist($faire, $type, $id, $qui, $opt) {
	return ($GLOBALS['meta']['multi_articles'] == 'oui' 
			OR $GLOBALS['meta']['multi_rubriques'] == 'oui')
		AND autoriser('voirstats', $type, $id, $qui, $opt);
}

function autoriser_statistiques_referers_bouton_dist($faire, $type, $id, $qui, $opt) {
	return autoriser('voirstats', $type, $id, $qui, $opt);
}

?>

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

Traductions : English, français