source: spip-zone/_plugins_/forms/forms_et_tables_2_5/exec/forms_edit.php @ 65963

Last change on this file since 65963 was 65963, checked in by sblanc@…, 9 years ago
File size: 15.3 KB
Line 
1<?php
2/*
3 * forms
4 * Gestion de formulaires editables dynamiques
5 *
6 * Auteurs :
7 * Antoine Pitrou
8 * Cedric Morin
9 * Renato
10 * ??? 2005,2006 - Distribue sous licence GNU/GPL
11 *
12 */
13include_spip('inc/forms');
14include_spip('inc/forms_edit');
15include_spip('inc/forms_type_champs'); // gestion des types de champs
16
17function Forms_formulaire_confirme_suppression($id_form,$nb_reponses,$redirect,$retour,$prefixei18n='form'){
18        global $spip_lang_right;
19        $out = "<div class='verdana3'>";
20        if ($nb_reponses){
21                        $out .= "<p><strong>"._T("forms:attention")."</strong> ";
22                        $out .= _T("$prefixei18n:info_supprimer_formulaire_reponses")."</p>\n";
23        }
24        else{
25                $out .= "<br />";
26                $out .= _T("$prefixei18n:info_supprimer_formulaire")."</p>\n";
27        }
28        // ADAPTATION SPIP 2
29        if ($GLOBALS['spip_version_code']<2)
30                $link = generer_action_auteur('forms_supprime',"$id_form",_DIR_RESTREINT_ABS.($retour?(str_replace('&amp;','&',$retour)):generer_url_ecrire('forms_tous',"",false,true)));
31        else
32                $link = generer_action_auteur('forms_supprime',"$id_form",($retour?(str_replace('&amp;','&',$retour)):generer_url_ecrire('forms_tous',"",false,true)));
33        $out .= "<form method='post' action='$link' style='float:$spip_lang_right'>";
34        $out .= form_hidden($link);
35        $out .= "<div style='text-align:$spip_lang_right'>";
36        $out .= "&nbsp;<input type='submit' name='supp_confirme' value=\""._T('item_oui')."\" class='fondo' />";
37        $out .= "</div>";
38        $out .= "</form>\n";
39
40        $out .= "<form method='post' action='$redirect' style='float:$spip_lang_right'>\n";
41        $out .= form_hidden($redirect);
42        $out .= "<div style='text-align:$spip_lang_right'>";
43        $out .= "&nbsp;<input type='submit' name='supp_rejet' value=\""._T('item_non')."\" class='fondo' />";
44        $out .= "</div>";
45        $out .= "</form><br />\n";
46        $out .= "</div>";
47
48        return $out;
49}
50
51
52function contenu_boite_resume($id_form, $row, &$apercu){
53        $prefixei18n = forms_prefixi18n($row['type_form']);
54        $is_form =      $prefixei18n=='form';
55
56        $out = "";
57
58        // centre resume ---------------------------------------------------------------
59        $out .= debut_cadre_relief(_DIR_PLUGIN_FORMS."img_pack/form-24.png",true);
60
61        //$out .= gros_titre($row['titre'],'',false);
62
63        if ($row['descriptif']) {
64                $out .= "<div class='descriptif'><strong>"._T('info_descriptif')."</strong>";
65                $out .= propre($row['descriptif']);
66                $out .= "</div>\n";
67        }
68
69        if ($email = unserialize($row['email'])) {
70                $out .= "<div class='email'><strong>"._T('email_2')."</strong>";
71                $out .= $email['defaut'];
72                $out .= "</div>\n";
73        }
74       
75        if ($champconfirm = $row['champconfirm']){
76                $champconfirm_known = false;
77                $out .= "<div class='champconfirm'><strong>"._T('forms:confirmer_reponse')."</strong>";
78                $res2 = spip_query("SELECT titre FROM spip_forms_champs WHERE type='email' AND id_form="._q($id_form)." AND champ="._q($champconfirm));
79                if ($row2 = spip_fetch_array($res2)){
80                        $out .= $row2['titre'] . " ";
81                        $champconfirm_known = true;
82                }
83                $out .= "</div>\n";
84                if (($champconfirm_known == true) && ($row['texte'])) {
85                        $out .= "<div class='texte'><strong>"._T('info_texte')."</strong>";
86                        $out .= nl2br(entites_html($row['texte']));
87                        $out .= "</div>\n";
88                }
89        }
90
91        $out .= "<br />";
92        if (version_compare($GLOBALS['spip_version_code'],'1.9250','>')){
93                $out .= bouton_block_depliable(_T("forms:apparence_formulaire"),true,"preview_form");
94                $out .= debut_block_depliable(true,"preview_form");
95        }
96        else {
97                $out .= "<div style='padding: 2px; background-color: $couleur_claire; color: black;'>&nbsp;";
98                $out .= bouton_block_invisible("preview_form");
99                $out .= "<strong class='verdana3' style='text-transform: uppercase;'>"
100                        ._T("forms:apparence_formulaire")."</strong>";
101                $out .= "</div>\n";
102                $out .= debut_block_visible("preview_form");
103        }
104        $out .= "<p>" . _T("forms:info_apparence") . "</p>\n";
105        $out .= "<div id='apercu'>$apercu</div>";
106        $out .= fin_block();
107
108        if ($GLOBALS['spip_version_code']<1.92)         ob_start(); // des echo direct en 1.9.1
109        //adapatation SPIP2
110        /*$liste = afficher_articles(_T("$prefixei18n:articles_utilisant"),
111                array('FROM' => 'spip_articles AS articles, spip_forms_articles AS lien',
112                'WHERE' => "lien.id_article=articles.id_article AND id_form="._q($id_form)." AND statut!='poubelle'",
113                'ORDER BY' => "titre"));*/
114// SB201208 Affichage de la liste des articles utilisant ce formulaire
115        // $liste = afficher_objets('article',_T("$prefixei18n:articles_utilisant"),
116                // array('FROM' => 'spip_articles AS articles, spip_forms_articles AS lien',
117                // 'WHERE' => "lien.id_article=articles.id_article AND id_form="._q($id_form)." AND statut!='poubelle'",
118                // 'ORDER BY' => "titre"));
119$liste = "
120<div style=\"\" class=\"cadre cadre-liste\">
121<img width=\"24\" height=\"24\" class=\"cadre-icone\" alt=\"\" src=\"../prive/images/article-24.gif\">
122<div onmouseover=\"jQuery(this).depliant('#t75ea3bc1');\" class=\"titrem depliant deplie blocdeplie\" id=\"b900444f3\">
123        <a class=\"titremancre\" onclick=\"return jQuery(this).depliant_clicancre('#t75ea3bc1');\" href=\"#\"></a>
124        <b>Articles utilisant ce formulaire</b>
125</div>
126<div>
127<div class=\"bloc_depliable blocdeplie\" id=\"t75ea3bc1\" style=\"display: block; overflow: visible;\">
128<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">
129<tbody>";
130        if ($resultats = sql_select(
131                                                        '*', 
132                                                        array('spip_articles AS articles','spip_forms_articles AS lien'),
133                                                        array('lien.id_article=articles.id_article',"id_form="._q($id_form)."", "statut!='poubelle'"),
134                                                        '',
135                                                        array("titre")
136                                        )
137                ) 
138        {
139                // boucler sur les resultats
140                while ($res = sql_fetch($resultats)) 
141                {
142                        // utiliser les resultats
143                         // $res['colonne']
144                         // print_r($res);
145                         // $liste .=var_export($res,true);
146                        $liste .= "
147<tr class=\"tr_liste\">
148        <td class=\"verdana12\">
149                <div><a dir=\"ltr\" href=\"?exec=article&id_article=".$res['id_article']."\">#".$res['id_article']." - ".$res['titre']."</a>
150                </div>
151        </td>
152        </td>
153</tr>";
154
155                }
156        }
157        $liste .= "
158        </tbody>
159        </table>
160        <div class=\"nettoyeur\"></div>
161        </div>
162        <div class=\"nettoyeur\"></div></div></div>
163        ";
164
165       
166        if ($GLOBALS['spip_version_code']<1.92) {
167                $liste = ob_get_contents();
168                ob_end_clean();
169        }
170
171        $out .= $liste;
172
173        $out .= fin_cadre_relief(true);
174        return $out;
175}
176
177
178function exec_forms_edit(){
179        global $spip_lang_right;
180        $retour = _request('retour');
181
182        $id_form = intval(_request('id_form'));
183
184        if (!include_spip('inc/autoriser'))
185                include_spip('inc/autoriser_compat');
186        if (!autoriser('structurer','form',$id_form)) {
187                /*echo debut_page("&laquo; $titre &raquo;", "documents", "forms","");*/
188                $commencer_page = charger_fonction("commencer_page", "inc") ; 
189                echo $commencer_page("&laquo; $titre &raquo;", "documents", "forms","") ;
190                echo _T('acces_interdit');
191                echo fin_page();
192                exit();
193        }
194
195        $new = _request('new');
196        $supp_form = intval(_request('supp_form'));
197        $supp_rejet = _request('supp_rejet');
198        $titre = _request('titre');
199
200        _Forms_install();
201        if ($supp_form)
202                $id_form = $supp_form;
203
204        if ($retour)
205                $retour = urldecode($retour);
206        else
207                $retour = generer_url_ecrire('forms_tous',"","",true);
208        include_spip("inc/presentation");
209        include_spip("inc/config");
210
211        $nb_reponses = 0;
212        if ($id_form)
213                if ($row = spip_fetch_array(spip_query("SELECT COUNT(*) AS num FROM spip_forms_donnees WHERE id_form="._q($id_form)." AND confirmation='valide' and statut!='poubelle'")))
214                        $nb_reponses = $row['num'];
215
216        $redirect = generer_url_ecrire('forms_edit',(intval($id_form)?"id_form=$id_form":""));
217        if ($retour)
218                $redirect = parametre_url($redirect,"retour",urlencode($retour));
219
220        //
221        // Affichage de la page
222        //
223        if ($id_form){
224                $champ_visible = _request('champ_visible');
225                $nouveau_champ = _request('nouveau_champ');
226                $result = spip_query("SELECT * FROM spip_forms WHERE id_form="._q($id_form));
227                if ($row = spip_fetch_array($result)) {
228                        $id_form = $row['id_form'];
229                        $titre = $row['titre'];
230                }
231                $focus = "";
232                $action_link = generer_action_auteur("forms_edit","$id_form",urlencode($redirect));
233        }
234
235        $ajax_charset = _request('var_ajaxcharset');
236        $bloc = _request('bloc');
237        if ($ajax_charset && $bloc=='dummy') {
238                ajax_retour("");
239                exit;
240        }
241        if ($ajax_charset && $bloc=='apercu') {
242                include_spip('public/assembler');
243                $GLOBALS['var_mode']='calcul';
244                $apercu = recuperer_fond('modeles/form',array('id_form'=>$id_form,'var_mode'=>'calcul'));
245                ajax_retour($apercu);
246                exit;
247        }
248        if ($ajax_charset && $bloc=='resume') {
249                include_spip('public/assembler');
250                $GLOBALS['var_mode']='calcul';
251                $apercu = recuperer_fond('modeles/form',array('id_form'=>$id_form,'var_mode'=>'calcul'));
252                ajax_retour(contenu_boite_resume($id_form, $row, $apercu));
253                exit;
254        }
255        if ($ajax_charset && $bloc=='proprietes') {
256                ajax_retour(boite_proprietes($id_form, $row, $focus, $action_link, $redirect));
257                exit;
258        }
259        $bloc = explode("-",$bloc);
260        if ($ajax_charset && $bloc[0]=='champs') {
261                ajax_retour(Forms_zone_edition_champs($id_form, $champ_visible, $nouveau_champ,$redirect,isset($bloc[2])?$bloc[2]:false));
262                exit;
263        }
264
265
266        /*debut_page("&laquo; $titre &raquo;", "documents", "forms","");*/
267        $commencer_page = charger_fonction("commencer_page", "inc") ; 
268        echo $commencer_page("&laquo; $titre &raquo;", "documents", "forms","") ;
269
270        // Recupere les donnees ---------------------------------------------------------------
271        if ($new == 'oui' && !$titre) {
272                $row['type_form'] = _request('type_form')?_request('type_form'):""; // possibilite de passer un type par defaut dans l'url de creation
273                $prefixei18n = forms_prefixi18n($row['type_form']);
274                $is_form =      $prefixei18n=='form';
275
276                $titre = _T("$prefixei18n:nouveau_formulaire");
277                include_spip('inc/charset');
278                $row['titre'] = $titre = unicode2charset(html2unicode($titre));
279                $row['descriptif'] = "";
280                if ($is_form){
281                        $row['modifiable'] = 'non';
282                        $row['multiple'] = 'oui';
283                        $row['moderation'] = "posteriori";
284                }
285                else {
286                        $row['modifiable'] = 'non';
287                        $row['multiple'] = 'non';
288                        $row['moderation'] = "priori";
289                }
290                $row['forms_obligatoires'] = "";
291                $row['email'] = serialize(array());
292                $row['champconfirm'] = "";
293                $row['texte'] = "";
294                $row['public'] = "non";
295                $row['linkable'] = "non";
296                $row['documents'] = "non";
297                $row['documents_mail'] = "non";
298                $focus = "antifocus";
299
300                $action_link = generer_action_auteur("forms_edit","new",urlencode($redirect));
301        }
302        $prefixei18n = forms_prefixi18n($row['type_form']);
303        $is_form =      $prefixei18n=='form';
304
305        // gauche raccourcis ---------------------------------------------------------------
306        /*debut_gauche();*/
307        echo debut_gauche('', true);
308
309        echo "<br /><br />\n";
310        /*debut_boite_info();*/
311        echo debut_boite_info(true);
312        if ($id_form>0)
313                echo "<div style='font-size:3em;font-weight:bold;text-align:center;'>$id_form</div>\n";
314        if ($retour) {
315                // echo icone_horizontale(_T('icone_retour'), $retour, _DIR_PLUGIN_FORMS."img_pack/form-24.png", "rien.gif",false);
316                $contexteBT = array(
317                        'style'=>'horizontale ',
318                        'titre'=>_T('icone_retour'),
319                        'url'=>$retour,
320                        'icon_base'=>'form-24.png',
321                        'icon_action'=>'rien.gif'
322                );
323                echo recuperer_fond("fonds/bouton_url",$contexteBT);
324        }
325        if (autoriser('administrer','form',$id_form)) {
326                $nretour = urlencode(self());
327                // echo icone_horizontale(_T("forms:suivi_reponses")."<br />".(($nb_reponses==0)?_T("forms:aucune_reponse"):(($nb_reponses==1)?_T("forms:une_reponse"):_T("forms:nombre_reponses",array('nombre'=>$nb_reponses)))),generer_url_ecrire('forms_reponses',"id_form=$id_form"), _DIR_PLUGIN_FORMS."img_pack/donnees-24.png", "rien.gif",false);
328                $contexteBT = array(
329                        'style'=>'horizontale ',
330                        'titre'=>_T("forms:suivi_reponses")."\n\r".(($nb_reponses==0)?_T("forms:aucune_reponse"):(($nb_reponses==1)?_T("forms:une_reponse"):_T("forms:nombre_reponses",array('nombre'=>$nb_reponses)))),
331                        'url'=>generer_url_ecrire('forms_reponses',"id_form=$id_form"),
332                        'icon_base'=>'donnees-24.png',
333                        'icon_action'=>'rien.gif'
334                );
335                echo recuperer_fond("fonds/bouton_url",$contexteBT);
336               
337                // echo icone_horizontale(_T("forms:Tableau_des_reponses"),generer_url_ecrire('donnees_tous',"id_form=$id_form&retour=$nretour"), _DIR_PLUGIN_FORMS."img_pack/donnees-24.png", "rien.gif",false);
338                $contexteBT = array(
339                        'style'=>'horizontale ',
340                        'titre'=>_T("forms:Tableau_des_reponses"),
341                        'url'=>generer_url_ecrire('donnees_tous',"id_form=$id_form&retour=$nretour"),
342                        'icon_base'=>'donnees-24.png',
343                        'icon_action'=>'rien.gif'
344                );
345                echo recuperer_fond("fonds/bouton_url",$contexteBT);
346               
347                if ($nb_reponses){
348                        // echo icone_horizontale(_T("forms:telecharger_reponses"),generer_url_ecrire('forms_telecharger',"id_form=$id_form&retour=$nretour"), _DIR_PLUGIN_FORMS."img_pack/donnees-exporter-24.png", "rien.gif",false);
349                        $contexteBT = array(
350                                'style'=>'horizontale ',
351                                'titre'=>_T("forms:telecharger_reponses"),
352                                'url'=>generer_url_ecrire('forms_telecharger',"id_form=$id_form&retour=$nretour"),
353                                'icon_base'=>'donnees-exporter-24.png',
354                                'icon_action'=>'rien.gif'
355                        );
356                        echo recuperer_fond("fonds/bouton_url",$contexteBT);
357                }
358
359                if (include_spip('inc/snippets'))
360                        echo boite_snippets(_T("$prefixei18n:formulaire"),_DIR_PLUGIN_FORMS."img_pack/form-24.gif",'forms',$id_form);
361
362                $link = parametre_url(self(),'new','');
363                $link = parametre_url($link,'supp_form', $id_form);
364                if (!$retour) {
365                        $link=parametre_url($link,'retour', urlencode(generer_url_ecrire('form_tous')));
366                }
367                /*echo "<p>";*/
368                // echo icone_horizontale(_T("$prefixei18n:supprimer_formulaire"), $link, _DIR_PLUGIN_FORMS."img_pack/supprimer-24.png", "rien.gif",false);
369               
370                $contexteBT = array(
371                        'style'=>'horizontale ',
372                        'titre'=>_T("$prefixei18n:supprimer_formulaire"),
373                        'url'=>$link,
374                        'icon_base'=>'supprimer-24.png',
375                        'icon_action'=>'rien.gif'
376                );
377                echo recuperer_fond("fonds/bouton_url",$contexteBT);
378                /*echo "</p>";*/
379        }
380        /*fin_boite_info();*/
381        echo fin_boite_info(true);
382
383        // gauche apercu ---------------------------------------------------------------
384        echo "<div id='apercu_gauche'>";
385        include_spip('public/assembler');
386        $GLOBALS['var_mode']='calcul';
387        echo $apercu = recuperer_fond('modeles/form',array('id_form'=>$id_form,'var_mode'=>'calcul'));
388        echo "</div>";
389        echo '<a class="verdana2" href="#" onclick="$(\'#apercu_gauche\').remove();$(this).remove();return false;">'._T('forms:desactiver')."</a>";
390
391
392
393        // droite ---------------------------------------------------------------
394        echo creer_colonne_droite('',true);
395        /*debut_droite();*/
396        echo debut_droite('',true);
397
398        if (!$new){
399                echo gros_titre($row['titre'],'',false);
400
401                if ($supp_form && $supp_rejet==NULL)
402                        echo Forms_formulaire_confirme_suppression($id_form,$nb_reponses,$redirect,$retour,$prefixei18n);
403                echo "<div id='barre_onglets'>";
404                echo debut_onglet();
405                echo onglet(_T('forms:lien_apercu'),ancre_url(self(),"resume"),'','resume');
406                echo onglet(_T('forms:lien_propriete'),ancre_url(self(),"proprietes"),'','proprietes');
407                echo onglet(_T('forms:lien_champ'),ancre_url(self(),"champs"),'','champs');
408                echo fin_onglet();
409                echo "</div>";
410        }
411
412       
413        $out = "";
414       
415        if ($id_form){
416                // centre "Aperçu" (resume) ----------------------------------------------------
417                $out .= "<div id='resume'>";
418                $out .= contenu_boite_resume($id_form, $row, $apercu);
419                $out .= "</div>";
420        }
421
422        // centre "Propriétés" --------------------------------------------------------------
423        $out .= "<div id='proprietes'>";
424        $out .= boite_proprietes($id_form, $row, $focus, $action_link, $redirect);
425        $out .= "</div>";
426
427        // edition des champs ---------------------------------------------------------------
428        $out .= "<div id='champs'>";
429        $out .= Forms_zone_edition_champs($id_form, $champ_visible, $nouveau_champ, $redirect);
430        $out .= "</div>\n";
431
432        echo $out;
433
434        if ($GLOBALS['spip_version_code']>=1.9203)
435                echo fin_gauche();
436               
437        echo fin_page();
438       
439}
440
441?>
Note: See TracBrowser for help on using the repository browser.