388ca477593fe1a86eba44f12f77e7dc9eee9b2c
[lhc/web/www.git] / www / plugins / saisies / formulaires / construire_formulaire.html
1 [(#ENV{erreurs/positionner}|oui)
2 <a name="ajax_ancre" href="[(#ENV{erreurs/positionner})]"></a>
3 ]
4 <div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ (#ENV{formulaire_modifie}|oui) modifie]">
5 [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
6 <p id="message_attention" class="message_reinitialiser reponse_formulaire reponse_formulaire_ok">#ENV*{_message_attention}</p>
7 [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
8
9 <BOUCLE_editable(CONDITION){si #ENV{editable}|oui}>
10 <form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
11 [(#REM) declarer les hidden qui declencheront le service du formulaire
12 parametre : url d'action ]
13 #ACTION_FORMULAIRE{#ENV{action}}
14 <input style="display:none;" type="submit" class="submit" name="enregistrer" value="<:bouton_enregistrer:>" />
15
16 <[(#VAL{ul}|saisie_balise_structure_formulaire)] class="editer-groupe" id="deplacable">
17
18 <[(#VAL{li}|saisie_balise_structure_formulaire)] id="reinitialiser" class="actions_formulaire">
19 <button type="submit" class="submit" name="reinitialiser" value="oui" onclick="return confirm('<:saisies:construire_reinitialiser_confirmer:>')">
20 <img src="#CHEMIN{images/formulaire-reinitialiser-24.png}" alt="" />
21 <:saisies:construire_reinitialiser:>
22 </button>
23 </[(#VAL{li}|saisie_balise_structure_formulaire)]>
24
25 [(#REM)<!-- les choix de saisies -->]
26 <BOUCLE_contenu(DATA){source tableau, #ENV{_contenu}}>
27 [(#VAL{saisie}|array_key_exists{#VALEUR}|oui)
28 [(#VALEUR**|formidable_generer_saisie_configurable{#ENV**|unserialize})]
29 ]
30 </BOUCLE_contenu>
31 <[(#VAL{li}|saisie_balise_structure_formulaire)] class="aucun"><em class="attention"><:saisies:construire_aucun_champs:></em></[(#VAL{li}|saisie_balise_structure_formulaire)]>
32 <//B_contenu>
33
34 <B_saisies_disponibles>
35 <[(#VAL{li}|saisie_balise_structure_formulaire)] class="editer haut saisies_disponibles" id="attrapable">
36 <label><:saisies:construire_ajouter_champ:></label>
37 <BOUCLE_saisies_disponibles(DATA){source tableau, #ENV{_saisies_disponibles}}{par cle}>
38 <button type="submit" name="ajouter_saisie" value="#CLE" class="submit ajouter_saisie"[ title="(#DESCRIPTION)"] [style="background-image:url((#ICONE|sinon{#CHEMIN{images/formulaire-saisie-defaut.png}}))"]>
39 <span>#TITRE</span>
40 </button>
41 </BOUCLE_saisies_disponibles>
42 </[(#VAL{li}|saisie_balise_structure_formulaire)]>
43 </B_saisies_disponibles>
44
45 <B_saisies_groupes_disponibles>
46 <[(#VAL{li}|saisie_balise_structure_formulaire)] class="editer haut saisies_groupes_disponibles" id="attrapable_bis">
47 <label><:saisies:construire_ajouter_groupe:></label>
48 <BOUCLE_saisies_groupes_disponibles(DATA){source tableau, #ENV{_saisies_groupes_disponibles}}{par cle}>
49 <button type="submit" name="ajouter_groupe_saisie" value="#CLE" class="submit ajouter_saisie"[ title="(#DESCRIPTION)"] [style="background-image:url((#ICONE|sinon{#CHEMIN{images/formulaire-saisie-defaut.png}}))"]>
50 <span>#TITRE</span>
51 </button>
52 </BOUCLE_saisies_groupes_disponibles>
53 </[(#VAL{li}|saisie_balise_structure_formulaire)]>
54 </B_saisies_groupes_disponibles>
55
56 </[(#VAL{ul}|saisie_balise_structure_formulaire)]>
57
58
59 [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
60 <!--extra-->
61
62 <span class='image_loading'></span>
63 </div></form>
64
65 <style>
66 .message_reinitialiser,#reinitialiser {display: none}
67 .modifie .message_reinitialiser,.modifie #reinitialiser {display: block}
68 </style>
69 <script type="text/javascript">
70 (function($){
71
72 function formulaire_configurer_onglets() {
73 var $formulaire_configurer = $('.formulaire_configurer');
74 var $onglets = $('<ul class="formulaire_configurer-onglets"></ul>');
75 var $contenus = $formulaire_configurer.find('> .editer-groupe > .fieldset');
76
77 // On ajoute le conteneur des onglets
78 $formulaire_configurer.prepend($onglets);
79
80 // On parcourt les contenus pour générer les onglets
81 $contenus.each(function(i){
82 // On ajoute un identifiant et une classe
83 $(this)
84 .attr('id', 'formulaire_configurer-contenu-'+i)
85 .addClass('formulaire_configurer-contenu');
86 // On récupère le titre (en le cachant au passage)
87 var titre = $(this).find('[(#GLOBALS{debut_intertitre,<h3>}|replace{"<(\S*).*>",$1,i})]').eq(0).hide().text();
88 // On crée un onglet
89 var $onglet = $('<li><a href="#formulaire_configurer-contenu-'+i+'">'+titre+'</a></li>');
90 $onglet
91 .click(function(){
92 $contenus.hide();
93 $(
94 $(this)
95 .siblings()
96 .removeClass('actif')
97 .end()
98 .addClass('actif')
99 .find('a')
100 .attr('href')
101 ).show();
102 return false;
103 });
104
105 // On active le premier onglet au démarrage
106 if (i == 0) {
107 $onglet.addClass('actif');
108 }
109
110 // S'il y a des erreurs dans cette partie du contenu, on met une classe "erreurs" à l'onglet aussi
111 if ($(this).find('.editer.erreur').length > 0) {
112 $onglet.addClass('erreur');
113 }
114
115 // On ajoute l'onglet
116 $onglets.append($onglet);
117 })
118 .hide()
119 .eq(0)
120 .show();
121 }
122
123 /* enlever les required */
124 $('.formulaire_#FORM .editer.obligatoire').find('input, textarea, select').each(function(){
125 if ($(this).prop('required')) {
126 $(this).prop('required', false);
127 }
128 });
129
130 $('.formulaire_#FORM .configurable')
131 .hover(
132 function(){
133 $(this)
134 .addClass('hover')
135 .find('> .actions')
136 .show()
137 .end()
138 .parents('li.configurable:not(.en_configuration)')
139 .mouseout();
140 },
141 function(){
142 if (!$(this).is('.en_configuration'))
143 $(this)
144 .removeClass('hover')
145 .find('> .actions')
146 .hide()
147 .end()
148 .parents('.configurable').eq('0')
149 .mouseover();
150 }
151 )
152 .filter(':not(.en_configuration)')
153 .find('> .actions')
154 .hide()
155 .end()
156 .end();
157
158 // On lance la création des onglets
159 formulaire_configurer_onglets();
160
161 // Gérer la liste des vérifications
162 $('.liste_verifications').each(function(){
163 var $options = $(this).siblings('.options_verifier').hide();
164 var $select = $(this).find('select');
165
166 $select
167 .change(function(){
168 var montrer = $(this).val() ? $(this).val() : 'soigfeg';
169 $options.hide().filter('.'+montrer).show();
170 })
171 .change();
172 });
173
174 // On déplie toujours les fieldsets plés par défaut
175 $('.fieldset.plie').each(function(){
176 $(this)
177 .removeClass('plie')
178 .find('> fieldset > .editer-groupe').show();
179 });
180
181 [(#ENV{erreurs}|non|et{#ENV{_chemin_ui}})
182 $.getScript("#CHEMIN{#ENV{_chemin_ui}core.js}", function(){
183 $.getScript("#CHEMIN{#ENV{_chemin_ui}widget.js}", function(){
184 $.getScript("#CHEMIN{#ENV{_chemin_ui}mouse.js}", function(){
185 $.getScript("#CHEMIN{#ENV{_chemin_ui}sortable.js}", function(){
186 if ($.fn.sortable) {
187 $( "#deplacable, #deplacable .editer-groupe" ).sortable({
188 revert: true,
189 containment: '#deplacable',
190 connectWith: "#deplacable, #deplacable .editer-groupe",
191 placeholder: "ui-state-highlight",
192 handle: '>.actions .deplacer_saisie',
193 start: function(event, ui) {
194 $('.ui-state-highlight')
195 .css('height', ui.item.css('height'))
196 .css('height', '+=20px');
197 },
198 update: function(event, ui) {
199 id = ui.item.data('id');
200 ou = ui.item.next().data('id');
201 // avant le suivant
202 if (!ou) {
203 // sinon dans le parent
204 ou = ui.item.closest('.fieldset').data('id');
205 if (ou) {
206 ou = '\[' + ou + '\]';
207 }
208 }
209 url = "#URL_ECRIRE";
210 $.get(url, {
211 session: '#ENV{_identifiant_session}',
212 action: 'deplacer_saisie',
213 saisie: id,
214 ou: ou
215 }, function() {
216 //$('input.vide').submit();
217 $('.formulaire_#ENV{form}').addClass('modifie').trigger('modifsaisies');
218 });
219 }
220 });
221 }
222 });
223 /*
224 $.getScript("#CHEMIN{#ENV{_chemin_ui}draggable.js}", function(){
225 if ($.fn.draggable) {
226 $( "#attrapable" ).draggable({
227 connectToSortable: "#deplacable, #deplacable ul",
228 helper: "clone"
229 });
230 }
231 });
232 */
233 });});});
234 ]
235
236 })(jQuery);
237 </script>
238 </BOUCLE_editable>
239 </div>