source: spip-zone/_plugins_/_stable_/forms/forms_et_tables_1_9_1/inc/forms_edit.php @ 7857

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

"decliner les chaines de langue en fonction du type d'objet dans la creation de formulaire/table...
plusun bug ajax sur le redirect apres edit"

File size: 23.7 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// compatibilite trans 1.9.1-1.9.2
14// Cadre formulaires
15// http://doc.spip.org/@debut_cadre_formulaire
16function Forms_debut_cadre_formulaire($style='', $return=false){
17        $x = "\n<div class='cadre-formulaire'" .
18          (!$style ? "" : " style='$style'") .
19           ">";
20        if ($return) return  $x; else echo $x;
21}
22
23// http://doc.spip.org/@fin_cadre_formulaire
24function Forms_fin_cadre_formulaire($return=false){
25        if ($return) return  "</div>\n"; else echo "</div>\n";
26}
27
28
29function Forms_nouveau_champ($id_form,$type){
30        $res = spip_query("SELECT champ FROM spip_forms_champs WHERE id_form="._q($id_form)." AND type="._q($type));
31        $n = 1;
32        $champ = $type.'_'.strval($n);
33        while ($row = spip_fetch_array($res)){
34                $lenumero = split('_', $row['champ'] );
35                $lenumero = intval(end($lenumero));
36                if ($lenumero>= $n) $n=$lenumero+1;
37        }
38        $champ = $type.'_'.strval($n);
39        return $champ;
40}
41function Forms_insere_nouveau_champ($id_form,$type,$titre,$champ=""){
42        if (!strlen($champ))
43                $champ = Forms_nouveau_champ($id_form,$type);
44        $rang = 0;
45        $res = spip_query("SELECT max(rang) AS rangmax FROM spip_forms_champs WHERE id_form="._q($id_form));
46        if ($row = spip_fetch_array($res))
47                $rang = $row['rangmax'];
48        $rang++;
49        include_spip('base/abstract_sql');
50        spip_abstract_insert(
51                'spip_forms_champs',
52                '(id_form,champ,rang,titre,type,obligatoire,extra_info)',
53                '('._q($id_form).','._q($champ).','._q($rang).','._q($titre).','._q($type).",'non','')");
54        return $champ;
55}
56function Forms_nouveau_choix($id_form,$champ){
57        $n = 1;
58        $res = spip_query("SELECT choix FROM spip_forms_champs_choix WHERE id_form="._q($id_form)." AND champ="._q($champ));
59        while ($row = spip_fetch_array($res)){
60                $lenumero = split('_', $row['choix']);
61                $lenumero = intval(end($lenumero));
62                if ($lenumero>= $n) $n=$lenumero+1;
63        }
64        $choix = $champ.'_'.$n;
65        return $choix;
66}
67function Forms_insere_nouveau_choix($id_form,$champ,$titre){
68        $choix = Forms_nouveau_choix($id_form,$champ);
69        $rang = 0;
70        $res = spip_query("SELECT max(rang) AS rangmax FROM spip_forms_champs_choix WHERE id_form="._q($id_form)." AND champ="._q($champ));
71        if ($row = spip_fetch_array($res))
72                $rang = $row['rangmax'];
73        $rang++;
74        include_spip('base/abstract_sql');
75        spip_abstract_insert("spip_forms_champs_choix","(id_form,champ,choix,titre,rang)","("._q($id_form).","._q($champ).","._q($choix).","._q($titre).","._q($rang).")");
76        return $choix;
77}
78
79function Forms_bloc_routage_mail($id_form,$email){
80                $out = "";
81                // Routage facultatif des emails en fonction d'un champ select
82                $defaut = true;
83                $s = "";
84                $options = "";
85                $res2 = spip_query("SELECT * FROM spip_forms_champs WHERE type='select' AND id_form="._q($id_form)." ORDER BY rang");
86                while ($row2 = spip_fetch_array($res2)) {
87                        $display = 'none';
88                        $code = $row2['champ'];
89                        $options .= "<option value='$code'";
90                        if ($email['route'] == $code){
91                                $options .= " selected='selected'";$display='block';$defaut=false;
92                        }
93                        $options .= ">" . $row2['titre'] . "</option>\n";
94                        $s .= "<div id='block_email_route_$code' class='block_email_route' style='display:$display'>";
95                       
96                        $s .= "<table id ='email_route_$code'>\n";
97                        $s .= "<tr><th>".$row2['titre']."</th><th>";
98                        $s .= "<strong><label for='email_route_$code'>"._T('email_2')."</label></strong>";
99                        $s .= "</th></tr>\n";
100
101                        $res3 = spip_query("SELECT * FROM spip_forms_champs_choix WHERE id_form="._q($id_form)." AND champ="._q($row2['champ'])." ORDER BY rang");
102                        while($row3 = spip_fetch_array($res3)){
103                                $s .= "<tr><td>".$row3['titre']."</td><td>";
104                                $s .= "<input type='text' name='email[".$row3['choix']."]' value=\"";
105                                $s .= isset($email[$row3['choix']])?entites_html($email[$row3['choix']]):"";
106                                $s .= "\" class='fondl verdana2' size='20' />";
107                                $s .= "</td></tr>";
108                        }
109                        $s .="</table>";
110                        $s .= "</div>";
111                }
112                if (strlen($s)){
113                        $out .= "<strong><label for='email_route_form'>"._T('forms:choisir_email')."</label></strong> ";
114                        $out .= "<br />";
115                        $out .= "<select name='email[route]' id='email_route_form' class='forml'";
116                        $out .= "onchange=\"$('.block_email_route').hide();$('#block_email_route_'+options[selectedIndex].value).show();\" ";
117                        $out .= ">\n";
118                        $out .= "<option value=''>"._T('forms:email_independant')."</option>\n";
119                        $out .= $options;
120                        $out .= "</select><br />\n";
121                }
122                $display = $defaut?'block':'none';
123                $out .= "<div id='block_email_route_' class='block_email_route' style='display:$display'>";
124                $out .= "<strong><label for='email_form'>"._T('email_2')."</label></strong> ";
125                $out .= "<br />";
126                $out .= "<input type='text' name=\"email[defaut]\" id='email_form' class='forml' ".
127                        "value=\"".entites_html($email['defaut'])."\" size='40' />\n";
128                $out .= "</div>";
129                $out .= $s;
130                $out .= "<br/>";
131                return $out;
132}
133
134function Forms_bloc_edition_champ($row, $action_link, $redirect, $idbloc) {
135        global $couleur_claire;
136
137        $id_form = $row['id_form'];
138        $champ = $row['champ'];
139        $type = $row['type'];
140        $titre = $row['titre'];
141        $obligatoire = $row['obligatoire'];
142        $extra_info = $row['extra_info'];
143        $specifiant = $row['specifiant'];
144        $public = $row['public'];
145        $aide = $row['aide'];
146        $html_wrap = $row['html_wrap'];
147       
148        $out = "";
149
150        if ($type != 'separateur'){
151                $checked = ($obligatoire == 'oui') ? " checked='checked'" : "";
152                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_obligatoire' value='oui' id='obli_$champ'$checked> ";
153                $out .= "<label for='obli_$champ'>"._T("forms:edit_champ_obligatoire")."</label>";
154                $out .= "<br />\n";
155               
156                $checked = ($specifiant == 'oui') ? " checked='checked'" : "";
157                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_specifiant' value='oui' id='spec_$champ'$checked> ";
158                $out .= "<label for='spec_$champ'>"._T("forms:champ_specifiant")."</label>";
159                $out .= "<br />\n";
160               
161                $checked = ($public == 'oui') ? " checked='checked'" : "";
162                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_public' value='oui' id='public_$champ'$checked> ";
163                $out .= "<label for='public_$champ'>"._T("forms:champ_public")."</label>";
164                $out .= "<br />\n";
165        }
166        if ($type == 'separateur' || $type=='textestatique'){
167                $out = "<input type='hidden' name='champ_public' value='oui' />";
168        }
169
170        if ($type == 'url') {
171                $checked = ($extra_info == 'oui') ? " checked='checked'" : "";
172                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_verif' value='oui' id='verif_$champ'$checked> ";
173                $out .= "<label for='verif_$champ'>"._T("forms:verif_web")."</label>";
174                $out .= "<br />\n";
175        }
176        if ($type == 'select') {
177                $out .= "<label for='format_liste_$champ'>"._T("forms:format_liste_ou_radio")."</label> :";
178                $out .= " &nbsp;<select name='format_liste' id='format_liste_$champ' class='fondo verdana2'>\n";
179                $out .= "<option value='liste'".($row['extra_info']=='liste'?"selected='selected'":"").">"._T("forms:format_liste")."</option>\n";
180                $out .= "<option value='radio'".($row['extra_info']=='radio'?"selected='selected'":"").">"._T("forms:format_radio")."</option>\n";
181                $out .= "</select>";
182                $out .= "<br />\n";
183        }
184        if ($type == 'select' || $type == 'multiple') {
185                $ajout_choix = _request('ajout_choix');
186
187                $out .= "<div style='margin: 5px; padding: 5px; border: 1px dashed $couleur_claire;'>";
188                $out .= _T("forms:liste_choix")."&nbsp;:<br />\n";
189                $out .= "<div class='sortableChoix' id='ordre_choix_$champ' >";
190                $res2 = spip_query("SELECT * FROM spip_forms_champs_choix WHERE id_form="._q($id_form)." AND champ="._q($champ)." ORDER BY rang");
191                while ($row2 = spip_fetch_array($res2)){
192                        $choix = $row2['choix'];
193                        $focus='';
194                        if ($ajout_choix == $choix) $focus='antifocus';
195                        $out .= "<div class='sortableChoixItem' id='$champ-$choix'>";
196                        $out .= "<img src='"._DIR_PLUGIN_FORMS."img_pack/choix-handle-16.png' class ='sortableChoixHandle' />";
197                        $out .= "<input type='text' id='nom_$choix' name='$choix' value=\"".entites_html($row2['titre'])."\" ".
198                                "class='fondl verdana2 $focus' size='20' />";
199
200                        $supp_link = parametre_url($action_link,'supp_choix', $choix);
201                        $out .= " &nbsp; <span class='verdana1'>[<a href='$supp_link#$idbloc' class='ajaxAction' rel ='$redirect' >".
202                                _T("forms:supprimer_choix")."</a>]</span>";
203                        $out .= "</div>\n";
204                }
205                $out .= "</div><input type='hidden' name='ordre' value='' />";
206                $ajout_choix = parametre_url($action_link,'ajout_choix', '1');
207                $out .= "<br /><input type='submit' name='ajout_choix' value=\""._T("forms:ajouter_choix")."\" class='fondo verdana2'>";
208                        _T("forms:ajouter_choix")."</a>]</div>";
209                $out .= "</div>";
210               
211                $switch_link = parametre_url($action_link,'switch_select_multi', '1');
212                $switch_link = parametre_url($switch_link,'modif_champ', $champ);
213                $out .= "<br /><span class='verdana1'>[<a href='$switch_link#champs' class='ajaxAction' rel ='$redirect' >".
214                        (($type=='select')?_T("forms:changer_choix_multiple"):_T("forms:changer_choix_unique")) . 
215                        "</a>]</span>";
216
217                $out .= "<br />\n";
218        }
219        if ($type == 'mot') {
220                $out .= "<label for='groupe_$champ'>"._T("forms:champ_nom_groupe")."</label> :";
221                $out .= " &nbsp;<select name='groupe_champ' value='0' id='groupe_$champ' class='fondo verdana2'>\n";
222                $res2 = spip_query("SELECT * FROM spip_groupes_mots ORDER BY titre");
223                while ($row2 = spip_fetch_array($res2)) {
224                        $id_groupe = $row2['id_groupe'];
225                        $titre_groupe = supprimer_tags(typo($row2['titre']));
226                        $selected = ($id_groupe == $row['extra_info']) ? " selected='selected'": "";
227                        $out .= "<option value='$id_groupe'$selected>$titre_groupe</option>\n";
228                }
229                $out .= "</select>";
230                $out .= "<br />\n";
231        }
232        if ($type == 'fichier') {
233                $taille = intval($row['extra_info']);
234                if (!$taille) $taille = '';
235                $out .= "<label for='taille_$champ'>"._T("forms:taille_max")."</label> : ";
236                $out .= "<input type='text' name='taille_champ' value='$taille' id='taille_$champ' class='fondo verdana2'>\n";
237                $out .= "<br />\n";
238        }
239
240        return $out;
241}
242
243function Forms_zone_edition_champs($id_form, $champ_visible, $nouveau_champ, $redirect,$ajax=false){
244        global $spip_lang_right,$couleur_claire,$spip_lang_left;
245        $res = spip_query("SELECT type_form FROM spip_forms WHERE id_form="._q($id_form));
246        $row = spip_fetch_array($res);
247        $prefixei18n = 'forms';
248        $is_form =      in_array($row['type_form'],array('','sondage'));
249        if (!$is_form)
250                $prefixei18n = $row['type_form'];
251       
252        $out = "";
253        if (!$id_form) return $out;
254        $out .= "<p>";
255        $out .= Forms_debut_cadre_formulaire('',true);
256        $out .= "<div class='verdana3'>";
257        $out .= "<strong>"._T("$prefixei18n:champs_formulaire")."</strong><br />\n";
258        $out .= _T("forms:info_champs_formulaire");
259        $out .= "</div>\n";
260        $out .= "<div id='forms_lang'></div>";
261        $out .= "<div id='sortableChamps'>";
262
263        if ($row = spip_fetch_array(spip_query("SELECT MAX(rang) AS rangmax, MIN(rang) AS rangmin FROM spip_forms_champs WHERE id_form="._q($id_form)))){
264                $index_min = $row['rangmin'];
265                $index_max = $row['rangmax'];
266        }
267
268        $res = spip_query("SELECT * FROM spip_forms_champs WHERE id_form="._q($id_form).($ajax?" AND champ="._q($ajax):"")." ORDER BY rang");
269        while ($row = spip_fetch_array($res)) {
270                $champ = $row['champ'];
271                $visible = ($champ == $champ_visible)||($champ == $nouveau_champ);
272                $nouveau = ($champ == $nouveau_champ);
273                $obligatoire = $row['obligatoire'];
274                $rang = $row['rang'];
275                $aff_min = $rang > $index_min;
276                $aff_max = $rang < $index_max;
277                $type = $row['type'];
278                $id_bloc = "champs-$id_form-$champ";
279
280                $redirect = ancre_url(parametre_url($redirect,'champ_visible',$champ),'champ_visible');
281                $action_link = generer_action_auteur("forms_edit","$id_form",urlencode($redirect));
282                $action_link_noredir = parametre_url($action_link,'redirect','');
283
284                $out .= "<div id='order_$id_bloc' class='sortableChampsItem'>";
285                if ($nouveau) $out .= "<a name='nouveau_champ'></a>";
286                else if ($visible) $out .= "<a name='champ_visible'></a>";
287                if (!in_array($type,array('separateur','textestatique')))
288                        $out .= debut_cadre_relief("", true);
289                else
290                        $out .= debut_cadre_enfonce("", true);
291               
292                $out .= "<img src='"._DIR_PLUGIN_FORMS."img_pack/choix-handle-24.png' class ='sortableChampsHandle' style='float:$spip_lang_left;position:relative;'/>";
293                $out .= "<div class='verdana1' style='float: $spip_lang_right; font-weight: bold;position:relative;display:inline;'>";
294                $out .= "<span class='boutons_ordonne'>";
295                if ($aff_min) {
296                        $link = generer_action_auteur('forms_champs_deplace',"$id_form-$champ-monter",urlencode($redirect));
297                        $link = parametre_url($link,"time",time()); // pour avoir une url differente de l'actuelle
298                        $out .= "<a href='$link#champs' class='ajaxAction' rel='$redirect'><img src='"._DIR_IMG_PACK."monter-16.png' style='border:0' alt='"._T("forms:champ_monter")."'></a>";
299                        if ($aff_max)
300                                $out .= " | ";
301                }
302                if ($aff_max) {
303                        $link = generer_action_auteur('forms_champs_deplace',"$id_form-$champ-descendre",urlencode($redirect));
304                        $link = parametre_url($link,"time",time()); // pour avoir une url differente de l'actuelle
305                        $out .= "<a href='$link#champs' class='ajaxAction' rel='$redirect'><img src='"._DIR_IMG_PACK."descendre-16.png' style='border:0' alt='"._T("forms:champ_descendre")."'></a>";
306                }
307                $out .= "</span>";
308                // Supprimer un champ
309                $link = parametre_url($action_link,'supp_champ', $champ);
310                $out .= "<a href='$link#champs' class='ajaxAction' rel='$redirect'><img src='"._DIR_IMG_PACK."supprimer.gif' style='border:0' alt='"._T("forms:supprimer_champ")."'></a>";
311                $out .= "</div>\n";
312
313                // Modifier un champ
314                $formulaire = "";
315                $formulaire .= "<div style='padding: 2px; background-color: $couleur_claire; color: black;'>&nbsp;";
316                $formulaire .= $visible ? bouton_block_visible("champ_$champ") : bouton_block_invisible("champ_$champ");
317                $formulaire .= "<strong id='titre_nom_$champ'>".typo($row['titre'])."</strong>";
318                $formulaire .= "<br /></div>";
319                $formulaire .= "(".typo(Forms_nom_type_champ($row['type'])).")\n";
320                $formulaire .= $visible ? debut_block_visible("champ_$champ") : debut_block_invisible("champ_$champ");
321
322                $formulaire .= "<div id='forms_lang_nom_$champ'></div>";
323               
324                $formulaire .= "<form class='ajaxAction' method='POST' action='$action_link_noredir'" .
325                        " style='border: 0px; margin: 0px;'>" .
326                        form_hidden($action_link_noredir) .
327                        "<input type='hidden' name='redirect' value='$redirect' />" . // form_hidden ne desencode par redirect ...
328                        "<input type='hidden' name='idtarget' value='$id_bloc' />" .
329                        "<input type='hidden' name='modif_champ' value='$champ' />";
330
331                $formulaire .= "<div class='verdana2'>";
332                $focus="";
333                if ($nouveau) $focus='antifocus';
334               
335                if ($type=='separateur'){
336                        $formulaire .= "<label for='nom_$champ'>"._T("forms:champ_nom_bloc")."</label>&nbsp;:";
337                        $formulaire .= " &nbsp;<input type='text' name='nom_champ' id='nom_$champ' value=\"".
338                                entites_html($row['titre'])."\" class='fondo verdana2 $focus' size='30' /><br />\n";
339                        $formulaire .= Forms_bloc_edition_champ($row, $action_link, $redirect, $id_bloc);
340                }
341                else if ($type=='textestatique'){
342                        $formulaire .= "<label for='nom_$champ'>"._T("forms:champ_nom_texte")."</label>&nbsp;:<br/>";
343                        $formulaire .= " &nbsp;<textarea name='nom_champ' id='nom_$champ'  class='verdana2 $focus' style='width:100%;height:5em;' />".
344                                entites_html($row['titre'])."</textarea><br />\n";
345                        $formulaire .= Forms_bloc_edition_champ($row, $action_link, $redirect, $id_bloc);
346                }
347                else{
348                        $formulaire .= "<label for='nom_$champ'>"._T("forms:champ_nom")."</label> :";
349                        $formulaire .= " &nbsp;<input type='text' name='nom_champ' id='nom_$champ' value=\"".
350                                entites_html($row['titre'])."\" class='fondo verdana2 $focus' size='30' /><br />\n";
351                        $formulaire .= Forms_bloc_edition_champ($row, $action_link, $redirect, $id_bloc);
352
353                        $formulaire .= "<label for='aide_$champ'>"._T("forms:aide_contextuelle")."</label> :";
354                        $formulaire .= " &nbsp;<textarea name='aide_champ' id='aide_$champ'  class='verdana2' style='width:90%;height:3em;' >".
355                                entites_html($row['aide'])."</textarea><br />\n";
356                               
357                }
358                $formulaire .= "<label for='wrap_$champ'>"._T("forms:html_wrapper")."</label> :";
359                $formulaire .= " &nbsp;<textarea name='wrap_champ' id='wrap_$champ'  class='verdana2' style='width:90%;height:3em;' >".
360                entites_html($row['html_wrap'])."</textarea><br />\n";
361
362                $formulaire .= "<div style='text-align:$spip_lang_right'>";
363                $formulaire .= "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo verdana2'>\n";
364                $formulaire .= "</div>\n";
365
366                $args_redir=parametre_url($redirect,'exec','','&');
367                $args_redir=explode("#",$args_redir);
368                $args_redir=explode("?",$args_redir[0]);
369                $args_redir="&".$args_redir[1];
370
371                $formulaire .= "</div>";
372                $formulaire .= "</form>";
373                $formulaire .= fin_block();
374
375                if ($ajax && ($champ == $ajax))
376                        return $formulaire;
377                $out .= "<div id='$id_bloc' class='forms_champs'>$formulaire</div>";
378                if (!in_array($type,array('separateur','textestatique')))
379                        $out .= fin_cadre_relief(true);
380                else
381                        $out .= fin_cadre_enfonce(true);
382                $out .= '</div>';
383        }
384        if ($ajax)
385                return "Champ $ajax introuvable"; // erreur si l'on est encore ici
386        $out .= "</div>";
387        // Reordonner les champs ------------------------------------------------------------
388        $action_link = generer_action_auteur("forms_edit","$id_form",urlencode($redirect));
389        $action_link_noredir = parametre_url($action_link,'redirect','');
390        $out .= "<form class='ajaxAction sortableChamps' method='POST' action='$action_link_noredir' style='display:none;'>" .
391                form_hidden($action_link_noredir) .
392                "<input type='hidden' name='redirect' value='$redirect' />" . // form_hidden ne desencode par redirect ...
393                "<input type='hidden' name='idtarget' value='dummy' />". // on target un div vide
394                "<input type='hidden' name='ordonne_champs' value='$id_form' />";
395        $out .= "<input type='text' name='ordre' value='' />";
396        $out .= " &nbsp; <input type='submit' name='valider' value='"._T('bouton_valider')."' class='fondo'>";
397        $out .= "<div id='dummy'></div>";
398        $out .= "</form>\n";
399
400        // Ajouter un champ ------------------------------------------------------------------
401        $redirect = ancre_url(parametre_url($redirect,'champ_visible',''),'');
402        $action_link = generer_action_auteur("forms_edit","$id_form",urlencode($redirect));
403        $action_link_noredir = parametre_url($action_link,'redirect','');
404        $out .= "<p>";
405        $out .= debut_cadre_enfonce("", true);
406        $out .= "<form class='ajaxAction' method='POST' action='$action_link_noredir' style='border: 0px; margin: 0px;'>" .
407                form_hidden($action_link_noredir) .
408                "<input type='hidden' name='redirect' value='$redirect' />" . // form_hidden ne desencode par redirect ...
409                "<input type='hidden' name='idtarget' value='champs' />"; // on target toute la boite, pas juste le div parent
410        $out .= "<strong>"._T("forms:ajouter_champ")."</strong><br />\n";
411        $out .= _T("forms:ajouter_champ_type");
412        $out .= " \n";
413       
414        $types = Forms_liste_types_champs();
415        $out .= "<select name='ajout_champ' value='' class='fondo'>\n";
416        foreach ($types as $type) {
417                $out .= "<option value='$type'>".typo(Forms_nom_type_champ($type))."</option>\n";
418        }
419        $out .= "</select>\n";
420        $out .= " &nbsp; <input type='submit' name='valider' id='ajout_champ' value='"._T('bouton_ajouter')."' class='fondo'>";
421        $out .= "</form>\n";
422        $out .= fin_cadre_enfonce(true);
423        $out .= "</p>";
424        $out .= Forms_fin_cadre_formulaire(true);
425        $out .= "</p>";
426       
427        return $out;
428}
429
430
431//
432// Edition des donnees du formulaire
433//
434function boite_proprietes($id_form, $row, $focus, $action_link, $redirect) {
435        $prefixei18n = 'forms';
436        $is_form =      in_array($row['type_form'],array('','sondage'));
437        if (!$is_form)
438                $prefixei18n = $row['type_form'];
439       
440        $out = "";
441        $out .= "<p>";
442        $out .= Forms_debut_cadre_formulaire('',true);
443
444        $action_link_noredir = parametre_url($action_link,'redirect','');
445        $out .= "<div class='verdana2'>";
446        //$out .= "<form method='POST' action='$action_link' style='border: 0px; margin: 0px;'>";
447        //$out .= form_hidden($action_link);
448        $out .= "<form class='ajaxAction' method='POST' action='$action_link_noredir'" .
449                " style='border: 0px; margin: 0px;'>" .
450                form_hidden($action_link_noredir) .
451                "<input type='hidden' name='redirect' value='$redirect' />" . // form_hidden ne desencode par redirect ...
452                "<input type='hidden' name='idtarget' value='proprietes' />" ;
453
454        $titre = entites_html($row['titre']);
455        $descriptif = entites_html($row['descriptif']);
456        $texte = entites_html($row['texte']);
457        $email = unserialize($row['email']);
458
459        $out .= "<strong><label for='titre_form'>"._T("$prefixei18n:titre_formulaire")."</label></strong> "._T('info_obligatoire_02');
460        $out .= "<br />";
461        $out .= "<input type='text' name='titre' id='titre_form' class='formo $focus' ".
462                "value=\"".$titre."\" size='40' /><br />\n";
463
464        $out .= "<strong><label for='desc_form'>"._T('info_descriptif')."</label></strong>";
465        $out .= "<br />";
466        $out .= "<textarea name='descriptif' id='desc_form' class='forml' rows='4' cols='40' wrap='soft'>";
467        $out .= $descriptif;
468        $out .= "</textarea><br />\n";
469
470        $out .= Forms_bloc_routage_mail($id_form,$email);
471
472        $out .= "<strong><label for='confirm_form'>"._T('forms:confirmer_reponse')."</label></strong> ";
473        $out .= "<br />";
474        $out .= "<select name='champconfirm' id='confirm_form' class='forml'";
475        $out .= "onchange=\"if (options[selectedIndex].value=='') $('#texte_confirm').hide(); else $('#texte_confirm').show();\" ";
476        $out .= ">\n";
477        $out .= "<option value=''>"._T('forms:pas_mail_confirmation')."</option>\n";
478        $champconfirm_known = false;
479        $res2 = spip_query("SELECT * FROM spip_forms_champs WHERE type='email' AND id_form="._q($id_form));
480        while ($row2 = spip_fetch_array($res2)) {
481                $out .= "<option value='" . $row2['champ'] . "'";
482                if ($row['champconfirm'] == $row2['champ']){
483                        $out .= " selected='selected'";
484                        $champconfirm_known = true;
485                }
486                $out .= ">" . $row2['titre'] . "</option>\n";
487        }
488        $out .= "</select><br />\n";
489        $display = $champconfirm_known?"block":"none";
490        $out .= "<div id='texte_confirm' style='display:$display'>";
491        $out .= "<strong><label for='texte_form'>"._T('info_texte')."</label></strong>";
492        $out .= "<br />";
493        $out .= "<textarea name='texte' id='texte_form' class='formo' rows='4' cols='40' wrap='soft'>";
494        $out .= $texte;
495        $out .= "</textarea><br />\n";
496        $out .= "</div>";
497
498        if (in_array($row['type_form'],array('','sondage'))){
499                $out .= debut_cadre_enfonce("../"._DIR_PLUGIN_FORMS."img_pack/sondage-24.png",true);
500                $out .= "<strong>"._T("forms:type_form")."</strong> : ";
501                $out .= _T("forms:info_sondage");
502                $out .= "<br /><br />";
503                $out .= bouton_radio('type_form', '', _T("forms:sondage_non"), $row['type_form'] == '').'<br />';
504                $out .= bouton_radio('type_form', 'sondage', _T("forms:sondage_oui"), $row['type_form'] == 'sondage').'<br />';
505                $out .= fin_cadre_enfonce(true);
506        }
507        else 
508                $out .= "<input type='hidden' name='type_form' value='".$row['type_form']."' />";
509
510        $out .= debut_cadre_enfonce("",true);
511        $out .= "<strong><label for='moderation'>"._T('forms:publication_donnees')."</label></strong>";
512        $out .= "<br />";
513        $out .= bouton_radio("public", "oui", _T('forms:donnees_pub'), $row['public'] == "oui", "");
514        $out .= "<br />";
515        $out .= bouton_radio("public", "non", _T('forms:donnees_prot'), $row['public'] != "oui", "");
516        $out .= "<br />";
517        $out .= fin_cadre_enfonce(true);
518       
519        $out .= debut_cadre_enfonce("",true);
520        $out .= "<strong><label for='moderation'>"._T('forms:moderation_donnees')."</label></strong>";
521        $out .= "<br />";
522        $out .= bouton_radio("moderation", "posteriori", _T('bouton_radio_publication_immediate'), $row['moderation'] != "priori", "");
523        $out .= "<br />";
524        $out .= bouton_radio("moderation", "priori", _T('bouton_radio_moderation_priori'), $row['moderation'] == "priori", "");
525        $out .= "<br />";
526        $out .= fin_cadre_enfonce(true);
527       
528        $out .= "<label for='wrap'>"._T("forms:html_wrapper")."</label> :";
529        $out .= " &nbsp;<textarea name='html_wrap' id='wrap'  class='verdana2' style='width:90%;height:3em;' >".
530        entites_html($row['html_wrap'])."</textarea><br />\n";
531               
532        $out .= "<div align='right'>";
533        $out .= "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo'></div>\n";
534
535        $out .= "</form>";
536        $out .= "</div>";
537        $out .= Forms_fin_cadre_formulaire(true);
538        $out .= "</p>";
539        return $out;
540}
541?>
Note: See TracBrowser for help on using the repository browser.