ajouter_onglets

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;
}

Auteur Matthieu Marcillaud Publié le : Mis à jour : 01/02/10

Traductions : English, français