From 3529bc00bea1638e598ec50359fa44bc77eea699 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Thu, 14 Feb 2008 15:04:24 +0000
Subject: [PATCH] preparer le traitement generique et simplifie des
 FORMULAIRE_xx

---
 ecrire/public/composer.php | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index f1cbddf5f1..b635b08f4f 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -240,8 +240,17 @@ function argumenter_squelette($v) {
 // verifier leurs arguments et filtres, et calculer le code a inclure
 // http://doc.spip.org/@executer_balise_dynamique
 function executer_balise_dynamique($nom, $args, $filtres, $lang, $ligne) {
-	if (!$file = find_in_path(strtolower($nom) .'.php', 'balise/', true))
-		die ("pas de balise dynamique pour #". strtolower($nom)." !");
+	if (!$file = find_in_path(strtolower($nom) .'.php', 'balise/', true)) {
+		// regarder si une fonction generique n'existe pas
+		if (($p = strpos($nom,"_"))
+		&& ($file = find_in_path(strtolower(substr($nom,0,$p+1)) .'.php', 'balise/', true))) {
+			// dans ce cas, on lui injecte en premier arg le nom de la balise qu'on doit traiter
+			array_unshift($args,$nom);
+			$nom = substr($nom,0,$p+1);
+		}
+		else
+			die ("pas de balise dynamique pour #". strtolower($nom)." !");
+	}
 
 	// Y a-t-il une fonction de traitement filtres-arguments ?
 	$f = 'balise_' . $nom . '_stat';
-- 
GitLab