From 0fa5151cbaf4a7232193de5d58cf1fa0f67a77aa Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sun, 11 Apr 2004 00:40:14 +0000 Subject: [PATCH] blocs multis --- ecrire/articles.php3 | 8 ++--- ecrire/inc_filtres.php3 | 68 ++++++++++++++++++++++++++++++++++++++++ ecrire/inc_mots.php3 | 10 +++--- ecrire/inc_texte.php3 | 9 ++++-- ecrire/lang/spip_fr.php3 | 2 +- ecrire/mots_tous.php3 | 4 +-- 6 files changed, 86 insertions(+), 15 deletions(-) diff --git a/ecrire/articles.php3 b/ecrire/articles.php3 index 2320a11bd6..b8f8a59e1b 100644 --- a/ecrire/articles.php3 +++ b/ecrire/articles.php3 @@ -851,7 +851,7 @@ if ($flag_editable AND $options == 'avancees') { } else { echo "<TABLE CELLPADDING=5 CELLSPACING=0 BORDER=0 WIDTH=100% BACKGROUND=''>"; - echo "<TR><TD BGCOLOR='$couleur_foncee'><FONT SIZE=1 COLOR='#FFFFFF' face='Verdana,Arial,Sans,sans-serif'><b>"._T('texte_date_creation_article')." : "; + echo "<TR><TD BGCOLOR='$couleur_foncee'><FONT SIZE=1 COLOR='#FFFFFF' face='Verdana,Arial,Sans,sans-serif'><b>"._T('texte_date_creation_article'); echo majuscules(affdate($date))."</font></B></FONT>".aide('artdate')."</TD></TR>"; echo "</TABLE>"; } @@ -962,7 +962,7 @@ if ($cherche_auteur) { $email_auteur = $row['email']; $bio_auteur = $row['bio']; - echo "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>$nom_auteur</FONT></B>"; + echo "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>".typo($nom_auteur)."</FONT></B>"; echo "</FONT>\n"; } echo "</UL>"; @@ -983,13 +983,13 @@ if ($cherche_auteur) { $email_auteur = $row['email']; $bio_auteur = $row['bio']; - echo "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>$nom_auteur</FONT></B>"; + echo "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>".typo($nom_auteur)."</FONT></B>"; if ($email_auteur) echo " ($email_auteur)"; echo " | <A HREF=\"articles.php3?id_article=$id_article&ajout_auteur=oui&nouv_auteur=$id_auteur#auteurs\">"._T('lien_ajouter_auteur')."</A>"; if (trim($bio_auteur)) { - echo "<BR><FONT SIZE=1>".propre(couper($bio_auteur, 100))."</FONT>\n"; + echo "<BR><FONT SIZE=1>".couper(propre($bio_auteur), 100)."</FONT>\n"; } echo "</FONT><p>\n"; } diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index 33948db5a6..6eda70a8d2 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -681,4 +681,72 @@ function post_autobr($texte, $delim="\n_ ") { return $texte; } +// +// Gestion des blocs multilingues +// + +// renvoie la traduction d'un bloc multi dans la langue demandee +function multi_trad ($lang, $trads) { + // si la traduction existe, genial + if (isset($trads[$lang])) + $retour = $trads[$lang]; + + // sinon, renvoyer la premiere du tableau + // remarque : on pourrait aussi appeler un service de traduction externe + else { + list (,$trad) = each($trads); + $retour = $trad; + } + + + // dans l'espace prive, mettre un popup multi + if ($GLOBALS['flag_ecrire']) { + $retour = ajoute_popup_multi($trads, $retour); + } + + return $retour; +} + +// analyse un bloc multi +function extraire_trad ($langue_demandee, $bloc) { + $lang = ''; + + while (preg_match("/^(.*?)\[([a-z_]+)\]/si", $bloc, $regs)) { + $texte = trim($regs[1]); + if ($texte OR $lang) + $trads[$lang] = $texte; + $bloc = substr($bloc, strlen($regs[0])); + $lang = $regs[2]; + } + $trads[$lang] = $bloc; + + // faire la traduction avec ces donnees + return multi_trad($langue_demandee, $trads); +} + +// repere les blocs multi dans un texte et extrait le bon +function extraire_multi ($letexte) { + global $flag_pcre; + + if ($flag_pcre AND preg_match_all("@<multi>(.*?)</multi>@si", $letexte, $regs, PREG_SET_ORDER)) { + foreach($regs as $reg) { + $letexte = str_replace($reg[0], extraire_trad($GLOBALS['spip_lang'], $reg[1]), $letexte); + } + } + return $letexte; +} + +// popup des blocs multi dans l'espace prive (a ameliorer) +function ajoute_popup_multi($trads, $texte) { + global $popups_multi, $compteur_multi; + while (list($lang,$bloc) = each($trads)) + $popup .= "[$lang] ".supprimer_tags(couper($bloc,20))."\n"; + + if ($popup) { + $texte .= " <img src=\"img_pack/langues-modif-12.gif\" alt=\"(multi)\" title=\"$popup\" height=\"12\" width=\"12\" border=\"0\" />"; + } + + return $texte; +} + ?> diff --git a/ecrire/inc_mots.php3 b/ecrire/inc_mots.php3 index 1db0ceab25..b73492c919 100644 --- a/ecrire/inc_mots.php3 +++ b/ecrire/inc_mots.php3 @@ -159,7 +159,7 @@ function formulaire_mots($table, $id_objet, $nouv_mot, $supp_mot, $cherche_mot, $type_mot = $row['type']; $descriptif_mot = $row['descriptif']; - echo "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>$titre_mot</FONT></B>"; + echo "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>".typo($titre_mot)."</FONT></B>"; echo "</FONT>\n"; } echo "</UL>"; @@ -180,7 +180,7 @@ function formulaire_mots($table, $id_objet, $nouv_mot, $supp_mot, $cherche_mot, $type_mot = $row['type']; $descriptif_mot = $row['descriptif']; - echo "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>$titre_mot</FONT></B>"; + echo "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>".typo($titre_mot)."</FONT></B>"; if ($type_mot) echo " ($type_mot)"; echo " | <A HREF=\"$url_base&nouv_mot=$id_mot#mots\">"._T('info_ajouter_mot')."</A>"; @@ -295,7 +295,7 @@ function formulaire_mots($table, $id_objet, $nouv_mot, $supp_mot, $cherche_mot, $result_autres_mots = spip_query($query_autres_mots); while ($row_autres = spip_fetch_array($result_autres_mots)) { $le_mot = $row_autres['id_mot']; - $le_titre_mot = supprimer_tags($row_autres['titre']); + $le_titre_mot = supprimer_tags(typo($row_autres['titre'])); if ($le_mot == $id_mot) $selected = "SELECTED"; else $selected = ""; @@ -307,7 +307,7 @@ function formulaire_mots($table, $id_objet, $nouv_mot, $supp_mot, $cherche_mot, echo "</form>"; } else { - echo "<A HREF='$url'>$titre_mot</A>"; + echo "<A HREF='$url'>".typo($titre_mot)."</A>"; } echo "</TD>"; @@ -437,7 +437,7 @@ function formulaire_mots($table, $id_objet, $nouv_mot, $supp_mot, $cherche_mot, while($row = spip_fetch_array($result)) { $id_mot = $row['id_mot']; $titre_mot = $row['titre']; - $texte_option = entites_html($titre_mot); + $texte_option = entites_html(supprimer_tags(typo($titre_mot))); echo "\n<OPTION VALUE=\"$id_mot\">"; echo " "; echo $texte_option; diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3 index 91a462788a..ce4c83792c 100644 --- a/ecrire/inc_texte.php3 +++ b/ecrire/inc_texte.php3 @@ -132,9 +132,10 @@ function nettoyer_chapo($chapo){ // points d'entree de pre- et post-traitement pour propre() et typo() function spip_avant_propre ($letexte) { + $letexte = extraire_multi($letexte); + if (@function_exists('avant_propre')) return avant_propre ($letexte); - return $letexte; } @@ -146,6 +147,8 @@ function spip_apres_propre ($letexte) { } function spip_avant_typo ($letexte) { + $letexte = extraire_multi($letexte); + if (@function_exists('avant_typo')) return avant_typo ($letexte); @@ -914,7 +917,7 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = ' /* 11 */ "/(<br[[:space:]]*\/?".">){2,}/", /* 12 */ "/<p>([\n]*)(<br[[:space:]]*\/?".">)+/", /* 13 */ "/<p>/", - /* 14 */ "/\n/", + /* 14 "/\n/", */ /* 15 */ "/<quote>/", /* 16 */ "/<\/quote>/" ); @@ -933,7 +936,7 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = ' /* 11 */ "<p class=\"spip\">", /* 12 */ "<p class=\"spip\">", /* 13 */ "<p class=\"spip\">", - /* 14 */ " ", + /* 14 " ", */ /* 15 */ "<blockquote class=\"spip\">", /* 16 */ "</blockquote>" ); diff --git a/ecrire/lang/spip_fr.php3 b/ecrire/lang/spip_fr.php3 index c14b8bca99..a211fd57bc 100644 --- a/ecrire/lang/spip_fr.php3 +++ b/ecrire/lang/spip_fr.php3 @@ -1438,7 +1438,7 @@ réinstallation de SPIP pour recréer une nouvelle base ainsi qu\'un automatique.', 'texte_creation_automatique_vignette' => 'La création automatique de vignettes de prévisualisation est activée sur ce site. Si vous installez à partir de ce formulaire des images au(x) format(s) @gd_formats@, elles seront accompagnées d\'une vignette d\'une taille maximale de @taille_preview@ pixels.', 'texte_creer_rubrique' => 'Avant de pouvoir écrire des articles,<BR> vous devez créer une rubrique.', -'texte_date_creation_article' => 'DATE DE CRÉATION DE L\'ARTICLE', +'texte_date_creation_article' => 'DATE DE CRÉATION DE L\'ARTICLE :', 'texte_date_publication_anterieure' => 'DATE DE PUBLICATION ANTÉRIEURE', 'texte_date_publication_anterieure_nonaffichee' => 'Ne pas afficher de date de publication antérieure.', 'texte_date_publication_article' => 'DATE DE PUBLICATION EN LIGNE :', diff --git a/ecrire/mots_tous.php3 b/ecrire/mots_tous.php3 index bc843ccad0..04ea61e967 100644 --- a/ecrire/mots_tous.php3 +++ b/ecrire/mots_tous.php3 @@ -248,9 +248,9 @@ while ($row_groupes = spip_fetch_array($result_groupes)) { echo "</TD>"; echo "<TD class='serif2'>"; if ($connect_statut == "0minirezo" OR $nb_articles[$id_mot] > 0) - echo "<A HREF='mots_edit.php3?id_mot=$id_mot&redirect=mots_tous.php3'>$titre_mot</A>"; + echo "<A HREF='mots_edit.php3?id_mot=$id_mot&redirect=mots_tous.php3'>".typo($titre_mot)."</A>"; else - echo "$titre_mot"; + echo typo($titre_mot); echo "</TD>"; echo "<TD ALIGN='right' class='verdana2'>"; -- GitLab