From 0fc1f916fafdda542b419537a9b49b9f9d521400 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Thu, 13 Mar 2008 17:20:52 +0000
Subject: [PATCH] porter le formulaire recherche dans la nouvelle api balise
 dynamique au passage permettre de definir une fonction balise_XX_stat() pour
 argumenter sans pour autant definir de fonction _dyn

la fonction stat permet ici de continuer provisoirement le support de
[(#FORMULAIRE_RECHERCHE|spip.php?page=tralala)]

on encourage vivement a utiliser la seule ecriture qui devrait etre acceptee :
[(#FORMULAIRE_RECHERCHE{spip.php?page=tralala})]
---
 dist/formulaires/recherche.html        |  4 ++--
 ecrire/balise/formulaire_recherche.php | 25 +------------------------
 ecrire/public/composer.php             | 13 ++++++++++++-
 3 files changed, 15 insertions(+), 27 deletions(-)

diff --git a/dist/formulaires/recherche.html b/dist/formulaires/recherche.html
index f14db58fea..f8d684a2c6 100644
--- a/dist/formulaires/recherche.html
+++ b/dist/formulaires/recherche.html
@@ -1,6 +1,6 @@
 <div class="formulaire_spip formulaire_recherche" id="formulaire_recherche">
-<form action="[(#ENV{lien})]" method="get"><div>
-	[(#ENV{lien}|form_hidden)]
+<form action="[(#ENV{lien})]" method="get" class='noajax'><div>
+	#ACTION_FORMULAIRE{#ENV{lien}}
 	[<input type="hidden" name="lang" value="(#ENV{lang})" />]
 	<label for="recherche"><:info_rechercher:></label>
 	<input type="text" class="forml" size="10" name="recherche" id="recherche"[ value="(#ENV{recherche})"] accesskey="4" />
diff --git a/ecrire/balise/formulaire_recherche.php b/ecrire/balise/formulaire_recherche.php
index dd6eb6554d..1a61105483 100644
--- a/ecrire/balise/formulaire_recherche.php
+++ b/ecrire/balise/formulaire_recherche.php
@@ -14,33 +14,10 @@ if (!defined("_ECRIRE_INC_VERSION")) return;	#securite
 
 // Pas besoin de contexte de compilation
 
-
-// http://doc.spip.org/@balise_FORMULAIRE_RECHERCHE
-function balise_FORMULAIRE_RECHERCHE ($p) 
-{
-	return calculer_balise_dynamique($p, 'FORMULAIRE_RECHERCHE', array());
-}
-
 // http://doc.spip.org/@balise_FORMULAIRE_RECHERCHE_stat
 function balise_FORMULAIRE_RECHERCHE_stat($args, $filtres) {
 	// filtres[0] doit etre un script (a revoir)
 	return array($filtres[0], $args ? $args[0] : '');
 }
- 
-// http://doc.spip.org/@balise_FORMULAIRE_RECHERCHE_dyn
-function balise_FORMULAIRE_RECHERCHE_dyn($lien, $rech) {
-
-	if ($GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site'])
-		$lang = $GLOBALS['spip_lang'];
-	else
-		$lang='';
-
-	return array('formulaires/recherche', 3600, 
-		array(
-			'lien' => ($lien ? $lien : generer_url_public('recherche')),
-			'recherche' => _request('recherche'),
-			'lang' => $lang
-		));
-}
 
-?>
+?>
\ No newline at end of file
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 943ca15b1c..1892b57072 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -251,7 +251,6 @@ function executer_balise_dynamique($nom, $args, $filtres, $lang, $ligne) {
 		else
 			die ("pas de balise dynamique pour #". strtolower($nom)." !");
 	}
-
 	// Y a-t-il une fonction de traitement filtres-arguments ?
 	$f = 'balise_' . $nom . '_stat';
 	if (function_exists($f))
@@ -261,6 +260,18 @@ function executer_balise_dynamique($nom, $args, $filtres, $lang, $ligne) {
 	if (!is_array($r))
 		return $r;
 	else {
+		// verifier que la fonction dyn est la, sinon se replier sur la generique si elle existe
+		if (!function_exists('balise_' . $nom . '_dyn')){
+			// 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($r,$nom);
+				$nom = substr($nom,0,$p+1);
+			}
+			else
+				die ("pas de balise dynamique pour #". strtolower($nom)." !");
+		}
 		if (!_DIR_RESTREINT) 
 			$file = _DIR_RESTREINT_ABS . $file;
 		return synthetiser_balise_dynamique($nom, $r, $file, $lang, $ligne);
-- 
GitLab