source: trunk/spip/esqueleto-redcta/plugins/cfg/cfg_pipeline.php @ 152

Last change on this file since 152 was 152, checked in by guille, 15 years ago

se agregaron svn_update y cfg para el 2.0

File size: 5.0 KB
Line 
1<?php
2
3/*
4 * Plugin CFG pour SPIP
5 * (c) toggg 2007, distribue sous licence GNU/GPL
6 * Documentation et contact: http://www.spip-contrib.net/
7 *
8 */
9
10if (!defined("_ECRIRE_INC_VERSION")) return;
11
12// Ajoute le bouton d'amin aux webmestres
13function cfg_ajouter_boutons($flux) {
14        // si on est admin
15        if (autoriser('configurer','cfg')) {
16          // on voit le bouton dans la barre "configuration"
17                $flux['configuration']->sousmenu['cfg']= new Bouton(
18                "../"._DIR_PLUGIN_CFG."cfg-22.png",  // icone
19                _T('cfg:CFG'));
20        }
21        return $flux;
22}
23
24
25/*
26 * Gerer l'option <!-- head= xxx --> des fonds CFG
27 * uniquement dans le prive
28 */
29function cfg_header_prive($flux){
30       
31        if (!_request('cfg') || (!_request('exec') == 'cfg')) {
32                return $flux;
33        }
34
35        // Ajout des css de cfg (uniquement balise arbo pour l'instant) dans le header prive
36        $flux .= '<link rel="stylesheet" href="'._DIR_PLUGIN_CFG.'css/cfg.css" type="text/css" media="all" />';
37
38        include_spip('inc/filtres');
39        include_spip('inc/cfg_formulaire');
40        $config = &new cfg_formulaire(
41                                sinon(_request('cfg'), ''),
42                                sinon(_request('cfg_id'),''));
43       
44        if ($config->param['head']) 
45                $flux .= "\n".$config->param['head'];
46       
47        return $flux;
48}
49
50
51
52
53// teste si $form n'est pas un formulaire CVT deja existant
54// (et non un formulaire CFG nomme $form en CVT)
55// #FORMULAIRE_TOTO <> #FORMULAIRE_CFG{toto}
56function est_cvt($form){
57        $f = 'formulaires_' . $form;
58        return (function_exists($f . '_stat')
59                OR function_exists($f . '_charger_dist')
60                OR function_exists($f . '_charger')
61                OR function_exists($f . '_verifier_dist')
62                OR function_exists($f . '_verifier')
63                OR function_exists($f . '_traiter_dist')
64                OR function_exists($f . '_traiter')     
65                );
66}
67
68# Formulaires CFG CVT
69function cfg_formulaire_charger($flux){
70        // s'il n'y a pas de fonction charger, on utilise le parseur de CFG
71        $form = $flux['args']['form'];
72        if (!est_cvt($form)){
73
74                // ici, on a le nom du fond cfg...
75                // on recupere donc les parametres du formulaire.       
76                include_spip('inc/cfg_formulaire');
77                #$config = &new cfg_formulaire($cfg, $cfg_id);
78                $cfg_id = isset($flux['args']['args'][0]) ? $flux['args']['args'][0] : '';
79                $config = &new cfg_formulaire($form, $cfg_id);
80
81                $valeurs = array(
82                        '_cfg_fond' => 'formulaires/'.$form,
83                        '_cfg_nom' => $form,
84                        'id' => $cfg_id,
85                        // passer aussi les arguments spécifiques a cfg
86                        '_cfg_' => $config->creer_hash_cfg() // passer action=cfg pour avoir un hash formulaire correct
87                );
88
89                // il faut passer les noms des champs (input et consoeurs) de CFG dans l'environnement
90                // pour pouvoir faire #ENV{nom_du_champ}
91                if (is_array($config->val)){
92                        foreach($config->val as $nom=>$val){
93                                $valeurs[$nom] = $val; 
94                        }
95                }
96
97                if (!$config->autoriser()) {
98                        $valeurs['editable'] = false;
99                } else {
100                        $valeurs['editable'] = true;
101                }
102               
103                $valeurs['_pipeline'] = array('editer_contenu_formulaire_cfg',
104                        'args'=>array(
105                                'nom'=>$form,
106                                'contexte'=>$valeurs,
107                                'ajouter'=>$config->param['inline'])
108                        );
109                $flux['data'] = $valeurs;
110                // return $valeurs; // retourner simplement les valeurs
111                #return array(true,$valeurs); // forcer l'etat editable du formulaire et retourner les valeurs
112
113        }
114        return $flux;
115}
116
117function cfg_formulaire_verifier($flux){
118
119        $form = $flux['args']['form'];
120        if (!est_cvt($form)){
121                include_spip('inc/cfg_formulaire');
122                #$config = &new cfg_formulaire($cfg, $cfg_id);
123                $cfg_id = isset($flux['args']['args'][0]) ? $flux['args']['args'][0] : '';
124                $config = &new cfg_formulaire($form, $cfg_id);
125               
126                $err = array();
127
128                if (!$config->verifier() && $e = $config->messages){
129                        if (isset($e['message_refus'])) {
130                                $err['message_erreur'] = $e['message_refus'];
131                        } else {
132                                if (count($e['erreurs']))  $err = $e['erreurs'];
133                                if (count($e['message_erreur']))  $err['message_erreur'] = join('<br />',$e['message_erreur']);
134                                if (count($e['message_ok']))  $err['message_ok'] = join('<br />',$e['message_ok']);
135                        }               
136                }
137
138                $flux['data'] = $err;
139               
140                // si c'est vide, modifier sera appele, sinon le formulaire sera resoumis
141                // a ce moment la, on transmet $config pour eviter de le recreer
142                // juste ensuite (et de refaire les analyse et la validation)
143                if (!$err) cfg_instancier($config);
144        }
145        return $flux;
146}
147
148// sauve ou redonne une instance de la classe cfg.
149// sert a transmettre $config entre verifier() et traiter()
150// car $flux le perd en cours de route si on lui donne...
151function cfg_instancier($config=false){
152        static $cfg=false; 
153        if (!$config) return $cfg;
154        return $cfg = $config;
155}
156
157// traitement du formulaire
158function cfg_formulaire_traiter($flux){
159        $form = $flux['args']['form'];
160        if (!est_cvt($form)){
161                $config = cfg_instancier();
162
163                $config->traiter();     
164                $message = join('<br />',$config->messages['message_ok']);     
165
166                $flux['data'] = array(true,$message); // forcer l'etat editable du formulaire et retourner le message
167        }
168        return $flux;
169}
170
171// pipeline sur l'affichage du contenu
172// pour supprimer les parametres CFG du formulaire
173function cfg_editer_contenu_formulaire_cfg($flux){
174        $flux['data'] = preg_replace('/(<!-- ([a-z0-9_]\w+)(\*)?=)(.*?)-->/sim', '', $flux['data']);
175        $flux['data'] .= $flux['args']['ajouter'];
176        return $flux;
177}
178
179?>
Note: See TracBrowser for help on using the repository browser.