From 9988f0e329a521af3df40d3152af2e83ba221c63 Mon Sep 17 00:00:00 2001
From: ARNO* <arno@rezo.net>
Date: Sun, 28 Aug 2005 23:47:14 +0000
Subject: [PATCH] Dans listes d'articles, basculer vers tableau des traductions

---
 ecrire/ajax_page.php         |   6 +-
 ecrire/inc_majbase.php3      |   4 +
 ecrire/inc_presentation.php3 | 280 +++++++++++++++++++++++++++++++----
 ecrire/inc_serialbase.php3   |   1 -
 ecrire/inc_version.php3      |   2 +-
 ecrire/naviguer.php3         |   2 +
 ecrire/presentation.js       |   4 +
 7 files changed, 269 insertions(+), 30 deletions(-)

diff --git a/ecrire/ajax_page.php b/ecrire/ajax_page.php
index 29f306a1b4..9497b70308 100644
--- a/ecrire/ajax_page.php
+++ b/ecrire/ajax_page.php
@@ -18,7 +18,6 @@ echo "<"."?xml version='1.0' encoding='$charset'?>";
 	if ($GLOBALS["id_ajax_fonc"]) {
 		$res = spip_query("SELECT * FROM spip_ajax_fonc WHERE id_ajax_fonc = $id_ajax_fonc AND id_auteur=$connect_id_auteur");
 		if ($row = spip_fetch_array($res)) {
-			$fonction = $row["fonction"];
 			$variables = $row["variables"];
 			
 			$variables = unserialize($variables);
@@ -31,6 +30,11 @@ echo "<"."?xml version='1.0' encoding='$charset'?>";
 			if ($fonction == "afficher_articles") {
 				afficher_articles ($titre_table, $requete, $afficher_visites, $afficher_auteurs);
 			}
+
+			if ($fonction == "afficher_articles_trad") {
+				afficher_articles_trad ($titre_table, $requete, $afficher_visites, $afficher_auteurs);
+			}
+			
 		}
 
 	}
diff --git a/ecrire/inc_majbase.php3 b/ecrire/inc_majbase.php3
index 72fe2e4599..047e88b19d 100644
--- a/ecrire/inc_majbase.php3
+++ b/ecrire/inc_majbase.php3
@@ -1049,6 +1049,10 @@ function maj_base() {
 	if ($version_installee < 1.825) {
 		maj_version(1.825);
 	}
+	if ($version_installee < 1.826) {
+		spip_query("ALTER TABLE spip_ajax_fonc DROP fonction");
+		maj_version(1.826);
+	}
 
 	return true;
 }
diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3
index 4ab4fb77ea..9312fe5032 100644
--- a/ecrire/inc_presentation.php3
+++ b/ecrire/inc_presentation.php3
@@ -738,6 +738,31 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a
 
 
 
+
+	// Preparation pour basculter vers liens de traductions
+	$afficher_trad = (lire_meta('gerer_trad') == "oui");
+	if ($afficher_trad) {
+		$jjscript_trad["fonction"] = "afficher_articles_trad";
+		$jjscript_trad["titre_table"] = $titre_table;
+		$jjscript_trad["requete"] = $requete;
+		$jjscript_trad["afficher_visites"] = $afficher_visites;
+		$jjscript_trad["afficher_auteurs"] = $afficher_auteurs;
+		$jjscript_trad = addslashes(serialize($jjscript_trad));
+		$hash = "0x".substr(md5($connect_id_auteur.$jjscript_trad), 0, 16);
+	
+		$div_trad = substr(md5($requete), 0, 4);
+
+		$res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur ORDER BY id_ajax_fonc DESC LIMIT 0,1");
+		if ($row = spip_fetch_array($res_proch)) {
+			$id_ajax_trad = $row["id_ajax_fonc"];
+		} else  {
+			include_ecrire ("inc_abstract_sql.php3");
+			$id_ajax_trad = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, '$jjscript_trad', $hash, NOW())");
+		}
+
+
+	}
+
 	$activer_messagerie = "oui";
 	$activer_statistiques = lire_meta("activer_statistiques");
 	$afficher_visites = ($afficher_visites AND $connect_statut == "0minirezo" AND $activer_statistiques != "non");
@@ -764,7 +789,7 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a
 	else $ajout_col = 0;
 
 	
-	$jjscript["function"] = "afficher_articles";
+	$jjscript["fonction"] = "afficher_articles";
 	$jjscript["titre_table"] = $titre_table;
 	$jjscript["requete"] = $requete;
 	$jjscript["afficher_visites"] = $afficher_visites;
@@ -772,50 +797,42 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a
 	$jjscript = addslashes(serialize($jjscript));
 	$hash = "0x".substr(md5($connect_id_auteur.$jjscript), 0, 16);
 
+
+
 	$tmp_var = substr(md5($jjscript), 0, 4);
 	
-	
-	// Voir si deja stocke
-	$res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur ORDER BY id_ajax_fonc DESC LIMIT 0,1");
-	if ($row = spip_fetch_array($res_proch)) {
-		$id_ajax_fonc = $row["id_ajax_fonc"];
-	} else {
-		$creer_lien_ajax = true;
-		// Recuperer l'incrementation actuelle d'id_ajax_fonc 
-		// (l'insert ne sera fait qu'apres tranche)
-		$res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc ORDER BY id_ajax_fonc DESC LIMIT 0,1");
-		if ($row = spip_fetch_array($res_proch)) {
-			$id_ajax_fonc = $row["id_ajax_fonc"];
-		} 
-		else $id_ajax_fonc = 0;
-		if (!$GLOBALS["t_$tmp_var"]) $id_ajax_fonc ++;
-	}
-		
-	$javascript = "charger_id_url(\'ajax_page.php?id_ajax_fonc=$id_ajax_fonc::deb::\',\'$tmp_var\')";
+			
+	$javascript = "charger_id_url(\'ajax_page.php?id_ajax_fonc=::id_ajax_fonc::::deb::\',\'$tmp_var\')";
 	$tranches = afficher_tranches_requete($requete, $afficher_auteurs ? 4 + $ajout_col : 3 + $ajout_col, $tmp_var, $javascript);
 
-
 	$requete = str_replace("FROM spip_articles AS articles ", "FROM spip_articles AS articles LEFT JOIN spip_petitions AS petitions USING (id_article)", $requete);
 
 	if (strlen($tranches) OR $toujours_afficher) {
-		$result = spip_query($requete);
 
+		$res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur ORDER BY id_ajax_fonc DESC LIMIT 0,1");
+		if ($row = spip_fetch_array($res_proch)) {
+			$id_ajax_fonc = $row["id_ajax_fonc"];
+		} else  {
+			include_ecrire ("inc_abstract_sql.php3");
+			$id_ajax_fonc = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, '$jjscript', $hash, NOW())");
+		}
 
 		if (!$GLOBALS["t_$tmp_var"]) {
-			if ($creer_lien_ajax) {
-				include_ecrire ("inc_abstract_sql.php3");
-				$id_fonc = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, fonction, variables, hash, date)", "($connect_id_auteur, 'afficher_articles', '$jjscript', $hash, NOW())");
-			}
-			
 
+			if ($afficher_trad) {
+				$tmp_trad = substr(md5($requete_trad), 0, 4);
 
+				echo "<div id='$div_trad'>";
+				
+			}
 
 			echo "<div style='height: 12px;'></div>";
 			echo "<div class='liste'>";
 
 			$id_img = "img_".$tmp_var;
-			$texte_img .= "<img src='img_pack/searching.gif' id='$id_img' style='visibility: hidden; border: 0px; float: $spip_lang_right' />";
+			$texte_img = "<img src='img_pack/searching.gif' id='$id_img' style='visibility: hidden; border: 0px; float: $spip_lang_right' />";
 
+			if ($afficher_trad) $texte_img .= "<img src='img_pack/searching.gif' id='img_$div_trad' style='visibility: hidden; border: 0px; float: $spip_lang_right;' /><div style='float: $spip_lang_right;'><a href=\"javascript:charger_id_url('ajax_page.php?id_ajax_fonc=$id_ajax_trad','$div_trad');\"><img src='img_pack/langues-12.gif' border='0' /></a></div>";
 
 			bandeau_titre_boite2($texte_img.$titre_table, "article-24.gif");
 
@@ -827,8 +844,10 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a
 		//echo "<table width='100%' cellpadding='2' cellspacing='0' border='0'>";
 		echo afficher_liste_debut_tableau();
 
+		$tranches = ereg_replace("\:\:id\_ajax\_fonc\:\:", $id_ajax_fonc, $tranches);
 		echo $tranches;
 
+		$result = spip_query($requete);
 		while ($row = spip_fetch_array($result)) {
 			$vals = '';
 
@@ -943,6 +962,213 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a
 		echo afficher_liste_fin_tableau();
 		echo "</div>";
 		
+		if (!$GLOBALS["t_$tmp_var"]) {
+			echo "</div>";
+			if ($afficher_trad) echo "</div>";
+			
+		}
+		
+		//if ($afficher_cadre) fin_cadre_gris_clair();
+
+	}
+
+	return $tous_id;
+}
+
+function afficher_articles_trad($titre_table, $requete, $afficher_visites = false, $afficher_auteurs = true,
+		$toujours_afficher = false, $afficher_cadre = true, $afficher_descriptif = true) {
+
+	global $connect_id_auteur, $connect_statut, $dir_lang;
+	global $options, $spip_display;
+	global $spip_lang_left, $spip_lang_right;
+
+	$langues_site = explode(',', lire_meta('langues_multilingue'));
+
+	// Preparation pour basculter vers liste normale
+		$jjscript_trad["fonction"] = "afficher_articles";
+		$jjscript_trad["titre_table"] = $titre_table;
+		$jjscript_trad["requete"] = $requete;
+		$jjscript_trad["afficher_visites"] = $afficher_visites;
+		$jjscript_trad["afficher_auteurs"] = $afficher_auteurs;
+		$jjscript_trad = addslashes(serialize($jjscript_trad));
+		$hash = "0x".substr(md5($connect_id_auteur.$jjscript_trad), 0, 16);
+	
+		$div_trad = substr(md5($requete), 0, 4);
+
+		$res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur ORDER BY id_ajax_fonc DESC LIMIT 0,1");
+		if ($row = spip_fetch_array($res_proch)) {
+			$id_ajax_trad = $row["id_ajax_fonc"];
+		} else  {
+			include_ecrire ("inc_abstract_sql.php3");
+			$id_ajax_trad = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, '$jjscript_trad', $hash, NOW())");
+		}
+
+
+	$activer_messagerie = "oui";
+	$activer_statistiques = lire_meta("activer_statistiques");
+	$afficher_visites = ($afficher_visites AND $connect_statut == "0minirezo" AND $activer_statistiques != "non");
+
+	// Preciser la requete (alleger les requetes)
+	if (!ereg("^SELECT", $requete)) {
+		$select = "SELECT articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date, articles.id_trad, articles.lang";
+		$requete = $select . " FROM spip_articles AS articles " . $requete;
+	}
+	
+	if ($options == "avancees")  $ajout_col = 1;
+	else $ajout_col = 0;
+
+	
+	$jjscript["fonction"] = "afficher_articles_trad";
+	$jjscript["titre_table"] = $titre_table;
+	$jjscript["requete"] = $requete;
+	$jjscript["afficher_visites"] = $afficher_visites;
+	$jjscript["afficher_auteurs"] = $afficher_auteurs;
+	$jjscript = addslashes(serialize($jjscript));
+	$hash = "0x".substr(md5($connect_id_auteur.$jjscript), 0, 16);
+
+
+
+	$tmp_var = substr(md5($jjscript), 0, 4);
+	
+			
+	$javascript = "charger_id_url(\'ajax_page.php?id_ajax_fonc=::id_ajax_fonc::::deb::\',\'$tmp_var\')";
+	$tranches = afficher_tranches_requete($requete, 4, $tmp_var, $javascript);
+
+	$requete = str_replace("FROM spip_articles AS articles ", "FROM spip_articles AS articles LEFT JOIN spip_petitions AS petitions USING (id_article)", $requete);
+
+	if (strlen($tranches) OR $toujours_afficher) {
+
+		$res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur ORDER BY id_ajax_fonc DESC LIMIT 0,1");
+		if ($row = spip_fetch_array($res_proch)) {
+			$id_ajax_fonc = $row["id_ajax_fonc"];
+		} else  {
+			include_ecrire ("inc_abstract_sql.php3");
+			$id_ajax_fonc = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, '$jjscript', $hash, NOW())");
+		}
+
+		if (!$GLOBALS["t_$tmp_var"]) {
+
+			echo "<div id='$div_trad'>";
+
+			echo "<div style='height: 12px;'></div>";
+			echo "<div class='liste'>";
+
+			$id_img = "img_".$tmp_var;
+			$texte_img = "<img src='img_pack/searching.gif' id='$id_img' style='visibility: hidden; border: 0px; float: $spip_lang_right' />";
+
+			$texte_img .= "<img src='img_pack/searching.gif' id='img_$div_trad' style='visibility: hidden; border: 0px; float: $spip_lang_right;' /><div style='float: $spip_lang_right;'><a href=\"javascript:charger_id_url('ajax_page.php?id_ajax_fonc=$id_ajax_trad','$div_trad');\"><img src='img_pack/langues-off-12.gif' border='0' /></a></div>";
+
+			bandeau_titre_boite2($texte_img.$titre_table, "article-24.gif");
+
+			echo "<div id='$tmp_var'>";
+
+		}
+		
+
+		//echo "<table width='100%' cellpadding='2' cellspacing='0' border='0'>";
+		echo afficher_liste_debut_tableau();
+
+		$tranches = ereg_replace("\:\:id\_ajax\_fonc\:\:", $id_ajax_fonc, $tranches);
+		echo $tranches;
+
+		$result = spip_query($requete);
+		while ($row = spip_fetch_array($result)) {
+			$vals = '';
+
+			$id_article = $row['id_article'];
+			$tous_id[] = $id_article;
+			$titre = $row['titre'];
+			$id_rubrique = $row['id_rubrique'];
+			$date = $row['date'];
+			$statut = $row['statut'];
+			$id_trad = $row['id_trad'];
+			$lang = $row['lang'];
+
+
+			// La petite puce de changement de statut
+			$vals[] = puce_statut_article($id_article, $statut, $id_rubrique);
+
+			// Le titre (et la langue)
+			
+			$langues_art = "";
+			$dates_art = "";
+			$l = "";
+			$res_trad = spip_query("SELECT id_article, lang, date_modif  FROM spip_articles WHERE id_trad = $id_trad AND id_trad > 0");
+			while ($row_trad = spip_fetch_array($res_trad)) {
+				$id_article_trad = $row_trad["id_article"];
+				$lang_trad = $row_trad["lang"];
+				$date_trad = $row_trad["date_modif"];
+				
+				$dates_art[$lang_trad] = $date_trad;
+				$langues_art[$lang_trad] = $id_article_trad;
+				if ($id_article_trad == $id_trad) $date_ref = $date;
+				
+			//	if ($id_article_trad == $id_trad) $langues_art[$lang_trad] = "<img src='img_pack/langues-12.gif' border='0' align='middle' />";
+			//	else $langues_art[$lang_trad] = "<b>[$lang_trad]</b>";
+				
+			//	
+			}
+
+			reset($langues_site);
+			$span_lang = false;
+			while (list(,$k) = each($langues_site)) {
+				if ($langues_art[$k]) {
+					if ($langues_art[$k] == $id_trad) {
+						$span_lang = "<a href='articles.php3?id_article=".$langues_art[$k]."'><span class='lang_base'>$k</a></a>";
+						$l .= $span_lang;
+					} else {
+						$date = $dates_art[$k];
+						if ($date < $date_ref) $l .= "<a href='articles.php3?id_article=".$langues_art[$k]."' class='claire'>$k</a>";
+						else $l .= "<a href='articles.php3?id_article=".$langues_art[$k]."' class='foncee'>$k</a>";
+					}			
+				}
+				else $l.= "<span class='creer'>$k</span>";
+			}
+			
+			if (!$span_lang)
+				$span_lang = "<a href='articles.php3?id_article=$id_article'><span class='lang_base'>$lang</a></a>";
+
+			
+			$vals[] = "<div style='text-align: center;'>$span_lang</div>";
+			
+			
+			$s = "<div>";
+			$s .= "<div style='float: $spip_lang_right; margin-right: -10px;'>$l</div>";
+
+			if (acces_restreint_rubrique($id_rubrique))
+				$s .= http_img_pack("admin-12.gif", "", "width='12' height='12'", _T('titre_image_admin_article'));
+
+			$s .= "<a href=\"articles.php3?id_article=$id_article\"$descriptif$dir_lang style=\"display:block;\">";
+
+			
+			
+			
+			if ($id_article == $id_trad) $titre = "<b>$titre</b>";
+			
+			$s .= typo($titre);
+			if ($afficher_langue AND $lang != $langue_defaut)
+				$s .= " <font size='1' color='#666666'$dir_lang>(".traduire_nom_langue($lang).")</font>";
+			if ($petition) $s .= " <font size=1 color='red'>"._T('lien_petitions')."</font>";
+			$s .= "</a>";
+			$s .= "</div>";
+			
+			$vals[] = $s;
+			
+			$vals[] = "";
+
+			$table[] = $vals;
+		}
+		spip_free_result($result);
+
+		$largeurs = array(11, 24, '', '1');
+		$styles = array('', 'arial1', 'arial1', '');
+
+		afficher_liste($largeurs, $table, $styles);
+
+		//echo "</table>";
+		echo afficher_liste_fin_tableau();
+		echo "</div>";
+		
 		if (!$GLOBALS["t_$tmp_var"]) echo "</div>";
 		
 		//if ($afficher_cadre) fin_cadre_gris_clair();
diff --git a/ecrire/inc_serialbase.php3 b/ecrire/inc_serialbase.php3
index e6da35e4da..553eb37dc0 100644
--- a/ecrire/inc_serialbase.php3
+++ b/ecrire/inc_serialbase.php3
@@ -336,7 +336,6 @@ $spip_signatures_key = array(
 $spip_ajax_fonc = array(
 		"id_ajax_fonc" => "bigint(21) NOT NULL",
 		"id_auteur" => "bigint(21) NOT NULL",
-		"fonction" => "varchar(50) DEFAULT '0' NOT NULL",
 		"variables" => "text NOT NULL",
 		"date"	=> "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
 		"`hash`"	=> "BIGINT UNSIGNED NOT NULL" );
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 84b2d05d50..7305540c8d 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -412,7 +412,7 @@ define_once('_AUTH_USER_FILE', '.htpasswd');
 // (utilise pour les modifs de la base de donnees)
 
 // version de la base
-$spip_version = 1.825;
+$spip_version = 1.826;
 
 // version de spip
 $spip_version_affichee = "1.8.2 SVN";
diff --git a/ecrire/naviguer.php3 b/ecrire/naviguer.php3
index ad03770abd..d86a03f157 100644
--- a/ecrire/naviguer.php3
+++ b/ecrire/naviguer.php3
@@ -399,6 +399,8 @@ if ($connect_statut == "0minirezo" AND $options == 'avancees') {
 afficher_articles(_T('info_tous_articles_presents'),
 	"WHERE statut='publie' AND id_rubrique='$id_rubrique' ORDER BY date DESC", true);
 
+
+
 if ($id_rubrique > 0){
 	echo "<div align='$spip_lang_right'>";
 	icone(_T('icone_ecrire_article'), "articles_edit.php3?id_rubrique=$id_rubrique&new=oui", "article-24.gif", "creer.gif");
diff --git a/ecrire/presentation.js b/ecrire/presentation.js
index 7387a18a32..86815489be 100644
--- a/ecrire/presentation.js
+++ b/ecrire/presentation.js
@@ -15,6 +15,7 @@ function changestyle(id_couche, element, style) {
 	hide_obj("bandeauagenda");
 	hide_obj("bandeaumessagerie");
 	hide_obj("bandeausynchro");
+	hide_obj("resultats_recherche");
 	hide_obj("bandeaurecherche");
 	hide_obj("bandeauinfoperso");
 	hide_obj("bandeaudisplay");
@@ -221,11 +222,14 @@ function verifForm() {
 
 
 function lancer_recherche(champ, cible) {
+	// Desactive pour l'instant (bouffe trop de ressources)
+	/*
 	valeur = findObj(champ).value;
 	if (valeur.length > 3) {
 		charger_id_url('ajax_page.php?recherche_sugg='+valeur,'sugg_recherche');
 		charger_id_url('ajax_page.php?recherche='+valeur,'resultats_recherche');
 	}
+	*/
 }
 
 
-- 
GitLab