From 4501b4cbec31b0494b7237ad6b192071646090ad Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 13 Sep 2007 13:57:08 +0000
Subject: [PATCH] =?UTF-8?q?Couper=20en=202=20traiter=5Fraccouci=5Flien=20p?=
 =?UTF-8?q?our=20=C3=A9viter=20de=20calculer=20Href=20etc=20lorsque=20nett?=
 =?UTF-8?q?oyer=5Fraccourci=20l'appellait=20(justement=20il=20veut=20les?=
 =?UTF-8?q?=20supprimer).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc/texte.php | 40 ++++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index fd9818053f..62387a033e 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -294,12 +294,14 @@ function nettoyer_raccourcis_typo($texte){
 	// remplacer les liens
 	if (preg_match_all(',[[]([^][]*)->(>?)([^][]*)[]],S', $texte, $regs, PREG_SET_ORDER))
 		foreach ($regs as $reg) {
-			$titre = supprimer_tags(traiter_raccourci_lien($reg));
+			list ($titre,,)= traiter_raccourci_lien_atts($reg[1]);
+			$titre = calculer_url($reg[3], $titre, 'titre');
+			$titre = typo(supprimer_tags($titre));
 			$texte = str_replace($reg[0], $titre, $texte);
 		}
 
 	// supprimer les notes
-	$texte = preg_replace(",[[][[]([^]]|[]][^]])*[]][]],UimsS", "", $texte);
+	$texte = preg_replace(",[[][[]([^]]|[]][^]])*[]][]],UimsS","",$texte);
 
 	// supprimer les codes typos
 	$texte = str_replace(array('}','{'), '', $texte);
@@ -339,7 +341,6 @@ function couper($texte, $taille=50, $suite = '&nbsp;(...)') {
 
 	// travailler en accents charset
 	$texte = unicode2charset(html2unicode($texte, /* secure */ true));
-
 	$texte = nettoyer_raccourcis_typo($texte);
 
 	// corriger la longueur de coupe 
@@ -1193,10 +1194,30 @@ function traiter_raccourcis_propre($letexte)
 //
 // http://doc.spip.org/@traiter_raccourci_lien
 function traiter_raccourci_lien($regs) {
-	$bulle = $hlang = '';
+
 	list(,$texte, ,$url) = $regs;
+	list($texte, $bulle, $hlang) = traiter_raccourci_lien_atts($texte);
+	list ($lien, $class, $texte, $lang) = 
+		calculer_url($url, $texte, 'tout');
+
+	// Si l'objet n'est pas de la langue courante, on ajoute hreflang
+	if (!$hlang AND $lang!=$GLOBALS['spip_lang'])
+		$hlang = $lang;
+	$lang = ($hlang ? ' hreflang="'.$hlang.'"' : '') . $bulle;
+
+	# ici bien passer le lien pour traiter [<doc3>->url]
+	return typo("<a href=\"$lien\" class=\"$class\"$lang>$texte</a>");
+}
+
+// Repere dans la partie texte d'un raccourci [texte->...]
+// la langue et la bulle eventuelles
+
+function traiter_raccourci_lien_atts($texte) {
+
+	$bulle = $hlang = '';
 	// title et hreflang donnes par le raccourci ?
 	if (preg_match(',^(.*?)([|]([^<>]*?))?([{]([a-z_]+)[}])?$,', $texte, $m)) {
+
 		$n =count($m);
 		// |infobulle ?
 		if ($n > 2) {
@@ -1224,17 +1245,8 @@ function traiter_raccourci_lien($regs) {
 		}
 		$texte = $m[1];
 	}
+	return array($texte, $bulle, $hlang);
 
-	list ($lien, $class, $texte, $lang) = calculer_url($url, $texte, 'tout');
-
-	// Si l'objet n'est pas de la langue courante, on ajoute hreflang
-	if (!$hlang AND $lang AND ($lang!=$GLOBALS['spip_lang'])) $hlang=$lang;
-	$hreflang = $hlang ? ' hreflang="'.$hlang.'"' : '';
-
-	# ici bien passer le lien pour traiter [<doc3>->url]
-	return typo("<a href=\"$lien\" class=\"$class\"$hreflang$bulle>"
-		. $texte
-		. "</a>");
 }
 
 // Fonction pour les champs chapo commencant par =,  redirection qui peut etre:
-- 
GitLab