diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index b34efbf5c92d6380e8a784c2f52d4573b4f9dc3b..699bd50e1171e755cc7af061d25d5aa950dc8f0b 100644 --- a/ecrire/public/balises.php +++ b/ecrire/public/balises.php @@ -508,7 +508,7 @@ function balise_RECHERCHE_dist($p) { * Pile complétée par le code à générer **/ function balise_COMPTEUR_BOUCLE_dist($p) { - $b = index_boucle_parente($p); + $b = index_boucle_mere($p); if ($b === '') { $msg = array('zbug_champ_hors_boucle', array('champ' => zbug_presenter_champ($p))); erreur_squelette($msg, $p); @@ -536,7 +536,7 @@ function balise_COMPTEUR_BOUCLE_dist($p) { * Pile complétée par le code à générer **/ function balise_TOTAL_BOUCLE_dist($p) { - $b = index_boucle_parente($p); + $b = index_boucle_mere($p); if ($b === '') { $msg = array('zbug_champ_hors_boucle', array('champ' => zbug_presenter_champ($p))); erreur_squelette($msg, $p); @@ -1092,7 +1092,7 @@ define('CODE_PAGINATION', * Pile complétée par le code à générer */ function balise_PAGINATION_dist($p, $liste = 'true') { - $b = index_boucle_parente($p); + $b = index_boucle_mere($p); // s'il n'y a pas de nom de boucle, on ne peut pas paginer if ($b === '') { @@ -1202,7 +1202,7 @@ function balise_ANCRE_PAGINATION_dist($p) { * Pile complétée par le code à générer **/ function balise_GRAND_TOTAL_dist($p) { - $b = index_boucle_parente($p); + $b = index_boucle_mere($p); if ($b === '') { $msg = array('zbug_champ_hors_boucle', array('champ' => zbug_presenter_champ($p))); erreur_squelette($msg, $p); @@ -2640,7 +2640,7 @@ function balise_HTML5_dist($p) { * Pile complétée par le code à générer */ function balise_TRI_dist($p, $liste = 'true') { - $b = index_boucle_parente($p); + $b = index_boucle_mere($p); // s'il n'y a pas de nom de boucle, on ne peut pas trier if ($b === '') { $msg = array('zbug_champ_hors_boucle', array('champ' => zbug_presenter_champ($p))); diff --git a/ecrire/public/references.php b/ecrire/public/references.php index 01a06a5ed3df425da17e7adaa7129ff21c1c115c..8dbf7fcc964d2229adf5cb50c5998f3e908a1505 100644 --- a/ecrire/public/references.php +++ b/ecrire/public/references.php @@ -26,7 +26,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { * où une référence explicite est demandée * * - `#MABALISE` : l'index est celui de la première boucle englobante - * - `#_autreboucle:MABALISE` : l'index est celui de la boucle _autreboucle si elle est bien englobante + * - `#_autreboucle:MABALISE` : l'index est celui de la boucle _autreboucle * * @example * Dans une balise dynamique ou calculée : @@ -41,33 +41,27 @@ if (!defined('_ECRIRE_INC_VERSION')) { * - '' si une référence explicite incorrecte est envoyée */ function index_boucle($p) { - - $idb = $p->id_boucle; - $explicite = $p->nom_boucle; - - if (strlen($explicite)) { - // Recherche d'un champ dans un étage supérieur - while (($idb !== $explicite) && ($idb !== '')) { - $idb = $p->boucles[$idb]->id_parent; + if (strlen($p->nom_boucle)) { + // retourne l’index explicite demandé s’il existe + if (!empty($p->boucles[$p->nom_boucle])) { + return $p->nom_boucle; } - } - - return $idb; + return ''; + } + return $p->id_boucle; } /** - * Retrouver l'index de la boucle parente d'une balise (sauf explicitée) - * - * Retrouve la boucle parente d’une balise, sauf si son nom est explicité + * Retrouve la boucle mère d’une balise, sauf si son nom est explicité * * - `#MABALISE` : l'index sera celui de la boucle parente - * - `#_autreboucle:MABALISE` : l'index est celui de la boucle _autreboucle si elle est bien englobante - * + * - `#_autreboucle:MABALISE` : l'index est celui de la boucle _autreboucle, si elle existe + * * @example * Dans une balise dynamique ou calculée : * ``` - * $idb = index_boucle_parente($p); + * $idb = index_boucle_mere($p); * ``` * * @param Champ $p AST au niveau de la balise @@ -76,11 +70,14 @@ function index_boucle($p) { * - Identifiant de la boucle parente possédant ce champ, ou '' si pas de parent. * - '' si une référence explicite incorrecte est envoyée */ -function index_boucle_parente($p) { +function index_boucle_mere($p) { if (strlen($p->nom_boucle)) { // retourne l’index explicite demandé s’il existe - return index_boucle($p); - } + if (!empty($p->boucles[$p->nom_boucle])) { + return $p->nom_boucle; + } + return ''; + } if (!empty($p->descr['id_mere'])) { return $p->descr['id_mere']; }