[CSS] +fix page header and title color
[lhc/web/www.git] / www / plugins / saisies / formulaires / construire_formulaire.html
index 9fda49d..d3bc093 100644 (file)
@@ -1,9 +1,6 @@
-[(#ENV{erreurs}|table_valeur{positionner}|oui)
-       <a name="ajax_ancre" href="[(#ENV{erreurs}|table_valeur{positionner})]"></a>
-]
-<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}">
+<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ (#ENV{formulaire_modifie}|oui) modifie]">
        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
-       <p id="message_attention" class="reponse_formulaire reponse_formulaire_ok[ (#ENV{formulaire_modifie}|non) invisible]">#ENV*{_message_attention}</p>
+       <p id="message_attention" class="message_reinitialiser reponse_formulaire reponse_formulaire_ok">#ENV*{_message_attention}</p>
        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
        
        <BOUCLE_editable(CONDITION){si #ENV{editable}|oui}>
                [(#REM) declarer les hidden qui declencheront le service du formulaire 
                parametre : url d'action ]
                #ACTION_FORMULAIRE{#ENV{action}}
-               <input style="display:none;" type="submit" class="submit" name="enregistrer" value="<:bouton_enregistrer:>" />
+               <input type="submit" class="submit noscroll invisible" name="enregistrer" value="<:bouton_enregistrer:>" />
 
-               <ul id="deplacable">
+               <[(#DIV|sinon{ul})] class="editer-groupe" id="deplacable">
                        
-                       <li id="reinitialiser" class="actions_formulaire[ (#ENV{formulaire_modifie}|non) invisible]">
+                       <[(#DIV|sinon{li})] id="reinitialiser" class="actions_formulaire">
                                <button type="submit" class="submit" name="reinitialiser" value="oui" onclick="return confirm('<:saisies:construire_reinitialiser_confirmer:>')">
                                        <img src="#CHEMIN{images/formulaire-reinitialiser-24.png}" alt="" />
                                        <:saisies:construire_reinitialiser:>
                                </button>
-                       </li>
+                       </[(#DIV|sinon{li})]>
 
-                       <BOUCLE_contenu(POUR){tableau #ENV{_contenu}}>
+                       [(#REM)<!-- les choix de saisies -->]
+                       <BOUCLE_contenu(DATA){source tableau, #ENV{_contenu}}>
                        [(#VAL{saisie}|array_key_exists{#VALEUR}|oui)
-                               [(#VALEUR**|formidable_generer_saisie_configurable{#ENV**|unserialize})]
+                               [(#VALEUR**|construire_formulaire_generer_saisie_configurable{#ENV**|unserialize})]
                        ]
                        </BOUCLE_contenu>
-                       <li class="aucun"><em class="attention"><:saisies:construire_aucun_champs:></em></li>
+                       <[(#DIV|sinon{li})] class="aucun"><em class="attention"><:saisies:construire_aucun_champs:></em></[(#DIV|sinon{li})]>
                        <//B_contenu>
                        
                        <B_saisies_disponibles>
-                       <li class="editer haut saisies_disponibles" id="attrapable">
+                       <[(#DIV|sinon{li})] class="editer haut saisies_disponibles" id="attrapable">
                                <label><:saisies:construire_ajouter_champ:></label>
-                               <BOUCLE_saisies_disponibles(POUR){tableau #ENV{_saisies_disponibles}}>
-                               <button type="submit" name="ajouter_saisie" value="#CLE" class="submit ajouter_saisie"[ title="(#VALEUR|table_valeur{description})"] [style="background-image:url((#VALEUR|table_valeur{icone}|sinon{#CHEMIN{images/formulaire-saisie-defaut.png}}))"]>
-                                       <span>[(#VALEUR|table_valeur{titre})]</span>
+                               <BOUCLE_saisies_disponibles(DATA){source tableau, #ENV{_saisies_disponibles}}{par titre}>
+                               <button type="submit" name="ajouter_saisie" value="#CLE" class="submit noscroll ajouter_saisie"[ title="(#DESCRIPTION)"] [style="background-image:url((#ICONE|sinon{#CHEMIN{images/formulaire-saisie-defaut.png}}))"]>
+                                       <span>#TITRE</span>
                                </button>
                                </BOUCLE_saisies_disponibles>
-                       </li>
+                       </[(#DIV|sinon{li})]>
                        </B_saisies_disponibles>
-               </ul>
+                       
+                       <B_saisies_groupes_disponibles>
+                       <[(#DIV|sinon{li})] class="editer haut saisies_groupes_disponibles" id="attrapable_bis">
+                               <label><:saisies:construire_ajouter_groupe:></label>
+                               <BOUCLE_saisies_groupes_disponibles(DATA){source tableau, #ENV{_saisies_groupes_disponibles}}{par titre}>
+                               <button type="submit" name="ajouter_groupe_saisie" value="#CLE" class="submit noscroll ajouter_saisie"[ title="(#DESCRIPTION)"] [style="background-image:url((#ICONE|sinon{#CHEMIN{images/formulaire-saisie-defaut.png}}))"]>
+                                       <span>#TITRE</span>
+                               </button>
+                               </BOUCLE_saisies_groupes_disponibles>
+                       </[(#DIV|sinon{li})]>
+                       </B_saisies_groupes_disponibles>
+                       
+               </[(#DIV|sinon{ul})]>
 
                
                [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
                <span class='image_loading'></span>
        </div></form>
 
+       <style>
+               .message_reinitialiser,#reinitialiser {display: none}
+               .modifie .message_reinitialiser,.modifie #reinitialiser {display: block}
+       </style>
        <script type="text/javascript">
-               jQuery(function(){
-                       jQuery('.formulaire_construire_formulaire li.configurable')
-                               .hover(
-                                       function(){
-                                               jQuery(this)
-                                                       .addClass('hover')
+       (function($){
+
+               function formulaire_configurer_onglets() {
+                       var $formulaire_configurer = $('.formulaire_configurer');
+                       var $onglets = $('<ul class="formulaire_configurer-onglets"></ul>');
+                       var $contenus = $formulaire_configurer.find('> .editer-groupe > .fieldset');
+
+                       // On ajoute le conteneur des onglets
+                       $formulaire_configurer.prepend($onglets);
+
+                       // On parcourt les contenus pour générer les onglets
+                       $contenus.each(function(i){
+                               // On ajoute un identifiant et une classe
+                               $(this)
+                                       .attr('id', 'formulaire_configurer-contenu-'+i)
+                                       .addClass('formulaire_configurer-contenu');
+                               // On récupère le titre (en le cachant au passage)
+                               var titre = $(this).find('[(#VAL{"{{{ titre }}}"}|propre|replace{"\n",""}|replace{"<(\S*).*>",$1,i})]').eq(0).hide().text();
+
+                               // On crée un onglet
+                               var $onglet = $('<li><a href="#formulaire_configurer-contenu-'+i+'">'+titre+'</a></li>');
+                               $onglet
+                                       .click(function(){
+                                               $contenus.hide();
+                                               $(
+                                                       $(this)
+                                                               .siblings()
+                                                                       .removeClass('actif')
+                                                               .end()
+                                                               .addClass('actif')
+                                                               .find('a')
+                                                                       .attr('href')
+                                               ).show();
+                                               return false;
+                                       });
+
+                               // On active le premier onglet au démarrage
+                               if (i == 0) {
+                                       $onglet.addClass('actif');
+                               }
+
+                               // S'il y a des erreurs dans cette partie du contenu, on met une classe "erreurs" à l'onglet aussi
+                               if ($(this).find('.editer.erreur').length > 0) {
+                                       $onglet.addClass('erreur');
+                               }
+
+                               // On ajoute l'onglet
+                               $onglets.append($onglet);
+                       })
+                       .hide()
+                       .eq(0)
+                               .show();
+               }
+
+               /* enlever les required */
+               $('.formulaire_#FORM .editer.obligatoire').find('input, textarea, select').each(function(){
+                       if ($(this).prop('required')) {
+                               $(this).prop('required', false);
+                       }
+               });
+
+               $('.formulaire_#FORM .configurable')
+                       .hover(
+                               function(){
+                                       $(this)
+                                               .addClass('hover')
+                                               .find('> .actions')
+                                                       .show()
+                                               .end()
+                                               .parents('li.configurable:not(.en_configuration)')
+                                                       .mouseout();
+                               },
+                               function(){
+                                       if (!$(this).is('.en_configuration'))
+                                               $(this)
+                                                       .removeClass('hover')
                                                        .find('> .actions')
-                                                               .show()
+                                                               .hide()
                                                        .end()
-                                                       .parents('li.configurable:not(.en_configuration)')
-                                                               .mouseout();
+                                                       .parents('.configurable').eq('0')
+                                                               .mouseover();
+                               }
+                       )
+                       .filter(':not(.en_configuration)')
+                               .find('> .actions')
+                                       .hide()
+                               .end()
+                       .end();
+
+               // On lance la création des onglets
+               formulaire_configurer_onglets();
+
+               // Gérer la liste des vérifications
+               $('.liste_verifications').each(function(){
+                       var $options = $(this).siblings('.options_verifier').hide();
+                       var $select  = $(this).find('select');
+
+                       $select
+                               .change(function(){
+                                       var montrer = $(this).val() ? $(this).val() : 'soigfeg';
+                                       $options.hide().filter('.'+montrer).show();
+                               })
+                               .change();
+               });
+
+               // On déplie toujours les fieldsets plés par défaut
+               $('.fieldset.plie').each(function(){
+                       $(this)
+                               .removeClass('plie')
+                               .find('> fieldset > .editer-groupe').show();
+               });
+
+               [(#ENV{erreurs}|non|et{#ENV{_jquery_ui_all}|ou{#ENV{_chemin_ui}}})
+                       var saisies_sortable = function() {
+                               $( "#deplacable, #deplacable .editer-groupe" ).sortable({
+                                       revert: true,
+                                       containment: '#deplacable',
+                                       connectWith: "#deplacable, #deplacable .editer-groupe",
+                                       placeholder: "ui-state-highlight",
+                                       handle: '>.actions .deplacer_saisie',
+                                       start: function(event, ui) {
+                                               $('.ui-state-highlight')
+                                                       .css('height', ui.item.css('height'))
+                                                       .css('height', '+=20px');
                                        },
-                                       function(){
-                                               if (!jQuery(this).is('.en_configuration'))
-                                                       jQuery(this)
-                                                               .removeClass('hover')
-                                                               .find('> .actions')
-                                                                       .hide()
-                                                               .end()
-                                                               .parents('li.configurable').eq('0')
-                                                                       .mouseover();
-                                       }
-                               )
-                               .filter(':not(.en_configuration)')
-                                       .find('> .actions')
-                                               .hide()
-                                       .end()
-                               .end();
-                       
-                       // On lance la création des onglets
-                       formulaire_configurer_onglets();
-                       
-                       // Gérer la liste des vérifications
-                       jQuery('.liste_verifications')
-                               .each(function(){
-                                       var options = jQuery(this).siblings('.options_verifier').hide();
-                                       var select = jQuery(this).find('select');
-                                       
-                                       select
-                                               .change(function(){
-                                                       var montrer = jQuery(this).val() ? jQuery(this).val() : 'soigfeg';
-                                                       options.hide().filter('.'+montrer).show();
-                                               })
-                                               .change();
-                               });
-                       
-                       // On déplie toujours les fieldsets plés par défaut
-                       jQuery('li.fieldset.plie')
-                               .each(function(){
-                                       jQuery(this)
-                                               .removeClass('plie')
-                                               .find('> fieldset > ul').show();
-                               });
-                               
-                       [(#ENV{erreurs}|non|et{#ENV{_chemin_ui}})
-                               $.getScript("#CHEMIN{#ENV{_chemin_ui}jquery.ui.core.js}", function(){
-                               $.getScript("#CHEMIN{#ENV{_chemin_ui}jquery.ui.widget.js}", function(){
-                               $.getScript("#CHEMIN{#ENV{_chemin_ui}jquery.ui.mouse.js}", function(){
-                               $.getScript("#CHEMIN{#ENV{_chemin_ui}jquery.ui.sortable.js}", function(){
-                                       if ($.fn.sortable) {
-                                               jQuery( "#deplacable, #deplacable ul" ).sortable({
-                                                       revert: true,
-                                                       containment: '#deplacable',
-                                                       connectWith: "#deplacable, #deplacable ul",
-                                                       placeholder: "ui-state-highlight",
-                                                       handle: '>.actions .deplacer_saisie',
-                                                       start: function(event, ui) {
-                                                               jQuery('.ui-state-highlight')
-                                                                       .css('height', ui.item.css('height'))
-                                                                       .css('height', '+=20px');
-                                                       },
-                                                       update: function(event, ui) {
-                                                               id = ui.item.data('id');
-                                                               ou = ui.item.next().data('id');
-                                                               // avant le suivant
-                                                               if (!ou) {
-                                                                       // sinon dans le parent
-                                                                       ou = ui.item.closest('.fieldset').data('id');
-                                                                       if (ou) {
-                                                                               ou = '[(#VAL{91}|chr)]' + ou + '[(#VAL{93}|chr)]';
-                                                                       }
-                                                               }
-                                                               url = "#URL_ECRIRE";
-                                                               $.get(url, {
-                                                                       session: '#ENV{_identifiant_session}',
-                                                                       action: 'deplacer_saisie',
-                                                                       saisie: id,
-                                                                       ou: ou
-                                                               }, function() {
-                                                                       //jQuery('input.vide').submit();
-                                                                       jQuery('#reinitialiser').removeClass('invisible');
-                                                                       jQuery('#message_attention').removeClass('invisible');
-                                                               });
+                                       update: function(event, ui) {
+                                               id = ui.item.data('id');
+                                               ou = ui.item.next().data('id');
+                                               // avant le suivant
+                                               if (!ou) {
+                                                       // sinon dans le parent
+                                                       ou = ui.item.closest('.fieldset').data('id');
+                                                       if (ou) {
+                                                               ou = '\[' + ou + '\]';
                                                        }
+                                               }
+                                               url = "#URL_ECRIRE";
+                                               $.get(url, {
+                                                       session: '#ENV{_identifiant_session}',
+                                                       action: 'deplacer_saisie',
+                                                       saisie: id,
+                                                       ou: ou
+                                               }, function() {
+                                                       //$('input.vide').submit();
+                                                       $('.formulaire_#ENV{form}').addClass('modifie').trigger('modifsaisies');
                                                });
                                        }
-                               });});});});
-                               
-                               $.getScript("#CHEMIN{#ENV{_chemin_ui}jquery.ui.core.js}", function(){
-                               $.getScript("#CHEMIN{#ENV{_chemin_ui}jquery.ui.widget.js}", function(){
-                               $.getScript("#CHEMIN{#ENV{_chemin_ui}jquery.ui.mouse.js}", function(){
-                               $.getScript("#CHEMIN{#ENV{_chemin_ui}jquery.ui.draggable.js}", function(){
-                                       if ($.fn.draggable) {
-                                               jQuery( "#attrapable" ).draggable({
-                                                       connectToSortable: "#deplacable, #deplacable ul",
-                                                       helper: "clone"
-                                               });
+                               });
+                       }
+                       if (!$.fn.sortable) {
+                       [
+                               $.getScript("(#ENV{_jquery_ui_all})", function(){
+                       ]
+                       [(#ENV{_chemin_ui}|oui)
+                               $.getScript("#CHEMIN{#ENV{_chemin_ui}core.js}", function(){
+                               $.getScript("#CHEMIN{#ENV{_chemin_ui}widget.js}", function(){
+                               $.getScript("#CHEMIN{#ENV{_chemin_ui}mouse.js}", function(){
+                               $.getScript("#CHEMIN{#ENV{_chemin_ui}sortable.js}", function(){
+                       ]
+                                       if ($.fn.sortable) {
+                                               saisies_sortable();
                                        }
-                               });});});});
+                       });
+                       [(#ENV{_chemin_ui}|oui)
+                               });});});
                        ]
-               });
-               
-               function formulaire_configurer_onglets(){
-                       var formulaire_configurer = jQuery('.formulaire_configurer');
-                       var onglets = jQuery('<ul class="formulaire_configurer-onglets"></ul>');
-                       var contenus = formulaire_configurer.find('> ul > li.fieldset');
-                       
-                       // On ajoute le conteneur des onglets
-                       formulaire_configurer
-                               .prepend(onglets);
-                       
-                       // On parcourt les contenus pour générer les onglets
-                       contenus
-                               .each(function(i){
-                                       // On ajoute un identifiant et une classe
-                                       jQuery(this)
-                                               .attr('id', 'formulaire_configurer-contenu-'+i)
-                                               .addClass('formulaire_configurer-contenu');
-                                       // On récupère le titre (en le cachant au passage)
-                                       var titre = jQuery(this).find('h3').eq(0).hide().text();
-                                       // On crée un onglet
-                                       var onglet = jQuery('<li><a href="#formulaire_configurer-contenu-'+i+'">'+titre+'</a></li>');
-                                       onglet
-                                               .click(function(){
-                                                       contenus.hide();
-                                                       jQuery(
-                                                               jQuery(this)
-                                                                       .siblings()
-                                                                               .removeClass('actif')
-                                                                       .end()
-                                                                       .addClass('actif')
-                                                                       .find('a')
-                                                                               .attr('href')
-                                                       ).show();
-                                                       return false;
-                                               });
-                                       
-                                       // On active le premier onglet au démarrage
-                                       if (i == 0) onglet.addClass('actif');
-                                       
-                                       // S'il y a des erreurs dans cette partie du contenu, on met une classe "erreurs" à l'onglet aussi
-                                       if (jQuery(this).find('li.erreur').length > 0)
-                                               onglet.addClass('erreur');
-                                       
-                                       // On ajoute l'onglet
-                                       onglets
-                                               .append(onglet);
-                               })
-                               .hide()
-                               .eq(0)
-                                       .show();
-               }
+                       } else {
+                               saisies_sortable();
+                       }
+               ]
+
+       })(jQuery);
        </script>
        </BOUCLE_editable>
 </div>