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