ajouter_boutons

This pipeline is used to add buttons to the private zone navigation menu. It is not really so useful since the creation of the <bouton> tag in the plugin.xml file (see Defining buttons).

$boutons_admin = pipeline('ajouter_boutons', $boutons_admin);

The "ajouter_boutons" pipeline accepts a parameter table of "button identifer / button description" couples (with a PHP class of Bouton(Button)). A button can declare a sub-menu in the "submenu" variable of the Bouton(Button) class. You must create an instance of the Bouton class to define this:

function plugin_ajouter_boutons($boutons_admin){
$boutons_admin['identifier'] =
    new Bouton('image/du_bouton.png', 'Button title', 'url');
$boutons_admin['identifier']->sousmenu['other_identifier'] =
    new Bouton('image/du_bouton.png', 'Button title', 'url');
return $boutons_admin;
}

The third url parameter of the Bouton class is optional. By default, it will be an "exec" page with the same name as the identifier provided (ecrire/?exec=identifier).

Example

The "Thelia" plugin, which makes it possible to interface SPIP with the Thélia software package, uses this pipeline to add a link to the Thélia catalogue to the "Édition" menu (with the "naviguer" identifier):

function spip_thelia_ajouter_boutons($boutons_admin) {
    // if you are admin
    if ($GLOBALS['visiteur_session']['statut'] == "0minirezo") {
        $boutons_admin['naviguer']->sousmenu['spip_thelia_catalogue'] =
        new Bouton(_DIR_PLUGIN_SPIP_THELIA . 'img_pack/logo_thelia_petit.png', 'Catalogue Th&eacute;lia');
    }
    return $boutons_admin;
}

Migration to the new system

To rewrite this example to the new system, two things would need to be separated: the button declaration, and the authorisation to view it or not (in this case, authorisation is only for administrators). The declaration is written in the plugin.xml file:

<bouton id="spip_thelia_catalogue" parent="naviguer">
    <icone>smg_pack/logo_thelia_petit.png</icone>
    <titre>title language string</titre>       
</bouton>

The authorisation component is built with a special authorisation function (use the autoriser pipeline to define this):

function autoriser_spip_thelia_catalogue_bouton_dist($faire, $type, $id, $qui, $opt) {
    return ($qui['statut'] == '0minirezo');
}

Author Mark Baber Published : Updated : 31/05/10

Translations : English, français