Skip to content
Extraits de code Groupes Projets
Valider b758374a rédigé par cerdic's avatar cerdic
Parcourir les fichiers

"une API pour ajouter des boutons dans les menus de l'espace prive sans coder :

pour ajouter un bouton dans le bandeau principal
<bouton id='mon_bouton_1' parent=''>
	<icone>images/xml-valid-24.png</icone>
	<titre>Valider le site</titre>
	<url>w3c_go_home</url> <!-- nom de l'exec, facultatif, par defaut prend l'id -->
	<args>type=resume&id=1</args>
</bouton>
pour ajouter un bouton dans le bandeau secondaire
<bouton id='mon_sous_bouton' parent='mon_bouton_1'>
	<icone>images/xml-valid-24.png</icone>
	<titre>Valider le site</titre>
	<url>w3c_go_home</url> <!-- nom de l'exec, facultatif, par defaut prend l'id -->
	<args>type=complet&id=1</args>
</bouton>

l'ajout du bouton est soumis a la condition autoriser('bouton',$id) qui est par defaut vraie pour les seuls admins.
Pour gerer finement les conditions d'affichage du bouton, il suffit donc de definir
function autoriser_bouton_mon_bouton_1($faire,$quoi,$qui,$opt){
...
}
"
parent 73fbec03
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -208,6 +208,28 @@ function definir_barre_boutons() {
$boutons_admin['configuration']->sousmenu= $sousmenu;
} // fin si admin
// ajouter les boutons issus des plugin via plugin.xml
if (function_exists('boutons_plugins')){
$liste_boutons_plugins = boutons_plugins();
foreach($liste_boutons_plugins as $id => $infos){
if (autoriser('bouton',$id)){
if (($parent = $infos['parent']) && isset($boutons_admin[$parent]))
$boutons_admin[$parent]->sousmenu[$id]= new Bouton(
_DIR_PLUGINS . $infos['icone'], // icone
$infos['titre'], // titre
$infos['url']?$infos['url']:null,
$infos['args']?$infos['args']:null
);
if (!$parent)
$boutons_admin[$id] = new Bouton(
_DIR_PLUGINS . $infos['icone'], // icone
$infos['titre'], // titre
$infos['url']?generer_url_ecrire($infos['url'],$infos['args']?$infos['args']:''):null
);
}
}
}
$boutons_admin = pipeline('ajouter_boutons', $boutons_admin);
}
......
......@@ -244,7 +244,21 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz'){
$start_file = "<"."?php\nif (defined('_ECRIRE_INC_VERSION')) {\n";
$end_file = "}\n?".">";
if (is_array($infos)){
// construire tableaux de boutons
$liste_boutons = array();
foreach($infos as $plug=>$info){
if (isset($info['bouton'])){
foreach($info['bouton'] as $id=>$conf){
$conf['icone'] = "$plug/" . $conf['icone'];
$info['bouton'][$id] = $conf;
}
$liste_boutons = array_merge($liste_boutons,$info['bouton']);
}
}
}
// generer les fichier
// charger_plugins_options.php
// charger_plugins_fonctions.php
......@@ -279,14 +293,18 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz'){
}
}
$s .= "error_reporting(SPIP_ERREUR_REPORT);\n";
if ($charge=='options'){
$s .= "function boutons_plugins(){return unserialize('".str_replace("'","\'",serialize($liste_boutons))."');}\n";
}
ecrire_fichier(_DIR_TMP."charger_plugins_$charge.php",
$start_file . $splugs . $s . $end_file);
}
if (is_array($infos)){
// construire tableaux de pipelines et matrices
// construire tableaux de pipelines et matrices et boutons
// $GLOBALS['spip_pipeline']
// $GLOBALS['spip_matrice']
$liste_boutons = array();
foreach($infos as $plug=>$info){
$prefix = "";
$prefix = $info['prefix']."_";
......@@ -309,6 +327,7 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz'){
}
}
}
// on ajoute les pipe qui ont ete recenses manquants
foreach($liste_pipe_manquants as $add_pipe)
if (!isset($GLOBALS['spip_pipeline'][$add_pipe]))
......@@ -569,6 +588,25 @@ function plugin_get_infos($plug, $force_reload=false){
$ret['utilise'] = $arbre['utilise'];
$ret['path'] = $arbre['path'];
// recuperer les boutons si necessaire
spip_xml_match_nodes(",^bouton\s,",$arbre,$les_boutons);
if (is_array($les_boutons) && count($les_boutons)){
$ret['bouton'] = array();
foreach($les_boutons as $bouton => $val) {
$bouton = spip_xml_decompose_tag($bouton);
$bouton = end($bouton);
if (isset($bouton['id'])){
$id = $bouton['id'];
$ret['bouton'][$id]['parent'] = isset($bouton['parent'])?$bouton['parent']:'';
$val = reset($val);
$ret['bouton'][$id]['titre'] = isset($val['titre'])?trim(end($val['titre'])):'';
$ret['bouton'][$id]['icone'] = isset($val['icone'])?trim(end($val['icone'])):'';
$ret['bouton'][$id]['url'] = isset($val['url'])?trim(end($val['url'])):'';
$ret['bouton'][$id]['args'] = isset($val['url'])?trim(end($val['args'])):'';
}
}
}
if ($t=@filemtime($f)){
$ret['filemtime'] = $t;
$plugin_xml_cache[$plug]=$ret;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter