$ong){
if ($ong['afficher'])
$ret .= ''
.'';
}
}
return $ret;
}
// retourne un tableau contenant une liste de fonds cfg et leurs parametres
// d'onglet (oui/non/titre_parent), plus quelques autres parametres (url, titre, icone),
// pour un repertoire donne (sinon tout le path)
function lister_onglets_cfg($dir=''){
$onglets = array();
// scruter les onglets affichables
if ($l = liste_cfg($dir)) {
foreach($l as $fonds => $cfg) {
if (!isset($onglets[$fonds]))
$onglets[$fonds] = array();
$args = array();
$args['afficher'] = false;
// On va chercher la config cible
// et on regarde ses donnees pour faire l'onglet
// seulement si l'onglet doit etre affiche
include_spip('inc/cfg');
$tmp = new cfg($fonds);
if ($tmp->autoriser()){
$args['onglet'] = $tmp->form->param['onglet'];
$args['url'] = generer_url_ecrire('cfg', 'cfg='.$fonds);
// titre
if (!$args['titre'] = $tmp->form->param['titre'])
$args['titre'] = $fonds;
// icone
$path = dirname(dirname($cfg));
$args['icone'] = '';
if ($tmp->form->param['icone'])
$args['icone'] = $path.'/'.$tmp->form->param['icone'];
else if (file_exists($path.'/plugin.xml'))
$args['icone'] = 'plugin-24.gif';
else
$args['icone'] = _DIR_PLUGIN_CFG.'cfg-doc-22.png';
// l'afficher ?
if ($tmp->form->param['onglet'] == 'oui')
$args['afficher'] = true;
}
$onglets[$fonds] = array_merge($args, $onglets[$fonds]); // conserver les donnees deja presentes ('enfant_actif')
}
}
return $onglets;
}
// la classe cfg represente une page de configuration
class cfg
{
var $form; // la classe cfg_formulaire
function cfg($nom, $cfg_id = '', $opt = array()) {
include_spip('inc/cfg_formulaire');
$this->form = &new cfg_formulaire($nom, $cfg_id, $opt);
}
function autoriser() {return $this->form->autoriser(); }
function traiter() {return $this->form->traiter();}
function get_titre(){ return $this->form->param['titre'];}
function get_nom() { return $this->form->param['nom'];}
function get_boite(){
if (!(($titre = $this->form->param['titre']) && ($boite = $this->form->param['boite']))){
$boite=($titre)?$titre: _T('icone_configuration_site') . ' ' . $this->form->param['nom'];
}
return $boite;
}
// pour pouvoir tester si la presentation des formulaires doit etre appliquee ou non
// m'est avis que ca devrait virer cette 'presentation=auto'...
// c'est comme 'rediriger', il n'y a que le plugin 'autorite' qui l'utilise
function get_presentation() { return $this->form->param['presentation']; }
//
// Affiche la boite d'info
// des liens vers les autres fonds CFG
// definis par la variable liens
//
// s'il y a une chaine de langue 'moncfg', le texte sera traduit
//
// Ou
//
// pour utiliser la chaine de langue de prefixe_plugin
//
function liens()
{
$return = '';
// liens simples
foreach ($this->form->param['liens'] as $lien) {
$nom = _T($lien);
$lien = array_pop(explode(':',$lien)); // ne garder que la derniere partie de la chaine de langue
$return .= ($l = $this->generer_lien($lien, $nom)) ? "
\n" . "
\n"; } } // On ajoute un bouton 'nouveau' return "\n"; } // // Affiche la liste des onglets de CFG // // Recupere les fonds CFG et analyse ceux-ci // - si onglet=oui : affiche l'onglet (valeur par defaut) // - si onglet=non : n'affiche pas l'onglet // - si onglet=fond_cfg_parent : n'affiche pas l'onglet, mais 'exposera' // l'element parent indique (sous entendu que // le parent n'a pas 'onglet=non' sinon rien ne sera expose... // function barre_onglets(){ // determiner les onglets a cacher et a mettre en surbrillance if ($onglets = lister_onglets_cfg()){ foreach ($onglets as $fonds=>$ong){ $o = $ong['onglet']; // onglet actif if ($o == 'oui') $onglets[$fonds]['actif'] = ($fonds == _request('cfg')); // rendre actif un parent si l'enfant est actif (onglet=nom_du_parent // (/!\ ne pas le desactiver s'il a deja ete mis actif) if ($o && $o!='oui' && $o!='non'){ if (!isset($onglets[$o])) $onglets[$o]=array(); if (!isset($onglets[$o]['enfant_actif'])) $onglets[$o]['enfant_actif']=false; $onglets[$o]['enfant_actif'] = ($onglets[$o]['enfant_actif'] OR $fonds == _request('cfg')); } } } // retourner le code des onglets selectionnes $res = ""; if ($onglets) { $res = debut_onglet(); $n = -1; foreach ($onglets as $titre=>$args){ if ($args['afficher']){ // Faire des lignes s'il y en a effectivement plus de 6 if (!(++$n%6) && ($n>0)) $res .= fin_onglet().debut_onglet(); $res .= onglet( $args['titre'], $args['url'], 'cfg', ($args['actif'] || $args['enfant_actif']), $args['icone']); } } $res .= fin_onglet(); } return $res; } // affiche le descriptif du formulaire function descriptif(){ if ($d = $this->form->param['descriptif']) return propre($d); } // affiche le message en cas d'acces interdit function acces_refuse(){ include_spip('inc/minipres'); return minipres(_T('info_acces_refuse'), $this->form->param['refus'] ? $this->form->param['refus'] : " (cfg {$this->form->param[nom]} - {$this->form->vue} - {$this->form->param[cfg_id]})"); } // afficher les messages de cfg function messages(){ $m = $this->form->messages; $messages = array(); if (count($m['message_ok'])) $messages[] = join('