From 9a78980c7b613187b252d513bcc51b104d41e916 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Wed, 27 Sep 2006 07:35:19 +0000
Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20d'une=20breve=20ou=20d'un=20art?=
 =?UTF-8?q?icle=20dans=20le=20contexte=20de=20la=20racine:=20prendre=20la?=
 =?UTF-8?q?=20rubrique=20la=20plus=20r=C3=A9cemment=20cr=C3=A9=C3=A9e,=20d?=
 =?UTF-8?q?ans=20la=20liste=20des=20rubriques=20administr=C3=A9es=20sur=20?=
 =?UTF-8?q?admin=20restreint.=20Le=20bug=20n'existait=20pas=20pour=20les?=
 =?UTF-8?q?=20sites=20curieusement,=20mais=20on=20lui=20applique=20aussi?=
 =?UTF-8?q?=20cette=20strat=C3=A9gie.=20R=C3=A9soud=20#592?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/exec/breves_edit.php   | 12 ++++++++++++
 ecrire/exec/sites_edit.php    |  6 ++++--
 ecrire/inc/article_select.php | 14 +++++++++++++-
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/ecrire/exec/breves_edit.php b/ecrire/exec/breves_edit.php
index 71eeffc755..a085ccd102 100644
--- a/ecrire/exec/breves_edit.php
+++ b/ecrire/exec/breves_edit.php
@@ -23,6 +23,7 @@ function exec_breves_edit_dist()
 global
   $champs_extra,
   $connect_statut,
+  $connect_id_rubrique,
   $id_breve,
   $id_rubrique,
   $lien_titre,
@@ -130,6 +131,17 @@ if ($connect_statut=="0minirezo" OR $statut=="prop" OR $new == "oui") {
 
 	debut_cadre_couleur("$logo_parent", false, "",_T('entree_interieur_rubrique').aide ("brevesrub"));
 
+	// appel du script a la racine, faut choisir 
+	// on prend le dernier secteur cree
+	// dans une liste restreinte si admin restreint
+
+	if (!$id_rubrique) {
+		$in = !$connect_id_rubrique ? ''
+		  : (' AND id_rubrique IN (' . join(',', $connect_id_rubrique) . ')');
+		$row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0$in ORDER BY id_rubrique DESC LIMIT 1"));		
+		$id_rubrique = $row_rub['id_rubrique'];
+	}
+
 	// selecteur de rubrique (en general pas d'ajax car toujours racine)
 	$selecteur_rubrique = charger_fonction('chercher_rubrique', 'inc');
 	echo $selecteur_rubrique($id_rubrique, 'breve', ($statut == 'publie'));
diff --git a/ecrire/exec/sites_edit.php b/ecrire/exec/sites_edit.php
index 1086008cd8..efc58bc51b 100644
--- a/ecrire/exec/sites_edit.php
+++ b/ecrire/exec/sites_edit.php
@@ -16,7 +16,7 @@ include_spip('inc/presentation');
 // http://doc.spip.org/@exec_sites_edit_dist
 function exec_sites_edit_dist()
 {
-  global $champs_extra, $connect_statut, $descriptif, $id_rubrique, $id_secteur, $id_syndic, $new, $nom_site, $syndication, $url_site, $url_syndic;
+  global $champs_extra, $connect_statut, $descriptif, $id_rubrique, $id_secteur, $id_syndic, $new, $nom_site, $syndication, $url_site, $url_syndic, $connect_id_rubrique;
 
 $result = spip_query("SELECT * FROM spip_syndic WHERE id_syndic=" . intval($id_syndic));
 
@@ -34,7 +34,9 @@ else {
 	$syndication = 'non';
 	$new = 'oui';
 	if (!intval($id_rubrique)) {
-		$row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent='0' ORDER BY titre LIMIT 1"));
+		$in = !$connect_id_rubrique ? ''
+		  : (' WHERE id_rubrique IN (' . join(',', $connect_id_rubrique) . ')');
+		$row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques$in ORDER BY id_rubrique DESC LIMIT 1"));		
 		$id_rubrique = $row['id_rubrique'];
 	}
 }
diff --git a/ecrire/inc/article_select.php b/ecrire/inc/article_select.php
index 35b6fbdf83..f321541c56 100644
--- a/ecrire/inc/article_select.php
+++ b/ecrire/inc/article_select.php
@@ -20,7 +20,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 // 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) {
-  global $connect_id_auteur, $spip_lang; 
+  global $connect_id_auteur, $connect_id_rubrique, $spip_lang; 
   $id_article = intval($id_article);
   $id_rubrique =  intval($id_rubrique);
   $lier_trad =  intval($lier_trad);
@@ -61,6 +61,18 @@ else if ($new=='oui') {
 	if ($lier_trad)
 		$row = article_select_trad($lier_trad);
 
+	// appel du script a la racine, faut choisir 
+	// admin restreint ==> sa premiere rubrique
+	// autre ==> la derniere rubrique cree
+	if (!$row['id_rubrique']) {
+		if ($connect_id_rubrique)
+			$row['id_rubrique'] = $id_rubrique = $connect_id_rubrique[0]; 
+		else {
+			$row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques ORDER BY id_rubrique DESC LIMIT 1"));
+			$row['id_rubrique'] = $id_rubrique = $row_rub['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"));
-- 
GitLab