diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 930c4d183e4e89bb512aa3f47295271adae220ed..97094a466d2067c3a7378bb9476761ed0725879a 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -424,12 +424,21 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { $ajouts = array_flip(explode('|',$c)); $u = is_array($v) ? $v : rawurlencode($v); $testv = (is_array($v)?count($v):strlen($v)); + $v_read = null; // lire les variables et agir foreach ($url as $n => $val) { if (preg_match($regexp, urldecode($val), $r)) { $r = array_pad($r, 3, null); if ($v === NULL) { - return $r[2]?substr($r[2],1):''; + // c'est un tableau, on memorise les valeurs + if (substr($r[1],-2)=="[]"){ + if (!$v_read) $v_read = array(); + $v_read[] = $r[2]?substr($r[2],1):''; + } + // c'est un scalaire, on retourne direct + else { + return $r[2]?substr($r[2],1):''; + } } // suppression elseif (!$testv) { @@ -453,7 +462,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { if ($v === NULL AND $args = func_get_args() AND count($args)==2) { - return $v; + return $v_read; // rien trouve ou un tableau } elseif ($testv) { foreach($ajouts as $k => $n) { if (!is_array($v)) diff --git a/prive/javascript/ajaxCallback.js b/prive/javascript/ajaxCallback.js index 10a4f0fea3dc190c42cdca49cc5949b0dad54fe3..5106b1a13e23a7bca0e2e469969c8e990c8c9fe5 100644 --- a/prive/javascript/ajaxCallback.js +++ b/prive/javascript/ajaxCallback.js @@ -925,6 +925,7 @@ function parametre_url(url,c,v,sep,force_vide){ var ajouts = []; var u = (typeof(v)!=='object')?encodeURIComponent(v):v; var na = []; + var v_read = null; // lire les variables et agir for(var n=0;n<args.length;n++){ var val = args[n]; @@ -932,7 +933,15 @@ function parametre_url(url,c,v,sep,force_vide){ var r=val.match(regexp); if (r && r.length){ if (v==null){ - return (r.length>2 && typeof r[2]!=='undefined')?r[2].substring(1):''; + // c'est un tableau, on memorise les valeurs + if (r[1].substr(-2) == '[]') { + if (!v_read) v_read = []; + v_read.push((r.length>2 && typeof r[2]!=='undefined')?r[2].substring(1):''); + } + // c'est un scalaire, on retourne direct + else { + return (r.length>2 && typeof r[2]!=='undefined')?r[2].substring(1):''; + } } // suppression else if (!v.length) { @@ -951,7 +960,7 @@ function parametre_url(url,c,v,sep,force_vide){ na.push(args[n]); } - if (v==null) return v; // rien de trouve + if (v==null) return v_read; // rien de trouve ou un tableau // traiter les parametres pas encore trouves if (v || v.length || force_vide) { ajouts = "="+ajouts.join("=")+"=";