Ce pipeline permet d’ajouter des onglets dans les pages exec
de l’espace privé. Il n’a plus vraiment d’utilité depuis la création du tag <onglet>
dans le fichier plugin.xml
(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 :
echo barre_onglets("identifiant barre d'onglet", "identifiant de l'onglet actif");
echo barre_onglets("configuration", "contenu");
Exemple
Le plugin « Agenda » modifie les onglets par défaut du calendrier de SPIP en utilisant ce pipeline :
function agenda_ajouter_onglets($flux) {
if($flux['args']=='calendrier'){
$flux['data']['agenda']= new Bouton(
_DIR_PLUGIN_AGENDA . '/img_pack/agenda-24.png',
_T('agenda:agenda'),
generer_url_ecrire("calendrier","type=semaine"));
$flux['data']['calendrier'] = new Bouton(
'cal-rv.png',
_T('agenda:activite_editoriale'),
generer_url_ecrire("calendrier", "mode=editorial&type=semaine"));
}
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’écrit dans le fichier plugin.xml
:
<onglet id="agenda" parent="calendrier">
<icone>img_pack/agenda-24.png</icone>
<titre>agenda:agenda</titre>
<url>calendrier</url>
<args>type=semaine</args>
</onglet>
<onglet id="calendrier" parent="calendrier">
<icone>cal-rv.png</icone>
<titre>agenda:activite_editoriale</titre>
<url>calendrier</url>
<args>mode=editorial&type=semaine</args>
</onglet>
L’autorisation passe par une fonction spécifique (utiliser le pipeline autoriser pour la définir) :
function autoriser_calendrier_onglet_dist($faire, $type, $id, $qui, $opt) {
return true;
}
function autoriser_agenda_onglet_dist($faire, $type, $id, $qui, $opt) {
return true;
}