[PLUGINS] +clavettes et dependances
[lhc/web/clavette_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 <ul id="deplacable">
17
18 <li 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 </li>
24
25 <BOUCLE_contenu(DATA){source tableau, #ENV{_contenu}}>
26 [(#VAL{saisie}|array_key_exists{#VALEUR}|oui)
27 [(#VALEUR**|formidable_generer_saisie_configurable{#ENV**|unserialize})]
28 ]
29 </BOUCLE_contenu>
30 <li class="aucun"><em class="attention"><:saisies:construire_aucun_champs:></em></li>
31 <//B_contenu>
32
33 <B_saisies_disponibles>
34 <li class="editer haut saisies_disponibles" id="attrapable">
35 <label><:saisies:construire_ajouter_champ:></label>
36 <BOUCLE_saisies_disponibles(DATA){source tableau, #ENV{_saisies_disponibles}}{par cle}>
37 <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}}))"]>
38 <span>#TITRE</span>
39 </button>
40 </BOUCLE_saisies_disponibles>
41 </li>
42 </B_saisies_disponibles>
43 </ul>
44
45
46 [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
47 <!--extra-->
48
49 <span class='image_loading'></span>
50 </div></form>
51
52 <style>
53 .message_reinitialiser,#reinitialiser {display: none}
54 .modifie .message_reinitialiser,.modifie #reinitialiser {display: block}
55 </style>
56 <script type="text/javascript">
57 jQuery(function(){
58 jQuery('.formulaire_construire_formulaire li.configurable')
59 .hover(
60 function(){
61 jQuery(this)
62 .addClass('hover')
63 .find('> .actions')
64 .show()
65 .end()
66 .parents('li.configurable:not(.en_configuration)')
67 .mouseout();
68 },
69 function(){
70 if (!jQuery(this).is('.en_configuration'))
71 jQuery(this)
72 .removeClass('hover')
73 .find('> .actions')
74 .hide()
75 .end()
76 .parents('li.configurable').eq('0')
77 .mouseover();
78 }
79 )
80 .filter(':not(.en_configuration)')
81 .find('> .actions')
82 .hide()
83 .end()
84 .end();
85
86 // On lance la création des onglets
87 formulaire_configurer_onglets();
88
89 // Gérer la liste des vérifications
90 jQuery('.liste_verifications')
91 .each(function(){
92 var options = jQuery(this).siblings('.options_verifier').hide();
93 var select = jQuery(this).find('select');
94
95 select
96 .change(function(){
97 var montrer = jQuery(this).val() ? jQuery(this).val() : 'soigfeg';
98 options.hide().filter('.'+montrer).show();
99 })
100 .change();
101 });
102
103 // On déplie toujours les fieldsets plés par défaut
104 jQuery('li.fieldset.plie')
105 .each(function(){
106 jQuery(this)
107 .removeClass('plie')
108 .find('> fieldset > ul').show();
109 });
110
111 [(#ENV{erreurs}|non|et{#ENV{_chemin_ui}})
112 $.getScript("#CHEMIN{#ENV{_chemin_ui}core.js}", function(){
113 $.getScript("#CHEMIN{#ENV{_chemin_ui}widget.js}", function(){
114 $.getScript("#CHEMIN{#ENV{_chemin_ui}mouse.js}", function(){
115 $.getScript("#CHEMIN{#ENV{_chemin_ui}sortable.js}", function(){
116 if ($.fn.sortable) {
117 jQuery( "#deplacable, #deplacable ul" ).sortable({
118 revert: true,
119 containment: '#deplacable',
120 connectWith: "#deplacable, #deplacable ul",
121 placeholder: "ui-state-highlight",
122 handle: '>.actions .deplacer_saisie',
123 start: function(event, ui) {
124 jQuery('.ui-state-highlight')
125 .css('height', ui.item.css('height'))
126 .css('height', '+=20px');
127 },
128 update: function(event, ui) {
129 id = ui.item.data('id');
130 ou = ui.item.next().data('id');
131 // avant le suivant
132 if (!ou) {
133 // sinon dans le parent
134 ou = ui.item.closest('.fieldset').data('id');
135 if (ou) {
136 ou = '\[' + ou + '\]';
137 }
138 }
139 url = "#URL_ECRIRE";
140 $.get(url, {
141 session: '#ENV{_identifiant_session}',
142 action: 'deplacer_saisie',
143 saisie: id,
144 ou: ou
145 }, function() {
146 //jQuery('input.vide').submit();
147 jQuery('.formulaire_#ENV{form}').addClass('modifie').trigger('modifsaisies');
148 });
149 }
150 });
151 }
152 });
153 /*
154 $.getScript("#CHEMIN{#ENV{_chemin_ui}jquery.ui.draggable.js}", function(){
155 if ($.fn.draggable) {
156 jQuery( "#attrapable" ).draggable({
157 connectToSortable: "#deplacable, #deplacable ul",
158 helper: "clone"
159 });
160 }
161 });
162 */
163 });});});
164 ]
165 });
166
167 function formulaire_configurer_onglets(){
168 var formulaire_configurer = jQuery('.formulaire_configurer');
169 var onglets = jQuery('<ul class="formulaire_configurer-onglets"></ul>');
170 var contenus = formulaire_configurer.find('> ul > li.fieldset');
171
172 // On ajoute le conteneur des onglets
173 formulaire_configurer
174 .prepend(onglets);
175
176 // On parcourt les contenus pour générer les onglets
177 contenus
178 .each(function(i){
179 // On ajoute un identifiant et une classe
180 jQuery(this)
181 .attr('id', 'formulaire_configurer-contenu-'+i)
182 .addClass('formulaire_configurer-contenu');
183 // On récupère le titre (en le cachant au passage)
184 var titre = jQuery(this).find('h3').eq(0).hide().text();
185 // On crée un onglet
186 var onglet = jQuery('<li><a href="#formulaire_configurer-contenu-'+i+'">'+titre+'</a></li>');
187 onglet
188 .click(function(){
189 contenus.hide();
190 jQuery(
191 jQuery(this)
192 .siblings()
193 .removeClass('actif')
194 .end()
195 .addClass('actif')
196 .find('a')
197 .attr('href')
198 ).show();
199 return false;
200 });
201
202 // On active le premier onglet au démarrage
203 if (i == 0) onglet.addClass('actif');
204
205 // S'il y a des erreurs dans cette partie du contenu, on met une classe "erreurs" à l'onglet aussi
206 if (jQuery(this).find('li.erreur').length > 0)
207 onglet.addClass('erreur');
208
209 // On ajoute l'onglet
210 onglets
211 .append(onglet);
212 })
213 .hide()
214 .eq(0)
215 .show();
216 }
217 </script>
218 </BOUCLE_editable>
219 </div>