Skip to content
Extraits de code Groupes Projets
Valider b0b7c41d rédigé par Fil's avatar Fil
Parcourir les fichiers

le critère {lang} ou {lang=eo} possible dans les <INCLURE()> et dans l'URL (à...

le critère {lang} ou {lang=eo} possible dans les <INCLURE()> et dans l'URL (à tester sous toutes les coutures)
parent 5b985715
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -1090,7 +1090,7 @@ function calculer_champ($id_champ, $id_boucle, $nom_var)
break;
case 'LANG':
$code = "lire_meta('langue_site')";
$code = "\$GLOBALS['spip_lang']";
break;
case 'LANG_LEFT':
......@@ -1788,7 +1788,6 @@ function calculer_texte($texte)
$fichier = $match[2];
ereg('^\\{(.*)\\}$', trim($match[3]), $params);
$code .= " \$retour .= '<"."?php ';\n";
$code .= " \$retour .= 'include_ecrire(\'inc_lang.php3\'); lang_select(lire_meta(\'langue_site\'));';\n";
$code .= " \$retour .= '\$contexte_inclus = \'\'; ';\n";
if ($params) {
......@@ -1799,7 +1798,15 @@ function calculer_texte($texte)
if (ereg("^([_0-9a-zA-Z]+)[[:space:]]*(=[[:space:]]*([^}]+))?$", $param, $args)) {
$var = $args[1];
$val = $args[3];
if ($val)
// cas de la langue
if ($var == 'lang') {
$lang_inclus = "\\'".addslashes($val)."\\'";
if (! $val)
$val = $lang_inclus = '$GLOBALS[spip_lang]';
$code .= " \$retour .= '\$contexte_inclus[$var] = $val; ';\n";
}
else if ($val)
$code .= " \$retour .= '\$contexte_inclus[$var] = \'".addslashes($val)."\'; ';\n";
else
$code .= " \$retour .= '\$contexte_inclus[$var] = \''.addslashes(\$contexte[$var]).'\'; ';\n";
......@@ -1807,6 +1814,9 @@ function calculer_texte($texte)
}
}
if (!$lang_inclus) $lang_inclus = 'lire_meta(\\\'langue_site\\\')';
$code .= " \$retour .= 'include_ecrire(\'inc_lang.php3\'); lang_select($lang_inclus);';\n";
// inclure en priorite dans le dossier_squelettes
if ($dossier_squelettes) {
$code .= " \$retour .= '
......
......@@ -419,7 +419,7 @@ function chercher_squelette_hierarchie($fond, $id_rubrique, $dossier='') {
}
}
function chercher_squelette($fond, $id_rubrique) {
function chercher_squelette($fond, $id_rubrique, $lang='') {
global $dossier_squelettes;
// prendre en compte le bon repertoire (pas grave si on a deux / dans l'arborescence)
......@@ -428,11 +428,22 @@ function chercher_squelette($fond, $id_rubrique) {
// On selectionne, dans l'ordre :
// fond=10.html, fond-10.html, fond-<rubriques parentes>.html, fond.html puis fond-dist.html
if (($id_rubrique > 0) AND (@file_exists("$dossier$fond=$id_rubrique.html"))) {
return "$dossier$fond=$id_rubrique";
$squel = "$dossier$fond=$id_rubrique";
}
else {
return chercher_squelette_hierarchie($fond, $id_rubrique, $dossier); // recursif le long de la hierarchie
// recursif le long de la hierarchie
$squel = chercher_squelette_hierarchie($fond, $id_rubrique, $dossier);
}
// affiner par langue
if ($lang == '')
$lang = lire_meta('langue_site');
if (@file_exists("$squel.$lang.html"))
$squel = "$squel.$lang";
return $squel;
}
......@@ -476,7 +487,7 @@ function calculer_page_globale($fond) {
$contexte = '';
$contexte_defaut = array('id_parent', 'id_rubrique', 'id_article', 'id_auteur',
'id_breve', 'id_forum', 'id_secteur', 'id_syndic', 'id_syndic_article',
'id_mot', 'id_groupe', 'id_document', 'lang');
'id_mot', 'id_groupe', 'id_document');
reset($contexte_defaut);
while (list(, $val) = each($contexte_defaut)) {
if ($GLOBALS[$val]) {
......@@ -488,6 +499,10 @@ function calculer_page_globale($fond) {
else
$contexte['date'] = $contexte['date_redac'] = date("Y-m-d H:i:s");
if (eregi("[a-z_]+",$GLOBALS['lang'], $regs) AND (substr(",".$regs[0].",", "-,".lire_meta('langues_utilisees').","))) {
$contexte['lang'] = $regs[0];
lang_select($regs[0]);
}
// Analyser les URLs personnalisees (inc-urls-...)
recuperer_parametres_url($fond, $fichier_requete);
......@@ -524,15 +539,12 @@ function calculer_page_globale($fond) {
else {
$id_rubrique_fond = 0;
}
// selectionner la langue & affiner le squelette
if ($contexte['lang'])
$lang = $contexte['lang']; // si inc-urls veut fixer la langue
$fond = chercher_squelette($fond, $id_rubrique_fond);
// selectionner la langue & affiner le squelette
lang_select($lang);
if (@file_exists("$fond.$lang.html"))
$fond = "$fond.$lang";
$fond = chercher_squelette($fond, $id_rubrique_fond, $lang);
// Special stats et boutons admin
reset($contexte_defaut);
......
......@@ -25,7 +25,8 @@ function inclure_fichier($fond, $delais, $contexte_inclus = "") {
$fichier_requete = $fond;
if (is_array($contexte_inclus)) {
reset($contexte_inclus);
while(list($key, $val) = each($contexte_inclus)) $fichier_requete .= '&'.$key.'='.$val;
while(list($key, $val) = each($contexte_inclus))
$fichier_requete .= '&'.$key.'='.$val;
}
$fichier_cache = generer_nom_fichier_cache($fichier_requete);
$chemin_cache = "CACHE/$fichier_cache";
......@@ -35,7 +36,8 @@ function inclure_fichier($fond, $delais, $contexte_inclus = "") {
if (!$use_cache) {
include_local("inc-calcul.php3");
$timer_a = explode(" ", microtime());
$fond = chercher_squelette($fond, $contexte_inclus['id_rubrique']);
$fond = chercher_squelette($fond, $contexte_inclus['id_rubrique'], $contexte_inclus['lang']);
$page = calculer_page($fond, $contexte_inclus);
$timer_b = explode(" ", microtime());
if ($page) {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter