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

Gestion en dehors de articles.php des 2 modifs de id_trad. Le test de...

Gestion en dehors de articles.php des 2 modifs de id_trad. Le test de traduction redondante ne marche pas, mais il semble que cela remonte à loin (la faute de syntaxe dans les attributs en cas de message d'erreur en est un autre indice). A noter aussi que le petit triangle donnant aux formulaires sur les traductions ne tourne pas. Mais on n'est pas loin de la mise en Ajax de tout le bloc sur les traductions.
parent 250db8ba
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -43,6 +43,7 @@ ecrire/action/petitionner.php -text ...@@ -43,6 +43,7 @@ ecrire/action/petitionner.php -text
ecrire/action/poster.php -text ecrire/action/poster.php -text
ecrire/action/purger.php -text ecrire/action/purger.php -text
ecrire/action/redirect.php -text ecrire/action/redirect.php -text
ecrire/action/referencer_traduction.php -text
ecrire/action/supprimer.php -text ecrire/action/supprimer.php -text
ecrire/action/supprimer_traduction.php -text ecrire/action/supprimer_traduction.php -text
ecrire/action/test_dirs.php -text ecrire/action/test_dirs.php -text
......
...@@ -14,6 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -14,6 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
function action_editer_article_dist() { function action_editer_article_dist() {
include_spip('inc/actions'); include_spip('inc/actions');
$var_f = charger_fonction('controler_action_auteur', 'inc'); $var_f = charger_fonction('controler_action_auteur', 'inc');
$var_f(); $var_f();
...@@ -25,17 +26,21 @@ function action_editer_article_dist() { ...@@ -25,17 +26,21 @@ function action_editer_article_dist() {
if (!$id_article = intval($arg)) { if (!$id_article = intval($arg)) {
if ($arg != 'oui') redirige_par_entete('./'); if ($arg != 'oui') redirige_par_entete('./');
$id_article = insert_article($id_parent); $id_article = insert_article($id_parent);
} }
$err = false;
// Enregistre l'envoi dans la BD et positionne $err si pb
articles_set($id_article, $id_parent, $lier_trad, $arg=='oui');
// id_article_bloque, globale dans inc/presentation // id_article_bloque, globale dans inc/presentation
$redirect = _request('redirect')
. "&id_article=$id_article&id_article_bloque=$id_article"
. ($arg=='oui' ? '&new=oui' : '')
. ($lier_trad ? "&lier_trad=$lier_trad" : '') ;
articles_set($id_article, $id_parent, $arg=='oui'); $redirect = urldecode(_request('redirect'))
. "&id_article=$id_article&id_article_bloque=$id_article"
. ($GLOBALS['err'] ? '&trad_err=1' : '');
redirige_par_entete(urldecode($redirect)); redirige_par_entete($redirect);
} }
function insert_article($id_parent) function insert_article($id_parent)
...@@ -63,23 +68,30 @@ function insert_article($id_parent) ...@@ -63,23 +68,30 @@ function insert_article($id_parent)
return $id_article; return $id_article;
} }
function articles_set($id_article, $id_rubrique, $new) function articles_set($id_article, $id_rubrique, $lier_trad, $new)
{ {
include_spip('inc/filtres'); include_spip('inc/filtres');
include_spip('inc/rubriques'); include_spip('inc/rubriques');
if (!strlen($titre_article=corriger_caracteres($_POST['titre'])))
$titre_article = _T('info_sans_titre');
revisions_articles($id_article, $id_rubrique, $titre_article, $new); $row = spip_fetch_array(spip_query("SELECT id_trad FROM spip_articles WHERE id_article=$id_article"));
$id_trad = (!$lier_trad) ? 0 : article_referent ($id_article, $row['id_trad'], $lier_trad);
if (_request('titre')) // retour de articles_edit.php
revisions_articles($id_article, $id_rubrique, $id_trad, $new);
else // retour articles.php
spip_query("UPDATE spip_articles SET id_trad = $id_trad WHERE id_article = $id_article");
} }
function revisions_articles ($id_article, $id_rubrique, $titre_article) { function revisions_articles ($id_article, $id_rubrique, $id_trad) {
{ {
global $flag_revisions, $champs_extra; global $flag_revisions, $champs_extra;
$id_auteur = _request('id_auteur'); $id_auteur = _request('id_auteur');
$texte = trop_longs_articles(_request('texte_plus')) . _request('texte'); $texte = trop_longs_articles(_request('texte_plus')) . _request('texte');
if (!strlen($titre_article=corriger_caracteres(_request('titre'))))
$titre_article = _T('info_sans_titre');
$champs = array( $champs = array(
'surtitre' => corriger_caracteres(_request('surtitre')), 'surtitre' => corriger_caracteres(_request('surtitre')),
'titre' => $titre_article, 'titre' => $titre_article,
...@@ -114,7 +126,10 @@ function revisions_articles ($id_article, $id_rubrique, $titre_article) { ...@@ -114,7 +126,10 @@ function revisions_articles ($id_article, $id_rubrique, $titre_article) {
$champs_extra = extra_recup_saisie("articles", _request('id_secteur')); $champs_extra = extra_recup_saisie("articles", _request('id_secteur'));
} }
spip_query("UPDATE spip_articles SET surtitre=" . spip_abstract_quote($champs['surtitre']) . ", titre=" . spip_abstract_quote($champs['titre']) . ", soustitre=" . spip_abstract_quote($champs['soustitre']) . ", id_rubrique=" . intval($id_rubrique) . ", descriptif=" . spip_abstract_quote($champs['descriptif']) . ", chapo=" . spip_abstract_quote($champs['chapo']) . ", texte=" . spip_abstract_quote($champs['texte']) . ", ps=" . spip_abstract_quote($champs['ps']) . ", url_site=" . spip_abstract_quote($champs['url_site']) . ", nom_site=" . spip_abstract_quote($champs['nom_site']) . ", date_modif=NOW() " . ($champs_extra ? (", extra = " . spip_abstract_quote($champs_extra)) : '') . " WHERE id_article=$id_article"); spip_query("UPDATE spip_articles SET id_trad = $id_trad WHERE id_article = $id_article");
spip_query("UPDATE spip_articles SET id_rubrique=$id_rubrique, id_trad=$id_trad, surtitre=" . spip_abstract_quote($champs['surtitre']) . ", titre=" . spip_abstract_quote($champs['titre']) . ", soustitre=" . spip_abstract_quote($champs['soustitre']) . ", descriptif=" . spip_abstract_quote($champs['descriptif']) . ", chapo=" . spip_abstract_quote($champs['chapo']) . ", texte=" . spip_abstract_quote($champs['texte']) . ", ps=" . spip_abstract_quote($champs['ps']) . ", url_site=" . spip_abstract_quote($champs['url_site']) . ", nom_site=" . spip_abstract_quote($champs['nom_site']) . ", date_modif=NOW() " . ($champs_extra ? (", extra = " . spip_abstract_quote($champs_extra)) : '') . " WHERE id_article=$id_article");
// Stockage des versions // Stockage des versions
if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) { if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
...@@ -164,4 +179,30 @@ function trop_longs_articles($texte_plus) ...@@ -164,4 +179,30 @@ function trop_longs_articles($texte_plus)
return $texte_ajout; return $texte_ajout;
} }
function article_referent ($id_article, $id_trad, $lier_trad)
{
global $err; // pour avertir l'appelant
$row = spip_fetch_array(spip_query("SELECT id_trad FROM spip_articles WHERE id_article=$lier_trad"));
$id_lier = $row['id_trad'];
spip_log("$id_article, $id_trad, $lier_trad, $id_lier");
// Si l'article vise n'a pas deja de traduction, creer nouveau id_trad
if ($id_lier == 0) {
$nouveau_trad = $lier_trad;
spip_query("UPDATE spip_articles SET id_trad = $lier_trad WHERE id_article = $lier_trad");
} else {
// insuffisant pour prevenir les traductions redondantes a mon avis
if ($id_lier == $id_trad) $err = true;
$nouveau_trad = $id_lier;
spip_query("UPDATE spip_articles SET id_trad = $id_lier WHERE id_trad = $id_lier");
}
if ($id_trad > 0)
spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad WHERE id_trad = $id_trad");
return $nouveau_trad;
}
?> ?>
<?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/filtres');
function action_referencer_traduction_dist() {
include_spip('inc/actions');
$var_f = charger_fonction('controler_action_auteur', 'inc');
$var_f();
$arg = _request('arg');
if (!preg_match(",^(\d+)\D(\d+)$,", $arg, $r)) {
spip_log("action_referencer_traduction_dist $arg pas compris");
} else {
spip_query("UPDATE spip_articles SET id_trad = " . $r[2] . " WHERE id_trad =" . $r[1]);
}
}
?>
...@@ -25,11 +25,10 @@ include_spip('base/abstract_sql'); ...@@ -25,11 +25,10 @@ include_spip('base/abstract_sql');
function exec_articles_dist() function exec_articles_dist()
{ {
global $cherche_auteur, $ids, $cherche_mot, $debut, $id_article, $id_article_bloque, $id_parent, $id_rubrique_old, $id_trad_new, $lier_trad, $new, $nom_select, $nouv_mot, $supp_mot; global $cherche_auteur, $ids, $cherche_mot, $debut, $id_article, $nouv_mot, $supp_mot, $trad_err;
global $connect_id_auteur, $connect_statut, $options, $spip_display, $spip_lang_left, $spip_lang_right, $dir_lang; global $connect_id_auteur, $connect_statut, $options, $spip_display, $spip_lang_left, $spip_lang_right, $dir_lang;
$id_parent = intval($id_parent);
$lier_trad = intval($lier_trad);
$supp_mot = intval($supp_mot); $supp_mot = intval($supp_mot);
$id_article= intval($id_article); $id_article= intval($id_article);
...@@ -235,7 +234,7 @@ if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') { ...@@ -235,7 +234,7 @@ if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') {
if (($GLOBALS['meta']['multi_articles'] == 'oui') if (($GLOBALS['meta']['multi_articles'] == 'oui')
OR (($GLOBALS['meta']['multi_rubriques'] == 'oui') AND ($GLOBALS['meta']['gerer_trad'] == 'oui'))) { OR (($GLOBALS['meta']['multi_rubriques'] == 'oui') AND ($GLOBALS['meta']['gerer_trad'] == 'oui'))) {
langues_articles($id_article, $flag_editable, $id_rubrique, $id_trad, $dir_lang, $nom_select, $lier_trad, $id_trad_new); langues_articles($id_article, $flag_editable, $id_rubrique, $id_trad, $trad_err);
} }
echo pipeline('affiche_milieu',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>'')); echo pipeline('affiche_milieu',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>''));
...@@ -651,10 +650,10 @@ function dates_articles($id_article, $id_rubrique, $flag_editable, $statut_artic ...@@ -651,10 +650,10 @@ function dates_articles($id_article, $id_rubrique, $flag_editable, $statut_artic
} }
function langues_articles($id_article, $flag_editable, $id_rubrique, $id_trad, $dir_lang, $nom_select, $lier_trad, $id_trad_new) function langues_articles($id_article, $flag_editable, $id_rubrique, $id_trad, $trad_err)
{ {
global $connect_statut, $couleur_claire, $options, $connect_toutes_rubriques, $spip_lang_right; 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 = spip_fetch_array(spip_query("SELECT lang FROM spip_articles WHERE id_article=$id_article"));
...@@ -690,27 +689,14 @@ function langues_articles($id_article, $flag_editable, $id_rubrique, $id_trad, $ ...@@ -690,27 +689,14 @@ function langues_articles($id_article, $flag_editable, $id_rubrique, $id_trad, $
echo fin_block(); echo fin_block();
} }
// Gerer les groupes de traductions if ($trad_err)
if ($GLOBALS['meta']['gerer_trad'] == 'oui') { echo "<div><font color='red' size='2' face='verdana,arial,helvetica,sans-serif'>"._T('trad_deja_traduit'). "</font></div>";
// Changer article de reference de la trad
if ($id_trad_new = intval($id_trad_new)
AND $id_trad_old = intval(_request('id_trad_old')) # bizarre
AND $connect_statut=='0minirezo'
AND $connect_toutes_rubriques) {
spip_query("UPDATE spip_articles SET id_trad = $id_trad_new WHERE id_trad = $id_trad_old");
$id_trad = $id_trad_new;
}
if ($flag_editable AND $lier_trad > 0) { // Lier a un groupe de trad
$id_trad = article_referent ($id_article, $id_trad, $lier_trad);
}
// Afficher la liste des traductions // Afficher la liste des traductions
$table = !$id_trad ? array() : articles_traduction($id_article, $id_trad); $table = !$id_trad ? array() : articles_traduction($id_article, $id_trad);
// bloc traductions // bloc traductions
if (count($table) > 0) { if (count($table) > 0) {
echo "<div class='liste'>"; echo "<div class='liste'>";
bandeau_titre_boite2(_T('trad_article_traduction'),''); bandeau_titre_boite2(_T('trad_article_traduction'),'');
...@@ -721,78 +707,52 @@ function langues_articles($id_article, $flag_editable, $id_rubrique, $id_trad, $ ...@@ -721,78 +707,52 @@ function langues_articles($id_article, $flag_editable, $id_rubrique, $id_trad, $
echo afficher_liste ($largeurs, $table, $styles); echo afficher_liste ($largeurs, $table, $styles);
echo "</table>"; echo "</table>";
echo "</div>"; echo "</div>";
} }
// changer les globales $dir_lang etc // changer les globales $dir_lang etc
changer_typo($langue_article); changer_typo($langue_article);
echo debut_block_invisible('lier_traductions'); echo debut_block_invisible('lier_traductions');
echo "<table width='100%'><tr>";
echo "<table width='100%'><tr>"; if ($flag_editable AND $options == "avancees" AND !$table) {
if ($flag_editable AND $options == "avancees" AND !$table) {
// Formulaire pour lier a un article // Formulaire pour lier a un article
echo "<td class='arial2' width='60%'>"; echo "<td class='arial2' width='60%'>";
echo "<form action='" . generer_url_ecrire("articles","id_article=$id_article") . "' method='post' style='margin:0px; padding:0px;'>"; echo redirige_action_auteur("editer_article",
echo _T('trad_lier'); $id_article,
echo "<div align='$spip_lang_right'><input type='text' class='fondl' name='lier_trad' size='5'> <INPUT TYPE='submit' VALUE='"._T('bouton_valider')."' CLASS='fondl'></div>"; 'articles',
echo "</form>"; "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;'");
echo "</td>\n"; echo "</td>\n";
echo "<td background='' width='10'> &nbsp; </td>"; echo "<td background='' width='10'> &nbsp; </td>";
echo "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>"; echo "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>";
echo "<td background='' width='10'> &nbsp; </td>"; echo "<td background='' width='10'> &nbsp; </td>";
} }
echo "<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"); echo "<td>";
echo "</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");
if ($flag_editable AND $options == "avancees" AND $table) { echo "</td>";
if ($flag_editable AND $options == "avancees" AND $table) {
echo "<td background='' width='10'> &nbsp; </td>"; echo "<td background='' width='10'> &nbsp; </td>";
echo "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>"; echo "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>";
echo "<td background='' width='10'> &nbsp; </td>"; echo "<td background='' width='10'> &nbsp; </td>";
echo "<td>"; echo "<td>";
icone_horizontale(_T('trad_delier'), redirige_action_auteur("supprimer_traduction","$id_article-$id_trad",'articles', "id_article=$id_article"), "traductions-24.gif", "supprimer.gif"); icone_horizontale(_T('trad_delier'), redirige_action_auteur("supprimer_traduction","$id_article-$id_trad",'articles', "id_article=$id_article"), "traductions-24.gif", "supprimer.gif");
echo "</td>\n"; echo "</td>\n";
} }
echo "</tr></table>"; echo "</tr></table>";
echo fin_block(); echo fin_block();
}
fin_cadre_enfonce(); fin_cadre_enfonce();
} }
function article_referent ($id_article, $id_trad, $lier_trad)
{
$row = spip_fetch_array(spip_query("SELECT id_trad FROM spip_articles WHERE id_article=$lier_trad"));
if (!$row)
$err .= "<div>"._T('trad_article_inexistant')."</div>";
else {
$id_lier = $row['id_trad'];
// Si l'article vise n'a pas deja de traduction, creer nouveau id_trad
if ($id_lier == 0) {
$nouveau_trad = $lier_trad;
spip_query("UPDATE spip_articles SET id_trad = $lier_trad WHERE id_article = $lier_trad");
} else {
if ($id_lier == $id_trad) $err = "<div>"._T('trad_deja_traduit')."</div>";
$nouveau_trad = $id_lier;
spip_query("UPDATE spip_articles SET id_trad = $id_lier WHERE id_trad = $id_lier");
}
spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad WHERE id_article = $id_article");
if ($id_trad > 0)
spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad WHERE id_trad = $id_trad");
$id_trad = $nouveau_trad;
}
if ($err) echo "<font color='red' size=2' face='verdana,arial,helvetica,sans-serif'>$err</font>";
return $id_trad;
}
function articles_traduction($id_article, $id_trad) function articles_traduction($id_article, $id_trad)
{ {
...@@ -816,11 +776,11 @@ function articles_traduction($id_article, $id_trad) ...@@ -816,11 +776,11 @@ function articles_traduction($id_article, $id_trad)
$vals[] = http_img_pack("puce-".puce_statut($statut_trad).'.gif', "", "width='7' height='7' border='0' NAME='statut'"); $vals[] = http_img_pack("puce-".puce_statut($statut_trad).'.gif', "", "width='7' height='7' border='0' NAME='statut'");
if ($id_article_trad == $id_trad) { if ($id_article_trad == $id_trad) {
$vals[] = http_img_pack('langues-12.gif', "", "width='12' height='12' border='0'"); $vals[] = http_img_pack('langues-12.gif', "", "width='12' height='12' border='0'");
$titre_trad = "<b>$titre_trad</b>"; $titre_trad = "<b>$titre_trad</b>";
} else { } else {
if ($connect_toutes_rubriques) if ($connect_toutes_rubriques)
$vals[] = "<a href='" . generer_url_ecrire("articles","id_article=$id_article&id_trad_old=$id_trad&id_trad_new=$id_article_trad&id_rubrique=$id_rubrique_trad") . "'>". $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>"; 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'"); else $vals[] = http_img_pack('langues-off-12.gif', "", "width='12' height='12' border='0'");
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter