Skip to content
Extraits de code Groupes Projets
Valider 8c6448a5 rédigé par esj's avatar esj
Parcourir les fichiers

La fonction {{{inc_lien_dist}}} était toujours appelée après un appel à la...

La fonction {{{inc_lien_dist}}} était toujours appelée après un appel à la fonction {{{calculer_url}}}, on fait migrer l'appel de celle-ci dans celle-là, afin que la surcharge de {{{inc_lien_dist}}} entraîne de fait celle de l'autre. Le gros avantage de ce changement est qu'on dispose des éventuels attributs de la future balise A au moment de calculer l'URL, notamment le {{{hreflang}}} qui peut influer sur ce calcul. Cet architecture fonctionne bien pour les raccourcis internes (soit {{{[{it}->artNNN]}}} etc) mais pas encore pour les raccourcis externes comme les glossaires {{{[?X{es}]}}}. A améliorer à terme.

Test (version étendue de celui de [10301]):

{{{
Doc 2239 centré
<doc2239|center>

Je mets 2 fois un raccourci de glossaire
[?SPIP]  [?SPIP|mon title{fr}] dont un avec href et title
puis un [raccourci|avec son title->art1]
et un autre, automatique, [{en}->art3784].

Suivre la note
[[elle est terminée par un  [raccourci->art1]]].

Un moment de poésie.
<poesie>
un 
   haiku
sur
2 lignes
</poesie>

Elle préfère parler d'un {accroissement de la dispersion salariale} [[
 [{Perspectives économiques}->http://www.oecd.org/document/4/0,3343,fr_2649_201185_20347588_1_1_1_1,00.html]
- Vol. 2007-1, nÁ~81, mai 2007, p. ~184. ]]

Elle aussi préf§re parler d'un {accroissement de la dispersion salariale}
mais sur une seule ligne  [[  [{Perspectives économiques}->http://www.oecd.org/document/4/0,3343,fr_2649_201185_20347588_1_1_1_1,00.html]
- Vol. 2007-1, nÁ~81, mai 2007, p. ~184. ]].

Une Juliette [[<*> sans numéro.]].

Et un lien explicite:
http://www.spip.net/spipnet/ecrire/?exec=articles_edit&id_article=3628
}}}
parent 79d52cc1
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -21,8 +21,14 @@ include_spip('base/abstract_sql');
//
// http://doc.spip.org/@traiter_raccourci_lien_lang
function inc_lien_dist($lien, $texte, $class='', $title='', $hlang='', $lang='', $connect='')
function inc_lien_dist($lien, $texte='', $class='', $title='', $hlang='', $rel='', $connect='')
{
$r = calculer_url($lien, $texte, 'tout', $connect);
$texte = $r['titre'];
if (!$class AND isset($r['class'])) $class = $r['class'];
$lang = isset($r['lang']) ?$r['lang'] : '';
$lien = $r['url'];
if (substr($lien,0,1) == '#') # ancres pures (internes a la page)
$class = 'spip_ancre';
elseif (preg_match('/^\s*mailto:/',$lien)) # pseudo URL de mail
......@@ -37,13 +43,14 @@ function inc_lien_dist($lien, $texte, $class='', $title='', $hlang='', $lang='',
$lang = ($hlang ? " hreflang='$hlang'" : '');
if ($title) $title = ' title="'.texte_backend($title).'"';
if ($rel) $rel = " rel='$rel'";
$lien = "<a href='$lien' class='$class'$lang$title$rel>$texte</a>";
# ceci s'execute heureusement avant les tableaux et leur "|".
# Attention, le texte initial est deja echappe mais pas forcement
# celui retourne par calculer_url.
# Penser au cas [<imgXX|right>->URL], qui exige typo('<a>...</a>')
return typo("<a href='$lien' class='$class'$lang$title>$texte</a>", true, $connect);
return typo($lien, true, $connect);
}
// Regexp des raccouris, aussi utilisee pour la fusion de sauvegarde Spip
......@@ -60,11 +67,14 @@ function expanser_liens($texte, $connect='')
if (preg_match_all(_RACCOURCI_LIEN, $texte, $regs, PREG_SET_ORDER)) {
$lien = charger_fonction('lien', 'inc');
foreach ($regs as $k => $reg) {
list($titre, $bulle, $hlang) = traiter_raccourci_lien_atts($reg[1]);
$inserts[$k] = '@@SPIP_ECHAPPE_LIEN_' . $k . '@@';
$texte = str_replace($reg[0], $inserts[$k], $texte);
$r = calculer_url($reg[count($reg)-1], $titre, 'tout', $connect);
$regs[$k] = $lien($r['url'], $r['titre'], @$r['class'], $bulle, $hlang, isset($r['lang'])?$r['lang']:'');
list($titre, $bulle, $hlang) = traiter_raccourci_lien_atts($reg[1]);
$r = $reg[count($reg)-1];
$regs[$k] = $lien($r, $titre, '', $bulle, $hlang, '', $connect);
}
}
......@@ -111,7 +121,7 @@ function nettoyer_raccourcis_typo($texte, $connect='')
// Repere dans la partie texte d'un raccourci [texte->...]
// la langue et la bulle eventuelles
define('_RACCOURCI_ATTRIBUTS', '/^(.*?)([|]([^<>]*?))?([{]([a-z_]+)[}])?$/');
define('_RACCOURCI_ATTRIBUTS', '/^(.*?)([|]([^<>]*?))?([{]([a-z_]*)[}])?$/');
// http://doc.spip.org/@traiter_raccourci_lien_atts
function traiter_raccourci_lien_atts($texte) {
......@@ -168,10 +178,9 @@ function traiter_autoliens($r) {
if (!preg_match(_EXTRAIRE_DOMAINE, $l)) return $tout;
// supprimer les ponctuations a la fin d'une URL
preg_match('/^(.*?)([,.;?]?)$/', $l, $k);
$r = traiter_lien_explicite($protocol.'://'.$k[1], '', 'tout');
$url = $protocol.'://'.$k[1];
$lien = charger_fonction('lien', 'inc');
$r = $lien($r['url'], $r['titre']);
$r = inserer_attribut($r, 'rel', 'nofollow') . $k[2];
$r = $lien($url,'','','','','nofollow') . $k[2];
// si l'orignal ne contenait pas le 'http:' on le supprime du clic
return $m ? $r : str_replace('>http://', '>', $r);
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter