1 | <?php |
---|
2 | |
---|
3 | if (!defined("_ECRIRE_INC_VERSION")) return; |
---|
4 | |
---|
5 | |
---|
6 | # CONFIG |
---|
7 | |
---|
8 | |
---|
9 | // #CONFIG retourne lire_config() |
---|
10 | // |
---|
11 | // Le 3eme argument permet de controler la serialisation du resultat |
---|
12 | // (mais ne sert que pour le depot 'meta') qui doit parfois deserialiser |
---|
13 | // ex: |in_array{#CONFIG{toto,#ARRAY,1}}. |
---|
14 | // Ceci n'affecte pas d'autres depots et |in_array{#CONFIG{toto/,#ARRAY}} sera equivalent |
---|
15 | // car du moment qu'il y a un /, c'est le depot 'metapack' qui est appelle. |
---|
16 | // |
---|
17 | function balise_CONFIG($p) { |
---|
18 | if (!$arg = interprete_argument_balise(1,$p)) { |
---|
19 | $arg = "''"; |
---|
20 | } |
---|
21 | $sinon = interprete_argument_balise(2,$p); |
---|
22 | $unserialize = sinon(interprete_argument_balise(3,$p),"false"); |
---|
23 | |
---|
24 | $p->code = 'lire_config(' . $arg . ',' . |
---|
25 | ($sinon && $sinon != "''" ? $sinon : 'null') . ',' . $unserialize . ')'; |
---|
26 | |
---|
27 | return $p; |
---|
28 | } |
---|
29 | |
---|
30 | |
---|
31 | |
---|
32 | # CFG_CHEMIN |
---|
33 | |
---|
34 | // |
---|
35 | // La balise CFG_CHEMIN retourne le chemin d'une image stockee |
---|
36 | // par cfg. |
---|
37 | // |
---|
38 | // cfg stocke : 'config/vue/champ.ext' (ce qu'affiche #CONFIG) |
---|
39 | // #cfg_chemin retourne l'adresse complete : 'IMG/config/vue/champ.ext' |
---|
40 | // |
---|
41 | function balise_CFG_CHEMIN_dist($p) { |
---|
42 | if (!$arg = interprete_argument_balise(1,$p)) { |
---|
43 | $arg = "''"; |
---|
44 | } |
---|
45 | $sinon = interprete_argument_balise(2,$p); |
---|
46 | |
---|
47 | $p->code = '($l = lire_config(' . $arg . ',' . |
---|
48 | ($sinon && $sinon != "''" ? $sinon : 'null') . ')) ? _DIR_IMG . $l : null'; |
---|
49 | |
---|
50 | return $p; |
---|
51 | } |
---|
52 | |
---|
53 | |
---|
54 | |
---|
55 | # CFG_ARBO |
---|
56 | |
---|
57 | |
---|
58 | /* |
---|
59 | * Affiche une arborescence du contenu d'un #CONFIG |
---|
60 | * |
---|
61 | * #CFG_ARBO, |
---|
62 | * #CFG_ARBO{ma_meta}, |
---|
63 | * #CFG_ARBO{~toto}, |
---|
64 | * #CFG_ARBO{ma_meta/mon_casier}, |
---|
65 | * #CFG_ARBO{ma_table:mon_id/mon_champ} |
---|
66 | * |
---|
67 | */ |
---|
68 | function balise_CFG_ARBO_dist($p) { |
---|
69 | if (!$arg = interprete_argument_balise(1,$p)) { |
---|
70 | $arg = "''"; |
---|
71 | } |
---|
72 | $p->interdire_scripts = false; |
---|
73 | $p->code = 'cfg_affiche_arborescence(' . $arg . ')'; |
---|
74 | return $p; |
---|
75 | } |
---|
76 | |
---|
77 | function cfg_affiche_arborescence($cfg='') { |
---|
78 | |
---|
79 | $sortie = ''; |
---|
80 | $hash = substr(md5(rand()*rand()),0,6); |
---|
81 | |
---|
82 | // integration du css |
---|
83 | // Suppression de cette inclusion des css arbo au profit d'une inclusion d'un fichier cfg.css dans le header prive |
---|
84 | // $sortie .= "<style type='text/css'>\n" |
---|
85 | // . ".cfg_arbo{}\n" |
---|
86 | // . ".cfg_arbo h5{padding:0.2em 0.2em; margin:0.2em 0; cursor:pointer;}\n" |
---|
87 | // . ".cfg_arbo ul{border:1px solid #ccc; margin:0; padding:0.2em 0.5em; list-style-type:none;}\n" |
---|
88 | // . "</style>\n"; |
---|
89 | |
---|
90 | // integration du js |
---|
91 | $sortie .= "<script type='text/javascript'><!-- |
---|
92 | |
---|
93 | $(document).ready(function(){ |
---|
94 | function cfg_arbo(){ |
---|
95 | jQuery('#cfg_arbo_$hash ul').hide(); |
---|
96 | jQuery('#cfg_arbo_$hash h5') |
---|
97 | .prepend('<strong>[+] <\/strong>') |
---|
98 | .toggle( |
---|
99 | function () { |
---|
100 | $(this).children('strong').text('[-] '); |
---|
101 | $(this).next('ul').show(); |
---|
102 | }, |
---|
103 | function () { |
---|
104 | $(this).children('strong').text('[+] '); |
---|
105 | $(this).next('ul').hide(); |
---|
106 | }); |
---|
107 | } |
---|
108 | setTimeout(cfg_arbo,100); |
---|
109 | |
---|
110 | }); |
---|
111 | // --></script>\n"; |
---|
112 | |
---|
113 | $tableau = lire_config($cfg); |
---|
114 | if ($c = @unserialize($tableau)) $tableau = $c; |
---|
115 | |
---|
116 | if (empty($cfg)) $cfg = 'spip_meta'; |
---|
117 | // parcours des donnees |
---|
118 | $sortie .= |
---|
119 | "<div class='cfg_arbo' id='cfg_arbo_$hash'>\n" . |
---|
120 | cfg_affiche_sous_arborescence($cfg, $tableau) . |
---|
121 | "\n</div>\n"; |
---|
122 | |
---|
123 | |
---|
124 | return $sortie; |
---|
125 | } |
---|
126 | |
---|
127 | function cfg_affiche_sous_arborescence($nom, $tableau){ |
---|
128 | $sortie = "\n<h5>$nom</h5>\n"; |
---|
129 | $sortie .= "\n<ul>"; |
---|
130 | if (is_array($tableau)){ |
---|
131 | ksort($tableau); |
---|
132 | foreach ($tableau as $tab=>$val){ |
---|
133 | if (is_array($val)) |
---|
134 | $sortie .= cfg_affiche_sous_arborescence($tab, $val); |
---|
135 | elseif (false !== $v = @unserialize($val)) |
---|
136 | $sortie .= cfg_affiche_sous_arborescence($tab, $v); |
---|
137 | else |
---|
138 | $sortie .= "<li>$tab = " . htmlentities($val) ."</li>\n"; |
---|
139 | |
---|
140 | } |
---|
141 | } else { |
---|
142 | $sortie .= "<li>$nom = " . htmlentities($tableau) . "</li>"; |
---|
143 | } |
---|
144 | $sortie .= "</ul>\n"; |
---|
145 | return $sortie; |
---|
146 | } |
---|
147 | |
---|
148 | ?> |
---|