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 = ' (...)') { // 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