Update of /home/spip-cvs/spip
In directory miel:/tmp/cvs-serv4341
Modified Files:
inc-calcul-squel.php3 inc-calcul.php3 inc-public-global.php3
Log Message:
le critère {lang} ou {lang=eo} possible dans les <INCLURE()> et dans l'URL (à tester sous toutes les coutures)
Index: inc-calcul-squel.php3
RCS file: /home/spip-cvs/spip/inc-calcul-squel.php3,v
retrieving revision 1.187
retrieving revision 1.188
diff -u -d -r1.187 -r1.188
--- inc-calcul-squel.php3 19 Jan 2004 23:18:26 -0000 1.187
+++ inc-calcul-squel.php3 26 Jan 2004 17:03:46 -0000 1.188
@@ -1090,7 +1090,7 @@
break;
case 'LANG':
- $code = "lire_meta('langue_site')";
+ $code = "\$GLOBALS['spip_lang']";
break;
case 'LANG_LEFT':
@@ -1788,7 +1788,6 @@
$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,13 +1798,24 @@
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";
}
}
}
+
+ 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) {
Index: inc-calcul.php3
RCS file: /home/spip-cvs/spip/inc-calcul.php3,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- inc-calcul.php3 19 Jan 2004 23:21:39 -0000 1.59
+++ inc-calcul.php3 26 Jan 2004 17:03:46 -0000 1.60
@@ -419,7 +419,7 @@
}
}
-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 @@
// 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 @@
$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 @@
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 @@
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);
Index: inc-public-global.php3
RCS file: /home/spip-cvs/spip/inc-public-global.php3,v
retrieving revision 1.85
retrieving revision 1.86
diff -u -d -r1.85 -r1.86
--- inc-public-global.php3 4 Jan 2004 15:22:59 -0000 1.85
+++ inc-public-global.php3 26 Jan 2004 17:03:46 -0000 1.86
@@ -25,7 +25,8 @@
$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 @@
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) {