source: spip-zone/_plugins_/_stable_/forms/forms_et_tables_1_9_1/exec/forms_edit.php @ 16002

Last change on this file since 16002 was 16002, checked in by cedric@…, 12 years ago

"oups"

File size: 11.2 KB
Line 
1<?php
2/*
3 * forms
4 * Gestion de formulaires editables dynamiques
5 *
6 * Auteurs :
7 * Antoine Pitrou
8 * Cedric Morin
9 * Renato
10 * ??? 2005,2006 - Distribue sous licence GNU/GPL
11 *
12 */
13
14include_spip('inc/forms');
15include_spip('inc/forms_edit');
16include_spip('inc/forms_type_champs'); // gestion des types de champs
17
18function Forms_formulaire_confirme_suppression($id_form,$nb_reponses,$redirect,$retour,$prefixei18n='form'){
19        global $spip_lang_right;
20        $out = "<div class='verdana3'>";
21        if ($nb_reponses){
22                        $out .= "<p><strong>"._T("forms:attention")."</strong> ";
23                        $out .= _T("$prefixei18n:info_supprimer_formulaire_reponses")."</p>\n";
24        }
25        else{
26                $out .= "<br />";
27                $out .= _T("$prefixei18n:info_supprimer_formulaire")."</p>\n";
28        }
29        $link = generer_action_auteur('forms_supprime',"$id_form",_DIR_RESTREINT_ABS.($retour?(str_replace('&amp;','&',$retour)):generer_url_ecrire('forms_tous',"",false,true)));
30        $out .= "<form method='POST' action='$link' style='float:$spip_lang_right'>";
31        $out .= form_hidden($link);
32        $out .= "<div style='text-align:$spip_lang_right'>";
33        $out .= "&nbsp;<input type='submit' name='supp_confirme' value=\""._T('item_oui')."\" class='fondo'>";
34        $out .= "</div>";
35        $out .= "</form>\n";
36
37        $out .= "<form method='POST' action='$redirect' style='float:$spip_lang_right'>\n";
38        $out .= form_hidden($redirect);
39        $out .= "<div style='text-align:$spip_lang_right'>";
40        $out .= "&nbsp;<input type='submit' name='supp_rejet' value=\""._T('item_non')."\" class='fondo'>";
41        $out .= "</div>";
42        $out .= "</form><br />\n";
43        $out .= "</div>";
44
45        return $out;
46}
47
48function contenu_boite_resume($id_form, $row, &$apercu){
49        $prefixei18n = forms_prefixi18n($row['type_form']);
50        $is_form =      $prefixei18n=='form';
51
52        $out = "";
53
54        // centre resume ---------------------------------------------------------------
55        $out .= debut_cadre_relief("../"._DIR_PLUGIN_FORMS."img_pack/form-24.png",true);
56
57        //$out .= gros_titre($row['titre'],'',false);
58
59        if ($row['descriptif']) {
60                $out .= "<div class='descriptif'><strong>"._T('info_descriptif')."</strong>";
61                $out .= propre($row['descriptif']);
62                $out .= "</div>\n";
63        }
64
65        if ($email = unserialize($row['email'])) {
66                $out .= "<div class='email'><strong>"._T('email_2')."</strong>";
67                $out .= $email['defaut'];
68                $out .= "</div>\n";
69        }
70        if ($champconfirm = $row['champconfirm']){
71                $champconfirm_known = false;
72                $out .= "<div class='champconfirm'><strong>"._T('forms:confirmer_reponse')."</strong>";
73                $res2 = spip_query("SELECT titre FROM spip_forms_champs WHERE type='email' AND id_form="._q($id_form)." AND champ="._q($champconfirm));
74                if ($row2 = spip_fetch_array($res2)){
75                        $out .= $row2['titre'] . " ";
76                        $champconfirm_known = true;
77                }
78                $out .= "</div>\n";
79                if (($champconfirm_known == true) && ($row['texte'])) {
80                        $out .= "<div class='texte'><strong>"._T('info_texte')."</strong>";
81                        $out .= nl2br(entites_html($row['texte']));
82                        $out .= "</div>\n";
83                }
84        }
85
86        $out .= "<br />";
87        if (version_compare($GLOBALS['spip_version_code'],'1.9250','>')){
88                $out .= bouton_block_depliable(_T("forms:apparence_formulaire"),true,"preview_form");
89                $out .= debut_block_depliable(true,"preview_form");
90        }
91        else {
92                $out .= "<div style='padding: 2px; background-color: $couleur_claire; color: black;'>&nbsp;";
93                $out .= bouton_block_invisible("preview_form");
94                $out .= "<strong class='verdana3' style='text-transform: uppercase;'>"
95                        ._T("forms:apparence_formulaire")."</strong>";
96                $out .= "</div>\n";
97                $out .= debut_block_visible("preview_form");
98        }
99        $out .= "<p>" . _T("forms:info_apparence") . "</p>\n";
100        $out .= "<div id='apercu'>$apercu</div>";
101        $out .= fin_block();
102
103        if ($GLOBALS['spip_version_code']<1.92)         ob_start(); // des echo direct en 1.9.1
104        $liste = afficher_articles(_T("$prefixei18n:articles_utilisant"),
105                array('FROM' => 'spip_articles AS articles, spip_forms_articles AS lien',
106                'WHERE' => "lien.id_article=articles.id_article AND id_form="._q($id_form)." AND statut!='poubelle'",
107                'ORDER BY' => "titre"));
108        if ($GLOBALS['spip_version_code']<1.92) {
109                $liste = ob_get_contents();
110                ob_end_clean();
111        }
112               
113        $out .= $liste;
114
115        $out .= fin_cadre_relief(true);
116        return $out;
117}
118
119function exec_forms_edit(){
120        global $spip_lang_right;
121        $retour = _request('retour');
122
123        $id_form = intval(_request('id_form'));
124       
125        if (!include_spip('inc/autoriser'))
126                include_spip('inc/autoriser_compat');
127        if (!autoriser('structurer','form',$id_form)) {
128                echo debut_page("&laquo; $titre &raquo;", "documents", "forms","");
129                echo _T('acces_interdit');
130                echo fin_page();
131                exit();
132        }
133       
134        $new = _request('new');
135        $supp_form = intval(_request('supp_form'));
136        $supp_rejet = _request('supp_rejet');
137        $titre = _request('titre');
138       
139        _Forms_install();
140        if ($supp_form)
141                $id_form = $supp_form;
142
143        if ($retour)
144                $retour = urldecode($retour);
145        else 
146                $retour = generer_url_ecrire('forms_tous',"","",true);
147  include_spip("inc/presentation");
148        include_spip("inc/config");
149
150        $nb_reponses = 0;
151        if ($id_form)
152                if ($row = spip_fetch_array(spip_query("SELECT COUNT(*) AS num FROM spip_forms_donnees WHERE id_form="._q($id_form)." AND confirmation='valide' and statut!='poubelle'")))
153                        $nb_reponses = $row['num'];
154
155
156        $redirect = generer_url_ecrire('forms_edit',(intval($id_form)?"id_form=$id_form":""));
157        if ($retour) 
158                $redirect = parametre_url($redirect,"retour",urlencode($retour));
159               
160        //
161        // Affichage de la page
162        //
163        if ($id_form){
164                $champ_visible = _request('champ_visible');
165                $nouveau_champ = _request('nouveau_champ');
166                $result = spip_query("SELECT * FROM spip_forms WHERE id_form="._q($id_form));
167                if ($row = spip_fetch_array($result)) {
168                        $id_form = $row['id_form'];
169                        $titre = $row['titre'];
170                }
171                $focus = "";
172                $action_link = generer_action_auteur("forms_edit","$id_form",urlencode($redirect));
173        }
174
175        $ajax_charset = _request('var_ajaxcharset');
176        $bloc = _request('bloc');
177        if ($ajax_charset && $bloc=='dummy') {
178                ajax_retour("");
179        }
180        if ($ajax_charset && $bloc=='apercu') {
181                include_spip('public/assembler');
182                $GLOBALS['var_mode']='calcul';
183                $apercu = recuperer_fond('modeles/form',array('id_form'=>$id_form,'var_mode'=>'calcul'));
184                ajax_retour($apercu);
185        }
186        if ($ajax_charset && $bloc=='resume') {
187                include_spip('public/assembler');
188                $GLOBALS['var_mode']='calcul';
189                $apercu = recuperer_fond('modeles/form',array('id_form'=>$id_form,'var_mode'=>'calcul'));
190                ajax_retour(contenu_boite_resume($id_form, $row, $apercu));
191        }
192        if ($ajax_charset && $bloc=='proprietes') {
193                ajax_retour(boite_proprietes($id_form, $row, $focus, $action_link, $redirect));
194        }
195        $bloc = explode("-",$bloc);
196        if ($ajax_charset && $bloc[0]=='champs') {
197                ajax_retour(Forms_zone_edition_champs($id_form, $champ_visible, $nouveau_champ,$redirect,isset($bloc[2])?$bloc[2]:false));
198        }
199       
200       
201        debut_page("&laquo; $titre &raquo;", "documents", "forms","");
202
203        // Recupere les donnees ---------------------------------------------------------------
204        if ($new == 'oui' && !$titre) {
205                $row['type_form'] = _request('type_form')?_request('type_form'):""; // possibilite de passer un type par defaut dans l'url de creation
206                $prefixei18n = forms_prefixi18n($row['type_form']);
207                $is_form =      $prefixei18n=='form';
208               
209                $titre = _T("$prefixei18n:nouveau_formulaire");
210                include_spip('inc/charset');
211                $row['titre'] = $titre = unicode2charset(html2unicode($titre));
212                $row['descriptif'] = "";
213                if ($is_form){
214                        $row['modifiable'] = 'non';
215                        $row['multiple'] = 'oui';
216                        $row['moderation'] = "posteriori";
217                }
218                else {
219                        $row['modifiable'] = 'non';
220                        $row['multiple'] = 'non';
221                        $row['moderation'] = "priori";
222                }
223                $row['forms_obligatoires'] = "";
224                $row['email'] = serialize(array());
225                $row['champconfirm'] = "";
226                $row['texte'] = "";
227                $row['public'] = "non";
228                $row['linkable'] = "non";
229                $row['documents'] = "non";
230                $focus = "antifocus";
231               
232                $action_link = generer_action_auteur("forms_edit","new",urlencode($redirect));
233        }
234        $prefixei18n = forms_prefixi18n($row['type_form']);
235        $is_form =      $prefixei18n=='form';
236
237        // gauche raccourcis ---------------------------------------------------------------
238        debut_gauche();
239       
240        echo "<br /><br />\n";
241        debut_boite_info();
242        if ($id_form>0)
243                echo "<div align='center' style='font-size:3em;font-weight:bold;'>$id_form</div>\n";
244        if ($retour) {
245                icone_horizontale(_T('icone_retour'), $retour, "../"._DIR_PLUGIN_FORMS."img_pack/form-24.png", "rien.gif",'right');
246        }
247        if (autoriser('administrer','form',$id_form)) {
248                $nretour = urlencode(self());
249                icone_horizontale(_T("forms:suivi_reponses")."<br />".(($nb_reponses==0)?_T("forms:aucune_reponse"):(($nb_reponses==1)?_T("forms:une_reponse"):_T("forms:nombre_reponses",array('nombre'=>$nb_reponses)))),
250                generer_url_ecrire(in_array($row['type_form'],array('','sondage'))?'forms_reponses':'donnees_tous',"id_form=$id_form"), "../"._DIR_PLUGIN_FORMS."img_pack/donnees-24.png", "rien.gif");
251                if ($nb_reponses){
252                        icone_horizontale(_T("forms:telecharger_reponses"),
253                                generer_url_ecrire('forms_telecharger',"id_form=$id_form&retour=$nretour"), _DIR_PLUGIN_FORMS."img_pack/donnees-exporter-24.png", "rien.gif");
254                }
255
256                if (include_spip('inc/snippets'))
257                        echo boite_snippets(_T("$prefixei18n:formulaire"),_DIR_PLUGIN_FORMS."img_pack/form-24.gif",'forms',$id_form);
258
259                $link = parametre_url(self(),'new','');
260                $link = parametre_url($link,'supp_form', $id_form);
261                if (!$retour) {
262                        $link=parametre_url($link,'retour', urlencode(generer_url_ecrire('form_tous')));
263                }
264                echo "<p>";
265                icone_horizontale(_T("$prefixei18n:supprimer_formulaire"), $link, "../"._DIR_PLUGIN_FORMS."img_pack/supprimer-24.png", "rien.gif");
266                echo "</p>";
267        }
268        fin_boite_info();
269       
270        // gauche apercu ---------------------------------------------------------------
271        echo "<div id='apercu_gauche'>";
272        include_spip('public/assembler');
273        $GLOBALS['var_mode']='calcul';
274        echo $apercu = recuperer_fond('modeles/form',array('id_form'=>$id_form,'var_mode'=>'calcul'));
275        echo "</div>";
276        echo '<a class="verdana2" href="#" onclick="$(\'#apercu_gauche\').remove();$(\'#apercu\').remove();$(this).remove();return false;">'._T('forms:desactiver')."</a>";
277       
278       
279
280        // droite ---------------------------------------------------------------
281        creer_colonne_droite();
282        debut_droite();
283
284        if (!$new){
285                echo gros_titre($row['titre'],'',false);
286       
287                if ($supp_form && $supp_rejet==NULL)
288                        echo Forms_formulaire_confirme_suppression($id_form,$nb_reponses,$redirect,$retour,$prefixei18n);
289                echo "<div id='barre_onglets'>";
290                echo debut_onglet();
291                echo onglet(_L("Aper&ccedil;u"),ancre_url(self(),"resume"),'','resume');
292                echo onglet(_L("Propri&eacute;t&eacute;s"),ancre_url(self(),"proprietes"),'','proprietes');
293                echo onglet(_L("Champs"),ancre_url(self(),"champs"),'','champs');
294                echo fin_onglet();
295                echo "</div>";
296        }
297
298        $out = "";
299        if ($id_form){
300                $out .= "<div id='resume' name='resume'>";
301                $out .= contenu_boite_resume($id_form, $row, $apercu);
302                $out .= "</div>";
303        }
304
305        // centre proprietes ---------------------------------------------------------------
306        $out .= "<div id='proprietes' name='proprietes'>";
307        $out .= boite_proprietes($id_form, $row, $focus, $action_link, $redirect);
308        $out .= "</div>";
309
310        // edition des champs ---------------------------------------------------------------
311        $out .= "<div id='champs' name='champs'>";
312        $out .= Forms_zone_edition_champs($id_form, $champ_visible, $nouveau_champ,$redirect);
313        $out .= "</div>\n";
314
315        echo $out;
316
317        if ($GLOBALS['spip_version_code']>=1.9203)
318                echo fin_gauche();
319        echo fin_page();
320}
321
322?>
Note: See TracBrowser for help on using the repository browser.