X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fecrire%2Fpublic%2Fcompiler.php;h=178f7a1f767d23d0d06fcc36257875ffffe147df;hb=1cd23582fed8f669ccf8246eb120237731da3db0;hp=b1586739d70ceee9a181987e1727db2c57f0b901;hpb=a9541742f84ce7e258d46dd8407242289ab2ec72;p=lhc%2Fweb%2Fwww.git diff --git a/www/ecrire/public/compiler.php b/www/ecrire/public/compiler.php index b1586739..178f7a1f 100644 --- a/www/ecrire/public/compiler.php +++ b/www/ecrire/public/compiler.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2012 * + * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -184,7 +184,7 @@ function calculer_inclure($p, &$boucles, $id_boucle) { // s'il y a une extension .php, ce n'est pas un squelette if (preg_match('/^.+[.]php$/s', $fichier)) { - $code = sandbox_composer_inclure_php($fichier, $p); + $code = sandbox_composer_inclure_php($fichier, $p, $contexte); } else { $_options[] = "\"compil\"=>array($compil)"; if ($ajax) @@ -867,11 +867,28 @@ function compile_cas($tableau, $descr, &$boucles, $id_boucle) { case 'idiome': $l = array(); + $code = ''; foreach ($p->arg as $k => $v) { - if ($k) $l[]= _q($k).' => '.calculer_liste($v,$p->descr,$boucles,$id_boucle); + $_v = calculer_liste($v, $descr, $boucles, $id_boucle); + if ($k) { + $l[] = _q($k) . ' => ' . $_v; + } else { + $code = $_v; + } + } + // Si le module n'est pas fourni, l'expliciter sauf si calculé + if ($p->module) { + $m = $p->module .':'.$p->nom_champ; + } elseif ($p->nom_champ) { + $m = MODULES_IDIOMES .':'.$p->nom_champ; + } else { + $m = ''; } - $l = !$l ? '' : (", array(".implode(",\n",$l).")"); - $code = "_T('" . $p->module . ":" .$p->nom_champ . "'$l)"; + $code = (!$code ? "'$m'" : + ($m ? "'$m' . $code" : + ("(strpos(\$x=$code, ':') ? \$x : ('" . MODULES_IDIOMES . ":' . \$x))"))) + . (!$l ? '' : (", array(" . implode(",\n", $l) . ")")); + $code = "_T($code)"; if ($p->param) { $p->id_boucle = $id_boucle; $p->boucles = &$boucles;