diff --git a/ecrire/exec/articles_edit.php b/ecrire/exec/articles_edit.php index cd7e3e2e34b39a20237700102659392fbfa9a4c4..4638a20e2322748c0dc45f1503f5577e68d6760d 100644 --- a/ecrire/exec/articles_edit.php +++ b/ecrire/exec/articles_edit.php @@ -261,7 +261,7 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) { // http://doc.spip.org/@exec_articles_edit_dist function exec_articles_edit_dist() { - $id_article =_request('id_article'); + $id_article = _request('id_article'); $id_rubrique = _request('id_rubrique'); $lier_trad = intval(_request('lier_trad')); $new = _request('new'); diff --git a/ecrire/inc/article_select.php b/ecrire/inc/article_select.php index 48f1cdda7c7da9fa67cb3d9d257d2566db583f1e..d1ef252c1298a8b724f19ef802bda4b1f7be0cfc 100644 --- a/ecrire/inc/article_select.php +++ b/ecrire/inc/article_select.php @@ -12,9 +12,14 @@ if (!defined("_ECRIRE_INC_VERSION")) return; +// Recupere les donnees d'un article pour composer un formulaire d'edition +// (utilise par exec/article_edit) +// id_article = numero d'article existant +// id_rubrique = ou veut-on l'installer (pas obligatoire) +// lier_trad = l'associer a l'article numero $lier_trad +// new=oui = article a creer si on valide le formulaire // http://doc.spip.org/@article_select -function article_select($id_article, $id_rubrique, $lier_trad, $new) -{ +function article_select($id_article, $id_rubrique, $lier_trad, $new) { global $connect_id_auteur, $spip_lang; $id_article = intval($id_article); $id_rubrique = intval($id_rubrique); @@ -47,49 +52,16 @@ function article_select($id_article, $id_rubrique, $lier_trad, $new) } } else if ($new=='oui') { - if ($lier_trad) { - // Pas de langue choisie par defaut - $changer_lang = ''; + // Nouvel article : titre par defaut + $row['titre'] = filtrer_entites(_T('info_nouvel_article')); + $row['onfocus'] = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\""; + $row['id_rubrique'] = $id_rubrique; - // Recuperer les donnees de la traduction - $result = spip_query("SELECT * FROM spip_articles WHERE id_article=$lier_trad"); - - if ($row = spip_fetch_array($result)) { - $row['titre'] = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row["titre"]; + // Si c'est une demande de nouvelle traduction, on procede autrement + if ($lier_trad) + $row = article_select_trad($lier_trad); - } - $langues_autorisees = $GLOBALS['meta']['langues_multilingue']; - - // Regler la langue, si possible - if (ereg(",$spip_lang,", ",$langues_autorisees,")) { - if ($GLOBALS['meta']['multi_articles'] == 'oui') { - // Si le menu de langues est autorise sur les articles, - // on peut changer la langue quelle que soit la rubrique - $changer_lang = $spip_lang; - } - else if ($GLOBALS['meta']['multi_rubriques'] == 'oui') { - // Chercher la rubrique la plus adaptee pour accueillir l'article - if ($GLOBALS['meta']['multi_secteurs'] == 'oui') - $id_parent = 0; - else { - $row_rub = spip_fetch_array(spip_query("SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); - - $id_parent = $row_rub['id_parent']; - } - $row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE lang='$spip_lang' AND id_parent=$id_parent")); - if ($row_rub) { - $id_rubrique = $row['id_secteur'] = $row['id_rubrique'] = $row_rub['id_rubrique']; - $changer_lang = 'herit'; - } - } - } - } - else { - // Nouvel article : titre par defaut - $row['titre'] = filtrer_entites(_T('info_nouvel_article')); - $row['onfocus'] = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\""; - $row['id_rubrique'] = $id_rubrique; - } + // recuperer le secteur, pour affecter les bons champs extras if (!$row['id_secteur']) { $row_rub = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); $row['id_secteur'] = $row_rub['id_secteur']; @@ -110,4 +82,44 @@ else if ($new=='oui') { return $row; } +// +// Si un article est demande en creation (new=oui) avec un lien de trad, +// on initialise les donnees de maniere specifique +// +function article_select_trad($lier_trad) { + // Recuperer les donnees de l'article original + $result = spip_query("SELECT * FROM spip_articles WHERE id_article=$lier_trad"); + if ($row = spip_fetch_array($result)) { + $row['titre'] = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row["titre"]; + } + + // Regler la langue, si possible, sur celle du redacteur + // Cela implique souvent de choisir une rubrique ou un secteur + if (in_array($GLOBALS['spip_lang'], + explode(',', $GLOBALS['meta']['langues_multilingue']))) { + // Si le menu de langues est autorise sur les articles, + // on peut changer la langue quelle que soit la rubrique + // donc on reste dans la meme rubrique + if ($GLOBALS['meta']['multi_articles'] == 'oui') { + $row['id_rubrique'] = $row['id_rubrique']; # explicite :-) + } + else if ($GLOBALS['meta']['multi_rubriques'] == 'oui') { + // Sinon, chercher la rubrique la plus adaptee pour + // accueillir l'article dans la langue du traducteur + if ($GLOBALS['meta']['multi_secteurs'] == 'oui') { + $id_parent = 0; + } else { + $row_rub = spip_fetch_array(spip_query("SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); + + $id_parent = $row_rub['id_parent']; + } + $row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE lang='$spip_lang' AND id_parent=$id_parent")); + if ($row_rub) + $row['id_rubrique'] = $row_rub['id_rubrique']; + } + } + + return $row; +} + ?>