diff --git a/ecrire/exec/accueil.php b/ecrire/exec/accueil.php index f46be54221785c9ae3e9d694a55c7e9941b098b8..d2cf4440b8e581bdec513284657921195c27a3f8 100644 --- a/ecrire/exec/accueil.php +++ b/ecrire/exec/accueil.php @@ -36,7 +36,7 @@ else // Les articles a valider // - echo afficher_articles(_T('info_articles_proposes'), array("WHERE" => "statut='prop'$vos_articles", 'ORDER BY' => "date DESC")); + echo afficher_articles(_T('info_articles_proposes'), array("WHERE" => "statut='prop'", 'ORDER BY' => "date DESC")); // // Les breves a valider diff --git a/ecrire/exec/articles_page.php b/ecrire/exec/articles_page.php index 912992a3afdaa90b1ecd246a08a4cb5d91901707..29d3940d657c36506db30f2347e530dd81122a6c 100644 --- a/ecrire/exec/articles_page.php +++ b/ecrire/exec/articles_page.php @@ -67,7 +67,7 @@ echo "</p>"; // Vos articles publies // - echo "<p>", afficher_articles(_T('info_publies'), array("FROM" =>"spip_articles AS articles, spip_auteurs_articles AS lien ", "WHERE" => "articles.id_article=lien.id_article AND lien.id_auteur=\"$connect_id_auteur\" AND articles.statut='publie'", 'ORDER BY' => "articles.date DESC"), true); + echo "<p>", afficher_articles(_T('info_publies'), array("FROM" =>"spip_articles AS articles, spip_auteurs_articles AS lien ", "WHERE" => "articles.id_article=lien.id_article AND lien.id_auteur=\"$connect_id_auteur\" AND articles.statut='publie'", 'ORDER BY' => "articles.date DESC")); echo "</p>"; // diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php index 4a66edadcc3a819dd137c8bcf43c13d2750380d8..fbee7296eaf7f1fe8e2a8b91e8ce5bcb5c254946 100644 --- a/ecrire/exec/auteur_infos.php +++ b/ecrire/exec/auteur_infos.php @@ -137,7 +137,7 @@ function auteurs_interventions($id_auteur, $statut) else if ($connect_id_auteur == $id_auteur) $aff_art = "'prepa','prop','publie'"; else $aff_art = "'prop','publie'"; - echo afficher_articles(_T('info_articles_auteur'), array('FROM' => "spip_articles AS articles, spip_auteurs_articles AS lien", "WHERE" => "lien.id_auteur='$id_auteur' AND lien.id_article=articles.id_article AND articles.statut IN ($aff_art)", 'ORDER BY' => "articles.date DESC"), true); + echo afficher_articles(_T('info_articles_auteur'), array('FROM' => "spip_articles AS articles, spip_auteurs_articles AS lien", "WHERE" => "lien.id_auteur='$id_auteur' AND lien.id_article=articles.id_article AND articles.statut IN ($aff_art)", 'ORDER BY' => "articles.date DESC")); if ($id_auteur != $connect_id_auteur AND ($statut == '0minirezo' OR $statut == '1comite')) { diff --git a/ecrire/exec/memoriser.php b/ecrire/exec/memoriser.php index 90c38ad9dc86e43c5a21fd24fc2dd2a50007d022..9fb2a73ba792bc59654d346b283d77be7628b771 100644 --- a/ecrire/exec/memoriser.php +++ b/ecrire/exec/memoriser.php @@ -15,9 +15,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // http://doc.spip.org/@exec_memoriser_dist function exec_memoriser_dist() { - global $connect_id_auteur; + $id_ajax = intval(_request('id_ajax_fonc')); - $res = spip_fetch_array(spip_query("SELECT variables, hash FROM spip_ajax_fonc WHERE id_ajax_fonc =" . intval(_request('id_ajax_fonc')) . " AND id_auteur=$connect_id_auteur")); + // le champ id_auteur sert finalement a memoriser le nombre de lignes + // (a renommer) + + $res = spip_fetch_array(spip_query($q = "SELECT variables, id_auteur, hash FROM spip_ajax_fonc WHERE id_ajax_fonc = $id_ajax")); if ($res) { @@ -25,10 +28,10 @@ function exec_memoriser_dist() include_spip('inc/presentation'); - if (_request('trad')) - ajax_retour(afficher_articles_trad ($param, $id_ajax_fonc, $titre_table, $requete, $afficher_visites, $afficher_auteurs)); + $formater_article = _request('trad') ? '' : charger_fonction('formater_article', 'inc'); + + ajax_retour(afficher_articles_trad($titre_table, $requete, $formater_article, $param, $id_ajax, $res['id_auteur'])); - else ajax_retour(afficher_articles ($titre_table, $requete, $afficher_visites, $afficher_auteurs)); - } + } else spip_log("memoriser $q vide"); } ?> diff --git a/ecrire/exec/mots_edit.php b/ecrire/exec/mots_edit.php index 9afdaac7b295c7ea26f4d225507f51d45e27ab6a..db51a931a90b002753890f3968d95a38c7b886ce 100644 --- a/ecrire/exec/mots_edit.php +++ b/ecrire/exec/mots_edit.php @@ -205,7 +205,7 @@ if ($id_mot) { afficher_rubriques(_T('info_rubriques_liees_mot'), array("FROM" => 'spip_rubriques AS rubrique, spip_mots_rubriques AS lien', 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_rubrique=rubrique.id_rubrique", 'ORDER BY' => "rubrique.titre")); - echo afficher_articles(_T('info_articles_lies_mot'), array('FROM' => "spip_articles AS articles, spip_mots_articles AS lien", 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_article=articles.id_article AND articles.statut IN ($aff_articles)", 'ORDER BY' => "articles.date DESC"), true); + echo afficher_articles(_T('info_articles_lies_mot'), array('FROM' => "spip_articles AS articles, spip_mots_articles AS lien", 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_article=articles.id_article AND articles.statut IN ($aff_articles)", 'ORDER BY' => "articles.date DESC")); afficher_breves(_T('info_breves_liees_mot'), array("FROM" => 'spip_breves AS breves, spip_mots_breves AS lien', 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_breve=breves.id_breve", 'ORDER BY' => "breves.date_heure DESC")); diff --git a/ecrire/exec/naviguer.php b/ecrire/exec/naviguer.php index 4016ecbfaafe74f7f4ad9831ea2a8bcaacb25b0d..997b4ae32831b2167057a0a89ed09986b06d9d56 100644 --- a/ecrire/exec/naviguer.php +++ b/ecrire/exec/naviguer.php @@ -322,7 +322,7 @@ if ($relief) { ////////// Les articles publies ///////////////////////// - echo afficher_articles(_T('info_tous_articles_presents'), array("WHERE" => "statut='publie' AND id_rubrique='$id_rubrique'", 'ORDER BY' => "date DESC"), true); + echo afficher_articles(_T('info_tous_articles_presents'), array("WHERE" => "statut='publie' AND id_rubrique='$id_rubrique'", 'ORDER BY' => "date DESC")); diff --git a/ecrire/inc/formater_article.php b/ecrire/inc/formater_article.php index a59460f63c47d609ec013d10dc018e8f39cb68dc..9415147ac3b6df281833e21e15a277e788fa222e 100644 --- a/ecrire/inc/formater_article.php +++ b/ecrire/inc/formater_article.php @@ -14,11 +14,11 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // Fonction appelee dans une boucle, calculer les invariants au premier appel. -function inc_formater_article($id_article, $row, $afficher_auteurs, $afficher_langue, $langue_defaut) +function inc_formater_article($row ) { global $dir_lang, $options, $spip_lang_right, $spip_display; static $pret = false; - static $chercher_logo, $img_admin, $formater_auteur, $nb; + static $chercher_logo, $img_admin, $formater_auteur, $nb, $langue_defaut, $afficher_langue; if (!$pret) { $chercher_logo = ($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non"); @@ -29,9 +29,17 @@ function inc_formater_article($id_article, $row, $afficher_auteurs, $afficher_la $nb = ($options != "avancees") ? '' : _T('info_numero_abbreviation'); + if (($GLOBALS['meta']['multi_rubriques'] == 'oui' AND (!isset($GLOBALS['id_rubrique']))) OR $GLOBALS['meta']['multi_articles'] == 'oui') { + $afficher_langue = true; + $langue_defaut = isset($GLOBALS['langue_rubrique']) + ? $GLOBALS['meta']['langue_site'] + : $GLOBALS['langue_rubrique']; + } $pret = true; } + $id_article = $row['id_article']; + if ($chercher_logo) { if ($logo = $chercher_logo($id_article, 'id_article', 'on')) { list($fid, $dir, $nom, $format) = $logo; @@ -62,22 +70,19 @@ function inc_formater_article($id_article, $row, $afficher_auteurs, $afficher_la . (!$logo ? '' : ("<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>" . $logo . "</div>")) . typo($titre) - . (!($afficher_langue AND $lang != $langue_defaut) ? '' : + . (!($afficher_langue AND $lang != $GLOBALS['meta']['langue_site']) ? '' : (" <font size='1' color='#666666'$dir_lang>(".traduire_nom_langue($lang).")</font>")) . (!$row['petition'] ? '' : (" <font size=1 color='red'>"._T('lien_petitions')."</font>")) . "</a>" . "</div>"; - if ($afficher_auteurs) { - - $result = auteurs_article($id_article); - $les_auteurs = ""; - while ($r = spip_fetch_array($result)) { - list($s, $mail, $nom, $w, $p) = $formater_auteur($r['id_auteur']); - $les_auteurs .= "$mail $nom, "; - } - $vals[] = substr($les_auteurs, 0, -2); - } else $vals[]= ' '; + $result = auteurs_article($id_article); + $les_auteurs = ""; + while ($r = spip_fetch_array($result)) { + list($s, $mail, $nom, $w, $p) = $formater_auteur($r['id_auteur']); + $les_auteurs .= "$mail $nom, "; + } + $vals[] = substr($les_auteurs, 0, -2); $s = affdate_jourcourt($date); $vals[] = $s ? $s : ' '; diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php index 9f6d88cd63ce95c6793a8c01ed6907793e20a68a..87cee9e233df1d7b5a60567f3decb4fb2f08585e 100644 --- a/ecrire/inc/presentation.php +++ b/ecrire/inc/presentation.php @@ -685,191 +685,120 @@ function afficher_script_statut($id, $type, $n, $img, $statut, $title, $act) // Afficher tableau d'articles // // http://doc.spip.org/@afficher_articles -function afficher_articles($titre_table, $requete, $afficher_visites = false, $afficher_auteurs = true, $obligatoire = false, $afficher_cadre = true, $afficher_descriptif = true) { +function afficher_articles($titre_table, $requete, $formater_article='') { - global $connect_id_auteur, $connect_statut, $dir_lang; - global $options, $spip_display; - global $spip_lang_left, $spip_lang_right; + global $options; if (!isset($requete['FROM'])) $requete['FROM'] = 'spip_articles AS articles'; + + if (!isset($requete['SELECT'])) { + $requete['SELECT'] = "articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date, articles.lang, articles.id_trad, articles.descriptif"; + } + + if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = ''; + // memo des arguments en base pour gérer l'affichage par tranche // et/ou par langues. - $hash = "0x".substr(md5($connect_id_auteur. serialize($requete) . $titre_table), 0, 31); + $hash = "0x".substr(md5(serialize($requete) . $GLOBALS['meta']['gerer_trad'] . $titre_table), 0, 31); $tmp_var = 't' . substr($hash, 2, 7); - $res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur LIMIT 1"); + // le champ id_auteur sert finalement a memoriser le nombre de lignes + // (a renommer) + + $res_proch = spip_query("SELECT id_ajax_fonc, id_auteur FROM spip_ajax_fonc WHERE hash=$hash LIMIT 1"); if ($row = spip_fetch_array($res_proch)) { $id_ajax = $row["id_ajax_fonc"]; + $cpt = $row["id_auteur"]; } else { include_spip ('base/abstract_sql'); $variables = serialize(array( "param" => $tmp_var, "requete" => $requete, "titre_table" => $titre_table, - "afficher_visites" => $afficher_visites, - "afficher_auteurs" => $afficher_auteurs )); - $id_ajax = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, " . spip_abstract_quote($variables) . ", $hash, NOW())"); - } - - $activer_statistiques = $GLOBALS['meta']["activer_statistiques"]; - $afficher_visites = ($afficher_visites AND $connect_statut == "0minirezo" AND $activer_statistiques != "non"); - $afficher_langue = false; - $langue_defaut = $GLOBALS['meta']['langue_site']; - // Preciser la requete (alleger les requetes) - if (!isset($requete['SELECT'])) { - $requete['SELECT'] = "articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date, articles.lang"; - - if (($GLOBALS['meta']['multi_rubriques'] == 'oui' AND (!isset($GLOBALS['id_rubrique']))) OR $GLOBALS['meta']['multi_articles'] == 'oui') { - $afficher_langue = true; - if (isset($GLOBALS['langue_rubrique'])) $langue_defaut = $GLOBALS['langue_rubrique']; - $requete['SELECT'] .= ", articles.lang"; + $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : ''))); + if (!$cpt = $cpt['n']) return '' ; + + if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt); + $id_ajax = spip_abstract_insert("spip_ajax_fonc", "(variables, hash, id_auteur, date)", "(" . spip_abstract_quote($variables) . ", $hash, $cpt, NOW())"); } - if ($afficher_visites) - $requete['SELECT'] .= ", articles.visites, articles.popularite"; - if ($afficher_descriptif) - $requete['SELECT'] .= ", articles.descriptif"; - } - - if ($options == "avancees") $ajout_col = 1; - else $ajout_col = 0; - - if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = ''; - - $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : ''))); - if (! ($obligatoire OR ($cpt = $cpt['n']))) return '' ; - if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt); $nb_aff = floor(1.5 * _TRANCHES); $deb_aff = intval(_request($tmp_var)); - $requete['FROM'] = preg_replace("/(spip_articles AS \w*)/", "\\1 LEFT JOIN spip_petitions AS petitions USING (id_article)", $requete['FROM']); $requete['SELECT'] .= ", petitions.id_article AS petition "; - if ($cpt > $nb_aff) { - $nb_aff = (_TRANCHES); - $tranches = afficher_tranches_requete($cpt, $afficher_auteurs ? 4 + $ajout_col : 3 + $ajout_col, $tmp_var, generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax"), $nb_aff); - - } else $tranches = ''; - - $result = spip_query("SELECT " . $requete['SELECT'] . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999"))); - + if (!function_exists($formater_article)) + $formater_article = charger_fonction('formater_article', 'inc'); + return afficher_articles_trad($titre_table, $requete, $formater_article, $tmp_var, $id_ajax, $cpt); +} - $table = array(); - $formater_article = charger_fonction('formater_article', 'inc'); +// http://doc.spip.org/@afficher_articles_trad +function afficher_articles_trad($titre_table, $requete, $formater_article, $tmp_var, $id_ajax, $cpt) { - while ($row = spip_fetch_array($result)) { - $id = $row['id_article']; - $table[]= $formater_article($id, $row, $afficher_auteurs, $afficher_langue, $langue_defaut); - } - spip_free_result($result); + global $options, $spip_lang_right; - if ($options == "avancees") { // Afficher le numero (JMB) - if ($afficher_auteurs) { - $largeurs = array(11, '', 80, 100, 50); - $styles = array('', 'arial2', 'arial1', 'arial1', 'arial1'); - } else { - $largeurs = array(11, '', 100, 50); - $styles = array('', 'arial2', 'arial1', 'arial1'); - } + if (!$formater_article) { + $formater_article = 'afficher_articles_trad_boucle'; + $largeurs = array(11, 24, '', '1'); + $styles = array('', 'arial1', 'arial1', ''); + $icone = "langues-off-12.gif"; + $trad =0; } else { - if ($afficher_auteurs) { - $largeurs = array(11, '', 100, 100); - $styles = array('', 'arial2', 'arial1', 'arial1'); + if ($options == "avancees") { // Afficher le numero (JMB) + $largeurs = array(11, '', 80, 100, 50); + $styles = array('', 'arial2', 'arial1', 'arial1', 'arial1'); } else { - $largeurs = array(11, '', 100); - $styles = array('', 'arial2', 'arial1'); + $largeurs = array(11, '', 100, 100); + $styles = array('', 'arial2', 'arial1', 'arial1'); } + $icone = 'langues-12.gif'; + $trad = 1; } - $res = afficher_article_logo_trad($titre_table, $tranches, $largeurs, $table, $styles, $tmp_var, $id_ajax, 1); + $nb_aff = floor(1.5 * _TRANCHES); + $deb_aff = intval(_request($tmp_var)); - return ajax_action_greffe($tmp_var,$res); -} + if ($cpt > $nb_aff) { + $nb_aff = (_TRANCHES); + $tranches = afficher_tranches_requete($cpt, count($largeurs), $tmp_var, generer_url_ecrire('memoriser', "id_ajax_fonc=$id_ajax&trad=$trad"), $nb_aff); + } else $tranches = ''; + + $q = spip_query("SELECT " . $requete['SELECT'] . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999"))); + $t = array(); + while ($r = spip_fetch_array($q)) $t[]= $formater_article($r); + spip_free_result($q); -function afficher_article_logo_trad($titre, $tranches, $largeurs, $table, $styles, $tmp_var, $id_ajax, $queltrad) -{ - global $spip_lang_right; - $icone = $queltrad ? "langues-off-12.gif" : 'langues-12.gif'; $style = "style='visibility: hidden; float: $spip_lang_right'"; $texte = http_img_pack("searching.gif", "*", $style . " id='img_$tmp_var'"); if (($GLOBALS['meta']['gerer_trad'] == "oui")) { - $url= generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax&trad=$queltrad"); + $url= generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax&trad=$trad"); $texte .= "\n<div style='float: $spip_lang_right;'><a href=\"#\"\nonclick=\"return charger_id_url('$url','$tmp_var');\">" . "<img\nsrc='". _DIR_IMG_PACK . $icone ."' /></a></div>"; } - $texte .= '<b>' . $titre . '</b>'; + $texte .= '<b>' . $titre_table . '</b>'; - return "\n<div style='height: 12px;'></div>" + $res = "\n<div style='height: 12px;'></div>" . "\n<div class='liste'>" . bandeau_titre_boite2($texte, "article-24.gif", 'white', 'black',false) . afficher_liste_debut_tableau() . $tranches - . afficher_liste($largeurs, $table, $styles) + . afficher_liste($largeurs, $t, $styles) . afficher_liste_fin_tableau() . "</div>\n"; -} - -// http://doc.spip.org/@afficher_articles_trad -function afficher_articles_trad($tmp_var, $id_ajax, $titre_table, - $requete, $afficher_visites = false, -$afficher_auteurs= true, $obligatoire = false, $afficher_cadre = true, $afficher_descriptif = true) { - - global $connect_id_auteur, $connect_statut, $dir_lang; - global $options, $spip_lang_left, $spip_lang_right; - - if (!$requete['FROM']) $requete['FROM']= 'spip_articles AS articles'; - - $langues_site = explode(',', $GLOBALS['meta']['langues_multilingue']); - $activer_statistiques = $GLOBALS['meta']["activer_statistiques"]; - $afficher_visites = ($afficher_visites AND $connect_statut == "0minirezo" AND $activer_statistiques != "non"); - - // Preciser la requete (alleger les requetes) - if (!$requete['SELECT']) { - $requete['SELECT'] = "articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date, articles.id_trad, articles.lang"; - } - - if ($options == "avancees") $ajout_col = 1; - else $ajout_col = 0; - - $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : ''))); - if (! ($obligatoire OR ($cpt = $cpt['n']))) return ''; - if ($requete['LIMIT']) $cpt = min($requete['LIMIT'], $cpt); - - $nb_aff = floor(1.5 * _TRANCHES); - $deb_aff = intval(_request($tmp_var)); - - if ($cpt > $nb_aff) { - $nb_aff = (_TRANCHES); - $tranches = afficher_tranches_requete($cpt, 4, $tmp_var, generer_url_ecrire('memoriser', "id_ajax_fonc=$id_ajax&trad=1"), $nb_aff); - } else $tranches = ''; - - $result = spip_query("SELECT " . $requete['SELECT'] . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999"))); - - $table = array(); - while ($row = spip_fetch_array($result)) { - $table[]=afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $langues_site); - } - spip_free_result($result); - - $largeurs = array(11, 24, '', '1'); - $styles = array('', 'arial1', 'arial1', ''); - - $res = afficher_article_logo_trad($titre_table, $tranches, $largeurs, $table, $styles, $tmp_var, $id_ajax, 0); - - return $res; + return ajax_action_greffe($tmp_var,$res); } // http://doc.spip.org/@afficher_articles_trad_boucle -function afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $langues_site) +function afficher_articles_trad_boucle($row) { global $dir_lang, $spip_lang_right; @@ -883,7 +812,6 @@ function afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $ $id_trad = $row['id_trad']; $lang = $row['lang']; - // La petite puce de changement de statut $vals[] = puce_statut_article($id_article, $statut, $id_rubrique); @@ -892,20 +820,32 @@ function afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $ $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; } - reset($langues_site); + + // faudrait sortir ces invariants de boucle + + if (($GLOBALS['meta']['multi_rubriques'] == 'oui' AND (!isset($GLOBALS['id_rubrique']))) OR $GLOBALS['meta']['multi_articles'] == 'oui') { + $afficher_langue = true; + $langue_defaut = isset($GLOBALS['langue_rubrique']) + ? $GLOBALS['meta']['langue_site'] + : $GLOBALS['langue_rubrique']; + } + $span_lang = false; - while (list(,$k) = each($langues_site)) { + + foreach(explode(',', $GLOBALS['meta']['langues_multilingue']) as $k){ if ($langues_art[$k]) { if ($langues_art[$k] == $id_trad) { $span_lang = "<a href='" . generer_url_ecrire("articles","id_article=".$langues_art[$k]) . "'><span class='lang_base'>$k</span></a>"; @@ -938,6 +878,7 @@ function afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $ 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>";