Changeset 57414 in spip-zone


Ignore:
Timestamp:
Jan 20, 2012, 6:55:00 PM (8 years ago)
Author:
marcimat@…
Message:

Quelques corrections pour permettre d'utiliser "afficher_si" dans le constructeur de formulaire (particulièrement dans la configuration d'une saisie) :

  • identifier chaque saisie du formulaire de configuration
  • limiter le $ a jQuery
  • utiliser de préférence l'identification de la saisie dans le js de afficher si s'il est connu
  • ne pas utiliser |interdire_script sur inserer_fin ( donc) qui ajoute le js du coup avec le constructeur de formulaire, sinon évidemnent le js ne s'execute pas...
  • permettre de rechercher des name sous forme de tableau pour affciher si (options[nom]) par exemple.
Location:
_plugins_/saisies
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/formulaires/construire_formulaire.php

    r54888 r57414  
    8181        $formulaire_config = $saisies_disponibles[$saisie['saisie']]['options'];
    8282        array_walk_recursive($formulaire_config, 'formidable_transformer_nom', "saisie_modifiee_${nom}[options][@valeur@]");
    83 
     83        $formulaire_config = saisie_identifier(array('saisies'=>$formulaire_config));
     84        $formulaire_config = $formulaire_config['saisies'];
     85       
    8486        // Si la saisie possede un identifiant, on l'ajoute
    8587        // au formulaire de configuration pour ne pas le perdre en route
     
    461463                );
    462464        }
    463        
    464465        // On génère le HTML de la saisie
    465466        $html = saisies_generer_html($saisie, $env);
    466        
    467467        return $html;
    468468}
  • _plugins_/saisies/inc/saisies_afficher.php

    r49774 r57414  
    249249        $saisies = saisies_lister_par_nom($saisies,true);
    250250        $code = '';
     251        $code .= '(function($){';
    251252        $code .= '$(document).ready(function(){';
    252253                $code .= 'verifier_saisies_'.$id_form.' = function(form){';
    253254                                foreach ($saisies as $saisie) {
     255                                        // on utilise comme selecteur l'identifiant de saisie en priorite s'il est connu
     256                                        // parce que li_class = 'tableau[nom][option]' ne fonctionne evidement pas
     257                                        // lorsque le name est un tableau
    254258                                        if (isset($saisie['options']['afficher_si'])) {
    255259                                                $i++;
     260                                                // retrouver la classe css probable
    256261                                                switch ($saisie['saisie']) {
    257262                                                        case 'fieldset':
     
    265270                                                }
    266271                                                $condition = $saisie['options']['afficher_si'];
     272                                                // retrouver l'identifiant
     273                                                $identifiant = '';
     274                                                if ($saisie['identifiant']) {
     275                                                        $identifiant = $saisie['identifiant'];
     276                                                }
    267277                                                // On gère le cas @plugin:non_plugin@
    268278                                                preg_match_all('#@plugin:(.+)@#U', $condition, $matches);
     
    285295                                                                case 'radio':
    286296                                                                case 'oui_non':
    287                                                                         $condition = preg_replace('#@'.$nom.'@#U', '$(form).find("[name=\''.$nom.'\']:checked").val()', $condition);
     297                                                                        $condition = preg_replace('#@'.preg_quote($nom).'@#U', '$(form).find("[name=\''.$nom.'\']:checked").val()', $condition);
    288298                                                                        break;
    289299                                                                default:
    290                                                                         $condition = preg_replace('#@'.$nom.'@#U', '$(form).find("[name=\''.$nom.'\']").val()', $condition);
     300                                                                        $condition = preg_replace('#@'.preg_quote($nom).'@#U', '$(form).find("[name=\''.$nom.'\']").val()', $condition);
    291301                                                        }
    292302                                                }
    293                                                 $code .= 'if ('.$condition.') {$(form).find("li.'.$class_li.'").show(400);} ';
    294                                                 $code .= 'else {$(form).find(".'.$class_li.'").hide(400);} ';
     303                                                if ($identifiant) {
     304                                                        $sel = "li[data-id='$identifiant']";
     305                                                } else {
     306                                                        $sel = "li.$class_li";
     307                                                }
     308                                                $code .= 'if ('.$condition.') {$(form).find("'.$sel.'").show(400);} ';
     309                                                $code .= 'else {$(form).find("'.$sel.'").hide(400);} ';
    295310                                        }
    296311                                }
     
    299314                $code .= '$("li#afficher_si_'.$id_form.'").parents("form").change(function(){verifier_saisies_'.$id_form.'(this);});';
    300315        $code .= '});';
     316        $code .= '})(jQuery);';
    301317        return $i>0 ? $code : '';
    302318}
  • _plugins_/saisies/inclure/generer_saisies.html

    r49130 r57414  
    3333 
    3434  Exemples d'appels :
    35     #INCLURE{fond=inclure/generer_saisies, env, saisies=#ENV{tableau}}
     35    # INCLURE{fond=inclure/generer_saisies, env, saisies=#ENV{tableau}}
    3636
    3737]
  • _plugins_/saisies/paquet.xml

    r57178 r57414  
    22        prefix="saisies"
    33        categorie="outil"
    4         version="1.20.2"
     4        version="1.21.0"
    55        etat="test"
    66        compatibilite="[2.0.0;3.0.*]"
  • _plugins_/saisies/plugin.xml

    r57178 r57414  
    44    <auteur>Matthieu Marcillaud - RastaPopoulos - Joseph</auteur>
    55    <licence>&#169; 2009-2011 GNU/GPL</licence>
    6     <version>1.20.2</version>
     6    <version>1.21.0</version>
    77    <etat>test</etat>
    88    <categorie>outil</categorie>
  • _plugins_/saisies/saisies/_base.html

    r53592 r57414  
    4848                        [(#INCLURE{fond=saisies/#ENV{type_saisie},env,disable=#GET{disable},readonly=#GET{readonly}})]
    4949                        [(#ENV{disable_avec_post}|et{#ENV{disable_avec_post}|!={non}}|oui)<input type='hidden' name='#ENV{nom}' value="#ENV{valeur,#ENV{defaut}}" />]
    50                         #ENV*{inserer_fin}
     50                        #ENV**{inserer_fin}
    5151                </li>
    5252        ]
Note: See TracChangeset for help on using the changeset viewer.