diff --git a/.gitattributes b/.gitattributes index 364274721a7fd6060aefd5ff1d923854f46c1d55..a82cbfaf7507fb45ed88097c95835a6c20ef8797 100644 --- a/.gitattributes +++ b/.gitattributes @@ -133,6 +133,7 @@ ecrire/img_pack/jauge-rouge.gif -text ecrire/img_pack/jauge-vert.gif -text ecrire/img_pack/langues-12.gif -text ecrire/img_pack/langues-24.gif -text +ecrire/img_pack/langues-modif-12.gif -text ecrire/img_pack/langues-off-12.gif -text ecrire/img_pack/logo-spip.gif -text ecrire/img_pack/m_envoi.gif -text diff --git a/ecrire/img_pack/langues-modif-12.gif b/ecrire/img_pack/langues-modif-12.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4c9ef95e09863f81b92d845b755604f416f6da8 Binary files /dev/null and b/ecrire/img_pack/langues-modif-12.gif differ diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3 index 868853a8925bcb899e63370339e85000725a316a..aeb44d416b01e3c67bf1c6067a09929bc05020bd 100644 --- a/ecrire/inc_presentation.php3 +++ b/ecrire/inc_presentation.php3 @@ -1423,6 +1423,7 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr if ($rubrique == "asuivre"){ icone_bandeau_secondaire (_T('icone_a_suivre'), "index.php3", "asuivre-24.gif", "asuivre", $sous_rubrique); icone_bandeau_secondaire (_T('icone_site_entier'), "articles_tous.php3", "tout-site-24.gif", "tout-site", $sous_rubrique); + icone_bandeau_secondaire (_T('icone_etat_traductions'), "plan_trad.php3", "langues-24.gif", "plan-trad", $sous_rubrique); } else if ($rubrique == "documents"){ icone_bandeau_secondaire (_T('icone_rubriques'), "naviguer.php3", "rubrique-24.gif", "rubriques", $sous_rubrique); diff --git a/ecrire/lang/spip_fr.php3 b/ecrire/lang/spip_fr.php3 index de61a605ca8abf59ae002d466b0f38f4144aa6b2..4e413dde4294acc1d8ce4b00e35837fd9376d35f 100644 --- a/ecrire/lang/spip_fr.php3 +++ b/ecrire/lang/spip_fr.php3 @@ -395,6 +395,7 @@ Merci de votre participation 'icone_ecrire_nouvel_article' => 'Les brèves contenues dans cette rubrique', 'icone_edition_site' => 'Édition du site', 'icone_envoyer_message' => 'Envoyer ce message', +'icone_etat_traductions' => 'État des traductions', 'icone_evolution_visites' => 'Évolution des visites<br>@visites@ visites@aff_ref@', 'icone_evolution_visites_2' => 'Evolution des visites', 'icone_forum_administrateur' => 'Forum des administrateurs', @@ -1446,6 +1447,16 @@ réinstallation de SPIP pour recréer une nouvelle base ainsi qu\'un 'texte_nouvelle_version_spip_1' => 'Vous avez installé une nouvelle version de SPIP.', 'texte_nouvelle_version_spip_2' => 'Cette nouvelle version nécessite une mise à jour plus complète qu\'à l\'accoutumée. Si vous êtes webmestre du site, veuillez effacer le fichier <tt>inc_connect.php3</tt> du répertoire <tt>ecrire</tt> et reprendre l\'installation afin de mettre à jour vos paramètres de connexion à la base de données.<p> (NB. : si vous avez oublié vos paramètres de connexion, jetez un oeil au fichier <tt>inc_connect.php3</tt> avant de le supprimer...)', 'texte_operation_echec' => 'Retournez à la page précédente, sélectionnez une autre base ou créez-en une nouvelle. Vérifiez les informations fournies par votre hébergeur.', +'texte_plan_trad' => 'Cette page vous permet de visualiser l\'état des traductions pour la langue choisie. + La page affiche les articles dont la traduction est en cours, les articles dont la traduction doit être mise à jour, + ainsi que les articles qui n\'ont pas encore été traduits. ', +'texte_plan_trad_en_cours' => 'Ce symbole indique qu\'un article est en cours de traduction : cela veut dire qu\'une traduction + a été commencée mais n\'est pas encore publiée. Cliquez sur le symbole pour accéder + à la traduction. ', +'texte_plan_trad_modif' => 'Ce symbole indique que des modifications ont été apportées à + un article déjà traduit. Dans ce cas il est conseillé de mettre à jour la + traduction en fonction des modifications apportées à l\'article original. ', +'texte_plan_trad_note' => 'Note : seuls les articles publiés sont affichés dans cette page.', 'texte_plus_trois_car' => 'plus de 3 caractères', 'texte_plusieurs_articles' => 'Plusieurs auteurs trouvés pour "@cherche_auteur@":', 'texte_port_annuaire' => '(La valeur indiquée par défaut convient généralement.)', @@ -1557,6 +1568,7 @@ avez fait des modifications importantes de graphisme ou de structure du site.', 'titre_breve_refusee' => 'Brève refusée', 'titre_breves' => 'Les brèves', 'titre_cadre_afficher_article' => 'Afficher les articles', +'titre_cadre_afficher_traductions' => 'Afficher l\'état des traductions pour cette langue', 'titre_cadre_ajouter_auteur' => 'AJOUTER UN AUTEUR :', 'titre_cadre_forum_administrateur' => 'Forum privé des administrateurs', 'titre_cadre_forum_interne' => 'Forum interne', @@ -1613,6 +1625,7 @@ avez fait des modifications importantes de graphisme ou de structure du site.', 'titre_page_controle_petition' => 'Suivi des pétitions', 'titre_page_delete_all' => 'suppression totale et irréversible', 'titre_page_documents_liste' => 'Les documents des rubriques', +'titre_page_etat_traductions' => 'État des traductions', 'titre_page_forum' => 'Forum des administrateurs', 'titre_page_forum_envoi' => 'Envoyer un message', 'titre_page_forum_suivi' => 'Suivi des forums', diff --git a/ecrire/plan_trad.php3 b/ecrire/plan_trad.php3 new file mode 100644 index 0000000000000000000000000000000000000000..81c042433eddc4c2cdde08ee137e933e7f54370c --- /dev/null +++ b/ecrire/plan_trad.php3 @@ -0,0 +1,215 @@ +<?php + +include ("inc.php3"); + +debut_page(_T('titre_page_etat_traductions'), "asuivre", "plan-trad"); +debut_gauche(); + +if (!$trad_lang) $trad_lang = $spip_lang; + + +//debut_cadre_relief('langues-24.gif'); +echo "<p>"; +debut_cadre_formulaire(); + +$link = new Link(); + +echo "<font face='Arial,Sans,sans-serif'>"; +echo _T('titre_cadre_afficher_traductions')." : <p>"; +echo menu_langues('trad_lang', $trad_lang); +echo "</font>"; + +//fin_cadre_relief(); +fin_cadre_formulaire(); + + +debut_boite_info(); + +echo _T('texte_plan_trad'); + +echo "<p>"."<IMG SRC='img_pack/langues-off-12.gif' WIDTH='12' HEIGHT='12' BORDER='0'> "._T('texte_plan_trad_en_cours'); + +echo "<p>"."<IMG SRC='img_pack/langues-modif-12.gif' WIDTH='12' HEIGHT='12' BORDER='0'> "._T('texte_plan_trad_modif'); + +echo "<p><i>"._T('texte_plan_trad_note')."</i>"; + +fin_boite_info(); + + +debut_droite(); + + +function afficher_rubrique($id_parent, $marge = 0, $cond = '', $afficher = true) { + global $deplier; + global $liste_rubs; + global $trad_lang; + global $couleur_foncee; + global $dir_lang; + static $total_articles = 0; + static $rubriques_actives; + + if (!$rubriques_actives) { + $rubriques_actives[0] = true; + + $query = "SELECT DISTINCT a.id_rubrique ". + "FROM spip_articles AS a LEFT JOIN spip_articles AS t ". + "ON (a.id_article = t.id_trad AND t.lang = '$trad_lang') ". + "WHERE a.statut='publie' AND a.lang!='$trad_lang' AND (a.id_trad=0 OR a.id_trad=a.id_article) ". + "AND (t.id_article IS NULL OR t.statut!='publie' OR t.date_modif < a.date_modif)"; + $result = spip_query($query); + while ($row = spip_fetch_array($result)) { + $rubriques_actives[$row['id_rubrique']] = true; + } + } + + if (!$cond) $cond = array(); + $vide = !$rubriques_actives[$id_parent]; + if (!$vide) { + echo $cond['avant']; + } + + // + // Afficher les articles a traduire + // + + if ($id_parent AND !$vide AND $afficher) { + $query = "SELECT a.id_article, a.titre, a.date, a.descriptif, a.lang, t.id_article AS trad_id_article, t.statut AS trad_statut, (t.date_modif >= a.date_modif) AS trad_a_jour ". + "FROM spip_articles AS a LEFT JOIN spip_articles AS t ". + "ON (a.id_article = t.id_trad AND t.lang = '$trad_lang') ". + "WHERE a.id_rubrique=$id_parent AND a.statut='publie' AND a.lang!='$trad_lang' AND (a.id_trad=0 OR a.id_trad=a.id_article) ". + "AND (t.id_article IS NULL OR t.statut!='publie' OR t.date_modif < a.date_modif) ". + "ORDER BY t.statut='publie' DESC, trad_a_jour DESC, a.titre"; + $result = spip_query($query); + + $table = ''; + + while ($row = spip_fetch_array($result)) { + $total_articles ++; + if ($lang = $row['lang']) changer_typo($lang); + $id_article = $row['id_article']; + $titre = typo($row['titre']); + $date = $row['date']; + $id_article_traduit = $row['trad_id_article']; + $statut_traduit = $row['trad_statut']; + $a_jour = $row['trad_a_jour']; + $descriptif = $row['descriptif']; + if ($descriptif) $descriptif = ' title="'.attribut_html(typo($descriptif)).'"'; + + $vals = ''; + + $popularite = ceil(min(100,100 * $row['popularite'] / max(1, 0 + lire_meta('popularite_max')))); + $petition = $row['petition']; + + $s = ""; + if ($id_article_traduit) { + $s .= "<a href='articles.php3?id_article=$id_article_traduit'>"; + if ($a_jour AND $statut_traduit == 'publie') { + $puce = 'langues-12.gif'; + $puce_title = "Traduction à jour"; + } + else if ($statut_traduit == 'publie') { + $puce = 'langues-modif-12.gif'; + $puce_title = "L'article original a été modifié, la traduction n'est plus à jour"; + } + else { + $puce = 'langues-off-12.gif'; + $puce_title = "Traduction en cours"; + } + $s .= "<img src='img_pack/$puce' width='12' height='12' border='0' title=\"".attribut_html($puce_title)."\">"; + $s .= "</a> "; + } + + $s .= "<a href=\"articles.php3?id_article=$id_article\"$descriptif><span $dir_lang>".typo($titre)."</span></a>"; + $s .= " <font size='1' color='#666666'>(".traduire_nom_langue($lang).")</font>"; + + $vals[] = $s; + + $s = affdate($date); + $vals[] = $s; + + $table[] = $vals; + } + spip_free_result($result); + + if ($table) { + echo "<table width=100% cellpadding=0 cellspacing=0 border=0><tr><td width=100% background=''>"; + echo "<table width=100% cellpadding=3 cellspacing=0 border=0>"; + $largeurs = array('', 90); + $styles = array('arial2', 'arial1'); + afficher_liste($largeurs, $table, $styles); + echo "</table></td></tr></table>"; + } + } + + if (!$vide) + echo $cond['apres']; + + // + // Parcourir les sous-rubriques + // + + if ($vide OR $afficher) { + $query_parent = "SELECT id_rubrique, titre FROM spip_rubriques WHERE id_parent=$id_parent ORDER BY titre"; + $result_parent = spip_query($query_parent); + + while ($row_parent = spip_fetch_array($result_parent)) { + $id_rubrique = $row_parent['id_rubrique']; + $titre_rubrique = typo($row_parent['titre']); + + if ($deplier == 'oui') + $afficher_fils = !$liste_rubs[$id_rubrique]; + else if ($deplier == 'non') + $afficher_fils = $liste_rubs[$id_rubrique]; + else $afficher_fils = ($total_articles < 30) || $liste_rubs[$id_rubrique]; + + $rubs = $liste_rubs; + if ($rubs[$id_rubrique]) + unset($rubs[$id_rubrique]); + else + $rubs[$id_rubrique] = $id_rubrique; + $lien = new Link(); + $lien->addVar('rubs', join(',', $rubs)); + + $bandeau = "<div style='width: 100%; margin: 0px; padding: 3px; border: none; background: $couleur_foncee;'>\n" . + "<b><a href='".$lien->getUrl()."'><img src='img_pack/".($afficher_fils ? 'triangle-bleu-bas.gif' : 'triangle-bleu.gif')."' alt='' width='14' height='14' border='0'></a> ". + "<a href='naviguer.php3?coll=$id_rubrique'><font color='white' face='Verdana,Arial,Sans,sans-serif'>$titre_rubrique</font></a></b>\n". + "</div>\n"; + + if ($afficher) { + $cond_fils['avant'] = "<div style='margin: 0px; margin-left: ".$marge."px; padding: 0px; background: none;'>\n".$bandeau; + $cond_fils['apres'] = "</div>\n"; + if (!$id_parent) $cond_fils['avant'] = "<p>".$cond_fils['avant']; + } + if ($vide) { + $cond_fils['avant'] = $cond['avant'].$cond['apres'].$cond_fils['avant']; + } + afficher_rubrique($id_rubrique, $marge + 20, $cond_fils, $afficher_fils); + } + } +} + + +echo "<p>"; +$lien = new Link(); +$lien->delVar('rubs'); +$lien->addVar('deplier', 'oui'); +echo "<a href='".$lien->getUrl()."'>"._T('lien_tout_deplier')."</a>"; +$lien->addVar('deplier', 'non'); +echo " | <a href='".$lien->getUrl()."'>"._T('lien_tout_replier')."</a>"; +echo "<p>"; + +$liste_rubs = array(); +if ($rubs) { + $t = explode(',', $rubs); + while (list(, $rub) = each($t)) { + $liste_rubs[$rub] = $rub; + } +} + +afficher_rubrique(0); + + +fin_page(); + +?> + diff --git a/ecrire/spip_style.php3 b/ecrire/spip_style.php3 index f3d198589cb22a124f1e37dfaeee890917d63066..de3db536f962d1a0d9a8e4307ee1173c6599a3b4 100644 --- a/ecrire/spip_style.php3 +++ b/ecrire/spip_style.php3 @@ -217,17 +217,17 @@ td { -moz-border-radius: 5px; } .cellule36 a span, .cellule48 a span { - color: #666666; display: block; margin: 2px; + color: #666666; display: block; margin: 1px; filter: DropShadow(Color=white, OffX=1, OffY=1, Positive=1) DropShadow(Color=#cccccc, OffX=-1, OffY=-1, Positive=1); - width: 100% + width: 100%; } .cellule36 a:hover span, .cellule48 a:hover span { - color: #000000; display: block; margin: 2px; + color: #000000; display: block; margin: 1px; filter: DropShadow(Color=white, OffX=1, OffY=1, Positive=1) DropShadow(Color=#cccccc, OffX=-1, OffY=-1, Positive=1); width: 100%; } .cellule36 a.selection span, .cellule48 a.selection span { - color: #000000; display: block; margin: 2px; + color: #000000; display: block; margin: 1px; filter: DropShadow(Color=white, OffX=-1, OffY=-1, Positive=1) DropShadow(Color=#cccccc, OffX=1, OffY=1, Positive=1); width: 100%; }