source: spip-zone/_plugins_/forms/forms_et_tables_2_0/exec/forms_edit.php @ 50068

Last change on this file since 50068 was 50068, checked in by carl.vincent38@…, 10 years ago

Diverses améliorations du plugin 'forms_et_tables_2_0' :

  • Réparation de l'export de réponses en articles
  • Ajout d'un nouveau format de téléchargement des réponses (Format spécialement conçu pour le plugin 'csv_import' qui permet d'importer des réponses dans une table)
  • Ajout de la possibilité de paramétrer pour chaque formulaire : --> La rubrique dans laquelle les réponses doivent être exportées --> Le champ du formulaire à utiliser pour définir le titre de l'article exporté

(RESTE à FAIRE : Traduire les champs ajoutés au fichier "/lang/forms_fr.php")

En espérant que ça ne "casse" pas tout! =D

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