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

introduction de #DOSSIER_SQUELETTE avec ménage

parent 8e77a6a6
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+5 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1086,16 +1086,15 @@ function find_in_path ($filename, $path='AUTO') {

	// Parcourir le chemin
	foreach (split(':', $path) as $dir) {
		if (substr($dir, 0,1)<>'/')
			$f = "$racine$dir$filename";
		else
		if (substr($dir, 0,1)<>'/') $dir = "$racine$dir";
		if (substr($dir, -1,1)<>'/') $dir .= "/";
		$f = "$dir$filename";

#		spip_log("find_in_path: essai $f");
		if (@is_readable($f)) {
			return $f;
		}
	}
#	spip_log("find_in_path: pas de fichier '$filename' sur le chemin '$path'");

}


+12 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -63,7 +63,7 @@ function champs_traitements ($p) {
	);
	$ps = $traitements[$p->nom_champ];
	if (!$ps) return $p->code;
	if ($p->documents) {
	if ($p->descr['documents']) {
		$ps = str_replace('traiter_raccourcis(', 
			'traiter_raccourcis_doublon($doublons,',
			str_replace('typo(', 'typo_doublon($doublons,', $ps));
@@ -180,6 +180,12 @@ function balise_DATE_NOUVEAUTES_dist($p) {
	return $p;
}

function balise_DOSSIER_SQUELETTE_dist($p) {
	$p->code = "'" . addslashes(dirname($p->descr['sourcefile'])) . "'" ;
	$p->statut = 'php';
	return $p;
}

function balise_URL_SITE_SPIP_dist($p) {
	$p->code = "lire_meta('adresse_site')";
	$p->statut = 'php';
@@ -287,7 +293,7 @@ function balise_RECHERCHE_dist($p) {
}

function balise_COMPTEUR_BOUCLE_dist($p) {
	$b = $p->nom_boucle ? $p->nom_boucle : $p->id_mere;
	$b = $p->nom_boucle ? $p->nom_boucle : $p->descr['id_mere'];
	if ($b === '') {
		erreur_squelette(
			_T('zbug_champ_hors_boucle',
@@ -302,7 +308,7 @@ function balise_COMPTEUR_BOUCLE_dist($p) {
}

function balise_TOTAL_BOUCLE_dist($p) {
	$b = $p->nom_boucle ? $p->nom_boucle : $p->id_mere;
	$b = $p->nom_boucle ? $p->nom_boucle : $p->descr['id_mere'];
	if ($b === '') {
		erreur_squelette(
			_T('zbug_champ_hors_boucle',
@@ -385,7 +391,7 @@ function balise_EMBED_DOCUMENT_dist($p) {
	$_id_document = champ_sql('id_document',$p);
	$p->code = "calcule_embed_document(intval($_id_document), '" .
	texte_script($p->fonctions ? join($p->fonctions, "|") : "") .
	  "', \$doublons, '" . $p->documents . "')";
	  "', \$doublons, '" . $p->descr['documents'] . "')";
	unset ($p->fonctions);
	$p->statut = 'html';
	return $p;
@@ -577,7 +583,7 @@ function calculer_balise_logo ($p) {
			$c->nom_champ = $match[2];
			$c->id_boucle = $p->id_boucle;
			$c->boucles = &$p->boucles;
			$c->id_mere = $p->id_mere;
			$c->descr = $p->descr;
			$c = calculer_champ($c);
			$code_lien = str_replace('#'.$match[2], "'.".$c.".'", $code_lien);
		}
@@ -596,7 +602,7 @@ function calculer_balise_logo ($p) {
	// cas des documents
	if ($type_objet == 'DOCUMENT') {
		$code_logo = "calcule_document($_id_objet, '" .
			$p->documents .
			$p->descr['documents'] .
		  '\', $doublons)';
		if ($flag_fichier)
		  $p->code = "calcule_fichier_logo($code_logo)";
+4 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -83,8 +83,10 @@ class Champ {
	var $statut;	// 'numerique, 'h'=texte (html) ou 'p'=script (php) ?
			// -> definira les pre et post-traitements obligatoires
	// champs pour la production de code dependant du contexte
	var $id_mere;    // pour TOTAL_BOUCLE hors du corps
	var $document;   // pour embed et img dans les textes
	// $id_mere;  pour TOTAL_BOUCLE hors du corps
	// $document; pour embed et img dans les textes
	// sourcefile; pour DOSSIER_SQUELETTE
	var $descr = array();
}


+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -301,7 +301,7 @@ function filtres_arglist($args, $p, $sep) {
			if ($arg[0] =='$')
				$arg = '$Pile[0][\'' . substr($arg,1) . "']";
			elseif ($arg[0] =='<')
			  $arg = calculer_texte($arg, $p->id_boucle, $p->boucles, $p->id_mere);
			  $arg = calculer_texte($arg, $p->id_boucle, $p->boucles);
			elseif (ereg("^" . NOM_DE_CHAMP ."(.*)$", $arg, $r2)) {
				$p->nom_boucle = $r2[2];
				$p->nom_champ = $r2[3];
+4 −5
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -96,7 +96,7 @@ function calculer_inclure($fichier, $params, $id_boucle, &$boucles) {
// partie droite d'une affectation). Ici sont analyses les elements
// multilingues des squelettes : <:xxx:> et <multi>[fr]coucou</multi>
//
function calculer_texte($texte, $id_boucle, &$boucles, $id_mere) {
function calculer_texte($texte, $id_boucle, &$boucles) {
	//
	// Les elements multilingues
	//
@@ -435,7 +435,7 @@ function calculer_liste($tableau, $descr, &$boucles, $id_boucle='', $niv=1) {
		switch($p->type) {
		// texte seul
		case 'texte':
			$code = calculer_texte($p->texte, $id_boucle, $boucles, $descr['id_mere']);
			$code = calculer_texte($p->texte, $id_boucle, $boucles);
			$commentaire='';
			$avant='';
			$apres='';
@@ -477,8 +477,7 @@ function calculer_liste($tableau, $descr, &$boucles, $id_boucle='', $niv=1) {
			// cette structure pourrait etre completee des le phrase' (a faire)
			$p->id_boucle = $id_boucle;
			$p->boucles = &$boucles;
			$p->id_mere = $descr['id_mere'];
			$p->documents = $descr['documents'];
			$p->descr = $descr;
			$p->statut = 'html';
			$p->type_requete = $boucles[$id_boucle]->type_requete;

@@ -538,7 +537,7 @@ function calculer_squelette($squelette, $nom, $gram, $sourcefile) {
	$racine = parser($squelette, '',$boucles, $nom);

	// tableau des informations sur le squelette
	$descr = array('nom' => $nom, 'documents' => false);
	$descr = array('nom' => $nom, 'documents' => false, 'sourcefile' => $sourcefile);

	if ($boucles) {
	  // une boucle documents est conditionnee par tout le reste!