Changeset 113033 in spip-zone


Ignore:
Timestamp:
Dec 21, 2018, 10:31:06 AM (4 weeks ago)
Author:
maieul@…
Message:

@case_1@ tout seul fonctionne, vérifie que la case est cochée

Location:
_plugins_/saisies/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/trunk/inc/saisies_afficher_si.php

    r113011 r113033  
    294294function saisies_transformer_condition_afficher_si($condition, $env = null) {
    295295        $regexp = "(?:@(?<champ>.+?)@)" // @champ_@
     296                . "(" // partie operateur + valeur (optionnelle) : debut
    296297                . "(?:\s*?)" // espaces éventuels après
    297298                . "(?<operateur>==|!=|IN|!IN)" // opérateur
    298299                . "(?:\s*?)" // espaces éventuels après
    299                 . "(?<guillemet>\"|')(?<valeur>.*?)(\k<guillemet>)"; // valeur
     300                . "(?<guillemet>\"|')(?<valeur>.*?)(\k<guillemet>)" // valeur
     301                . ")?"; // partie operateur + valeur (optionnelle) : fin
    300302        $regexp = "#$regexp#";
    301303        if (preg_match_all($regexp, $condition, $tests, PREG_SET_ORDER)) {
     
    308310                                $champ = $env["valeurs"][$champ];
    309311                        }
    310                         $operateur = $test['operateur'];
    311                         $valeur = $test['valeur'];
     312                        $operateur = isset($test['operateur']) ? $test['operateur'] : null;
     313                        $valeur = isset($test['valeur']) ? $test['valeur'] : null;
    312314                        $test_modifie = saisies_tester_condition_afficher_si($champ, $operateur, $valeur) ? 'true' : 'false';
    313315                        $condition = str_replace($expression, $test_modifie, $condition);
     
    331333 * @return bool false / true selon la condition
    332334 **/
    333 function saisies_tester_condition_afficher_si($champ, $operateur, $valeur) {
     335function saisies_tester_condition_afficher_si($champ, $operateur=null, $valeur=null) {
     336        // Si operateur null => on test juste qu'un champ est cochée / validé
     337        if ($operateur === null and $valeur === null) {
     338                return isset($champ) and $champ;
     339        }
     340
    334341        // Dans tous les cas, enlever les guillemets qui sont au sein de valeur
    335342        //Si champ est de type string, tenter d'unserializer
  • _plugins_/saisies/trunk/tests/saisies_afficher_si/saisies_evaluer_afficher_si.php

    r113011 r113033  
    2323
    2424        // Preparer les requests
     25        set_request("case_1", "oui");
    2526        set_request("a", "a");
    2627        set_request("b", "b");
     
    9697                                1 => "@tableau_1@ !IN 'b' || @tableau_2@ !IN 'c'"
    9798                        ),
     99                        'champ_uniquement' => array(
     100                                0 => true,
     101                                1 => "@case_1@"
     102                        )
    98103                );
    99104                return $essais;
  • _plugins_/saisies/trunk/tests/saisies_afficher_si/saisies_tester_condition_afficher_si.php

    r113010 r113033  
    3636        function essais_saisies_tester_condition_afficher_si(){
    3737                $essais = array (
     38                        "champ_uniquement" => array(
     39                                0 => true,
     40                                1 => "case_1",
     41                        ),
    3842                        "chaines_egales_test_egalite" => array (
    3943                                0 => true,
Note: See TracChangeset for help on using the changeset viewer.