Skip to content
Extraits de code Groupes Projets
Valider c2e1eb2f rédigé par esj's avatar esj
Parcourir les fichiers

debut de mise en ajax du bloc de traductions

parent 886654eb
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -125,6 +125,7 @@ ecrire/exec/plonger.php -text
ecrire/exec/poster.php -text
ecrire/exec/recherche.php -text
ecrire/exec/rechercher.php -text
ecrire/exec/referencer_traduction.php -text
ecrire/exec/rubriquer.php -text
ecrire/exec/rubriques_edit.php -text
ecrire/exec/selectionner.php -text
......
......@@ -24,10 +24,19 @@ function action_referencer_traduction_dist() {
$arg = _request('arg');
if (!preg_match(",^(\d+)\D(\d+)$,", $arg, $r)) {
spip_log("action_referencer_traduction_dist $arg pas compris");
if (preg_match(",^(\d+)\D-(\d+)$,", $arg, $r)) {
// supprimer le lien de traduction
spip_query("UPDATE spip_articles SET id_trad=0 WHERE id_article=" . $r[1]);
// Verifier si l'ancien groupe ne comporte plus qu'un seul article. Alors mettre a zero.
$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_articles WHERE id_trad=" . $r[2]));
if ($cpt['n'] == 1)
spip_query("UPDATE spip_articles SET id_trad = 0 WHERE id_trad=" . $r[2]);
} elseif (preg_match(",^(\d+)\D(\d+)\D(\d+)$,", $arg, $r)) {
// modifier le groupe de traduction de $r[1] (SQL le trouvera)
spip_query("UPDATE spip_articles SET id_trad = " . $r[3] . " WHERE id_trad =" . $r[2]);
} else {
spip_query("UPDATE spip_articles SET id_trad = " . $r[2] . " WHERE id_trad =" . $r[1]);
spip_log("action_referencer_traduction_dist $arg pas compris");
}
}
?>
......@@ -20,6 +20,7 @@ include_spip('inc/date');
include_spip('inc/documents');
include_spip('inc/petition');
include_spip('exec/editer_auteurs');
include_spip('exec/referencer_traduction');
include_spip('exec/virtualiser');
include_spip('exec/discuter');
include_spip('base/abstract_sql');
......@@ -167,7 +168,7 @@ if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') {
if (($GLOBALS['meta']['multi_articles'] == 'oui')
OR (($GLOBALS['meta']['multi_rubriques'] == 'oui') AND ($GLOBALS['meta']['gerer_trad'] == 'oui'))) {
echo formulaire_traductions($id_article, $flag_editable, $id_rubrique, $id_trad, $trad_err);
echo formulaire_referencer_traduction($id_article, $id_rubrique, $id_trad, $flag_editable, $trad_err);
}
echo pipeline('affiche_milieu',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>''));
......@@ -604,149 +605,6 @@ function formulaire_dater($id_article, $flag_editable, $statut_article, $date, $
: "<div id='dater-$id_article'>$res</div>";
}
function formulaire_traductions($id_article, $flag_editable, $id_rubrique, $id_trad, $trad_err)
{
global $connect_statut, $couleur_claire, $options, $connect_toutes_rubriques, $spip_lang_right, $dir_lang;
$langue_article = spip_fetch_array(spip_query("SELECT lang FROM spip_articles WHERE id_article=$id_article"));
$langue_article = $langue_article['lang'];
if ($GLOBALS['meta']['gerer_trad'] == 'oui')
$titre_barre = _T('titre_langue_trad_article');
else
$titre_barre = _T('titre_langue_article');
if ($langue_article)
$titre_barre .= "&nbsp; (".traduire_nom_langue($langue_article).")";
$res = debut_cadre_enfonce('langues-24.gif', false, "", bouton_block_invisible('languesarticle,ne_plus_lier,lier_traductions').$titre_barre);
// Choix langue article
if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $flag_editable) {
$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
$langue_parent = $row['lang'];
if (!$langue_parent)
$langue_parent = $GLOBALS['meta']['langue_site'];
if (!$langue_article)
$langue_article = $langue_parent;
$res .= debut_block_invisible('languesarticle')
. debut_cadre_couleur('',true)
. "<div style='text-align: center;' id='instituer_langue_article-$id_article'>"
. menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent, redirige_action_auteur('instituer_langue_article', "$id_article-$id_rubrique","articles","id_article=$id_article"))
. "</div>\n"
. fin_cadre_couleur(true)
. fin_block();
}
if ($trad_err)
$res .= "<div><font color='red' size='2' face='verdana,arial,helvetica,sans-serif'>"._T('trad_deja_traduit'). "</font></div>";
// Afficher la liste des traductions
$table = !$id_trad ? array() : articles_traduction($id_article, $id_trad);
// bloc traductions
if (count($table) > 0) {
$largeurs = array(7, 12, '', 100);
$styles = array('', '', 'arial2', 'arial2');
$res .= "<div class='liste'>"
. bandeau_titre_boite2(_T('trad_article_traduction'),'', 'white', 'black', false)
. "<table width='100%' cellspacing='0' border='0' cellpadding='2'>"
. afficher_liste ($largeurs, $table, $styles)
. "</table>"
. "</div>";
}
// changer les globales $dir_lang etc
changer_typo($langue_article);
$res .= debut_block_invisible('lier_traductions')
. "<table width='100%'><tr>";
if ($flag_editable AND $options == "avancees" AND !$table) {
// Formulaire pour lier a un article
$res .= "<td class='arial2' width='60%'>"
. redirige_action_auteur("editer_article",
$id_article,
'articles',
"id_article=$id_article",
(_T('trad_lier') .
"<div align='$spip_lang_right'>\n<input type='text' class='fondl' name='lier_trad' size='5' />\n<input type='submit' VALUE='"._T('bouton_valider')."' CLASS='fondl' /></div>"),
" method='post' style='margin:0px; padding:0px;'")
. "</td>\n"
. "<td background='' width='10'> &nbsp; </td>"
. "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>"
. "<td background='' width='10'> &nbsp; </td>";
}
$res .= "<td>"
. icone_horizontale(_T('trad_new'), generer_url_ecrire("articles_edit","new=oui&lier_trad=$id_article&id_rubrique=$id_rubrique"), "traductions-24.gif", "creer.gif", false)
. "</td>";
if ($flag_editable AND $options == "avancees" AND $table) {
$res .= "<td background='' width='10'> &nbsp; </td>";
$res .= "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>";
$res .= "<td background='' width='10'> &nbsp; </td>";
$res .= "<td>";
$res .= icone_horizontale(_T('trad_delier'), redirige_action_auteur("supprimer_traduction","$id_article-$id_trad",'articles', "id_article=$id_article"), "traductions-24.gif", "supprimer.gif", false);
$res .= "</td>\n";
}
$res .= "</tr></table>"
. fin_block()
. fin_cadre_enfonce(true);
return $res;
}
// http://doc.spip.org/@articles_traduction
function articles_traduction($id_article, $id_trad)
{
global $connect_toutes_rubriques, $dir_lang;
$result_trad = spip_query("SELECT id_article, id_rubrique, titre, lang, statut FROM spip_articles WHERE id_trad = $id_trad");
$table= array();
while ($row = spip_fetch_array($result_trad)) {
$vals = array();
$id_article_trad = $row["id_article"];
$id_rubrique_trad = $row["id_rubrique"];
$titre_trad = $row["titre"];
$lang_trad = $row["lang"];
$statut_trad = $row["statut"];
changer_typo($lang_trad);
$titre_trad = "<span $dir_lang>$titre_trad</span>";
$vals[] = http_img_pack("puce-".puce_statut($statut_trad).'.gif', "", "width='7' height='7' border='0' NAME='statut'");
if ($id_article_trad == $id_trad) {
$vals[] = http_img_pack('langues-12.gif', "", "width='12' height='12' border='0'");
$titre_trad = "<b>$titre_trad</b>";
} else {
if ($connect_toutes_rubriques)
$vals[] = "<a href='" . redirige_action_auteur("referencer_traduction", "$id_trad,$id_article_trad", 'articles', "id_article=$id_article") . "'>".
http_img_pack('langues-off-12.gif', _T('trad_reference'), "width='12' height='12' border='0'", _T('trad_reference')) . "</a>";
else $vals[] = http_img_pack('langues-off-12.gif', "", "width='12' height='12' border='0'");
}
$s = typo($titre_trad);
if ($id_article_trad != $id_article)
$s = "<a href='" . generer_url_ecrire("articles","id_article=$id_article_trad&id_rubrique=$id_rubrique_trad") . "'>$s</a>";
if ($id_article_trad == $id_trad)
$s .= " "._T('trad_reference');
$vals[] = $s;
$vals[] = traduire_nom_langue($lang_trad);
$table[] = $vals;
}
return $table;
}
// http://doc.spip.org/@afficher_corps_articles
function afficher_corps_articles($virtuel, $chapo, $texte, $ps, $extra)
......
......@@ -36,7 +36,6 @@ function exec_editer_auteurs_dist()
function formulaire_editer_auteurs($cherche_auteur, $ids, $id_article, $flag_editable)
{
global $spip_lang_left, $spip_lang_right, $options;
spip_log("formulaire_editer_auteurs($cherche_auteur, $ids, $id_article, $flag_editable");
//
// complement de action/editer_auteurs.php pour notifier la recherche d'auteur
......@@ -97,16 +96,17 @@ function formulaire_editer_auteurs($cherche_auteur, $ids, $id_article, $flag_edi
}
$bouton = (!$flag_editable
$bouton = (!$flag_editable
? ''
: bouton_block_invisible("auteursarticle"))
: (($flag_editable === 'ajax')
? bouton_block_visible("auteursarticle")
: bouton_block_invisible("auteursarticle")))
. _T('texte_auteurs')
. aide("artauteurs");
$res = '<div>&nbsp;</div>' // place pour l'animation pendant Ajax
. debut_cadre_enfonce("auteur-24.gif", true, "", $bouton)
$res = debut_cadre_enfonce("auteur-24.gif", true, "", $bouton)
. $reponse
. debut_block_invisible("auteursarticle")
. debut_block_invisible("auteursarticle")
. $res
. fin_block()
. fin_cadre_enfonce(true);
......
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2006 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
function exec_referencer_traduction_dist()
{
include_spip('inc/actions');
$id_article = intval(_request('id_article'));
if ($GLOBALS['connect_toutes_rubriques']) // pour eviter SQL
$droit = true;
else $droit = acces_article($id_article);
if (!$droit) {
spip_log("Tentative d'intrusion de " . $GLOBALS['auteur_session']['nom'] . " dans " . $GLOBALS['exec']);
include_spip('inc/minipres');
minipres(_T('info_acces_interdit'));
}
$row = spip_fetch_array(spip_query("SELECT id_trad, id_rubrique FROM spip_articles WHERE id_article=$id_article"));
return formulaire_referencer_traduction($id_article, $row['id_rubrique'], $row['id_trad'], 'ajax');
}
function formulaire_referencer_traduction($id_article, $id_rubrique, $id_trad, $flag_editable, $trad_err='')
{
spip_log("formulaire_referencer_traduction($id_article, $id_rubrique, $id_trad, $flag_editable, $trad_err=''");
global $connect_statut, $couleur_claire, $options, $connect_toutes_rubriques, $spip_lang_right, $dir_lang;
$langue_article = spip_fetch_array(spip_query("SELECT lang FROM spip_articles WHERE id_article=$id_article"));
$langue_article = $langue_article['lang'];
$reponse = '';
// Choix langue article
if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $flag_editable) {
$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
$langue_parent = $row['lang'];
if (!$langue_parent)
$langue_parent = $GLOBALS['meta']['langue_site'];
if (!$langue_article)
$langue_article = $langue_parent;
$reponse .= debut_block_invisible('languesarticle')
. debut_cadre_couleur('',true)
. "\n<div style='text-align: center;' id='instituer_langue_article-$id_article'>"
. menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent, redirige_action_auteur('instituer_langue_article', "$id_article-$id_rubrique","articles","id_article=$id_article"))
. "</div>\n"
. fin_cadre_couleur(true)
. fin_block();
}
if ($trad_err)
$reponse .= "<div><font color='red' size='2' face='verdana,arial,helvetica,sans-serif'>"._T('trad_deja_traduit'). "</font></div>";
// Afficher la liste des traductions
$table = !$id_trad ? array() : articles_traduction($id_article, $id_trad);
// bloc traductions
if (count($table) > 0) {
$largeurs = array(7, 12, '', 100);
$styles = array('', '', 'arial2', 'arial2');
$reponse .= "\n<div class='liste'>"
. bandeau_titre_boite2(_T('trad_article_traduction'),'', 'white', 'black', false)
. "<table width='100%' cellspacing='0' border='0' cellpadding='2'>"
. afficher_liste ($largeurs, $table, $styles)
. "</table>"
. "</div>";
}
// changer les globales $dir_lang etc
changer_typo($langue_article);
$form .= "<table width='100%'><tr>";
if ($flag_editable AND $options == "avancees" AND !$table) {
// Formulaire pour lier a un article
$form .= "<td class='arial2' width='60%'>"
. redirige_action_auteur("editer_article",
$id_article,
'articles',
"id_article=$id_article",
(_T('trad_lier') .
"\n<input type='text' class='fondl' name='lier_trad' size='5' />\n<input type='submit' value='"._T('bouton_valider')."' class='fondl' />"),
" method='post' align='$spip_lang_right' style='margin:0px; padding:0px;'")
. "</td>\n"
. "<td background='' width='10'> &nbsp; </td>"
. "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>"
. "<td background='' width='10'> &nbsp; </td>";
}
$form .= "<td>"
. icone_horizontale(_T('trad_new'), generer_url_ecrire("articles_edit","new=oui&lier_trad=$id_article&id_rubrique=$id_rubrique"), "traductions-24.gif", "creer.gif", false)
. "</td>";
if ($flag_editable AND $options == "avancees" AND $table) {
$form .= "<td background='' width='10'> &nbsp; </td>";
$form .= "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>";
$form .= "<td background='' width='10'> &nbsp; </td>";
$form .= "<td>";
$form .= icone_horizontale(_T('trad_delier'), redirige_action_auteur("referencer_traduction","$id_article,-$id_trad",'articles', "id_article=$id_article"), "traductions-24.gif", "supprimer.gif", false);
$form .= "</td>\n";
}
$form .= "</tr></table>";
if ($GLOBALS['meta']['gerer_trad'] == 'oui')
$bouton = _T('titre_langue_trad_article');
else
$bouton = _T('titre_langue_article');
if ($langue_article)
$bouton .= "&nbsp; (".traduire_nom_langue($langue_article).")";
$bouton = bouton_block_invisible('languesarticle,ne_plus_lier,lier_traductions').$bouton;
$res = "\n<div>&nbsp;</div>\n" // place pour l'animation pendant Ajax
. debut_cadre_enfonce('langues-24.gif', true, "", $bouton)
. $reponse
. debut_block_invisible('lier_traductions')
. $form
. fin_block()
. fin_cadre_enfonce(true);
spip_log("rt $flag_editable ($flag_editable === 'ajax')");
return ($flag_editable === 'ajax')
? $res
: "\n<div id='referencer_traduction-$id_article'>$res</div>";
}
// http://doc.spip.org/@articles_traduction
function articles_traduction($id_article, $id_trad)
{
global $connect_toutes_rubriques, $dir_lang;
$result_trad = spip_query("SELECT id_article, id_rubrique, titre, lang, statut FROM spip_articles WHERE id_trad = $id_trad");
$table= array();
while ($row = spip_fetch_array($result_trad)) {
$vals = array();
$id_article_trad = $row["id_article"];
$id_rubrique_trad = $row["id_rubrique"];
$titre_trad = $row["titre"];
$lang_trad = $row["lang"];
$statut_trad = $row["statut"];
changer_typo($lang_trad);
$titre_trad = "<span $dir_lang>$titre_trad</span>";
$vals[] = http_img_pack("puce-".puce_statut($statut_trad).'.gif', "", "width='7' height='7' border='0' NAME='statut'");
if ($id_article_trad == $id_trad) {
$vals[] = http_img_pack('langues-12.gif', "", "width='12' height='12' border='0'");
$titre_trad = "<b>$titre_trad</b>";
} else {
if (!$connect_toutes_rubriques)
$vals[] = http_img_pack('langues-off-12.gif', "", "width='12' height='12' border='0'");
else
$vals[] = ajax_action_auteur("referencer_traduction", "$id_article,$id_trad,$id_article_trad", 'articles', "id_article=$id_article", array(http_img_pack('langues-off-12.gif', _T('trad_reference'), "width='12' height='12' border='0'"), ' title="' . _T('trad_reference') . '"'));
}
$s = typo($titre_trad);
if ($id_article_trad != $id_article)
$s = "<a href='" . generer_url_ecrire("articles","id_article=$id_article_trad") . "'>$s</a>";
if ($id_article_trad == $id_trad)
$s .= " "._T('trad_reference');
$vals[] = $s;
$vals[] = traduire_nom_langue($lang_trad);
$table[] = $vals;
}
return $table;
}
?>
......@@ -161,7 +161,7 @@ function ajax_action_auteur($action, $id, $script, $args, $corps=false, $args_aj
return (!$att)
? $clic
: "<div$att'>$clic</div>";
: "\n<div$att>$clic</div>";
}
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter