diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index 279d3f37f7239ee11e60e22ba59af35e53e64b7e..b86db08649d902ffd4ade3f690f445c50560e7e6 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -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 - $f = "$dir$filename"; - + 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'"); + } diff --git a/inc-balises.php3 b/inc-balises.php3 index d2eb17fff7adce3d7482dfb9b537a251fa640be7..87f09bea16c388251b9b18e6ce98aa80535168c0 100644 --- a/inc-balises.php3 +++ b/inc-balises.php3 @@ -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)"; diff --git a/inc-compilo-api.php3 b/inc-compilo-api.php3 index 0d9a8076948dbdc8d59a084b914af2166d26df08..8b1564fd1016dea8a4e676f6955439adab29e777 100644 --- a/inc-compilo-api.php3 +++ b/inc-compilo-api.php3 @@ -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(); } diff --git a/inc-compilo-index.php3 b/inc-compilo-index.php3 index a1e1cfe1127b13d603f41fca2cb9e44c8a05a5d5..f7b61f3656c541aa4491b839e9c7698a748ffb12 100644 --- a/inc-compilo-index.php3 +++ b/inc-compilo-index.php3 @@ -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]; diff --git a/inc-compilo.php3 b/inc-compilo.php3 index 6df989071898b1620d7817d19678044c235848fb..9b72204955a1b59875480880d9f9e60b866a9da0 100644 --- a/inc-compilo.php3 +++ b/inc-compilo.php3 @@ -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!