From 8d23afe728931e90302e7f24b6e79118797d517c Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Thu, 12 May 2005 07:39:40 +0000
Subject: [PATCH] #LOGO_ARTICLE n'a plus de alt

mais on peut faire
[(#LOGO_ARTICLE||inserer_attribut{alt,#TITRE})]
et ausi pourquoi pas
[(#LOGO_ARTICLE||inserer_attribut{alt,#TITRE}|inserer_attribut{title,#TITRE})]

le filtre inserer_attribut, par defaut, applique |texte_backend (on peut desactiver en mettant false en argument :
[(#LOGO_ARTICLE||inserer_attribut{rien,#TITRE,false}
---
 ecrire/inc_filtres.php3 | 36 ++++++++++++++++++++++++++++--------
 inc-balises.php3        |  1 -
 inc-calcul-outils.php3  |  8 ++++----
 3 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3
index 21c81ce4e0..7117e9d3db 100644
--- a/ecrire/inc_filtres.php3
+++ b/ecrire/inc_filtres.php3
@@ -937,18 +937,38 @@ function alterner($i) {
 	return $args[(intval($i)-1)%($num-1)+1];
 }
 
+// recuperer un attribut html d'une balise
+// ($complet demande de retourner $r)
+function extraire_attribut($balise, $attribut, $complet = false) {
+	if (preg_match(",(.*<[^>]*)([[:space:]]+$attribut=[[:space:]]*(['\"])?(.*?)\\3)([[:space:]/>].*>.*),ims", $balise, $r)) {
+		$att = $r[4];
+	}
+	else
+		$att = NULL;
 
-function extraire_attribut($balise, $attribut) {
-# la mise en facteur ne marche pas....
-#  if (preg_match("/<[^>]*\s+$attribut=(['\"])([^\\1]*)\\1/i", $balise, $r))
-	if (preg_match("/<[^>]*\s+$attribut='([^']*)'/i", $balise, $r))
-		return $r[1];
-	else if (preg_match("/<[^>]*\s+$attribut=\"([^\"]*)\"/i", $balise, $r))
-		return $r[1];
+	if ($complet)
+		return array($att, $r);
 	else
-		return '';
+		return $att;
+}
+
+// modifier (ou inserer) un attribut html dans une balise
+function inserer_attribut($balise, $attribut, $val, $texte_backend=true) {
+	// preparer l'attribut
+	if ($texte_backend) $val = texte_backend($val); # supprimer les &nbsp; etc
+	$insert = " $attribut=\"".entites_html(texte_backend($val))."\" ";
+
+	list($old,$r) = extraire_attribut($balise, $attribut, true);
+	if ($old !== NULL) {
+		$balise = $r[1].$insert.$r[5];
+	}
+	else
+		$balise = preg_replace(",([[:space:]]/)?".">,", $insert."/>", $balise);
+
+	return $balise;
 }
 
+
 // fabrique un bouton de type $t de Name $n, de Value $v et autres attributs $a
 # a placer ailleurs que dans inc_filtres
 function boutonne($t, $n, $v, $a='') {
diff --git a/inc-balises.php3 b/inc-balises.php3
index e5279f9626..2ee04b3194 100644
--- a/inc-balises.php3
+++ b/inc-balises.php3
@@ -598,7 +598,6 @@ function calculer_balise_logo ($p) {
 			$code_lien = "''";
 		$code_lien .= ", '". addslashes($align) . "'";
 	}
-	$code_lien .= ",'logo $type_objet ' . $_id_objet";
 
 	// cas des documents
 	if ($type_objet == 'DOCUMENT') {
diff --git a/inc-calcul-outils.php3 b/inc-calcul-outils.php3
index aec82ec9e3..5f04574d82 100644
--- a/inc-calcul-outils.php3
+++ b/inc-calcul-outils.php3
@@ -37,7 +37,7 @@ function calcule_fichier_logo($on) {
 
 // Renvoie le code html pour afficher un logo, avec ou sans survol, lien, etc.
 
-function affiche_logos($logos, $lien, $align, $alt='logo') {
+function affiche_logos($logos, $lien, $align) {
 
 	list ($arton, $artoff) = $logos;
 
@@ -51,7 +51,7 @@ function affiche_logos($logos, $lien, $align, $alt='logo') {
 		$mouseover = " onmouseover=\"this.src='$artoff'\" "
 			."onmouseout=\"this.src='$arton'\"";
 
-	$milieu = "<img src=\"$arton\" alt=\"".entites_html(strtolower($alt)).'"'
+	$milieu = "<img src=\"$arton\" alt=\"\""
 		. ($align ? " align='$align'" : '') 
 		. $taille
 		. $mouseover
@@ -253,7 +253,7 @@ function calcul_branche ($generation) {
 }
 
 // fonction appelee par la balise #LOGO_DOCUMENT
-function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier, $params, $lien, $align, $alt) {
+function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier, $params, $lien, $align) {
 	if (!$id_document) return '';
 	if ($doubdoc) $doublons["documents"] .= ','.$id_document;
 
@@ -311,7 +311,7 @@ function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier
 
 	// sinon calculer le code html de l'image, sauf si reduire_image le donne
 	if (!$lien_logo)
-		$lien_logo = affiche_logos(array($logo), $lien, $align, $alt);
+		$lien_logo = affiche_logos(array($logo), $lien, $align);
 
 	return $lien_logo;
 }
-- 
GitLab