From 9d93eba0ecea9a72b423abd1f7601c70b97b0c17 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Thu, 17 Aug 2006 15:17:44 +0000 Subject: [PATCH] passer les arguments sur le modele des include #MACHIN{truc=toto} --- ecrire/public/references.php | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/ecrire/public/references.php b/ecrire/public/references.php index c6a00a7c9c..7f68e1b38c 100644 --- a/ecrire/public/references.php +++ b/ecrire/public/references.php @@ -270,13 +270,31 @@ function calculer_balise_modele_dist($p){ } // Preparer le code du contexte (id + champ + params) - foreach ($p->param as $param) - foreach ($param as $elem) - if (strlen($elem)) { - $code_contexte[] = calculer_liste($elem, - $p->descr, - $p->boucles, - $p->id_boucle); + // on assimile {var=val} a une liste de un argument sans fonction + $champ = new Inclure; + foreach ($p->param as $k => $v) { + $var = $v[1][0]; + if ($var==NULL) break; // on est arrive sur un filtre + if ($var->type != 'texte') + erreur_squelette(_T('zbug_parametres_inclus_incorrects'), + $match[0]); + else { + $champ->param[$k] = $v; + ereg("^([^=]*)(=)?(.*)$", $var->texte,$m); + if ($m[2]) { + $champ->param[$k][0] = $m[1]; + $val = $m[3]; + if (ereg('^[\'"](.*)[\'"]$', $val, $m)) $val = $m[1]; + $champ->param[$k][1][0]->texte = $val; + } + else + $champ->param[$k] = array($m[1]); + } + } + foreach($champ->param as $val) { + $var = array_shift($val); + $code_contexte[] = "'$var' => " . + ($val ? calculer_liste($val[0], $p->descr, $p->boucles, $p->id_boucle) :(($var =='lang') ? '$GLOBALS["spip_lang"]' : index_pile($p->id_boucle, $var, $p->boucles))); } $p->code = "recuperer_fond('modeles/".$nom."', -- GitLab