Valider 95c18609 rédigé par esj's avatar esj
Parcourir les fichiers

Transfert d'un appel de calculer_url dans l'appelante de l'appelante ce quui...

Transfert d'un appel de calculer_url dans l'appelante de l'appelante ce quui permet de simplifier le code.
parent c1f091c1
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+26 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -213,6 +213,12 @@ function chapo_redirigetil($chapo) { return $chapo && $chapo[0] == '=';}

// http://doc.spip.org/@calculer_url
function calculer_url ($ref, $texte='', $pour='url', $connect='') {
	$r = traiter_lien_implicite($ref, $texte, $pour, $connect);
	return $r ? $r : traiter_lien_explicite($ref, $texte, $pour, $connect);
}

function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='')
{
	if ($match = typer_raccourci($ref)) {
		@list($type,,$id,,$args,,$ancre) = $match;
# attention dans le cas des sites le lien doit pointer non pas sur
@@ -225,6 +231,11 @@ function calculer_url ($ref, $texte='', $pour='url', $connect='') {
			? $url
			: calculer_url_lien($type, $id, $url, $texte, $pour, $connect);
	}
	return false;
}

function traiter_lien_explicite ($ref, $texte='', $pour='url', $connect='')
{
	if (preg_match(",^\s*(http:?/?/?|mailto:?)\s*$,iS", $ref))
		return ($pour != 'tout') ? '' : array('','','','');

@@ -351,7 +362,21 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='') {
				$texte .= preg_replace(',[|][^|=]*,s',' ',$params);
			# version normale
			else {
				$modele = inclure_modele($type, $id, $params, $lien, $connect);
				$modele = inclure_modele($type, $id, $params, $lien);
				// en cas d'echec, 
				// si l'objet demande a une url, 
				// creer un petit encadre vers elle
				if ($modele === false) {
					if (!$lien)
						$lien = traiter_lien_implicite("$type$id", '', 'tout', $connect);
					if ($lien)
						$modele = '<a href="'
						  .$lien[0]
						  .'" class="spip_modele'
						  . '">'
						  .sinon($lien[2], _T('ecrire:info_sans_titre'))
						  ."</a>";
				}

				// le remplacer dans le texte
				if ($modele !== false) {
+3 −17
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -435,23 +435,9 @@ function inclure_modele($type, $id, $params, $lien, $connect='') {
			$params = array_diff($params,array($soustype));
		}
	}

	// en cas d'echec : si l'objet demande a une url, on cree un petit encadre
	// avec un lien vers l'objet ; sinon on passe la main au suivant
	if (!$fond) {
		$fond = $type;
		if (!find_in_path('modeles/'.$fond.'.html')) {
			if (!$lien)
				$lien = calculer_url("$type$id", '', 'tout', $connect);
			if (strpos($lien[1],'spip_url') !== false)
	// Si ca marche pas en precisant le sous-type, prendre le type
	if (!$fond AND !find_in_path('modeles/'. ($fond = $type).'.html'))
		return false;
			else
				return '<a href="'.$lien[0].'" class="spip_modele'
				. ($class ? " $class" : '')
				. '">'.sinon($lien[2], _T('ecrire:info_sans_titre'))."</a>";
		}
	}


	// Creer le contexte
	$contexte = array(