Ce pipeline permet d’ajouter des onglets dans les pages
exec
de l’espace privé. Son utilité est limitée car la balise XML
<onglet>
dans le fichier
paquet.xml
répond à la plupart des besoins (voir
Définir des onglets).
return pipeline('ajouter_onglets', array('data'=>$onglets, 'args'=>$script));
Le pipeline « ajouter_onglets » reçoit un tableau associatif « identifiant de l’onglet / description de l’onglet » (classe PHP Bouton), mais aussi un identifiant de barre d’onglet (dans
args
).
// ajout d'un onglet sur la page de configuration de SPIP
function plugin_ajouter_onglets($flux) {
if ($flux['args'] == 'identifiant') {
$flux['data']['identifiant_bouton'] = new Bouton(
"mon/image.png",
"titre de l'onglet",
'url'
);
}
return $flux;
}
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
).
Dans les pages
exec
, une barre d’outil s’appelle avec deux arguments : l’identifiant de la barre désirée et l’identifiant de l’onglet actif.
En squelettes :
[(#VAL{identifiant barre onglet}|barre_onglets{identifiant de l'onglet actif})]
[(#VAL{infos_perso}|barre_onglets{configurer_preferences})]
En PHP :
echo barre_onglets("identifiant barre d'onglet", "identifiant de l'onglet actif");
echo barre_onglets("infos_perso", "configurer_preferences");
Exemple
Le plugin « SEO » dans ses anciennes versions ajoutait un onglet à peu près comme cela :
function seo_ajouter_onglets($flux){
if ($flux['args'] == 'configuration') and autoriser('configurer', 'seo')) {
$flux['data']['seo'] = new Bouton(
_DIR_PLUGIN_SEO . "img_pack/seo-24.png",
_T("seo:seo"),
generer_url_ecrire('seo_config')
);
}
return $flux;
}
{{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. La déclaration s’écrirait dans le fichier
paquet.xml
:
<onglet nom="seo_config" titre="seo:seo" parent="configuration" icone="img_pack/seo-24.png" />
L’autorisation passe par une fonction spécifique (utiliser le pipeline
autoriser pour la définir) et pourrait ressembler à cela :
function autoriser_seoconfig_onglet_dist($faire, $type, $id, $qui, $opt) {
return autoriser('configurer', 'seo', $id, $qui, $opt);
}
Noter que l’identifiant
seo_config
est amputé du caractère souligné dans la déclaration de la fonction d’autorisation.