ajouter_onglets

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

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

  1. // ajout d'un onglet sur la page de configuration de SPIP
  2. function plugin_ajouter_onglets($flux) {
  3. if ($flux['args'] == 'identifiant') {
  4. $flux['data']['identifiant_bouton'] = new Bouton(
  5. "mon/image.png",
  6. "titre de l'onglet",
  7. 'url'
  8. );
  9. }
  10. return $flux;
  11. }

Télécharger

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 :

  1. [(#VAL{identifiant barre onglet}|barre_onglets{identifiant de l'onglet actif})]
  2. [(#VAL{infos_perso}|barre_onglets{configurer_preferences})]

Télécharger

En PHP :

  1. echo barre_onglets("identifiant barre d'onglet", "identifiant de l'onglet actif");
  2. echo barre_onglets("infos_perso", "configurer_preferences");

Télécharger

Exemple

Le plugin « SEO » dans ses anciennes versions ajoutait un onglet à peu près comme cela :

  1. function seo_ajouter_onglets($flux){
  2. if ($flux['args'] == 'configuration') and autoriser('configurer', 'seo')) {
  3. $flux['data']['seo'] = new Bouton(
  4. _DIR_PLUGIN_SEO . "img_pack/seo-24.png",
  5. _T("seo:seo"),
  6. generer_url_ecrire('seo_config')
  7. );
  8. }
  9. return $flux;
  10. }

Télécharger

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 :

  1. <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 :

  1. function autoriser_seoconfig_onglet_dist($faire, $type, $id, $qui, $opt) {
  2. return autoriser('configurer', 'seo', $id, $qui, $opt);
  3. }

Télécharger

Noter que l’identifiant seo_config est amputé du caractère souligné dans la déclaration de la fonction d’autorisation.

Auteur Matthieu Marcillaud Publié le : Mis à jour : 19/02/16

Traductions : English, français