source: spip-zone/_plugins_/cfg2/extensions/interface/prive/exec/cfg_fonctions.php @ 34835

Last change on this file since 34835 was 34835, checked in by marcimat@…, 10 years ago

Comme la fiche de présentation d'une config peut joliment avoir des icones plus grosses que celles d'origine, on ajoute un paramètre <!-- logo= ... --> dans les fonds d'interface pour les y insérer sans perturber le <!-- icone= ... --> de cfg1

File size: 5.6 KB
Line 
1<?php
2
3// function pour compatibilite avec les anciens fonds/cfg_xx.html
4function balise_CFG_EXEC_dist($p) {
5        $p->code = '((($exec = charger_fonction("cfg","exec",true)) and $exec) ? $exec() . \' \' : \'\')';
6        $p->interdire_scripts = false;
7        return $p;
8}
9
10
11function lister_configs_cfg($path = 'configurer', $tous = false) {
12        $crit_nom = $tous ? 'cfg_.' : '^[^_]';
13        $configs = 
14                array_unique(
15                array_values(
16                array_flip(
17                 find_all_in_path($path.'/', $crit_nom.'+\.html$'))));
18        $res = array();
19        foreach ($configs as $i=>$o) {
20                $res[$o] = $path;
21        }
22        return $res;
23}
24
25// retourne la liste des configurations trouves
26// fichiers : cfg/nomSansSouligne.html
27function lister_configs() {
28        $configs = array();
29        // restant de compat... a deplacer un jour comme il faut dans le plug cfg_compat.
30        if (defined('_DIR_PLUGIN_CFG_COMPAT')) {
31                $configs = array_merge($configs, lister_configs_cfg('fonds', true));
32        }
33        $configs = array_merge($configs, lister_configs_cfg());
34        ksort($configs);
35        $rendu = '';
36        if ($configs) {
37                include_spip('inc/cfg_formulaire');
38                // pour chacun, on recupere les information les concernant
39                // et on cree un bloc joli pour les presenter
40                foreach ($configs as $o=>$rep) {
41                        $nom = $fonds = basename($o, '.html');
42                        if (defined('_DIR_PLUGIN_CFG_COMPAT')
43                        and (0 === strpos($fonds, 'cfg_'))) {
44                                $nom = substr($fonds, 4);
45                        }
46
47                        $tmp = new cfg_formulaire($rep.'/'.$fonds); 
48                        if ($tmp->autoriser()){
49                                // restant de compat... a deplacer un jour comme il faut dans le plug cfg_compat.
50                                if (defined('_DIR_PLUGIN_CFG_COMPAT')) {
51                                        $ong = $tmp->param["onglet"];
52                                        if ($ong != 'oui' and $ong != $nom) {
53                                                continue;
54                                        }
55                                }
56                                $titre = $tmp->param["titre"] ? $tmp->param["titre"] : calculer_cfg_trad('titre',$nom);
57                                $descriptif = $tmp->param["descriptif"] ? $tmp->param["descriptif"] : calculer_cfg_trad('descriptif',$nom);
58                                if ($tmp->param["logo"]) {
59                                        $logo = $tmp->param["logo"];
60                                } elseif ($tmp->param["icone"]) {
61                                        $logo = $tmp->param["icone"];
62                                } else {
63                                        $logo = '';
64                                }
65                                $rendu .= recuperer_fond('inclure/presentation_config', array(
66                                        'titre' => $titre,
67                                        'descriptif' => $descriptif,
68                                        'logo' => $logo,
69                                        'lien' => generer_url_ecrire('configurer','cfg='.$nom),
70                                ));
71                        }
72                }
73        }
74        return $rendu;
75}
76
77
78// retourne la liste des onglets trouves pour un groupe donnee
79// #ENV{cfg}|lister_config_onglets
80function lister_config_onglets($nom) {
81        $onglets = 
82                array_unique(
83                array_values(
84                array_flip(
85                find_all_in_path('configurer/',$nom.'_'))));
86        foreach ($onglets as $i=>$o)
87                $onglets[$i] = basename($o, '.html'); 
88        return $onglets;
89}
90
91
92// calcule un element de liste (li) du menu de navigation
93// #ITEM_CONFIG{sarka,layout}
94function balise_ITEM_CONFIG($p) {
95       
96        $cfg_actif = "\$Pile[0]['cfg']";
97        $onglet_actif = "\$Pile[0]['onglet']";
98       
99        $cfg = interprete_argument_balise(1,$p);
100        $onglet = interprete_argument_balise(2,$p);
101
102        if ($onglet) {
103                $p->code = 'calculer_item_config('.$cfg.','.$cfg_actif.','.$onglet.','.$onglet_actif.')';
104        }
105        else {
106                $p->code = 'calculer_item_config('.$cfg.','.$cfg_actif.', false,'.$onglet_actif.')';
107        }
108        return $p;
109}
110
111// $onglet : false, ou "onglet" ou array("onglet")
112function calculer_ITEM_CONFIG($cfg, $cfg_actif, $onglet=false, $onglet_actif='') {
113
114        $actif = ($cfg === $cfg_actif);
115
116        $retour = "";
117
118        // lien principal
119        $lien = calculer_lien_config($cfg);
120        if ($onglet_actif) $actif = false;
121        $retour .= "<li" . ($actif ? ' class = "on"' : '') . ">$lien</li>";
122
123        // lien des onglets
124        if ($onglet !== false) {
125                if (!is_array($onglet)) {
126                        $onglet = array($onglet);
127                }               
128                foreach ($onglet as $ong) {
129                        $lien = calculer_lien_config($cfg, $ong);
130                        $on = $onglet_actif && ($ong == $onglet_actif);
131                        $retour .= "<li" . ($on ? ' class = "on"' : '') . ">$lien</li>";
132                }
133        }
134        return $retour;
135}
136
137
138// calcule un lien vers la config
139// #LIEN_CONFIG{sarka}
140// #LIEN_CONFIG{sarka,layout}
141function balise_LIEN_CONFIG($p) {
142        $cfg = interprete_argument_balise(1,$p);
143        $onglet = interprete_argument_balise(2,$p);
144        $texte = interprete_argument_balise(3,$p);
145        if ($texte)
146                $p->code = 'calculer_lien_config('.$cfg.','.$onglet.','.$texte.')';
147        elseif ($onglet)
148                $p->code = 'calculer_lien_config('.$cfg.','.$onglet.')';
149        else
150                $p->code = 'calculer_lien_config('.$cfg.')';
151        return $p;
152                $p->code = 'parametre_url(parametre_url(generer_url_ecrire(\'cfg\'),\'cfg\','.$cfg.'),\'onglet\','.$onglet.')';
153}
154
155function calculer_LIEN_CONFIG($cfg, $onglet='', $texte='') {
156        $url = generer_url_ecrire('cfg');
157        $url = parametre_url($url, 'cfg', $cfg);
158        if ($onglet)
159                $url = parametre_url($url, 'onglet', $onglet);
160        if (!$texte) {
161                if ($onglet)
162                        $texte = calculer_cfg_trad('configuration', $cfg, $onglet);
163                else
164                        $texte = calculer_cfg_trad('configuration', $cfg);
165
166                if (!$texte) $texte = $cfg.' '.$onglet;
167        }
168        return "<a href='$url'>$texte</a>";
169}
170
171
172// regarde si <:$nom:$quoi_$nom_$onglet:> existe
173// et le retourne si c'est le cas
174// sinon ne retourne rien.
175// #TRAD{configurer,sarka,layout}
176function balise_TRAD_dist($p) {
177        $quoi = interprete_argument_balise(1,$p);
178        $nom = interprete_argument_balise(2,$p);
179        $onglet = interprete_argument_balise(3,$p);
180        if ($onglet)
181                $p->code = 'calculer_cfg_trad('.$quoi.','.$nom.','.$onglet.')';
182        else
183                $p->code = 'calculer_cfg_trad('.$quoi.','.$nom.')';
184        return $p;
185}
186
187function calculer_cfg_trad($quoi, $nom, $onglet = '') {
188        // on teste si une traduction existe
189        static $traduire=false ;
190        if (!$traduire) {
191                $traduire = charger_fonction('traduire', 'inc');
192                include_spip('inc/lang');
193        }
194
195        $x = "$nom:$quoi"."_$nom";
196        if ($onglet) { $x .= "_$onglet"; }
197               
198        $text = $traduire($x,$GLOBALS['spip_lang']);
199       
200        return ($text) ? _T($x) : '';   
201}
202
203?>
Note: See TracBrowser for help on using the repository browser.