From 74b7fa6bbb599ec56efc29ae91bf47ba963ecf09 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Mon, 24 Oct 2005 06:31:38 +0000
Subject: [PATCH] oubli de l'action sur les langues

---
 ecrire/inc_lang.php3    |  4 ++--
 ecrire/inc_naviguer.php | 49 ++++++++++++++++++++---------------------
 2 files changed, 26 insertions(+), 27 deletions(-)

diff --git a/ecrire/inc_lang.php3 b/ecrire/inc_lang.php3
index eb204cc4d0..3be1e7b7df 100644
--- a/ecrire/inc_lang.php3
+++ b/ecrire/inc_lang.php3
@@ -243,7 +243,7 @@ function lang_dselect ($rien='') {
 // - 'var_lang' = langue de l'article, espace public
 // - 'changer_lang' = langue de l'article, espace prive
 // 
-function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $herit = '') {
+function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $herit = '', $lien='') {
 	global $couleur_foncee, $couleur_claire, $connect_id_auteur;
 	include_ecrire('inc_filtres.php3');
 
@@ -253,7 +253,7 @@ function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $her
 
 	if (!$couleur_foncee) $couleur_foncee = '#044476';
 
-	$lien = $GLOBALS['clean_link'];
+	if (!$lien) $lien = $GLOBALS['clean_link'];
 
 	if ($nom_select == 'changer_lang') {
 		$lien->delvar('changer_lang');
diff --git a/ecrire/inc_naviguer.php b/ecrire/inc_naviguer.php
index 09a5817561..4ab893c854 100644
--- a/ecrire/inc_naviguer.php
+++ b/ecrire/inc_naviguer.php
@@ -8,13 +8,13 @@ include_ecrire ("inc_abstract_sql.php3");
 
 function naviguer_dist($action)
 {
-	global $id_parent, $id_rubrique, $nouv_mot, $spip_display,  $connect_statut, $supp_mot, $champs_extra, $cherche_mot, $descriptif, $texte, $titre;
+  global $id_parent, $id_rubrique, $nouv_mot, $spip_display,  $connect_statut, $supp_mot, $champs_extra, $cherche_mot, $descriptif, $texte, $titre, $changer_lang;
 
 
 	$flag_editable = ($connect_statut == '0minirezo' AND (acces_rubrique($id_parent) OR acces_rubrique($id_rubrique))); // id_parent necessaire en cas de creation de sous-rubrique
 	// si action vide, simple visite
 	if ($flag_editable AND $action) 
-		$id_rubrique = maj_naviguer($action, $id_rubrique, $id_parent, $titre, $texte, $descriptif, $flag_editable);
+	  $id_rubrique = maj_naviguer($action, $id_rubrique, $id_parent, $titre, $texte, $descriptif, $flag_editable, $changer_lang);
 
 //
 // recuperer les infos sur cette rubrique
@@ -220,7 +220,8 @@ if ($id_rubrique>0 AND lire_meta('multi_rubriques') == 'oui' AND (lire_meta('mul
 
 	echo debut_block_invisible('languesrubrique');
 	echo "<div class='verdana2' align='center'>";
-	echo menu_langues('changer_lang', $langue_rubrique, '', $langue_parent);
+	$link = new Link("naviguer.php3?action=coloniser&id_rubrique=$id_rubrique");
+	echo menu_langues('changer_lang', $langue_rubrique, '', $langue_parent, $link);
 	echo "</div>\n";
 	echo fin_block();
 
@@ -373,7 +374,7 @@ if ($relief) {
 	supprimer_naviguer($id_rubrique, $id_parent, $ze_logo, $flag_editable);
 }
 
-function maj_naviguer($action, $id_rubrique, $id_parent, $titre, $texte, $descriptif, $flag_editable)
+function maj_naviguer($action, $id_rubrique, $id_parent, $titre, $texte, $descriptif, $flag_editable, $changer_lang)
 {
 	if ($action == 'supprimer') {
 		  spip_query("DELETE FROM spip_rubriques WHERE id_rubrique=$id_rubrique");
@@ -382,6 +383,24 @@ function maj_naviguer($action, $id_rubrique, $id_parent, $titre, $texte, $descri
 		  $_POST['id_rubrique'] = $id_rubrique;
 		  $GLOBALS['clean_link'] = new Link();
 		}
+	elseif ($action == 'coloniser') {
+		if ($changer_lang
+		    AND $id_rubrique>0
+		    AND lire_meta('multi_rubriques') == 'oui'
+		    AND (lire_meta('multi_secteurs') == 'non' OR $id_parent == 0)) {
+		  if ($changer_lang != "herit")
+			spip_query("UPDATE spip_rubriques SET lang='".addslashes($changer_lang)."', langue_choisie='oui' WHERE id_rubrique=$id_rubrique");
+		  else {
+			if ($id_parent == 0)
+				$langue_parent = lire_meta('langue_site');
+			else {
+				$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_parent"));
+				$langue_parent = $row['lang'];
+			}
+			spip_query("UPDATE spip_rubriques SET lang='".addslashes($langue_parent)."', langue_choisie='non' WHERE id_rubrique=$id_rubrique");
+		  }
+		}
+	}
 	  // pour le cas 'calculer_rubriques' (retour de spip_image),
 	  // i.e. document/logo ajoute/supprime/tourne
 	  // suffit seulement de faire le calculer_rubriques() final
@@ -426,32 +445,12 @@ WHERE id_rubrique=$id_rubrique");
 
 	// toute action entraine ceci:
 	calculer_rubriques();
+	calculer_langues_rubriques();
 
-	  // invalider et reindexer
 	if ($GLOBALS['invalider_caches']) {
 			include_ecrire ("inc_invalideur.php3");
 			suivre_invalideur("id='id_rubrique/$id_rubrique'");
 	}
-//
-// Appliquer le changement de langue
-//
-	if ($GLOBALS['changer_lang']
-		    AND $id_rubrique>0
-		    AND lire_meta('multi_rubriques') == 'oui'
-		    AND (lire_meta('multi_secteurs') == 'non' OR $id_parent == 0)) {
-		  if ($changer_lang != "herit")
-			spip_query("UPDATE spip_rubriques SET lang='".addslashes($changer_lang)."', langue_choisie='oui' WHERE id_rubrique=$id_rubrique");
-		  else {
-			if ($id_parent == 0)
-				$langue_parent = lire_meta('langue_site');
-			else {
-				$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_parent"));
-				$langue_parent = $row['lang'];
-			}
-			spip_query("UPDATE spip_rubriques SET lang='".addslashes($langue_parent)."', langue_choisie='non' WHERE id_rubrique=$id_rubrique");
-		  }
-	}
-	calculer_langues_rubriques();
 	return $id_rubrique;
 }
 
-- 
GitLab