From 459583f10f0e3c712ff4882ac8fa8fb89957f3d6 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Wed, 11 Oct 2006 16:47:45 +0000 Subject: [PATCH] =?UTF-8?q?D=C3=A9coupage=20fonctionnel=20un=20peu=20diff?= =?UTF-8?q?=C3=A9rent=20pour=20faciliter=20les=20surcharges=20et=20partage?= =?UTF-8?q?r=20le=20code.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/exec/articles.php | 2 +- ecrire/exec/documenter.php | 2 +- ecrire/exec/iconifier.php | 2 +- ecrire/inc/auth.php | 10 ++- ecrire/inc/editer_auteurs.php | 138 ++++++++++++++++++---------------- 5 files changed, 85 insertions(+), 69 deletions(-) diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php index 01a10e62c8..b4dcb2c45c 100644 --- a/ecrire/exec/articles.php +++ b/ecrire/exec/articles.php @@ -75,7 +75,7 @@ function articles_affiche($id_article, $row, $cherche_auteur, $ids, $cherche_mot $statut_rubrique = acces_rubrique($id_rubrique); - $flag_auteur = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur LIMIT 1")); + $flag_auteur = spip_num_rows(auteurs_article($id_article, " id_auteur=$connect_id_auteur")); $flag_editable = ($statut_rubrique OR ($flag_auteur AND ($statut_article == 'prepa' OR $statut_article == 'prop' OR $statut_article == 'poubelle'))); diff --git a/ecrire/exec/documenter.php b/ecrire/exec/documenter.php index 76e1023fe7..26a54a825b 100644 --- a/ecrire/exec/documenter.php +++ b/ecrire/exec/documenter.php @@ -37,7 +37,7 @@ function exec_documenter_dist() $editable = (is_array($droits) AND $droits[$row['id_rubrique']]); if (!$editable) { if ($row['statut'] == 'prepa' OR $row['statut'] == 'prop') - $editable = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id AND id_auteur=$id_auteur")); + $editable = spip_num_rows(auteurs_article($id_article, " AND id_auteur=$id_auteur")); } } if (!$editable) { diff --git a/ecrire/exec/iconifier.php b/ecrire/exec/iconifier.php index f2bd535d35..04cca72c53 100644 --- a/ecrire/exec/iconifier.php +++ b/ecrire/exec/iconifier.php @@ -37,7 +37,7 @@ function exec_iconifier_dist() $row = spip_fetch_array(spip_query("SELECT id_rubrique, statut FROM spip_$table WHERE $type=$id")); $droit = acces_rubrique($row['id_rubrique']); if (!$droit AND ($row['statut'] == 'prepa' OR $row['statut'] == 'prop' OR $row['statut'] == 'poubelle')) - $droit = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur LIMIT 1")); + $droit = spip_num_rows(determiner_auteurs_article($id_article, "id_auteur=$connect_id_auteur")); } if (!$droit) { diff --git a/ecrire/inc/auth.php b/ecrire/inc/auth.php index e0569c9797..41faa6e2b2 100644 --- a/ecrire/inc/auth.php +++ b/ecrire/inc/auth.php @@ -51,15 +51,19 @@ function acces_article($id_article) if (acces_rubrique($row['id_rubrique'])) return true; - $s = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur LIMIT 1")); - - if (!$s) return false; + $s = auteurs_article($id_article, " id_auteur=$connect_id_auteur"); + if (!spip_num_rows($s)) return false; $s = $row['statut']; return ($s == 'prepa' OR $s == 'prop' OR $s == 'poubelle'); } +function auteurs_article($id_article, $cond='') +{ + return spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article". ($cond ? " AND $cond" : '')); +} + // Retourne les droits de publication d'un auteur selon le codage suivant: // - le tableau de ses rubriques si c'est un admin restreint // - 0 si c'est un admin de plein droit diff --git a/ecrire/inc/editer_auteurs.php b/ecrire/inc/editer_auteurs.php index 2621e68651..0699c3dbaf 100644 --- a/ecrire/inc/editer_auteurs.php +++ b/ecrire/inc/editer_auteurs.php @@ -17,88 +17,102 @@ include_spip('inc/actions'); function inc_editer_auteurs_dist($id_article, $flag, $cherche_auteur, $ids) { - global $spip_lang_left, $spip_lang_right, $options; + global $options; + + $les_auteurs = join(',', determiner_auteurs_article($id_article)); + if ($flag AND $options == 'avancees') { + $r = spip_query("SELECT * FROM spip_auteurs WHERE " . (!$les_auteurs ? '' : "id_auteur NOT IN ($les_auteurs) AND ") . "statut!='5poubelle' AND statut!='6forum' AND statut!='nouveau' ORDER BY statut, nom"); + $futurs = ajouter_auteurs_articles($id_article, $r); + } else $futurs = ''; + + return editer_auteurs_article($id_article, $flag, $cherche_auteur, $ids, $les_auteurs, $futurs); +} + +function editer_auteurs_article($id_article, $flag, $cherche_auteur, $ids, $les_auteurs, $futurs) +{ + global $spip_lang_left, $spip_lang_right, $options; // // complement de action/editer_auteurs.php pour notifier la recherche d'auteur // + $bouton_creer_auteur = $GLOBALS['connect_toutes_rubriques']; - $bouton_creer_auteur = $GLOBALS['connect_toutes_rubriques']; + if ($cherche_auteur) { - if ($cherche_auteur) { + $reponse ="<p align='$spip_lang_left'>" + . debut_boite_info(true) + . rechercher_auteurs_articles($cherche_auteur, $ids, $id_article); - $reponse ="<p align='$spip_lang_left'>" - . debut_boite_info(true) - . rechercher_auteurs_articles($cherche_auteur, $ids, $id_article); + if ($bouton_creer_auteur) { - if ($bouton_creer_auteur) { + $reponse .="<div style='width: 200px;'>" + . icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&nom=" . rawurlencode($cherche_auteur). "&redirect=" . generer_url_retour("articles","id_article=$id_article")), "redacteurs-24.gif", "creer.gif", false) + . "</div> "; - $reponse .="<div style='width: 200px;'>" - . icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&nom=" . rawurlencode($cherche_auteur). "&redirect=" . generer_url_retour("articles","id_article=$id_article")), "redacteurs-24.gif", "creer.gif", false) - . "</div> "; + $bouton_creer_auteur = false; + } - $bouton_creer_auteur = false; - } + $reponse .= fin_boite_info(true) + . '</p>'; + } else $reponse =''; - $reponse .= fin_boite_info(true) - . '</p>'; - } else $reponse =''; + if ($les_auteurs) + $reponse .= afficher_auteurs_articles($id_article, $flag, $les_auteurs); // -// Afficher les auteurs +// Ajouter un auteur // - $les_auteurs = array(); - $result = spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article"); + $res = ''; + if ($flag AND $options == 'avancees') { - while ($row = spip_fetch_array($result)) - $les_auteurs[]= $row['id_auteur']; + if ($bouton_creer_auteur) { - if ($les_auteurs = join(',', $les_auteurs)) - $reponse .= afficher_auteurs_articles($id_article, $flag, $les_auteurs); + $res = "<div style='width:170px;'><span class='verdana1'><b>" + . icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&redirect=" .generer_url_retour("articles","id_article=$id_article")), "redacteurs-24.gif", "creer.gif", false) + . "</b></span></div>\n"; + } -// -// Ajouter un auteur -// + $res = "<div style='float:$spip_lang_right; width:280px;position:relative;display:inline;'>" + . $futurs + ."</div>\n" + . $res; + } - $res = ''; - if ($flag AND $options == 'avancees') { + $bouton = (!$flag + ? '' + : (($flag === 'ajax') + ? bouton_block_visible("auteursarticle") + : bouton_block_invisible("auteursarticle"))) + . _T('texte_auteurs') + . aide("artauteurs"); + + $res = '<div> </div>' // pour placer le gif patienteur + . debut_cadre_enfonce("auteur-24.gif", true, "", $bouton) + . $reponse + . ($flag === 'ajax' ? + debut_block_visible("auteursarticle") : + debut_block_invisible("auteursarticle")) + . $res + . fin_block() + . fin_cadre_enfonce(true); + + return ajax_action_greffe("editer_auteurs-$id_article", $res); +} - if ($bouton_creer_auteur) { +function determiner_auteurs_article($id_article, $cond='') +{ + $les_auteurs = array(); - $res = "<div style='width:170px;'><span class='verdana1'><b>" - . icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&redirect=" .generer_url_retour("articles","id_article=$id_article")), "redacteurs-24.gif", "creer.gif", false) - . "</b></span></div>\n"; - } + $result = auteurs_article($id_article,$cond); // function de inc/auth + + while ($row = spip_fetch_array($result)) + $les_auteurs[]= $row['id_auteur']; - $res = "<div style='float:$spip_lang_right; width:280px;position:relative;display:inline;'>" - . ajouter_auteurs_articles($id_article, $les_auteurs, $bouton_creer_auteur) - ."</div>\n" - . $res; - - } - - $bouton = (!$flag - ? '' - : (($flag === 'ajax') - ? bouton_block_visible("auteursarticle") - : bouton_block_invisible("auteursarticle"))) - . _T('texte_auteurs') -. aide("artauteurs"); - - $res = '<div> </div>' // pour placer le gif patienteur - . debut_cadre_enfonce("auteur-24.gif", true, "", $bouton) - . $reponse - . ($flag === 'ajax' ? - debut_block_visible("auteursarticle") : - debut_block_invisible("auteursarticle")) - . $res - . fin_block() - . fin_cadre_enfonce(true); - - return ajax_action_greffe("editer_auteurs-$id_article", $res); + return $les_auteurs; } + // http://doc.spip.org/@rechercher_auteurs_articles function rechercher_auteurs_articles($cherche_auteur, $ids, $id_article) { @@ -203,11 +217,9 @@ function afficher_auteurs_articles($id_article, $flag_editable, $les_auteurs) // http://doc.spip.org/@ajouter_auteurs_articles -function ajouter_auteurs_articles($id_article, $les_auteurs) +function ajouter_auteurs_articles($id_article, $query) { - $result = spip_query("SELECT * FROM spip_auteurs WHERE " . (!$les_auteurs ? '' : "id_auteur NOT IN ($les_auteurs) AND ") . "statut!='5poubelle' AND statut!='6forum' AND statut!='nouveau' ORDER BY statut, nom"); - - if (!$num = spip_num_rows($result)) return ''; + if (!$num = spip_num_rows($query)) return ''; $js = "\"findObj_forcer('valider_ajouter_auteur').style.visibility='visible';\""; @@ -219,7 +231,7 @@ function ajouter_auteurs_articles($id_article, $les_auteurs) ? ("<input type='text' name='cherche_auteur' onclick=$js CLASS='fondl' VALUE='' SIZE='20' />" . "<span class='visible_au_chargement' id='valider_ajouter_auteur'>\n<input type='submit' value='"._T('bouton_chercher')."' CLASS='fondo' /></span>") : ("<select name='nouv_auteur' size='1' style='width:150px;' CLASS='fondl' onchange=$js>" . - articles_auteur_select($result) . + articles_auteur_select($query) . "</select>" . "<span class='visible_au_chargement' id='valider_ajouter_auteur'>" . " <input type='submit' value='"._T('bouton_ajouter')."' CLASS='fondo'>" . -- GitLab