source: spip-zone/_plugins_/_stable_/cfg2/core/cfg_fonctions.php @ 26929

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

Allons un peu plus vers la séparation :

  • déplacement des dépots php, table et tablepack
  • suppression du parametre 'inline'
  • les extensions par les classes css ou par les paramètres sont supprimées (mis dans compat)
File size: 3.2 KB
Line 
1<?php
2
3if (!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//
17function 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//
41function 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 */
68function 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
77function cfg_affiche_arborescence($cfg='') {
78
79        $sortie = '';
80        $hash = substr(md5(rand()*rand()),0,6);
81
82        // integration du js   
83        $sortie .= "<script type='text/javascript'><!--
84                               
85                                $(document).ready(function(){
86                                        function cfg_arbo(){
87                                                jQuery('#cfg_arbo_$hash ul').hide();
88                                                jQuery('#cfg_arbo_$hash h5')
89                                                .prepend('<strong>[+] <\/strong>')
90                                                .toggle(
91                                                  function () {
92                                                        $(this).children('strong').text('[-] ');
93                                                        $(this).next('ul').show();
94                                                  },
95                                                  function () {
96                                                        $(this).children('strong').text('[+] ');
97                                                        $(this).next('ul').hide();
98                                                  });                                           
99                                        }
100                                        setTimeout(cfg_arbo,100);
101
102                                });
103                                // --></script>\n";
104                               
105        $tableau = lire_config($cfg);
106        if ($c = @unserialize($tableau)) $tableau = $c;
107       
108        if (empty($cfg)) $cfg = 'spip_meta';
109        // parcours des donnees
110        $sortie .= 
111                "<div class='cfg_arbo' id='cfg_arbo_$hash'>\n" .
112                cfg_affiche_sous_arborescence($cfg, $tableau) .
113                "\n</div>\n";
114
115
116        return $sortie;
117}
118
119function cfg_affiche_sous_arborescence($nom, $tableau){
120        $sortie = "\n<h5>$nom</h5>\n";
121        $sortie .= "\n<ul>";
122        if (is_array($tableau)){
123                ksort($tableau);
124                foreach ($tableau as $tab=>$val){
125                        if (is_array($val)) 
126                                $sortie .= cfg_affiche_sous_arborescence($tab, $val);
127                        elseif (false !== $v = @unserialize($val))
128                                $sortie .= cfg_affiche_sous_arborescence($tab, $v);
129                        else
130                                $sortie .= "<li>$tab = " . htmlentities($val) ."</li>\n";
131                       
132                }
133        } else {
134                $sortie .= "<li>$nom = " . htmlentities($tableau) . "</li>";
135        }
136        $sortie .= "</ul>\n";
137        return $sortie; 
138}
139
140?>
Note: See TracBrowser for help on using the repository browser.