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

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

Ajout d'un parametre document_mail aux formulaires permettant la gestion des pièces jointes dans les mails (pas dans le mail de confirmation).
Du coup, increment de forms_base_version et de la version dans plugin.xml

File size: 29.5 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        $listable_admin = $row['listable_admin'];
145        $listable = $row['listable'];
146        $public = $row['public'];
147        $saisie = $row['saisie'];
148        $aide = $row['aide'];
149        $html_wrap = $row['html_wrap'];
150
151        $out = "";
152
153        if ($type != 'separateur'){
154                $checked = ($obligatoire == 'oui') ? " checked='checked'" : "";
155                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_obligatoire' value='oui' id='obli_$champ'$checked> ";
156                $out .= "<label for='obli_$champ'>"._T("forms:edit_champ_obligatoire")."</label>";
157                $out .= "<br />\n";
158
159                $checked = ($specifiant == 'oui') ? " checked='checked'" : "";
160                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_specifiant' value='oui' id='spec_$champ'$checked> ";
161                $out .= "<label for='spec_$champ'>"._T("forms:champ_specifiant")."</label>";
162                $out .= "<br />\n";
163
164                $checked = ($listable_admin == 'oui') ? " checked='checked'" : "";
165                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_listable_admin' value='oui' id='listadm_$champ'$checked> ";
166                $out .= "<label for='listadm_$champ'>"._T("forms:champ_listable_admin")."</label>";
167                $out .= "<br />\n";
168
169                $checked = ($listable == 'oui') ? " checked='checked'" : "";
170                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_listable' value='oui' id='list_$champ'$checked> ";
171                $out .= "<label for='list_$champ'>"._T("forms:champ_listable_publique")."</label>";
172                $out .= "<br />\n";
173
174                $checked = ($saisie == 'non') ? " checked='checked'" : "";
175                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_saisie' value='non' id='saisie_$champ'$checked> ";
176                $out .= "<label for='saisie_$champ'>"._T("forms:champ_saisie_desactivee")."</label>";
177                $out .= "<br />\n";
178
179                $checked = ($public == 'oui') ? " checked='checked'" : "";
180                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_public' value='oui' id='public_$champ'$checked> ";
181                $out .= "<label for='public_$champ'>"._T("forms:champ_public")."</label>";
182                $out .= "<br />\n";
183        }
184        if ($type == 'separateur' || $type=='textestatique'){
185                $out = "<input type='hidden' name='champ_public' value='oui' />";
186        }
187
188        if ($type == 'texte') {
189                $checked = ($extra_info == 'oui') ? " checked='checked'" : "";
190                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_barre_typo' value='oui' id='barre_typo_$champ'$checked> ";
191                $out .= "<label for='barre_typo_$champ'>"._T("forms:activer_barre_typo")."</label>";
192                $out .= "<br />\n";
193        }
194        if ($type == 'monnaie') {
195                $unite = $row['extra_info'];
196                $out .= "<label for='unite_monetaire_$champ'>"._T("forms:unite_monetaire")."</label> :";
197                $out .= " &nbsp;<select name='unite_monetaire' id='unite_monetaire_$champ' class='fondo verdana2'>\n";
198                $out .= "<option value='euro'".($unite=='euro'?"selected='selected'":"").">"._T("forms:monnaie_euro")."</option>\n";
199                $out .= "</select>";
200                $out .= "<br />\n";
201        }
202        if (($type == 'num')||($type == 'monnaie')) {
203                $deci = $row['taille'];
204                if (!$deci) $deci = 0;
205                $out .= "<label for='decimales_$champ'>"._T("forms:nb_decimales")."</label> : ";
206                $out .= "<input type='text' name='taille_champ' value='$deci' id='decimales_$champ' class='fondo verdana2'>\n";
207                $out .= "<br />\n";
208        }
209        if ($type == 'url') {
210                $checked = ($extra_info == 'oui') ? " checked='checked'" : "";
211                $out .= "&nbsp; &nbsp; <input type='checkbox' name='champ_verif' value='oui' id='verif_$champ'$checked> ";
212                $out .= "<label for='verif_$champ'>"._T("forms:verif_web")."</label>";
213                $out .= "<br />\n";
214        }
215        if ($type == 'select') {
216                $out .= "<label for='format_liste_$champ'>"._T("forms:format_liste_ou_radio")."</label> :";
217                $out .= " &nbsp;<select name='format_liste' id='format_liste_$champ' class='fondo verdana2'>\n";
218                $out .= "<option value='liste'".($row['extra_info']=='liste'?"selected='selected'":"").">"._T("forms:format_liste")."</option>\n";
219                $out .= "<option value='radio'".($row['extra_info']=='radio'?"selected='selected'":"").">"._T("forms:format_radio")."</option>\n";
220                $out .= "</select>";
221                $out .= "<br />\n";
222        }
223        if ($type == 'select' || $type == 'multiple') {
224                $ajout_choix = _request('ajout_choix');
225
226                $out .= "<div style='margin: 5px; padding: 5px; border: 1px dashed $couleur_claire;'>";
227                $out .= _T("forms:liste_choix")."&nbsp;:<br />\n";
228                $out .= "<div class='sortableChoix' id='ordre_choix_$champ' >";
229                $res2 = spip_query("SELECT * FROM spip_forms_champs_choix WHERE id_form="._q($id_form)." AND champ="._q($champ)." ORDER BY rang");
230                while ($row2 = spip_fetch_array($res2)){
231                        $choix = $row2['choix'];
232                        $focus='';
233                        if ($ajout_choix == $choix) $focus='antifocus';
234                        $out .= "<div class='sortableChoixItem' id='$champ-$choix'>";
235                        $out .= "<img src='"._DIR_PLUGIN_FORMS."img_pack/choix-handle-16.png' class ='sortableChoixHandle' />";
236                        $out .= "<input type='text' id='nom_$choix' name='$choix' value=\"".entites_html($row2['titre'])."\" ".
237                                "class='fondl verdana2 $focus' size='20' />";
238
239                        $supp_link = parametre_url($action_link,'supp_choix', $choix);
240                        $out .= " &nbsp; <span class='verdana1'>[<a href='$supp_link#$idbloc' class='ajaxAction' rel ='$redirect' >".
241                                _T("forms:supprimer_choix")."</a>]</span>";
242                        $out .= "</div>\n";
243                }
244                $out .= "</div><input type='hidden' name='ordre' value='' />";
245                $ajout_choix = parametre_url($action_link,'ajout_choix', '1');
246                $out .= "<br /><input type='submit' name='ajout_choix' value=\""._T("forms:ajouter_choix")."\" class='fondo verdana2'>";
247                        _T("forms:ajouter_choix")."</a>]</div>";
248                $out .= "</div>";
249
250                $switch_link = parametre_url($action_link,'switch_select_multi', '1');
251                $switch_link = parametre_url($switch_link,'modif_champ', $champ);
252                $out .= "<br /><span class='verdana1'>[<a href='$switch_link#champs' class='ajaxAction' rel ='$redirect' >".
253                        (($type=='select')?_T("forms:changer_choix_multiple"):_T("forms:changer_choix_unique")) .
254                        "</a>]</span>";
255
256                $out .= "<br />\n";
257        }
258        if ($type == 'mot') {
259                $out .= "<label for='groupe_$champ'>"._T("forms:champ_nom_groupe")."</label> :";
260                $out .= " &nbsp;<select name='groupe_$champ' value='0' id='groupe_$champ' class='fondo verdana2'>\n";
261                $res2 = spip_query("SELECT * FROM spip_groupes_mots ORDER BY titre");
262                while ($row2 = spip_fetch_array($res2)) {
263                        $id_groupe = $row2['id_groupe'];
264                        $titre_groupe = supprimer_tags(typo($row2['titre']));
265                        $selected = ($id_groupe == $row['extra_info']) ? " selected='selected'": "";
266                        $out .= "<option value='$id_groupe'$selected>$titre_groupe</option>\n";
267                }
268                $out .= "</select>";
269                $out .= "<br />\n";
270        }
271        if ($type == 'joint') {
272                $out .= "<label for='type_table_$champ'>"._T("forms:champ_table_jointure_type")."</label> :";
273                $out .= " &nbsp;<select name='type_table' value='' id='type_table_$champ' class='fondo verdana2'>\n";
274                $res2 = spip_query("SELECT type_form FROM spip_forms WHERE type_form NOT IN ('sondage','') GROUP BY type_form ORDER BY type_form");
275                while ($row2 = spip_fetch_array($res2)) {
276                        $type_form = $row2['type_form'];
277                        $prefixei18n = forms_prefixi18n($type_form);
278                        $titre_type = supprimer_tags((($t=_T("$prefixei18n:type_des_tables"))!='type des tables')?$t:$type_form);
279                        $selected = ($type_form == $row['extra_info']) ? " selected='selected'": "";
280                        $out .= "<option value='$type_form'$selected>$titre_type</option>\n";
281                }
282                $out .= "</select>";
283                $out .= "<br />\n";
284        }
285        if ($type == 'fichier') {
286                $taille = intval($row['extra_info']);
287                if (!$taille) $taille = '';
288                $out .= "<label for='taille_$champ'>"._T("forms:taille_max")."</label> : ";
289                $out .= "<input type='text' name='taille_champ' value='$taille' id='taille_$champ' class='fondo verdana2'>\n";
290                $out .= "<br />\n";
291        }
292        if ($type == 'password') {
293                $out .= "<label for='confirmer_pass_$champ'>"._T("forms:confirmer_champ_password")."</label> : ";
294                $out .= "<input type='text' name='champ_confirmer_pass' value='$extra_info' id='confirmer_pass_$champ' class='fondo verdana2'>\n";
295                $out .= "<br />\n";
296        }
297
298        return pipeline('forms_bloc_edition_champ',
299                array(
300                'args'=>array('row'=>$row,'action_link'=>$action_link, 'redirect'=>$redirect, 'idbloc'=>$idbloc),
301                'data'=>$out
302                ));
303}
304
305function Forms_zone_edition_champs($id_form, $champ_visible, $nouveau_champ, $redirect,$ajax=false){
306        global $spip_lang_right,$couleur_claire,$spip_lang_left;
307        $res = spip_query("SELECT type_form FROM spip_forms WHERE id_form="._q($id_form));
308        $row = spip_fetch_array($res);
309        $prefixei18n = forms_prefixi18n($row['type_form']);
310        $is_form =      $prefixei18n=='form';
311
312        $out = "";
313        if (!$id_form) return $out;
314        $out .= "<p>";
315        $out .= Forms_debut_cadre_formulaire('',true);
316        $out .= "<div class='verdana3'>";
317        $out .= "<strong>"._T("$prefixei18n:champs_formulaire")."</strong><br />\n";
318        $out .= _T("forms:info_champs_formulaire");
319        $out .= "</div>\n";
320        $out .= "<div id='forms_lang'></div>";
321        $out .= "<div id='sortableChamps'>";
322
323        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)))){
324                $index_min = $row['rangmin'];
325                $index_max = $row['rangmax'];
326        }
327
328        $res = spip_query("SELECT * FROM spip_forms_champs WHERE id_form="._q($id_form).($ajax?" AND champ="._q($ajax):"")." ORDER BY rang");
329        while ($row = spip_fetch_array($res)) {
330                $champ = $row['champ'];
331                $visible = ($champ == $champ_visible)||($champ == $nouveau_champ);
332                $nouveau = ($champ == $nouveau_champ);
333                $obligatoire = $row['obligatoire'];
334                $rang = $row['rang'];
335                $aff_min = $rang > $index_min;
336                $aff_max = $rang < $index_max;
337                $type = $row['type'];
338                $id_bloc = "champs-$id_form-$champ";
339
340                $redirect = ancre_url(parametre_url($redirect,'champ_visible',$champ),'champ_visible');
341                $action_link = generer_action_auteur("forms_edit","$id_form",urlencode($redirect));
342                $action_link_noredir = parametre_url($action_link,'redirect','');
343
344                $out .= "<div id='order_$id_bloc' class='sortableChampsItem'>";
345                if ($nouveau) $out .= "<a name='nouveau_champ'></a>";
346                else if ($visible) $out .= "<a name='champ_visible'></a>";
347                if (!in_array($type,array('separateur','textestatique')))
348                        $out .= debut_cadre_relief("", true);
349                else
350                        $out .= debut_cadre_enfonce("", true);
351
352                $out .= "<img src='"._DIR_PLUGIN_FORMS."img_pack/choix-handle-24.png' class ='sortableChampsHandle' style='float:$spip_lang_left;position:relative;'/>";
353                $out .= "<div class='verdana1' style='float: $spip_lang_right; font-weight: bold;position:relative;display:inline;'>";
354                $out .= "<span class='boutons_ordonne'>";
355                if ($aff_min) {
356                        $link = generer_action_auteur('forms_champs_deplace',"$id_form-$champ-monter",urlencode($redirect));
357                        $link = parametre_url($link,"time",time()); // pour avoir une url differente de l'actuelle
358                        $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>";
359                        if ($aff_max)
360                                $out .= " | ";
361                }
362                if ($aff_max) {
363                        $link = generer_action_auteur('forms_champs_deplace',"$id_form-$champ-descendre",urlencode($redirect));
364                        $link = parametre_url($link,"time",time()); // pour avoir une url differente de l'actuelle
365                        $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>";
366                }
367                $out .= "</span>";
368                // Supprimer un champ
369                $message = unicode_to_javascript(addslashes(html2unicode(_T("forms:confirm_supprimer_champ",array('champ'=>$row['titre'])))));
370                $link = parametre_url($action_link,'supp_champ', $champ);
371                $out .= "<a href='$link#champs' class='ajaxAction confirmer' rel='$redirect' "
372                . "onclick=\"return confirmAction('$message')\">"
373                . "<img src='"._DIR_IMG_PACK."supprimer.gif' style='border:0' alt='"._T("forms:supprimer_champ")."'></a>";
374                $out .= "</div>\n";
375
376                // Modifier un champ
377                $formulaire = "";
378                $formulaire .= "<div id='forms_lang_nom_$champ'></div>";
379
380                $formulaire .= "<form class='ajaxAction' method='POST' action='$action_link_noredir'" .
381                        " style='border: 0px; margin: 0px;'>" .
382                        form_hidden($action_link_noredir) .
383                        "<input type='hidden' name='redirect' value='$redirect' />" . // form_hidden ne desencode par redirect ...
384                        "<input type='hidden' name='idtarget' value='$id_bloc' />" .
385                        "<input type='hidden' name='modif_champ' value='$champ' />";
386
387                $formulaire .= "<div class='verdana2'>";
388                $focus="";
389                if ($nouveau) $focus='antifocus';
390
391                if ($type=='separateur'){
392                        $formulaire .= "<label for='nom_$champ'>"._T("forms:champ_nom_bloc")."</label>&nbsp;:";
393                        $formulaire .= " &nbsp;<input type='text' name='nom_champ' id='nom_$champ' value=\"".
394                                entites_html($row['titre'])."\" class='fondo verdana2 $focus' size='30' /><br />\n";
395                        $formulaire .= Forms_bloc_edition_champ($row, $action_link, $redirect, $id_bloc);
396                }
397                else if ($type=='textestatique'){
398                        $formulaire .= "<label for='nom_$champ'>"._T("forms:champ_nom_texte")."</label>&nbsp;:<br/>";
399                        $formulaire .= " &nbsp;<textarea name='nom_champ' id='nom_$champ'  class='verdana2 $focus' style='width:100%;height:5em;' />".
400                                entites_html($row['titre'])."</textarea><br />\n";
401                        $formulaire .= Forms_bloc_edition_champ($row, $action_link, $redirect, $id_bloc);
402                }
403                else{
404                        $formulaire .= "<label for='nom_$champ'>"._T("forms:champ_nom")."</label> :";
405                        $formulaire .= " &nbsp;<input type='text' name='nom_champ' id='nom_$champ' value=\"".
406                                entites_html($row['titre'])."\" class='fondo verdana2 $focus' size='30' /><br />\n";
407                        $formulaire .= Forms_bloc_edition_champ($row, $action_link, $redirect, $id_bloc);
408
409                        $formulaire .= "<label for='aide_$champ'>"._T("forms:aide_contextuelle")."</label> :";
410                        $formulaire .= " &nbsp;<textarea name='aide_champ' id='aide_$champ'  class='verdana2' style='width:90%;height:3em;' >".
411                                entites_html($row['aide'])."</textarea><br />\n";
412
413                }
414                $formulaire .= "<label for='wrap_$champ'>"._T("forms:html_wrapper")."</label> :";
415                $formulaire .= " &nbsp;<textarea name='wrap_champ' id='wrap_$champ'  class='verdana2' style='width:90%;height:3em;' >".
416                entites_html($row['html_wrap'])."</textarea><br />\n";
417
418                $formulaire .= "<div style='text-align:$spip_lang_right'>";
419                $formulaire .= "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo verdana2'>\n";
420                $formulaire .= "</div>\n";
421
422                $args_redir=parametre_url($redirect,'exec','','&');
423                $args_redir=explode("#",$args_redir);
424                $args_redir=explode("?",$args_redir[0]);
425                $args_redir="&".$args_redir[1];
426
427                $formulaire .= "</div>";
428                $formulaire .= "</form>";
429                if (version_compare($GLOBALS['spip_version_code'],'1.9250','>')){
430                        $formulaire =
431                                bouton_block_depliable(typo($row['titre'])." (".typo(Forms_nom_type_champ($row['type'])).")",$visible,"champ_$champ")
432                                . debut_block_depliable($visible,"champ_$champ")
433                                . $formulaire
434                                . fin_block();
435                }
436                else {
437                        $formulaire =
438                                "<div style='padding: 2px; background-color: $couleur_claire; color: black;'>&nbsp;"
439                                . ($visible ? bouton_block_visible("champ_$champ") : bouton_block_invisible("champ_$champ"))
440                                . "<strong id='titre_nom_$champ'>".typo($row['titre'])."</strong>"
441                                . "<br /></div>"
442                                . "(".typo(Forms_nom_type_champ($row['type'])).")\n"
443                                . ($visible ? debut_block_visible("champ_$champ") : debut_block_invisible("champ_$champ"))
444                                . $formulaire
445                                . fin_block();
446                }
447
448                if ($ajax && ($champ == $ajax))
449                        return $formulaire;
450                $out .= "<div id='$id_bloc' class='forms_champs'>$formulaire</div>";
451                if (!in_array($type,array('separateur','textestatique')))
452                        $out .= fin_cadre_relief(true);
453                else
454                        $out .= fin_cadre_enfonce(true);
455                $out .= '</div>';
456        }
457        if ($ajax)
458                return "Champ $ajax introuvable"; // erreur si l'on est encore ici
459        $out .= "</div>";
460        // Reordonner les champs ------------------------------------------------------------
461        $action_link = generer_action_auteur("forms_edit","$id_form",urlencode($redirect));
462        $action_link_noredir = parametre_url($action_link,'redirect','');
463        $out .= "<form class='ajaxAction sortableChamps' method='POST' action='$action_link_noredir' style='display:none;'>" .
464                form_hidden($action_link_noredir) .
465                "<input type='hidden' name='redirect' value='$redirect' />" . // form_hidden ne desencode par redirect ...
466                "<input type='hidden' name='idtarget' value='dummy' />". // on target un div vide
467                "<input type='hidden' name='ordonne_champs' value='$id_form' />";
468        $out .= "<input type='text' name='ordre' value='' />";
469        $out .= " &nbsp; <input type='submit' name='valider' value='"._T('bouton_valider')."' class='fondo'>";
470        $out .= "<div id='dummy'></div>";
471        $out .= "</form>\n";
472
473        // Ajouter un champ ------------------------------------------------------------------
474        $redirect = ancre_url(parametre_url($redirect,'champ_visible',''),'');
475        $action_link = generer_action_auteur("forms_edit","$id_form",urlencode($redirect));
476        $action_link_noredir = parametre_url($action_link,'redirect','');
477        $out .= "<p>";
478        $out .= debut_cadre_enfonce("", true);
479        $out .= "<form class='ajaxAction' method='POST' action='$action_link_noredir' style='border: 0px; margin: 0px;'>" .
480                form_hidden($action_link_noredir) .
481                "<input type='hidden' name='redirect' value='$redirect' />" . // form_hidden ne desencode par redirect ...
482                "<input type='hidden' name='idtarget' value='champs' />"; // on target toute la boite, pas juste le div parent
483        $out .= "<strong>"._T("forms:ajouter_champ")."</strong><br />\n";
484        $out .= _T("forms:ajouter_champ_type");
485        $out .= " \n";
486
487        $types = Forms_liste_types_champs();
488        $out .= "<select name='ajout_champ' value='' class='fondo'>\n";
489        foreach ($types as $type) {
490                $out .= "<option value='$type'>".typo(Forms_nom_type_champ($type))."</option>\n";
491        }
492        $out .= "</select>\n";
493        $out .= " &nbsp; <input type='submit' name='valider' id='ajout_champ' value='"._T('bouton_ajouter')."' class='fondo'>";
494        $out .= "</form>\n";
495        $out .= fin_cadre_enfonce(true);
496        $out .= "</p>";
497        $out .= Forms_fin_cadre_formulaire(true);
498        $out .= "</p>";
499
500        return $out;
501}
502
503
504//
505// Edition des donnees du formulaire
506//
507function boite_proprietes($id_form, $row, $focus, $action_link, $redirect) {
508        $prefixei18n = forms_prefixi18n($row['type_form']);
509        $is_form =      $prefixei18n=='form';
510
511        $out = "";
512        $out .= "<p>";
513        $out .= Forms_debut_cadre_formulaire('',true);
514
515        $action_link_noredir = parametre_url($action_link,'redirect','');
516        $out .= "<div class='verdana2'>";
517        //$out .= "<form method='POST' action='$action_link' style='border: 0px; margin: 0px;'>";
518        //$out .= form_hidden($action_link);
519        $out .= "<form class='ajaxAction' method='POST' action='$action_link_noredir'" .
520                " style='border: 0px; margin: 0px;'>" .
521                form_hidden($action_link_noredir) .
522                "<input type='hidden' name='redirect' value='$redirect' />" . // form_hidden ne desencode par redirect ...
523                "<input type='hidden' name='idtarget' value='proprietes' />" ;
524
525        $titre = entites_html($row['titre']);
526        $descriptif = entites_html($row['descriptif']);
527        $texte = entites_html($row['texte']);
528        $email = unserialize($row['email']);
529
530        $out .= "<strong><label for='titre_form'>"._T("$prefixei18n:titre_formulaire")."</label></strong> "._T('info_obligatoire_02');
531        $out .= "<br />";
532        $out .= "<input type='text' name='titre' id='titre_form' class='formo $focus' ".
533                "value=\"".$titre."\" size='40' /><br />\n";
534
535        $out .= "<strong><label for='desc_form'>"._T('info_descriptif')."</label></strong>";
536        $out .= "<br />";
537        $out .= "<textarea name='descriptif' id='desc_form' class='forml' rows='4' cols='40' wrap='soft'>";
538        $out .= $descriptif;
539        $out .= "</textarea><br />\n";
540
541        $out .= Forms_bloc_routage_mail($id_form,$email);
542
543        $out .= "<strong><label for='confirm_form'>"._T('forms:confirmer_reponse')."</label></strong> ";
544        $out .= "<br />";
545        $out .= "<select name='champconfirm' id='confirm_form' class='forml'";
546        $out .= "onchange=\"if (options[selectedIndex].value=='') $('#texte_confirm').hide(); else $('#texte_confirm').show();\" ";
547        $out .= ">\n";
548        $out .= "<option value=''>"._T('forms:pas_mail_confirmation')."</option>\n";
549        $champconfirm_known = false;
550        $res2 = spip_query("SELECT * FROM spip_forms_champs WHERE type='email' AND id_form="._q($id_form));
551        while ($row2 = spip_fetch_array($res2)) {
552                $out .= "<option value='" . $row2['champ'] . "'";
553                if ($row['champconfirm'] == $row2['champ']){
554                        $out .= " selected='selected'";
555                        $champconfirm_known = true;
556                }
557                $out .= ">" . $row2['titre'] . "</option>\n";
558        }
559        $out .= "</select><br />\n";
560        $display = $champconfirm_known?"block":"none";
561        $out .= "<div id='texte_confirm' style='display:$display'>";
562        $out .= "<strong><label for='texte_form'>"._T('info_texte')."</label></strong>";
563        $out .= "<br />";
564        $out .= "<textarea name='texte' id='texte_form' class='formo' rows='4' cols='40' wrap='soft'>";
565        $out .= $texte;
566        $out .= "</textarea><br />\n";
567        $out .= "</div>";
568
569        if ($is_form){
570                $out .= debut_cadre_enfonce("../"._DIR_PLUGIN_FORMS."img_pack/sondage-24.png",true);
571                $out .= "<strong>"._T("forms:type_form")."</strong> : ";
572                $out .= _T("forms:info_sondage");
573                $out .= "<br /><br />";
574                $out .= bouton_radio('type_form', '', _T("forms:sondage_non"), $row['type_form'] == '').'<br />';
575                $out .= bouton_radio('type_form', 'sondage', _T("forms:sondage_oui"), $row['type_form'] == 'sondage').'<br />';
576                $out .= fin_cadre_enfonce(true);
577        }
578        else
579                $out .= "<input type='hidden' name='type_form' value='".$row['type_form']."' />";
580
581        $out .= debut_cadre_enfonce("",true);
582        $out .= "<strong><label for='modifiable'>"._T('forms:modifiable_donnees')."</label></strong>";
583        $out .= "<br />";
584        $out .= bouton_radio("modifiable", "oui", _T('forms:donnees_modifiable'), $row['modifiable'] == "oui", "");
585        $out .= "<br />";
586        $out .= bouton_radio("modifiable", "non", _T('forms:donnees_nonmodifiable'), $row['modifiable'] != "oui", "");
587        $out .= "<br />";
588        $out .= fin_cadre_enfonce(true);
589
590        $out .= debut_cadre_enfonce("",true);
591        $out .= "<strong><label for='multiple'>"._T('forms:multiple_donnees')."</label></strong>";
592        $out .= "<br />";
593        $out .= bouton_radio("multiple", "oui", _T('forms:donnees_multiple'), $row['multiple'] == "oui", "");
594        $out .= "<br />";
595        $out .= bouton_radio("multiple", "non", _T('forms:donnees_nonmultiple'), $row['multiple'] != "oui", "");
596        $out .= "<br />";
597        $out .= fin_cadre_enfonce(true);
598        if ($is_form){
599                $out .= debut_cadre_enfonce("",true);
600                $out .= "<strong><label for='forms_obligatoires'>"._T('forms:forms_obligatoires')."</label></strong>";
601                $out .= "<br />";
602                $out .= "<input type='text' name='forms_obligatoires' id='forms_obligatoires_form' class='formo $focus' ".
603                        "value=\"".$row['forms_obligatoires']."\" size='40' /><br />\n";
604                $out .= "<br />";
605                $out .= fin_cadre_enfonce(true);
606        }
607
608        $out .= debut_cadre_enfonce("",true);
609        $out .= "<strong><label for='moderation'>"._T('forms:publication_donnees')."</label></strong>";
610        $out .= "<br />";
611        $out .= bouton_radio("public", "oui", _T('forms:donnees_pub'), $row['public'] == "oui", "");
612        $out .= "<br />";
613        $out .= bouton_radio("public", "non", _T('forms:donnees_prot'), $row['public'] != "oui", "");
614        $out .= "<br />";
615        $out .= fin_cadre_enfonce(true);
616
617        $out .= debut_cadre_enfonce("",true);
618        $out .= "<strong><label for='moderation'>"._T('forms:moderation_donnees')."</label></strong>";
619        $out .= "<br />";
620        $out .= bouton_radio("moderation", "posteriori", _T('bouton_radio_publication_immediate'), $row['moderation'] != "priori", "");
621        $out .= "<br />";
622        $out .= bouton_radio("moderation", "priori", _T('bouton_radio_moderation_priori'), $row['moderation'] == "priori", "");
623        $out .= "<br />";
624        $out .= fin_cadre_enfonce(true);
625
626        $out .= debut_cadre_enfonce("",true);
627        $out .= "<input type='checkbox' name='linkable' id='linkable' value='oui'";
628        if ($row['linkable']=='oui') $out .= "checked='checked' /><label for='linkable'><b>";
629        else $out .=" /><label for='linkable'>";
630        $out .= _T("forms:lier_articles");
631        if ($row['linkable']=='oui') $out .= "</b>";
632        $out .= "</label><br />";
633        $out .= "<input type='checkbox' name='documents' id='documents' value='oui'";
634        if ($row['documents']=='oui') $out .= "checked='checked' /><label for='documents'><b>";
635        else $out .=" /><label for='documents'>";
636        $out .= _T("forms:lier_documents");
637        if ($row['documents']=='oui') $out .= "</b>";
638        $out .= "</label><br />";
639        $out .= "<input type='checkbox' name='documents_mail' id='documents_mail' value='oui'";
640        if ($row['documents_mail']=='oui') $out .= "checked='checked' /><label for='documents_mail'><b>";
641        else $out .=" /><label for='documents_mail'>";
642        $out .= _T("forms:lier_documents_mail");
643        if ($row['documents_mail']=='oui') $out .= "</b>";
644        $out .= "</label><br />";
645        $out .= fin_cadre_enfonce(true);
646
647        $out .= "<label for='wrap'>"._T("forms:html_wrapper")."</label> :";
648        $out .= " &nbsp;<textarea name='html_wrap' id='wrap'  class='verdana2' style='width:90%;height:3em;' >".
649        entites_html($row['html_wrap'])."</textarea><br />\n";
650
651        $out .= "<div style='text-align:right'>";
652        $out .= "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo'></div>\n";
653
654        $out .= "</form>";
655        $out .= "</div>";
656        $out .= Forms_fin_cadre_formulaire(true);
657        $out .= "</p>";
658        return $out;
659}
660?>
Note: See TracBrowser for help on using the repository browser.