source: spip-zone/_plugins_branche_stable_/_spip_1_9_1_/Forms/exec/forms_edit.php @ 4994

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

bug des ' dans les libelles et quelques chaines de langue

File size: 28.7 KB
Line 
1<?php
2/*
3 * forms
4 * version plug-in de spip_form
5 *
6 * Auteur :
7 * Antoine Pitrou
8 * adaptation en 182e puis plugin par cedric.morin@yterium.com
9 * © 2005,2006 - Distribue sous licence GNU/GPL
10 *
11 */
12
13include_spip('inc/forms');
14
15function bloc_edition_champ($t, $link) {
16        global $couleur_claire;
17
18        $code = $t['code'];
19        $obligatoire = $t['obligatoire'];
20        $type = $t['type'];
21        $type_ext = $t['type_ext'];
22
23        if ($type != 'separateur'){
24                $checked = ($obligatoire == 'oui') ? " checked='checked'" : "";
25                echo "&nbsp; &nbsp; <input type='checkbox' name='champ_obligatoire' value='oui' id='obli_$code'$checked> ";
26                echo "<label for='obli_$code'>"._T("forms:edit_champ_obligatoire")."</label>";
27                echo "<br />\n";
28        }
29
30        if ($type == 'url') {
31                $checked = ($t['verif'] == 'oui') ? " checked='checked'" : "";
32                echo "&nbsp; &nbsp; <input type='checkbox' name='champ_verif' value='oui' id='verif_$code'$checked> ";
33                echo "<label for='verif_$code'>"._L("v&eacute;rifier l'existence du site Web")."</label>";
34                echo "<br />\n";
35        }
36        if ($type == 'select' || $type == 'multiple') {
37                global $ajout_choix;
38
39                echo "<div style='margin: 5px; padding: 5px; border: 1px dashed $couleur_claire;'>";
40                echo _L("Liste des choix propos&eacute;s")."&nbsp;:<br />\n";
41                foreach ($type_ext as $code_choix => $nom_choix) {
42                        if ($ajout_choix == $code_choix) {
43                                echo "<script type='text/javascript'><!-- \nvar antifocus_choix= false; // --></script>\n";
44                                $js = " onfocus=\"if(!antifocus_choix){this.value='';antifocus_choix=true;}\"";
45                        }
46                        else $js = "";
47                        echo "<input type='text' name='$code_choix' value=\"".entites_html($nom_choix)."\" ".
48                                "class='fondl verdana2' size='20'$js>";
49                        //
50                        echo " <input style='display: none;' type='submit' name='modif_choix' value=\""._T('bouton_modifier')."\" class='fondo verdana2'>";
51                        $supp_link = $link;
52                        $supp_link = parametre_url($supp_link,'supp_choix', $code_choix);
53                        echo " &nbsp; <span class='verdana1'>[<a href='".$supp_link."#champ_visible'>".
54                                _L("supprimer ce choix")."</a>]</span>";
55                        echo "<br />\n";
56                }
57                echo "<br /><input type='submit' name='ajout_choix' value=\""._L("Ajouter un choix")."\" class='fondo verdana2'>";
58
59                echo "</div>";
60                if ($type=='select')
61                        echo "<br /><input type='submit' name='switch_select_multi' value=\""._L("Changer en choix multiple")."\" class='fondl verdana2'>";
62                if ($type=='multiple')
63                        echo "<br /><input type='submit' name='switch_select_multi' value=\""._L("Changer en choix unique")."\" class='fondl verdana2'>";
64                echo "<br />\n";
65        }
66        if ($type == 'mot') {
67                echo "<label for='groupe_$code'>"._L("Groupe")."</label> :";
68                echo " &nbsp;<select name='groupe_champ' value='0' id='groupe_$code' class='fondo verdana2'>\n";
69                $query = "SELECT * FROM spip_groupes_mots ORDER BY titre";
70                $result = spip_query($query);
71                while ($row = spip_fetch_array($result)) {
72                        $id_groupe = $row['id_groupe'];
73                        $titre_groupe = supprimer_tags(typo($row['titre']));
74                        $selected = ($id_groupe == $type_ext['id_groupe']) ? " selected='selected'": "";
75                        echo "<option value='$id_groupe'$selected>$titre_groupe</option>\n";
76                }
77                echo "</select>";
78                echo "<br />\n";
79        }
80        if ($type == 'fichier') {
81                $taille = intval($type_ext['taille']);
82                if (!$taille) $taille = '';
83                echo "<label for='taille_$code'>"._L("Taille maximale (en ko)")."</label> : ";
84                echo "<input type='text' name='taille_champ' value='$taille' id='taille_$code' class='fondo verdana2'>\n";
85                echo "<br />\n";
86        }
87}
88
89function modif_edition_champ($t) {
90        $type = $t['type'];
91        $type_ext = &$t['type_ext'];
92        $code = $t['code'];
93       
94        if ($type == 'url') {
95                global $champ_verif;
96                if ($champ_verif) $t['verif'] = $champ_verif;
97                else unset($t['verif']);
98        }
99        if ($type == 'select' || $type == 'multiple') {
100                global $ajout_choix, $supp_choix;
101                if ($ajout_choix) {
102                        $n = 1;
103                        $code_choix = $code.'_'.$n;
104                        while (isset($type_ext[$code_choix]))
105                                $code_choix = $code.'_'.(++$n);
106                        $type_ext[$code_choix] = _L("Nouveau choix");
107                        $ajout_choix = $code_choix;
108                }
109                foreach ($type_ext as $code_choix => $nom_choix) {
110                        if (isset($GLOBALS[$code_choix]))
111                                $type_ext[$code_choix] = $GLOBALS[$code_choix];
112                }
113                /*if ($supp_choix) {
114                        unset($type_ext[$supp_choix]);
115                }*/
116        }
117        if ($type == 'mot') {
118                if ($id_groupe = intval($GLOBALS['groupe_champ']))
119                        $type_ext['id_groupe'] = $id_groupe;
120        }
121        if ($type == 'fichier') {
122                $type_ext['taille'] = intval($GLOBALS['taille_champ']);
123        }
124       
125        return $t;
126}
127
128function code_nouveau_champ($structure,$type){
129        $n = 1;
130        $code = $type.'_'.strval($n);
131        foreach ($structure as $t) {
132                list($letype, $lenumero) = split('_', $t['code'] );
133                if ($type == $letype)
134                {
135                        $lenumero = intval($lenumero);
136                        if ($lenumero>= $n)
137                                $n=$lenumero+1;
138                        $code = $type.'_'.strval($n);
139                }
140        }
141        return $code;
142}
143
144function forms_update(){
145        $id_form = intval(_request('id_form'));
146        $new = _request('new');
147        $supp_form = intval(_request('supp_form'));
148        $modif_champ = _request('modif_champ');
149        $ajout_champ = _request('ajout_champ');
150        $retour = _request('retour');
151        $titre = _request('titre');
152        $descriptif = _request('descriptif');
153        $email = _request('email');
154        $champconfirm = _request('champconfirm');
155        $texte = _request('texte');
156        $sondage = _request('sondage');
157        $nom_champ = _request('nom_champ');
158        $champ_obligatoire = _request('champ_obligatoire');
159        $monter = _request('monter');
160        $descendre = _request('descendre');
161        $supp_choix = _request('supp_choix');
162        $supp_champ = _request('supp_champ');
163        $supp_confirme = _request('supp_confirme');
164        $supp_rejet = _request('supp_rejet');
165
166        //
167        // Modifications des donnees de base du formulaire
168        //
169        if (Forms_form_administrable($id_form)) {
170                if ($supp_form = intval($supp_form) AND $supp_confirme AND !$supp_rejet) {
171                        $query = "DELETE FROM spip_forms WHERE id_form=$supp_form";
172                        $result = spip_query($query);
173                        if ($retour) {
174                                $retour = urldecode($retour);
175                                Header("Location: $retour");
176                                exit;
177                        }
178                }
179        }
180       
181        $nouveau_champ = $champ_visible = NULL;
182
183        $structure = array();
184        if (Forms_form_editable($id_form)) {
185                // creation
186                if ($new == 'oui' && $titre) {
187                        $structure = array();
188                        spip_query("INSERT INTO spip_forms (structure) VALUES ('".
189                                addslashes(serialize($structure))."')");
190                        $id_form = spip_insert_id();
191                        unset($new);
192                }
193                // maj
194                if ($id_form && $titre) {
195                        $query = "UPDATE spip_forms SET ".
196                                "titre='".addslashes($titre)."', ".
197                                "descriptif='".addslashes($descriptif)."', ".
198                                "sondage='".addslashes($sondage)."', ".
199                                "email='".addslashes(serialize($email))."', ".
200                                "champconfirm='".addslashes($champconfirm)."', ".
201                                "texte='".addslashes($texte)."' ".
202                                "WHERE id_form=$id_form";
203                        $result = spip_query($query);
204                }
205                // lecture
206                $query = "SELECT * FROM spip_forms WHERE id_form=$id_form";
207                $result = spip_query($query);
208                if ($row = spip_fetch_array($result)) {
209                        $id_form = $row['id_form'];
210                        $titre = $row['titre'];
211                        $descriptif = $row['descriptif'];
212                        $sondage = $row['sondage'];
213                        $structure = unserialize($row['structure']);
214                        $email = unserialize($row['email']);
215                        $champconfirm = $row['champconfirm'];
216                        $texte = $row['texte'];
217                }
218        }       
219       
220        if ($id_form && Forms_form_editable($id_form)) {
221                $modif_structure = false;
222                $champ_visible = NULL;
223                // Ajout d'un champ
224                if (($type = $ajout_champ) && Forms_types_champs_autorises($type)) {
225                        $code = code_nouveau_champ($structure,$type);
226                        $nom = _L("Nouveau champ");
227                        $structure[] = array('code' => $code, 'nom' => $nom, 'type' => $type, 'type_ext' => array());
228                        $champ_visible = $nouveau_champ = $code;
229                        $modif_structure = true;
230                }
231                // Modif d'un champ
232                if ($code = $modif_champ) {
233                        unset($index);
234                        foreach ($structure as $index => $t) {
235                                if ($code == $t['code']) break;
236                        }
237                        if (isset($index)) {
238                                // switch select to multi ou inversement
239                                if (isset($_POST['switch_select_multi'])){
240                                        if ($t['type']=='select') $newtype = 'multiple';
241                                        if ($t['type']=='multiple') $newtype = 'select';
242                                       
243                                        $newcode = code_nouveau_champ($structure,$newtype);
244                                        $t['type'] = $newtype;
245                                        $new_type_ext = array();
246                                        foreach($t['type_ext'] as $key=>$type_ext)
247                                                $new_type_ext[str_replace($t['code'],$newcode,$key)] = $type_ext;
248                                        $t['code'] = $newcode;
249                                        $t['type_ext'] = $new_type_ext;
250                                }
251                                $t['nom'] = $nom_champ;
252                                $t['obligatoire'] = $champ_obligatoire;
253                                $t = modif_edition_champ($t);
254                                if (!$t['type_ext']) $t['type_ext'] = array();
255                                $structure[$index] = $t;
256                                $modif_structure = true;
257                        }
258                        $champ_visible = $code;
259                }
260                // Cas particulier : ajout / suppression d'un choix
261                /*if ($code = $ajout_choix) {
262                        unset($index);
263                        foreach ($structure as $index => $t) {
264                                if ($code == $t['code']) break;
265                        }
266                        if (isset($index)) {
267                                $type_ext = $t['type_ext'];
268                                $n = 1;
269                                $code_choix = $code.'_'.$n;
270                                while ($type_ext[$code_choix])
271                                        $code_choix = $code.'_'.(++$n);
272                                $type_ext[$code_choix] = _L("Nouveau choix");
273                                $structure[$index]['type_ext'] = $type_ext;
274                                $champ_visible = $t['code'];
275                                $ajout_choix = $code_choix;
276                        }
277                        $modif_structure = true;
278                }*/
279                if ($code_choix = $supp_choix) {
280                        foreach ($structure as $index => $t) {
281                                if (is_array($t['type_ext']) && isset($t['type_ext'][$supp_choix])) {
282                                        unset($t['type_ext'][$supp_choix]);
283                                        if (!$t['type_ext']) $t['type_ext'] = array();
284                                        $champ_visible = $t['code'];
285                                        $structure[$index] = $t;
286                                }
287                        }
288                        $modif_structure = true;
289                }
290                // Suppression d'un champ
291                if ($code = $supp_champ) {
292                        unset($index);
293                        foreach ($structure as $index => $t) {
294                                if ($code == $t['code']) break;
295                        }
296                        if (isset($index)&&($structure[$index]['code']==$code)){
297                                unset($structure[$index]);
298                                if (!$structure) $structure = array();
299                                $modif_structure = true;
300                        }
301                }
302
303                // Monter / descendre un champ
304                if (isset($monter) && $monter > 0) {
305
306                        $monter = intval($monter);
307                        $n = $monter;
308                        while (--$n) if ($structure[$n]) break;                 
309                        if ($t = $structure[$n]) {
310                                $structure[$n] = $structure[$monter];
311                                $structure[$monter] = $t;
312                                $champ_visible = $structure[$n]['code'];
313                        }
314                        $modif_structure = true;
315                }
316                if (isset($descendre)) {
317                        $descendre = intval($descendre);
318                        $max = max(array_keys($structure));
319                        $n = $descendre;
320                        while (++$n < $max) if ($structure[$n]) break;
321                        if ($t = $structure[$n]) {
322                                $structure[$n] = $structure[$descendre];
323                                $structure[$descendre] = $t;
324                                $champ_visible = $structure[$n]['code'];
325                        }
326                        $modif_structure = true;
327                }
328                if ($id_form && Forms_form_editable($id_form)) {
329                        if ($modif_structure) {
330                                ksort($structure);
331                                $query = "UPDATE spip_forms SET `structure`='".addslashes(serialize($structure))."' ".
332                                        "WHERE id_form=$id_form";
333                                spip_query($query);
334                        }
335                }
336        }
337       
338        return array($id_form,$champ_visible,$nouveau_champ);
339}
340
341function debut_block_route($id,$visible){
342        $display = $visible?'block':'none';
343        return "<script type='text/javascript'><!--
344                                        document.write('<div id=\"$id\" style=\"display: $display; margin-top: 1;\">');
345                                        //--></script>
346                                        <noscript>
347                                        <div id='bock_email_route_$code' style='display: block;'>
348                                        </noscript>";   
349}
350function fin_block_route(){
351        return  "<script type='text/javascript'><!--
352                                        document.write('<\/div>');
353                                        //--></script>
354                                        <noscript>
355                                                </div>
356                                        </noscript>";
357}
358
359function exec_forms_edit(){
360        global $spip_lang_right;
361        $id_form = intval(_request('id_form'));
362        $new = _request('new');
363        $supp_form = intval(_request('supp_form'));
364        $modif_champ = _request('modif_champ');
365        $ajout_champ = _request('ajout_champ');
366        $retour = _request('retour');
367        $titre = _request('titre');
368        $descriptif = _request('descriptif');
369        $email = _request('email');
370        $champconfirm = _request('champconfirm');
371        $texte = _request('texte');
372        $sondage = _request('sondage');
373        $nom_champ = _request('nom_champ');
374        $champ_obligatoire = _request('champ_obligatoire');
375        $monter = _request('monter');
376        $descendre = _request('descendre');
377        $supp_choix = _request('supp_choix');
378        $supp_champ = _request('supp_champ');
379        $supp_confirme = _request('supp_confirme');
380        $supp_rejet = _request('supp_rejet');
381
382       
383  Forms_verifier_base();
384
385        if ($retour)
386                $retour = urldecode($retour);
387  include_spip("inc/presentation");
388        include_spip("inc/config");
389
390        if ($id_form) {
391                $query = "SELECT COUNT(*) FROM spip_reponses WHERE id_form=$id_form AND statut='valide'";
392                $result = spip_query($query);
393                list($nb_reponses) = spip_fetch_array($result);
394        }
395        else $nb_reponses = 0;
396
397        $clean_link = parametre_url(self(),'new','');
398        $form_link = generer_url_ecrire('forms_edit');
399        if ($new == 'oui' && !$titre)
400                $form_link = parametre_url($form_link,"new",$new);
401        if ($retour) 
402                $form_link = parametre_url($form_link,"retour",urlencode($retour));
403
404               
405        unset($champ_visible);
406        unset($nouveau_champ);
407        //
408        // Recupere les donnees
409        //
410        if ($new == 'oui' && !$titre) {
411                $titre = _L("Nouveau formulaire");
412                $descriptif = "";
413                $sondage = "non";
414                $structure = array();
415                $email = array();
416                $champconfirm = "";
417                $texte = "";
418                $js_titre = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
419        }
420        else {
421                //
422                // Modifications au structure du formulaire
423                //
424                list($id_form,$champ_visible,$nouveau_champ) = forms_update();
425               
426                $query = "SELECT * FROM spip_forms WHERE id_form=$id_form";
427                $result = spip_query($query);
428                if ($row = spip_fetch_array($result)) {
429                        $id_form = $row['id_form'];
430                        $titre = $row['titre'];
431                        $descriptif = $row['descriptif'];
432                        $sondage = $row['sondage'];
433                        $structure = unserialize($row['structure']);
434                        $email = unserialize($row['email']);
435                        $champconfirm = $row['champconfirm'];
436                        $texte = $row['texte'];
437                }
438                $js_titre = "";
439        }
440        $form_link = parametre_url($form_link,"id_form",$id_form);
441        $clean_link = parametre_url($clean_link,"id_form",$id_form);
442
443        //
444        // Affichage de la page
445        //
446
447        debut_page("&laquo; $titre &raquo;", "documents", "forms","");
448
449        debut_gauche();
450
451
452        echo "<br /><br />\n";
453
454        if (Forms_form_administrable($id_form) && $nb_reponses) {
455                debut_boite_info();
456
457                $retour = urlencode(self());
458                icone_horizontale(_L("Suivi des r&eacute;ponses")."<br />".$nb_reponses." "._L("r&eacute;ponses"),
459                        generer_url_ecrire('forms_reponses',"id_form=$id_form"), "forum-public-24.gif", "rien.gif");
460                icone_horizontale(_L("T&eacute;l&eacute;charger les r&eacute;ponses"),
461                        generer_url_ecrire('forms_telecharger',"id_form=$id_form&retour=$retour"), "doc-24.gif", "rien.gif");
462
463                fin_boite_info();
464        }
465
466
467
468        debut_droite();
469
470        if ($supp_form && $supp_confirme==NULL && $supp_rejet==NULL) {
471                if ($nb_reponses){
472                        echo "<p><strong>"._L("Attention :")."</strong> ";
473                        echo _L("Des r&eacute;ponses ont &eacute;t&eacute; faites &agrave; ce formulaire. ".
474                                "Voulez-vous vraiment le supprimer ?")."</p>\n";
475                }
476                else{
477                        echo "<p>";
478                        echo _L("Voulez-vous vraiment supprimer ce formulaire ?")."</p>\n";
479                }
480                $link = parametre_url($clean_link,'supp_form', $supp_form);
481                echo "<form method='POST' action='"
482                        . $link
483                        . "' style='border: 0px; margin: 0px;'>";
484                echo "<div style='text-align:$spip_lang_right'>";
485                echo "<input type='submit' name='supp_confirme' value=\""._T('item_oui')."\" class='fondo'>";
486                echo " &nbsp; ";
487                echo "<input type='submit' name='supp_rejet' value=\""._T('item_non')."\" class='fondo'>";
488                echo "</div>";
489                echo "</form><br />\n";
490        }
491
492
493        if ($id_form) {
494                debut_cadre_relief("../"._DIR_PLUGIN_FORMS."/img_pack/form-24.png");
495
496                gros_titre($titre);
497
498                if ($descriptif) {
499                        echo "<p /><div align='left' border: 1px dashed #aaaaaa;'>";
500                        echo "<strong class='verdana2'>"._T('info_descriptif')."</strong> ";
501                        echo propre($descriptif);
502                        echo "</div>\n";
503                }
504
505                if ($email) {
506                        echo "<p /><div align='left' border: 1px dashed #aaaaaa;'>";
507                        echo "<strong class='verdana2'>"._T('email_2')."</strong> ";
508                        echo $email['defaut'];
509                        echo "</div>\n";
510                }
511                if ($champconfirm){
512                        $champconfirm_known = false;
513                        echo "<div align='left' border: 1px dashed #aaaaaa;'>";
514                        echo "<strong class='verdana2'>"._L('Confirmer la r&eacute;ponse par mail avec :')."</strong> ";
515                        foreach ($structure as $index => $t) {
516                                if (($t['type'] == 'email') && ($champconfirm == $t['code'])) {
517                                        echo $t['nom'] . " ";
518                                        $champconfirm_known = true;
519                                }
520                        }
521                        echo "</div>\n";
522                        if (($champconfirm_known == true) && ($texte)) {
523                                echo "<div align='left' border: 1px dashed #aaaaaa;'>";
524                                echo "<strong class='verdana2'>"._T('info_texte')."</strong> ";
525                                echo nl2br(entites_html($texte));
526                                echo "</div>\n";
527                        }
528                }
529
530                if (count($structure)) {
531                        echo "<br />";
532
533                        echo "<div style='padding: 2px; background-color: $couleur_claire; color: black;'>&nbsp;";
534                        echo bouton_block_invisible("preview_form");
535                        echo "<strong class='verdana3' style='text-transform: uppercase;'>"
536                                ._L("Apparence du formulaire")."</strong>";
537                        echo "</div>\n";
538
539                        echo debut_block_invisible("preview_form");
540                        echo _L("Voici une pr&eacute;visualisation du formulaire tel qu'il ".
541                                "appara&icirc;tra aux visiteurs du site public.")."<p>\n";
542                        //echo "<div class='spip_forms'>";
543                        echo propre("<form$id_form>");
544                        //echo "</div>\n";
545                        echo fin_block();
546
547                }
548
549                afficher_articles(_L("Articles utilisant ce formulaire"),
550                        array('FROM' => 'spip_articles AS articles, spip_forms_articles AS lien',
551                        'WHERE' => "lien.id_article=articles.id_article AND id_form=$id_form AND statut!='poubelle'",
552                        'ORDER BY' => "titre"));
553
554                fin_cadre_relief();
555        }
556
557
558        //
559        // Icones retour et suppression
560        //
561        echo "<div style='text-align:$spip_lang_right'>";
562        if ($retour) {
563                icone(_T('icone_retour'), $retour, "../"._DIR_PLUGIN_FORMS."/img_pack/form-24.png", "rien.gif",'right');
564        }
565        if ($id_form && Forms_form_administrable($id_form)) {
566                echo "<div style='float:$spip_lang_left'>";
567                $link = parametre_url($clean_link,'supp_form', $id_form);
568                if (!$retour) {
569                        $link=parametre_url($link,'retour', urlencode(generer_url_ecrire('form_tous')));
570                }
571                icone(_L("Supprimer ce formulaire"), $link, "../"._DIR_PLUGIN_FORMS."/img_pack/form-24.png", "supprimer.gif");
572                echo "</div>";
573        }
574        echo "<div style='clear:both;'></div>";
575        echo "</div>";
576
577
578        //
579        // Edition des donnees du formulaire
580        //
581        if (Forms_form_editable($id_form)) {
582                echo "<p>";
583                debut_cadre_formulaire();
584
585                echo "<div class='verdana2'>";
586                echo "<form method='POST' action='"
587                        . $form_link
588                        . "' style='border: 0px; margin: 0px;'>";
589
590                $titre = entites_html($titre);
591                $descriptif = entites_html($descriptif);
592                $texte = entites_html($texte);
593
594                echo "<strong><label for='titre_form'>"._L("Titre du formulaire")."</label></strong> "._T('info_obligatoire_02');
595                echo "<br />";
596                echo "<input type='text' name='titre' id='titre_form' CLASS='formo' ".
597                        "value=\"".entites_html($titre)."\" size='40'$js_titre><br />\n";
598
599                echo "<strong><label for='desc_form'>"._T('info_descriptif')."</label></strong>";
600                echo "<br />";
601                echo "<textarea name='descriptif' id='desc_form' class='forml' rows='4' cols='40' wrap='soft'>";
602                echo entites_html($descriptif);
603                echo "</textarea><br />\n";
604
605
606               
607                // Routage facultatif des emails en fonction d'un champ select
608                $email_route_known = false;
609                $jshide = "";
610                $s = "";
611                $options = "";
612                if (is_array($structure)){
613                        foreach ($structure as $index => $t) {
614                                if ($t['type'] == 'select'){
615                                        $visible = false;
616                                        $code = $t['code'];
617                                        $options .= "<option value='$code'";
618                                        if ($email['route'] == $code){
619                                                $options .= " selected='selected'";
620                                                $email_route_known = $visible = true;
621                                        }
622                                        $options .= ">" . $t['nom'] . "</option>\n";
623                                        $s .= debut_block_route("bock_email_route_$code",$visible);
624                                        $jshide .=  "cacher_email_route('bock_email_route_$code');\n";
625                                       
626                                        $s .= "<table id ='email_route_$code'>\n";
627                                        $s .= "<tr><th>".$t['nom']."</th><th>";
628                                        $s .= "<strong><label for='email_route_$code'>"._T('email_2')."</label></strong>";
629                                        $s .= "</th></tr>\n";
630                                        $js = "";
631                                        $type_ext = $t['type_ext'];
632                                        foreach ($type_ext as $code_choix => $nom_choix) {
633                                                $s .= "<tr><td>$nom_choix</td><td>";
634                                                $s .= "<input type='text' name='email[$code_choix]' value=\"";
635                                                $s .= isset($email[$code_choix])?entites_html($email[$code_choix]):"";
636                                                $s .= "\" class='fondl verdana2' size='20'$js>";
637                                                $s .= "</td></tr>";
638                                        }
639                                        $s .="</table>";
640                                        $s .= fin_block_route("bock_email_route_$code",$visible);
641                                }
642                        }
643                        $jshide = "<script type='text/javascript'><!--
644                        function montrer_email_route(obj) {
645                                layer = findObj(obj);
646                                if (layer)
647                                        layer.style.display = 'block';
648                        }
649                        function cacher_email_route(obj) {
650                                layer = findObj(obj);
651                                if (layer)
652                                        layer.style.display = 'none';
653                        }
654                        function update_email_route_visibility(obj){
655                                $jshide
656                                cacher_email_route('bock_email_route_');
657                                montrer_email_route(obj);
658                        }
659                        //--></script>\n";
660                        echo $jshide;
661
662                        echo "<strong><label for='email_route_form'>"._L('Choisir l\'email en fonction de')."</label></strong> ";
663                        echo "<br />";
664                        echo "<select name='email[route]' id='email_route_form' class='forml'";
665                        echo "onchange='update_email_route_visibility(\"bock_email_route_\"+options[selectedIndex].value)' ";
666                        echo ">\n";
667                        echo "<option value=''>"._L('Email independant de la reponse')."</option>\n";
668                        echo $options;
669                        echo "</select><br />\n";
670                }
671               
672                echo debut_block_route("bock_email_route_",$email_route_known==false);
673                echo "<strong><label for='email_form'>"._T('email_2')."</label></strong> ";
674                echo "<br />";
675                echo "<input type='text' name=\"email[defaut]\" id='email_form' class='forml' ".
676                        "value=\"".entites_html($email['defaut'])."\" size='40'$js_titre>\n";
677                echo fin_block_route();
678                echo $s;
679                echo "<br/>";
680               
681                //-----
682
683                echo "<strong><label for='confirm_form'>"._L('Confirmer la r&eacute;ponse par mail avec :')."</label></strong> ";
684                echo "<br />";
685                echo "<select name='champconfirm' id='confirm_form' class='forml'>\n";
686                echo "<option value=''";
687                if ($champconfirm=='') echo " selected='selected'";
688                echo ">"._L('Pas de mail confirmation')."</option>\n";
689                $champconfirm_known = false;
690                foreach ($structure as $index => $t) {
691                        if ($t['type'] == 'email'){
692                                echo "<option value='" . $t['code'] . "'";
693                                if ($champconfirm == $t['code']){
694                                        echo " selected='selected'";
695                                        $champconfirm_known = true;
696                                }
697                                echo ">" . $t['nom'] . "</option>\n";
698                        }
699                }
700                echo "</select><br />\n";
701                if ($champconfirm_known == true){
702                        echo "<strong><label for='texte_form'>"._T('info_texte')."</label></strong>";
703                        echo "<br />";
704                        echo "<textarea name='texte' id='texte_form' class='formo' rows='4' cols='40' wrap='soft'>";
705                        echo entites_html($texte);
706                        echo "</textarea><br />\n";
707                }
708                else {
709                        echo "<input type='hidden' name='texte' value=\"" . entites_html($texte);
710                        echo "\" />\n";
711                }
712
713
714                debut_cadre_enfonce("statistiques-24.gif");
715                echo "<strong>"._L("Sondage")."</strong> : ";
716                echo _L("Si votre formulaire est un sondage, les r&eacute;sultats des champs ".
717                        "de type &laquo; s&eacute;lection &raquo; seront additionn&eacute;s et affich&eacute;s.");
718                echo "<br /><br />";
719                afficher_choix('sondage', $sondage, array(
720                        'non' => _L("Ce formulaire n'est pas un sondage"),
721                        'public' => _L("Ce formulaire est un sondage public. Les r&eacute;sultats seront accessibles aux visiteurs du site."),
722                        'prot' => _L("Ce formulaire est un sondage prot&eacute;g&eacute;. Les r&eacute;sultats ne seront accessibles que depuis l'interface priv&eacute;e.")
723                ));
724                fin_cadre_enfonce();
725
726                echo "<div align='right'>";
727                echo "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo'></div>\n";
728
729                echo "</form>";
730
731                //
732                // Creer / modifier des champs
733                //
734                if ($id_form) {
735                        echo "<a name='champs'></a>";
736                        echo "<p><hr><p>\n";
737                        echo "<div class='verdana3'>";
738                        echo "<strong>"._L("Champs du formulaire")."</strong><br />\n";
739                        echo _L("Vous pouvez ici cr&eacute;er et modifier les champs que les visiteurs ".
740                                "pourront remplir.");
741                        echo "</div>\n";
742
743                        if (count($structure)) {
744                                $keys = array_keys($structure);
745                                $index_min = min($keys);
746                                $index_max = max($keys);
747                        }
748
749                        foreach ($structure as $index => $t) {
750                                $code = $t['code'];
751                                $visible = ($code == $champ_visible);
752                                $nouveau = ($code == $nouveau_champ);
753                                $obligatoire = $t['obligatoire'];
754                                $aff_min = $index > $index_min;
755                                $aff_max = $index < $index_max;
756                                $type = $t['type'];
757
758                                if ($nouveau) echo "<a name='nouveau_champ'></a>";
759                                else if ($visible) echo "<a name='champ_visible'></a>";
760                                echo "<p>\n";
761                                if (!in_array($type,array('separateur','textestatique')))
762                                        debut_cadre_relief();
763                                else
764                                        debut_cadre_enfonce();
765                               
766                                echo "<div style='padding: 2px; background-color: $couleur_claire; color: black;'>&nbsp;";
767                                if ($aff_min || $aff_max) {
768                                        echo "<div class='verdana1' style='float: right; font-weight: bold;'>";
769                                        if ($aff_min) {
770                                                $link = parametre_url($form_link,'monter', $index);
771                                                echo "<a href='".$link."#champs'><img src='"._DIR_IMG_PACK."monter-16.png' style='border:0' alt='"._L("monter")."'></a>";
772                                        }
773                                        if ($aff_min && $aff_max) {
774                                                echo " | ";
775                                        }
776                                        if ($aff_max) {
777                                                $link = parametre_url($form_link,'descendre', $index);
778                                                echo "<a href='".$link."#champs'><img src='"._DIR_IMG_PACK."descendre-16.png' style='border:0' alt='"._L("descendre")."'></a>";
779                                        }
780                                        echo "</div>\n";
781                                }
782
783                                echo $visible ? bouton_block_visible("champ_$code") : bouton_block_invisible("champ_$code");
784                                echo "<strong>".typo($t['nom'])."</strong>";
785                                echo "<br /></div>";
786                                echo "(".Forms_nom_type_champ($t['type']).")\n";
787                                echo $visible ? debut_block_visible("champ_$code") : debut_block_invisible("champ_$code");
788
789                                // Modifier un champ
790                                echo "<form method='POST' action='"
791                                        . $form_link . "#champ_visible"
792                                        . "' style='border: 0px; margin: 0px;'>";
793                                echo "<input type='hidden' name='modif_champ' value='$code' />";
794
795                                echo "<div class='verdana2'>";
796                                echo "<p>";
797                                if ($nouveau) {
798                                        echo "<script type='text/javascript'><!-- \nvar antifocus_champ = false; // --></script>\n";
799                                        $js = " onfocus=\"if(!antifocus_champ){this.value='';antifocus_champ=true;}\"";
800                                }
801                                else $js = "";
802                                if ($type=='separateur'){
803                                        echo "<label for='nom_$code'>"._L("Nom du Bloc")."</label> :";
804                                        echo " &nbsp;<input type='text' name='nom_champ' id='nom_$code' value=\"".
805                                                entites_html($t['nom'])."\" class='fondo verdana2' size='30'$js><br />\n";
806                                }
807                                else if ($type=='textestatique'){
808                                        echo "<label for='nom_$code'>"._L("Texte")."</label> :<br/>";
809                                        echo " &nbsp;<textarea name='nom_champ' id='nom_$code'  class='verdana2' style='width:100%;height:5em;' $js>".
810                                                entites_html($t['nom'])."</textarea><br />\n";
811                                }
812                                else{
813                                        echo "<label for='nom_$code'>"._L("Nom du champ")."</label> :";
814                                        echo " &nbsp;<input type='text' name='nom_champ' id='nom_$code' value=\"".
815                                                entites_html($t['nom'])."\" class='fondo verdana2' size='30'$js><br />\n";
816                                        bloc_edition_champ($t, $form_link);
817                                }
818
819                                echo "<div align='right'>";
820                                echo "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo verdana2'></div>\n";
821                                echo "</div>\n";
822                                echo "</form>";
823                                // Supprimer un champ
824                                $link = parametre_url($form_link,'supp_champ', $code);
825                                echo "<div style='float: left;'>";
826                                icone_horizontale(_L("Supprimer ce champ"), $link."#champs","../"._DIR_PLUGIN_FORMS. "/img_pack/form-24.png", "supprimer.gif");
827                                echo "</div>\n";
828
829                                echo fin_block();
830                                if (!in_array($t['type'],array('separateur','textestatique')))
831                                        fin_cadre_relief();
832                                else
833                                        fin_cadre_enfonce();
834                        }
835
836                        // Ajouter un champ
837                        echo "<p>";
838                        debut_cadre_enfonce();
839                        echo "<form method='POST' action='"
840                                . $form_link. "#nouveau_champ"
841                                . "' style='border: 0px; margin: 0px;'>";
842                        echo "<strong>"._L("Ajouter un champ")."</strong><br />\n";
843                        echo _L("Cr&eacute;er un champ de type&nbsp;:");
844                        echo " \n";
845                        $types = array('ligne', 'texte', 'email', 'url', 'select', 'multiple', 'fichier', 'mot','separateur','textestatique');
846                        echo "<select name='ajout_champ' value='' class='fondo'>\n";
847                        foreach ($types as $type) {
848                                echo "<option value='$type'>".Forms_nom_type_champ($type)."</option>\n";
849                        }
850                        echo "</select>\n";
851                        echo " &nbsp; <input type='submit' name='valider' id='ajout_champ' VALUE='"._T('bouton_ajouter')."' class='fondo'>";
852                        echo "</form>\n";
853                        fin_cadre_enfonce();
854                }
855
856                echo "</div>\n";
857
858                fin_cadre_formulaire();
859        }
860
861
862        fin_page();
863}
864?>
Note: See TracBrowser for help on using the repository browser.