diff --git a/ecrire/controle_forum.php3 b/ecrire/controle_forum.php3
index 9066f4533cddce1b93c2433c6229c554dbeff4d0..17d9fe13ba9e8ac3fa7a51739d85f20f102400a1 100644
--- a/ecrire/controle_forum.php3
+++ b/ecrire/controle_forum.php3
@@ -193,6 +193,12 @@ if (!$page) $page = "public";
 echo "<br><br><br>";
 gros_titre(_T('titre_forum_suivi'));
 barre_onglets("suivi_forum", $page);
+
+if ($connect_statut != "0minirezo" OR !$connect_toutes_rubriques) {
+	echo "<B>"._T('avis_non_acces_page')."</B>";
+	exit;
+}
+
 debut_gauche();
 debut_boite_info();
 echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2>";
@@ -200,6 +206,20 @@ echo _T('info_gauche_suivi_forum_2');
 echo aide("suiviforum");
 echo "</FONT>";
 
+// Afficher le lien RSS
+include_ecrire('inc_sites.php3');
+$op = 'forums';
+$args = array(
+	'page' => $page
+);
+echo "<div style='text-align: "
+	. $GLOBALS['spip_lang_right']
+	. ";'>"
+	. bouton_spip_rss($op, $args)
+	."</div>";
+
+
+
 fin_boite_info();
 debut_droite();
 
@@ -207,25 +227,8 @@ debut_droite();
 // Debut de la page de controle
 //
 
-if ($connect_statut != "0minirezo" OR !$connect_toutes_rubriques) {
-	echo "<B>"._T('avis_non_acces_page')."</B>";
-	exit;
-}
-
-switch ($page) {
-case 'public':
-	$query_forum = "statut IN ('publie', 'off', 'prop') AND texte!=''";
-	break;
-case 'interne':
-	$query_forum = "statut IN ('prive', 'privrac', 'privoff', 'privadm') AND texte!=''";
-	break;
-case 'vide':
-	$query_forum = "statut IN ('publie', 'off', 'prive', 'privrac', 'privoff', 'privadm') AND texte=''";
-	break;
-default:
-	$query_forum = "0=1";
-	break;
-}
+// recuperer le critere SQL qui selectionne nos forums
+$query_forum = critere_statut_controle_forum($page);
 
 // Si un id_controle_forum est demande, on adapte le debut
 if ($debut_id_forum = intval($debut_id_forum)
diff --git a/ecrire/inc_forum.php3 b/ecrire/inc_forum.php3
index d6f1f8fb7f42c507fe7b6716be977fb9c9db043d..c63be9d2d473a83d8f45f71584f44e6feb2eb127 100644
--- a/ecrire/inc_forum.php3
+++ b/ecrire/inc_forum.php3
@@ -196,6 +196,28 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref
 	return $controle;
 }
 
+// Selon ce qu'on veut suivre depuis ecrire/controle_forum, retourner le SQL
+function critere_statut_controle_forum($page) {
+	switch ($page) {
+	case 'public':
+		$query_forum = "statut IN ('publie', 'off', 'prop') AND texte!=''";
+		break;
+	case 'prop':
+		$query_forum = "statut='prop'";
+		break;
+	case 'interne':
+		$query_forum = "statut IN ('prive', 'privrac', 'privoff', 'privadm') AND texte!=''";
+		break;
+	case 'vide':
+		$query_forum = "statut IN ('publie', 'off', 'prive', 'privrac', 'privoff', 'privadm') AND texte=''";
+		break;
+	default:
+		$query_forum = "0=1";
+		break;
+	}
+	return $query_forum;
+}
+
 // Index d'invalidation des forums
 function calcul_index_forum($id_article, $id_breve, $id_rubrique, $id_syndic) {
 	if ($id_article) return 'a'.$id_article; 
@@ -277,5 +299,44 @@ function generer_url_forum_dist($id_forum, $show_thread=false) {
 	}
 }
 
+// Interface pour SPIP RSS
+function rss_suivi_forums($a) {
+	include_ecrire("inc_forum.php3");
+
+	$query_forum = critere_statut_controle_forum($a['page']);
+
+	$result_forum = spip_query("
+	SELECT	*
+	FROM	spip_forum
+	WHERE " . $query_forum . "
+	ORDER BY date_heure DESC LIMIT 0,20"
+	);
+
+	while ($t = spip_fetch_array($result_forum)) {
+		$item = array();
+		$item['title'] = typo($t['titre']);
+		if ($a['page'] == 'public'
+		AND $t['statut']<>'publie'
+		)
+			$item['title'] .= ' ('.$t['statut'].')';
+		$item['date'] = $t['date_heure'];
+		$item['author'] = $t['auteur'];
+		if ($t['email_auteur'])
+			$item['author'] .= ' &lt;'.$t['email_auteur'].'&gt;';
+		$item['url'] = lire_meta('adresse_site').'/'._DIR_RESTREINT_ABS
+			.'controle_forum.php3?page='.$a['page'].'&debut_id_forum='.$t['id_forum'];
+		$item['description'] = propre($t['texte']);
+		if ($GLOBALS['les_notes']) {
+			$item['description'] .= '<hr />'.$GLOBALS['les_notes'];
+			$GLOBALS['les_notes'] = '';
+		}
+		if ($t['nom_site'] OR vider_url($t['url_site']))
+			$item['description'] .= propre("\n- [".$t['nom_site']."->".$t['url_site']."]<br />");
+
+		$rss[] = $item;
+	}
+
+	return $rss;
+}
 
 ?>
diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3
index e5a8e82f7b4c86f1104336e1a2d0cde931c1ee61..f48782a5f1895b3780405527bf08184c5be38d73 100644
--- a/ecrire/inc_presentation.php3
+++ b/ecrire/inc_presentation.php3
@@ -1739,9 +1739,14 @@ function barre_onglets($rubrique, $onglet){
 
 		$query_forum = "SELECT * FROM spip_forum WHERE statut='publie' AND texte='' LIMIT 0,1";
 		$result_forum = spip_query($query_forum);
-		if ($row = spip_fetch_array($result_forum)) {
-			onglet(_T('onglet_messages_vide'), "controle_forum.php3?page=vide", "sans", $onglet);
-		}
+		if ($row = spip_fetch_array($result_forum))
+			onglet(_T('onglet_messages_vide'), "controle_forum.php3?page=vide", "vide", $onglet);
+
+		$query_forum = "SELECT * FROM spip_forum WHERE statut='prop' LIMIT 0,1";
+		$result_forum = spip_query($query_forum);
+		if ($row = spip_fetch_array($result_forum))
+			onglet(_T('texte_statut_attente_validation'), "controle_forum.php3?page=prop", "prop", $onglet);
+
 	}
 
 	fin_onglet();
diff --git a/ecrire/inc_sites.php3 b/ecrire/inc_sites.php3
index 22cbf17774630e054599d643322038927a260b2d..df109449c1f99c166afa98cae38f921d4554af65 100644
--- a/ecrire/inc_sites.php3
+++ b/ecrire/inc_sites.php3
@@ -236,7 +236,6 @@ function my_strtotime($la_date) {
 // A completer (il manque des tests, des valeurs par defaut, les enclosures, differents formats de sortie, etc.)
 //
 function affiche_rss($rss, $intro = '') {
-	if (!is_array($rss)) return;
 
 	// entetes
 	$u = '<'.'?xml version="1.0" encoding="'.lire_meta('charset').'"?'.">\n";
@@ -251,6 +250,7 @@ function affiche_rss($rss, $intro = '') {
 	';
 
 	// elements
+	if (is_array($rss))
 	foreach ($rss as $article) {
 		$u .= '
 	<item>
@@ -291,7 +291,9 @@ function bouton_spip_rss($op, $args) {
 	$link = new Link("../spip_rss.php?op=$op");
 	if ($a) $link->addVar('args', $a);
 	$link->addVar('id', $GLOBALS['connect_id_auteur']);
-	$link->addVar('cle', afficher_low_sec($GLOBALS['connect_id_auteur'], "rss $op $a"));
+	$cle = afficher_low_sec($GLOBALS['connect_id_auteur'], "rss $op $a");
+	$link->addVar('cle', $cle);
+	$link->addVar('lang', $GLOBALS['spip_lang']);
 	return "<a href='".$link->getUrl()."'>"
 	. http_img_pack("xml.gif", 'XML', "border='0' align='middle' valign='top'")
 	. "</a>";
diff --git a/ecrire/inc_suivi_revisions.php b/ecrire/inc_suivi_revisions.php
index 8da40a195397017a25e14ef7e76191c386770301..416a521a895943e7f6ac1afb3010d884019c1bef 100644
--- a/ecrire/inc_suivi_revisions.php
+++ b/ecrire/inc_suivi_revisions.php
@@ -216,4 +216,13 @@ function afficher_suivi_versions ($debut = 0, $id_secteur = 0, $id_auteur = fals
 		return $items;
 }
 
-?>
\ No newline at end of file
+// Interface pour SPIP RSS
+function rss_suivi_versions($a) {
+	include_ecrire("lab_revisions.php");
+	include_ecrire("lab_diff.php");
+	include_ecrire("inc_presentation.php3");
+	$rss = afficher_suivi_versions (0, $a['id_secteur'], $a['id_auteur'], $a['lang_choisie'], true, true);
+	return $rss;
+}
+
+?>
diff --git a/ecrire/suivi_revisions.php3 b/ecrire/suivi_revisions.php3
index c893da553745f7aa59ed6e37f77c7de96b9dbc8d..b81f3723755726aed83e3a7def192865b427a31e 100644
--- a/ecrire/suivi_revisions.php3
+++ b/ecrire/suivi_revisions.php3
@@ -18,7 +18,7 @@ include_spip("revisions.php");
 include_spip("diff.php");
 
 $debut = intval($debut);
-$uniq_auteur = ($uniq_auteur != false);
+$id_auteur = ($id_auteur == $connect_id_auteur) ? $id_auteur : false;
 
 debut_page(_T("icone_suivi_revisions"));
 
@@ -41,15 +41,15 @@ debut_cadre_relief();
 echo "<div class='arial11'><ul>";
 echo "<p>";
 
-if (!$uniq_auteur AND $id_secteur < 1) echo "<li><b>"._T('info_tout_site')."</b>";
+if (!$id_auteur AND $id_secteur < 1) echo "<li><b>"._T('info_tout_site')."</b>";
 else echo "<li><a href='suivi_revisions.php3'>"._T('info_tout_site')."</a>";
 
 echo "<p>";
 
 $nom_auteur = $GLOBALS['auteur_session']['nom'];
 
-if ($uniq_auteur) echo "<li><b>$nom_auteur</b>";
-else echo "<li><a href='suivi_revisions.php3?uniq_auteur=true'>$nom_auteur</a>";
+if ($id_auteur) echo "<li><b>$nom_auteur</b>";
+else echo "<li><a href='suivi_revisions.php3?id_auteur=$connect_id_auteur'>$nom_auteur</a>";
 
 echo "<p>";
 
@@ -96,7 +96,7 @@ include_ecrire('inc_sites.php3');
 $op = 'revisions';
 $args = array(
 	'id_secteur' => $id_secteur,
-	'id_auteur' => $uniq_auteur ? $connect_id_auteur : false,
+	'id_auteur' => $id_auteur,
 	'lang_choisie' => $lang_choisie
 );
 echo "<div style='text-align: "
diff --git a/spip_rss.php b/spip_rss.php
index d5f265f6c0f45993a850fc75f3384c978973893b..0c2b6bdecafe33b35e1d8f4c9ef7830b7d911bd2 100644
--- a/spip_rss.php
+++ b/spip_rss.php
@@ -20,12 +20,12 @@
 
 include("ecrire/inc_version.php3");
 include_ecrire("inc_texte.php3");
-
+include_ecrire('inc_sites.php3');
+include_ecrire("inc_acces.php3");
 
 //
 // Verifier la securite du lien et decoder les arguments
 //
-include_ecrire("inc_acces.php3");
 if (!verifier_low_sec ($id, $cle,
 "rss $op $args"
 )) {
@@ -37,16 +37,27 @@ if (!verifier_low_sec ($id, $cle,
 		list($var, $val) = split('-', $bout, 2);
 		$a[$var] = $val;
 	}
+	include_ecrire('inc_lang.php3');
+	lang_select($lang);
 }
 
 //
 // Choisir la fonction de calcul du RSS
 //
 switch($op) {
+	case 'forums':
+		include_ecrire("inc_forum.php3");
+		$rss = rss_suivi_forums($a);
+		$title = _T("ecrire:titre_page_forum_suivi")." (".$a['page'].")";
+		$url = _DIR_RESTREINT_ABS .'controle_forum.php3?page='.$a['page'];
+		break;
 	case 'revisions':
+		include_ecrire("inc_suivi_revisions.php");
 		$rss = rss_suivi_versions($a);
 		$title = _T("icone_suivi_revisions");
-		$url = _DIR_RESTREINT_ABS .'suivi_revisions.php3';
+		$url = _DIR_RESTREINT_ABS .'suivi_revisions.php3?';
+		foreach (array('id_secteur', 'id_auteur', 'lang_choisie') as $var)
+			if ($a[$var]) $url.= '&'.$var.'='.$a[$var];
 		break;
 	case 'erreur securite':
 		$rss = array(array('title' => _L('Erreur de s&eacute;curit&eacute;')));
@@ -63,7 +74,6 @@ switch($op) {
 //
 // Envoyer le RSS
 //
-include_ecrire('inc_sites.php3');
 @header('Content-Type: text/xml; charset='.lire_meta('charset'));
 
 $intro = array(
@@ -74,16 +84,4 @@ $intro = array(
 echo affiche_rss($rss, $intro);
 exit;
 
-//
-// Fonctions de calcul (a dispatcher dans les librairies)
-//
-function rss_suivi_versions($a) {
-	include_ecrire("inc_suivi_revisions.php");
-	include_ecrire("lab_revisions.php");
-	include_ecrire("lab_diff.php");
-	include_ecrire("inc_presentation.php3");
-	$rss = afficher_suivi_versions (0, $a['id_secteur'], $a['id_auteur'], $a['lang_choisie'], true, true);
-	return $rss;
-}
-
-?>
\ No newline at end of file
+?>