From a0909df0636532116144aa16880605306999c787 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Thu, 17 Aug 2006 14:02:16 +0000 Subject: [PATCH] Modification importante des INCLURE : le parametre {lang} est desormais systematiquement passe (on peut avoir l'ancien comportement en indiquant {lang=#CONFIG{langue_site}} ); Ce nouveau fonctionnement permet de faire des modeles beaucoup plus legers, et j'ai corrige au passage le bug #470 -- j'en ai surement ajoute d'autres --- dist/article.html | 8 +++--- dist/auteur.html | 8 +++--- dist/breve.html | 8 +++--- dist/forum.html | 8 +++--- dist/mot.html | 8 +++--- dist/plan.html | 8 +++--- dist/recherche.html | 8 +++--- dist/rubrique.html | 8 +++--- dist/site.html | 8 +++--- dist/sommaire.html | 8 +++--- ecrire/inc/lang.php | 24 +++-------------- ecrire/inc/texte.php | 25 +++++++++++------ ecrire/inc/utils.php | 20 ++++++++++++++ ecrire/inc_version.php | 4 +-- ecrire/public/assembler.php | 52 +++++++++++++++++------------------- ecrire/public/compiler.php | 19 ++++++++++--- ecrire/public/references.php | 2 +- 17 files changed, 124 insertions(+), 102 deletions(-) diff --git a/dist/article.html b/dist/article.html index 6220cc08f3..0a9a904c69 100644 --- a/dist/article.html +++ b/dist/article.html @@ -4,14 +4,14 @@ <head> <title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title> [<meta name="description" content="(#INTRODUCTION|couper{150}|textebrut)" />] - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> </head> <body class="page_article"> <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a><BOUCLE_ariane(HIERARCHIE){id_article}> > <a href="#URL_RUBRIQUE">[(#TITRE|couper{80})]</a></BOUCLE_ariane>[ > (#TITRE|couper{80})]</div> @@ -101,7 +101,7 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}{id_rubrique}> + <INCLURE{fond=inc-rubriques}{id_rubrique}> [(#REM) Articles dans la meme rubrique ] <B_articles_rubrique> @@ -131,7 +131,7 @@ </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> </body> diff --git a/dist/auteur.html b/dist/auteur.html index 936bb27660..43fa4f768e 100644 --- a/dist/auteur.html +++ b/dist/auteur.html @@ -5,7 +5,7 @@ <head> <title>[(#NOM|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title> [<meta name="description" content="(#BIO|couper{150}|textebrut)" />] - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> </head> @@ -13,7 +13,7 @@ <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a> > <:info_auteurs:>[ > (#NOM|couper{80})]</div> @@ -68,7 +68,7 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}> + <INCLURE{fond=inc-rubriques}> [(#REM) Autres auteurs ] <B_auteurs> @@ -89,7 +89,7 @@ </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> </body> diff --git a/dist/breve.html b/dist/breve.html index 847d97e754..d02f475a60 100644 --- a/dist/breve.html +++ b/dist/breve.html @@ -5,7 +5,7 @@ <head> <title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title> [<meta name="description" content="(#INTRODUCTION|couper{150}|textebrut)" />] - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> [(#REM) Lien vers le flux RSS des breves ] <link rel="alternate" type="application/rss+xml" title="<:dernieres_breves:>" href="#URL_PAGE{backend-breves}" /> @@ -16,7 +16,7 @@ <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/" ><:accueil_site:></a><BOUCLE_ariane(RUBRIQUES){id_rubrique}> > <a href="#URL_RUBRIQUE">[(#TITRE|couper{80})]</a></BOUCLE_ariane>[ > (#TITRE|couper{80})]</div> @@ -50,7 +50,7 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}{id_rubrique}> + <INCLURE{fond=inc-rubriques}{id_rubrique}> [(#REM) Breves dans la meme rubrique ] <B_breves> @@ -81,7 +81,7 @@ </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> </body> diff --git a/dist/forum.html b/dist/forum.html index 1c31ccb1c1..996a39048d 100644 --- a/dist/forum.html +++ b/dist/forum.html @@ -4,7 +4,7 @@ <html dir="#LANG_DIR" lang="#LANG"> <head> <title><:poster_message:> - [(#NOM_SITE_SPIP|textebrut)]</title> - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> <meta name="robots" content="none" /> </head> @@ -13,7 +13,7 @@ <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a> @@ -121,14 +121,14 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}> + <INCLURE{fond=inc-rubriques}> </div><!-- fin navigation --> </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> </body> diff --git a/dist/mot.html b/dist/mot.html index b456088a6a..310c6fa87b 100644 --- a/dist/mot.html +++ b/dist/mot.html @@ -5,7 +5,7 @@ <head> <title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title> [<meta name="description" content="(#DESCRIPTIF|couper{150}|textebrut)" />] - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> [(#REM) Lien vers le flux RSS du mot cle ] <link rel="alternate" type="application/rss+xml" title="[(#TITRE|textebrut|texte_backend)]" href="[(#URL_PAGE{backend}|parametre_url{id_mot,#ID_MOT})]" /> @@ -15,7 +15,7 @@ <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a> > <:mots_clefs:><BOUCLE_ariane(GROUPES_MOTS){id_groupe}> > [(#TITRE|couper{80})]</BOUCLE_ariane>[ > (#TITRE|couper{80})]</div> @@ -116,7 +116,7 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}> + <INCLURE{fond=inc-rubriques}> [(#REM) Menu de navigation mots-cles : les autres mots cles du meme groupe ] <B_mots_freres> @@ -151,7 +151,7 @@ </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> </body> diff --git a/dist/plan.html b/dist/plan.html index aad2fe52fa..60135b73f7 100644 --- a/dist/plan.html +++ b/dist/plan.html @@ -4,7 +4,7 @@ <head> <title><:plan_site:> - [(#NOM_SITE_SPIP|textebrut)]</title> [<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|couper{150}|textebrut)" />] - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> <meta name="robots" content="none" /> </head> @@ -13,7 +13,7 @@ <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a> > <:plan_site:></div> @@ -103,14 +103,14 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}> + <INCLURE{fond=inc-rubriques}> </div><!-- fin navigation --> </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> </body> diff --git a/dist/recherche.html b/dist/recherche.html index 5f3150fe42..ed601035eb 100644 --- a/dist/recherche.html +++ b/dist/recherche.html @@ -4,7 +4,7 @@ <html dir="#LANG_DIR" lang="#LANG"> <head> <title><:resultats_recherche:> - [(#NOM_SITE_SPIP|textebrut)]</title> - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> <meta name="robots" content="none" /> </head> @@ -12,7 +12,7 @@ <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a> > <:info_rechercher:>[ > (#RECHERCHE)]</div> @@ -131,14 +131,14 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}> + <INCLURE{fond=inc-rubriques}> </div><!-- fin navigation --> </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> </body> diff --git a/dist/rubrique.html b/dist/rubrique.html index 914a8492a2..c9f726a464 100644 --- a/dist/rubrique.html +++ b/dist/rubrique.html @@ -5,7 +5,7 @@ <head> <title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title> [<meta name="description" content="(#INTRODUCTION|couper{150}|textebrut)" />] - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> [(#REM) Lien vers le flux RSS de la rubrique ] <link rel="alternate" type="application/rss+xml" title="<:syndiquer_rubrique:>" href="[(#URL_PAGE{backend}|parametre_url{id_rubrique,#ID_RUBRIQUE})]" /> @@ -15,7 +15,7 @@ <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a><BOUCLE_ariane(HIERARCHIE){id_rubrique}> > <a href="#URL_RUBRIQUE">[(#TITRE|couper{80})]</a></BOUCLE_ariane>[ > (#TITRE|couper{80})]</div> @@ -153,7 +153,7 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}{id_rubrique}> + <INCLURE{fond=inc-rubriques}{id_rubrique}> [(#REM) Menu de navigation mots-cles ] <B_mots> @@ -172,7 +172,7 @@ </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> </body> diff --git a/dist/site.html b/dist/site.html index 39d193f2fb..fb8556eac1 100644 --- a/dist/site.html +++ b/dist/site.html @@ -6,7 +6,7 @@ <head> <title>[(#NOM_SITE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title> [<meta name="description" content="(#DESCRIPTIF|couper{150}|textebrut)" />] - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> <meta name="robots" content="none" /> </head> @@ -14,7 +14,7 @@ <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a><BOUCLE_ariane(HIERARCHIE){id_syndic}> > <a href="#URL_RUBRIQUE">[(#TITRE|couper{80})]</a></BOUCLE_ariane>[ > (#NOM_SITE|couper{80})]</div> @@ -62,7 +62,7 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}{id_rubrique}> + <INCLURE{fond=inc-rubriques}{id_rubrique}> [(#REM) Autres sites web ] <B_sites> @@ -95,7 +95,7 @@ </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> </body> diff --git a/dist/sommaire.html b/dist/sommaire.html index ded7ec1eef..3883bc56fc 100644 --- a/dist/sommaire.html +++ b/dist/sommaire.html @@ -4,14 +4,14 @@ <head> <title>[(#NOM_SITE_SPIP|textebrut)]</title> [<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|couper{150}|textebrut)" />] - <INCLURE{fond=inc-head}{lang}> + <INCLURE{fond=inc-head}> </head> <body class="page_sommaire"> <div id="page"> [(#REM) Entete de la page + titre du site ] - <INCLURE{fond=inc-entete}{lang}> + <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><:accueil_site:></div> @@ -116,7 +116,7 @@ <h1 class="invisible"><:navigation:></h1> [(#REM) Menu de navigation par rubriques ] - <INCLURE{fond=inc-rubriques}{lang}> + <INCLURE{fond=inc-rubriques}> [(#REM) Inscription au site ] #FORMULAIRE_INSCRIPTION @@ -126,7 +126,7 @@ </div><!-- fin conteneur --> [(#REM) Pied de page ] - <INCLURE{fond=inc-pied}{lang}> + <INCLURE{fond=inc-pied}> </div><!-- fin page --> #SPIP_CRON diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php index 8857416d7b..3d43b0f0b6 100644 --- a/ecrire/inc/lang.php +++ b/ecrire/inc/lang.php @@ -217,7 +217,7 @@ function lang_typo($lang) { // service pour que l'espace prive reflete la typo et la direction des objets affiches // http://doc.spip.org/@changer_typo function changer_typo($lang = '', $source = '') { - global $lang_typo, $lang_dir, $dir_lang; + global $lang_objet, $lang_dir, $dir_lang; if (ereg("^(article|rubrique|breve|auteur)([0-9]+)", $source, $regs)) { $r = spip_fetch_array(spip_query("SELECT lang FROM spip_".$regs[1]."s WHERE id_".$regs[1]."=".$regs[2])); @@ -227,27 +227,11 @@ function changer_typo($lang = '', $source = '') { if (!$lang) $lang = $GLOBALS['meta']['langue_site']; - $lang_typo = lang_typo($lang); + $lang_objet = $lang; $lang_dir = lang_dir($lang); $dir_lang = " dir='$lang_dir'"; } -// selectionner une langue -// http://doc.spip.org/@lang_select -function lang_select ($lang='') { - global $pile_langues, $spip_lang; - array_push($pile_langues, $spip_lang); - changer_langue($lang); -} - -// revenir a la langue precedente -// http://doc.spip.org/@lang_dselect -function lang_dselect ($rien='') { - global $pile_langues; - changer_langue(array_pop($pile_langues)); -} - - // // Afficher un menu de selection de langue // - 'var_lang_ecrire' = langue interface privee, @@ -459,11 +443,11 @@ function repertoire_lang($module='spip', $lang='fr') { // http://doc.spip.org/@init_langues function init_langues() { global $all_langs, $langue_site; - global $pile_langues, $lang_typo, $lang_dir; + global $pile_langues, $lang_objet, $lang_dir; $all_langs = $GLOBALS['meta']['langues_proposees']; $pile_langues = array(); - $lang_typo = ''; + $lang_objet = ''; $lang_dir = ''; $toutes_langs = Array(); diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php index 638cfcf61f..99a2b7b3a6 100644 --- a/ecrire/inc/texte.php +++ b/ecrire/inc/texte.php @@ -484,6 +484,9 @@ function typo_en($letexte) { // http://doc.spip.org/@typo function typo($letexte, $echapper=true) { + // Plus vite ! + if (!strlen($letexte)) return ''; + // Echapper les codes <html> etc if ($echapper) $letexte = echappe_html($letexte, 'TYPO'); @@ -515,17 +518,20 @@ function typo($letexte, $echapper=true) { $letexte = str_replace("'", "’", $letexte); // typo francaise ou anglaise ? - // $lang_typo est fixee dans l'interface privee pour editer + // $lang_objet est fixee dans l'interface privee pour editer // un texte anglais en interface francaise (ou l'inverse) ; // sinon determiner la typo en fonction de la langue - if (!$lang = $GLOBALS['lang_typo']) { - #include_spip('inc/lang'); - $lang = lang_typo($GLOBALS['spip_lang']); + if (!$lang = $GLOBALS['lang_objet']) + $lang = $GLOBALS['spip_lang']; + lang_select($lang); + switch (lang_typo($lang)) { + case 'fr': + $letexte = typo_fr($letexte); + break; + default: + $letexte = typo_en($letexte); + break; } - if ($lang == 'fr') - $letexte = typo_fr($letexte); - else - $letexte = typo_en($letexte); // Retablir les caracteres proteges $letexte = strtr($letexte, $illegal, $protege); @@ -547,6 +553,9 @@ function typo($letexte, $echapper=true) { if (function_exists('apres_typo')) $letexte = apres_typo($letexte); + // remettre la langue precedente + lang_dselect(); + // reintegrer les echappements if ($echapper) $letexte = echappe_retour($letexte, 'TYPO'); diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 28d4523d39..abc9b1d3b9 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -1121,4 +1121,24 @@ function verifier_visiteur() { return false; } +// selectionner une langue +// http://doc.spip.org/@lang_select +function lang_select ($lang='') { + array_push($GLOBALS['pile_langues'], $GLOBALS['spip_lang']); + if ($lang != $GLOBALS['spip_lang']) { + include_spip('inc/lang'); + changer_langue($lang); + } +} + +// revenir a la langue precedente +// http://doc.spip.org/@lang_dselect +function lang_dselect ($rien='') { + $lang = array_pop($GLOBALS['pile_langues']); + if ($lang != $GLOBALS['spip_lang']) { + include_spip('inc/lang'); + changer_langue($lang); + } +} + ?> diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index 75d3b7174d..290516236a 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -234,9 +234,9 @@ $spip_version = 1.917; // et en numerique a incrementer sur les evolutions qui cassent la compatibilite descendante // 1.xxyy : xx00 versions stables publiees, xxyy versions de dev // (ce qui marche pour yy ne marchera pas forcement sur une version plus ancienne) -// type nouvelles fonctionnalités, deplacement de fonctions ... +// type nouvelles fonctionnalites, deplacement de fonctions ... $spip_version_affichee = '1.9'; -$spip_version_code=1.9001; +$spip_version_code=1.9002; // ** Securite ** $auteur_session = $connect_statut = $connect_toutes_rubriques = $connect_id_rubrique = $hash_recherche = $hash_recherche_strict = ''; diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php index a8dfbdc3db..2880729c65 100644 --- a/ecrire/public/assembler.php +++ b/ecrire/public/assembler.php @@ -209,19 +209,19 @@ function inclure_page($fond, $contexte_inclus, $cache_incluant='') { ); } - $fcache = charger_fonction('cacher', 'public'); - // Garnir ces quatre parametres avec les infos sur le cache - $fcache($contexte_inclus, $use_cache, $chemin_cache, $page, $lastinclude); + // Si on a inclus sans fixer le critere de lang, on prend la langue courante + if (!isset($contexte_inclus['lang'])) + $contexte_inclus['lang'] = ($langue_courante ? $langue_courante : $GLOBALS['spip_lang']); - // Si on a inclus sans fixer le critere de lang, de deux choses l'une : - // - on est dans la langue du site, et pas besoin d'inclure inc_lang - // - on n'y est pas, et alors il faut revenir dans la langue par defaut - $lang = isset($contexte_inclus['lang']) ? $contexte_inclus['lang']:''; - if ($lang || ($GLOBALS['spip_lang'] != ($lang = $GLOBALS['meta']['langue_site']))) { + if ($contexte_inclus['lang'] != $GLOBALS['meta']['langue_site']) { include_spip('inc/lang'); lang_select($lang); $lang_select = true; // pour lang_dselect en sortie - } else $lang_select = false; + } + + $fcache = charger_fonction('cacher', 'public'); + // Garnir ces quatre parametres avec les infos sur le cache + $fcache($contexte_inclus, $use_cache, $chemin_cache, $page, $lastinclude); // Une fois le chemin-cache decide, on ajoute la date (et date_redac) // dans le contexte inclus, pour que les criteres {age} etc fonctionnent @@ -240,7 +240,8 @@ function inclure_page($fond, $contexte_inclus, $cache_incluant='') { if ($chemin_cache) $fcache($contexte_inclus, $use_cache, $chemin_cache, $page, $lastmodified); } - $page['lang_select'] = $lang_select; + if($lang_select) + lang_dselect(); return $page; } @@ -258,10 +259,6 @@ function inclure_balise_dynamique($texte, $echo=true, $ligne=0) { list($fond, $delainc, $contexte_inclus) = $texte; - if ((!isset($contexte_inclus['lang'])) AND - ($GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site'])) - $contexte_inclus['lang'] = $GLOBALS['spip_lang']; - // delais a l'ancienne, c'est pratiquement mort $d = isset($GLOBALS['delais']) ? $GLOBALS['delais'] : 0; $GLOBALS['delais'] = $delainc; @@ -283,10 +280,6 @@ function inclure_balise_dynamique($texte, $echo=true, $ligne=0) { $texte = ob_get_contents(); ob_end_clean(); } - - if ($page['lang_select']) - lang_dselect(); - } if ($GLOBALS['var_mode'] == 'debug') @@ -356,7 +349,8 @@ function message_erreur_404 ($erreur= "") { $erreur = 'public:aucun_site'; } $contexte_inclus = array( - 'erreur' => _T($erreur) + 'erreur' => _T($erreur), + 'lang' => $GLOBALS['spip_lang'] ); $page = inclure_page('404', $contexte_inclus); $page['status'] = 404; @@ -367,6 +361,7 @@ function message_erreur_404 ($erreur= "") { // pour une inclusion dans un flux // http://doc.spip.org/@recuperer_fond function recuperer_fond($fond, $contexte=array()) { + // on est peut etre dans l'espace prive au moment de l'appel define ('_INC_PUBLIC', 1); if (($fond=='')&&isset($contexte['fond'])) @@ -381,26 +376,27 @@ function recuperer_fond($fond, $contexte=array()) { ob_end_clean(); } - if ($page['lang_select'] === true) - lang_dselect(); - return $page['texte']; } // temporairement ici : a mettre dans le futur inc/modeles // creer_contexte_de_modele('left', 'autostart=true', ...) renvoie un array() -function creer_contexte_de_modele($args = array()) { +function creer_contexte_de_modele($args) { $contexte = array(); $params = array(); foreach ($args as $arg) { - if (in_array($arg, array('left', 'right', 'center'))) - $arg = 'align='.$arg; - - list($var, $val) = split('=', $arg); + if (in_array($arg, array('left', 'right', 'center'))) { + $var = 'align'; + $val = $arg; + } else { + list($var, $val) = split('=', $arg); + } $contexte[$var] = $val; $params[] = "$var=$val"; } - $contexte['params'] = join('|', $params); + if ($params = join('|', $params)) + $contexte['params'] = $params; + return $contexte; } diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php index 9c2f62a53d..41d87d0f81 100644 --- a/ecrire/public/compiler.php +++ b/ecrire/public/compiler.php @@ -68,12 +68,25 @@ function calculer_inclure($struct, $descr, &$boucles, $id_boucle) { } $l = array(); + $lang = ''; foreach($struct->param as $val) { $var = array_shift($val); - $l[] = "\'$var\' => ' . argumenter_squelette(" . - ($val ? calculer_liste($val[0], $descr, $boucles, $id_boucle) :(($var =='lang') ? '$GLOBALS["spip_lang"]' : index_pile($id_boucle, $var, $boucles))) - . ") . '"; + if ($var == 'lang') + $lang = $val; + else + $l[$var] = "\'$var\' => ' . argumenter_squelette(" . + ($val + ? calculer_liste($val[0], $descr, $boucles, $id_boucle) + : index_pile($id_boucle, $var, $boucles) + ) . ") . '"; } + // Cas particulier de la langue : si {lang=xx} est definie, on + // la passe, sinon on passe la langue courante au moment du calcul + $l['lang'] = "\'lang\' => ' . argumenter_squelette(" . + ($lang + ? calculer_liste($lang[0], $descr, $boucles, $id_boucle) + : '$GLOBALS["spip_lang"]' + ) . ") . '"; return "\n'<". "?php\n\t\$contexte_inclus = array(" . diff --git a/ecrire/public/references.php b/ecrire/public/references.php index 8f9ad51aee..c6a00a7c9c 100644 --- a/ecrire/public/references.php +++ b/ecrire/public/references.php @@ -280,7 +280,7 @@ function calculer_balise_modele_dist($p){ } $p->code = "recuperer_fond('modeles/".$nom."', - creer_contexte_de_modele(array(".join(',', $code_contexte).")))"; + creer_contexte_de_modele(array(".join(',', $code_contexte)."), \$GLOBALS['spip_lang']))"; $p->interdire_scripts = false; // securite assuree par le squelette return $p; -- GitLab