Changeset 111014 in spip-zone


Ignore:
Timestamp:
Jul 5, 2018, 5:08:18 PM (13 months ago)
Author:
nicod@…
Message:

1/ Les conditions @checkbox_xx@ == 'valeur' ne fonctionnaient pas s'il y avait des caractères à la suite (suppression du $ dans le preg_match_all)

2/ S'il y avait plusieurs conditions @checkbox_xx@ == 'valeur', la capture de la regexp fonctionnait mal et générait un bug js
On capture donc différement : on prend les chaines "..." ou '...' strictement, sans mélanger doubles et simples quotes, et on modifie la génération de la condition

Location:
_plugins_/saisies/trunk
Files:
2 edited

Legend:

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

    r110193 r111014  
    389389                                                 * Faire fonctionner @checkbox_xx@ == 'valeur'
    390390                                                 */
    391                                                 preg_match_all('#@(.+)@\s*==\s*[\'"](.*?)[\'"]$#U', $condition, $matches2);
     391                                                preg_match_all('#@(.+)@\s*==\s*(\'[^\']*\'|"[^"]*")#U', $condition, $matches2);
    392392                                                foreach ($matches2[2] as $value) {
    393                                                         $condition = preg_replace('#@'.preg_quote($nom).'@#U', '($(form).find(".checkbox[name=\''.$nom.'[]\'][value='.$value.']").is(":checked") ? $(form).find(".checkbox[name=\''.$nom.'[]\'][value='.$value.']").val() : "")', $condition);
     393                                                        $value_no_quote=trim($value,"'\"'");
     394                                                        $condition = preg_replace('#@'.preg_quote($nom).'@\s*==\s*'.$value.'#U', '($(form).find(".checkbox[name=\''.$nom.'[]\'][value=\''.$value_no_quote.'\']").is(":checked") ? $(form).find(".checkbox[name=\''.$nom.'[]\'][value=\''.$value_no_quote.'\']").val() : "")=='.$value, $condition);
    394395                                                }
    395396                                                /**
    396397                                                 * Faire fonctionner @checkbox_xx@ IN 'valeur' ou @checkbox_xx@ !IN 'valeur'
    397398                                                 */
    398                                                 preg_match_all('#@(.+)@\s*(!IN|IN)\s*[\'"](.*?)[\'"]$#U', $condition, $matches3);
     399                                                preg_match_all('#@(.+)@\s*(!IN|IN)\s*[\'"](.*?)[\'"]#U', $condition, $matches3);
    399400                                                foreach ($matches3[3] as $key => $value) {
    400401                                                        $not = '';
  • _plugins_/saisies/trunk/paquet.xml

    r111009 r111014  
    22        prefix="saisies"
    33        categorie="outil"
    4         version="2.26.1"
     4        version="2.26.2"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.