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

Le raccourci des glossaires passe à présent lui aussi par la fonction...

Le raccourci des glossaires passe à présent lui aussi par la fonction surchargeable {{{inc_lien}}} afin d'ajuster au besoin le calcul de l'URL en fonction du hreflang et autres besoins. Pour ceux qui veulent le faire, il faut savoir qu'en fait on transforme fugitivement {{{[?X]}}} en le pseudo raccourci interne {{{[X->glose0]}}} pour permettre ce traitement unifié par {{{calculer_url}}}. Même chose pour les glossaires non standard avec numéro de section: {{{[?X#man3]}}} devient {{{[X->glose3#man]}}}. Pas intuitif, mais assure la compatibilité.
parent 8fd05463
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -22,13 +22,15 @@ include_spip('base/abstract_sql'); ...@@ -22,13 +22,15 @@ include_spip('base/abstract_sql');
// http://doc.spip.org/@traiter_raccourci_lien_lang // http://doc.spip.org/@traiter_raccourci_lien_lang
function inc_lien_dist($lien, $texte='', $class='', $title='', $hlang='', $rel='', $connect='') function inc_lien_dist($lien, $texte='', $class='', $title='', $hlang='', $rel='', $connect='')
{ {
$r = calculer_url($lien, $texte, 'tout', $connect); $mode = ($texte AND $class) ? 'url' : 'tout';
$texte = $r['titre']; $lien = calculer_url($lien, $texte, $mode, $connect);
if (!$class AND isset($r['class'])) $class = $r['class']; if ($mode === 'tout') {
$lang = isset($r['lang']) ?$r['lang'] : ''; $texte = $lien['titre'];
$lien = $r['url']; if (!$class AND isset($lien['class'])) $class = $lien['class'];
$lang = isset($lien['lang']) ?$lien['lang'] : '';
$lien = $lien['url'];
}
if (substr($lien,0,1) == '#') # ancres pures (internes a la page) if (substr($lien,0,1) == '#') # ancres pures (internes a la page)
$class = 'spip_ancre'; $class = 'spip_ancre';
elseif (preg_match('/^\s*mailto:/',$lien)) # pseudo URL de mail elseif (preg_match('/^\s*mailto:/',$lien)) # pseudo URL de mail
...@@ -74,7 +76,6 @@ function expanser_liens($texte, $connect='') ...@@ -74,7 +76,6 @@ function expanser_liens($texte, $connect='')
list($titre, $bulle, $hlang) = traiter_raccourci_lien_atts($reg[1]); list($titre, $bulle, $hlang) = traiter_raccourci_lien_atts($reg[1]);
$r = $reg[count($reg)-1]; $r = $reg[count($reg)-1];
$regs[$k] = $lien($r, $titre, '', $bulle, $hlang, '', $connect); $regs[$k] = $lien($r, $titre, '', $bulle, $hlang, '', $connect);
} }
} }
...@@ -278,7 +279,11 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='') ...@@ -278,7 +279,11 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='')
# la page locale du site, mais directement sur le site lui-meme # la page locale du site, mais directement sur le site lui-meme
if ($type == 'site') if ($type == 'site')
$url = sql_getfetsel('url_site', 'spip_syndic', "id_syndic=$id",'','','','',$connect); $url = sql_getfetsel('url_site', 'spip_syndic', "id_syndic=$id",'','','','',$connect);
else $url = generer_url_entite($id,$type,$args,$ancre,$connect ? $connect : NULL); elseif ($type == 'glose') {
if (function_exists($f = 'glossaire_' . $ancre))
$url = $f($texte, $id);
else $url = glossaire_std($texte);
} else $url = generer_url_entite($id,$type,$args,$ancre,$connect ? $connect : NULL);
if (!$url) return false; if (!$url) return false;
if (is_array($url)) { if (is_array($url)) {
@list($type,$id) = $url; @list($type,$id) = $url;
...@@ -460,22 +465,18 @@ function traiter_raccourci_glossaire($texte) ...@@ -460,22 +465,18 @@ function traiter_raccourci_glossaire($texte)
$lien = charger_fonction('lien', 'inc'); $lien = charger_fonction('lien', 'inc');
foreach ($matches as $regs) { foreach ($matches as $regs) {
// Eviter les cas particulier genre "[?!?]" // Eviter les cas particulier genre "[?!?]"
// et isoler le lexeme a gloser de ses accessoires // et isoler le lexeme a gloser de ses accessoires
// (#:url du glossaire, | bulle d'aide, {} lang) // (#:url du glossaire, | bulle d'aide, {} hreflang)
// Transformation en pseudo-raccourci pour passer dans inc_lien
if (preg_match(_RACCOURCI_GLOSES, $regs[1], $r)) { if (preg_match(_RACCOURCI_GLOSES, $regs[1], $r)) {
list($terme, $bulle, $hlang) = traiter_raccourci_lien_atts($r[1] . $r[2] . $r[5]);
$terme = unicode2charset(charset2unicode($terme), 'utf-8');
preg_match('/^(.*?)(\d*)$/', $r[4], $m); preg_match('/^(.*?)(\d*)$/', $r[4], $m);
if ($m AND function_exists($f = 'glossaire_' . $m[1])){ $_n = intval($m[2]);
$glose = $f($terme, $m[2]); $gloss = $m[1] ? ('#' . $m[1]) : '';
if (!$bulle) $bulle = $m[1]; $t = $r[1] . $r[2] . $r[5];
} else $glose = glossaire_std($terme); list($t, $bulle, $hlang) = traiter_raccourci_lien_atts($t);
$ref = $lien($glose, $terme, 'spip_glossaire', $bulle, $hlang); $t = unicode2charset(charset2unicode($t), 'utf-8');
$ref = $lien("glose$_n$gloss", $t, 'spip_glossaire', $bulle, $hlang);
$texte = str_replace($regs[0], $ref, $texte); $texte = str_replace($regs[0], $ref, $texte);
} }
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter