diff --git a/.gitattributes b/.gitattributes
index be29d9ee580f39a1de0812f28dfa63fb114d91bd..b7e037e8ab44d50c5f0c0d5fbfd0fadb5b7aa02a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -510,12 +510,14 @@ ecrire/configuration/compresseur.php -text
 ecrire/configuration/compteur.php -text
 ecrire/configuration/contenu_forums.php -text
 ecrire/configuration/documents.php -text
+ecrire/configuration/forums_prives.php -text
 ecrire/configuration/futurs.php -text
 ecrire/configuration/index.php -text
 ecrire/configuration/indexeur.php -text
 ecrire/configuration/langue.php -text
 ecrire/configuration/locuteur.php -text
 ecrire/configuration/logos.php -text
+ecrire/configuration/messagerie_agenda.php -text
 ecrire/configuration/mots.php -text
 ecrire/configuration/notifications_forum.php -text
 ecrire/configuration/participants.php -text
diff --git a/ecrire/configuration/forums_prives.php b/ecrire/configuration/forums_prives.php
new file mode 100644
index 0000000000000000000000000000000000000000..2174bdcca09d63f5417fb8df1f5263104878b89e
--- /dev/null
+++ b/ecrire/configuration/forums_prives.php
@@ -0,0 +1,53 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2008                                                *
+ *  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/presentation');
+include_spip('inc/config');
+
+function configuration_forums_prives_dist()
+{
+	$res = "<div class='verdana2'>"
+	. _L('Dans l&#8217;espace priv&#233; du site, vous pouvez activer plusieurs types de forums&nbsp;:')
+	. "<br />\n"
+
+	. "<p>"._L('Un forum sous chaque article, br&#232;ve, site r&#233;f&#233;renc&#233;, etc.&nbsp;:')
+	. "<br />\n"
+	. afficher_choix('forum_prive_objets', $GLOBALS['meta']['forum_prive_objets'],
+		array('oui' => _L('Activer ces forums'),
+			'non' => _L('D&#233;sactiver ces forums')))
+	."</p>\n"
+
+	. "<p>"._L('Un forum global, ouvert &#224; tous les r&#233;dacteurs&nbsp;:')
+	. "<br />\n"
+	. afficher_choix('forum_prive', $GLOBALS['meta']['forum_prive'],
+		array('oui' => _L('Activer le forum des r&#233;dacteurs'),
+			'non' => _L('D&#233;sactiver le forum des r&#233;dacteurs')))
+	."</p>\n"
+
+	. "<p>"._L('Un forum r&#233;serv&#233; aux administrateurs du site&nbsp;:')
+	. "<br />\n"
+	. afficher_choix('forum_prive_admin', $GLOBALS['meta']['forum_prive_admin'],
+		array('oui' => _T('item_activer_forum_administrateur'),
+			'non' => _T('item_desactiver_forum_administrateur')))
+	."</p>\n"
+
+	. "</div>";
+
+	$res = debut_cadre_trait_couleur("forum-interne-24.gif", true, "", _L('Forums de l&#8217;espace priv&#233;'))
+	. ajax_action_post('configurer', 'forums_prives', 'config_contenu','',$res)
+	 . fin_cadre_trait_couleur(true);
+
+	return ajax_action_greffe('configurer-forums_prives', '', $res);
+}
+?>
diff --git a/ecrire/configuration/messagerie_agenda.php b/ecrire/configuration/messagerie_agenda.php
new file mode 100644
index 0000000000000000000000000000000000000000..4d0fa567794b9ce5be09c79267393f5df3e0a1fc
--- /dev/null
+++ b/ecrire/configuration/messagerie_agenda.php
@@ -0,0 +1,34 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2008                                                *
+ *  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/presentation');
+include_spip('inc/config');
+
+function configuration_messagerie_agenda_dist()
+{
+	$res = "<div class='verdana2'>"
+	. _L('Une messagerie permet aux r&#233;dacteurs du site de communiquer entre eux directement dans l&#8217;espace priv&#233; du site. Elle est associ&#233;e &#224; un agenda.')
+	. "<br />\n"
+	. afficher_choix('messagerie_agenda', $GLOBALS['meta']['messagerie_agenda'],
+		array('oui' => _L('Activer la messagerie et l&#8217;agenda'),
+			'non' => _T('D&#233;sactiver la messagerie et l&#8217;agenda')))
+	. "</div>";
+
+	$res = debut_cadre_trait_couleur("messagerie-24.gif", true, "", _L('Messagerie et agenda'))
+	. ajax_action_post('configurer', 'messagerie_agenda', 'config_contenu','',$res)
+	 . fin_cadre_trait_couleur(true);
+
+	return ajax_action_greffe('configurer-messagerie_agenda', '', $res);
+}
+?>
diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php
index 32f21ceae9551cb0b9bbdaceec129413270447e9..915fcadf7a325d4da111d4eff6e20f0ee6f584dd 100644
--- a/ecrire/exec/auteur_infos.php
+++ b/ecrire/exec/auteur_infos.php
@@ -162,8 +162,11 @@ function auteurs_interventions($auteur) {
 
 	echo afficher_objets('article',_T('info_articles_auteur'),  array('FROM' => "spip_articles AS articles, spip_auteurs_articles AS lien",  "WHERE" => "lien.id_auteur=$id_auteur AND lien.id_article=articles.id_article AND articles.statut IN ($aff_art)",  'ORDER BY' => "articles.date DESC"));
 
-	if ($id_auteur != $connect_id_auteur
-	AND autoriser('ecrire', '', '', $auteur)) {
+	// Messages de l'auteur et discussions en cours
+	if ($GLOBALS['meta']['messagerie_agenda'] != 'non'
+	AND $id_auteur != $connect_id_auteur
+	AND autoriser('ecrire', '', '', $auteur)
+	) {
 		echo "<div class='nettoyeur'>&nbsp;</div>";
 		echo debut_cadre_couleur('', true);
 
@@ -174,7 +177,8 @@ function auteurs_interventions($auteur) {
 		echo afficher_messages('<b>' . _T('info_vos_rendez_vous') . '</b>', ", spip_auteurs_messages AS lien, spip_auteurs_messages AS lien2", "lien.id_auteur=$connect_id_auteur AND lien2.id_auteur = $id_auteur AND statut='publie' AND type='normal' AND rv='oui' AND date_fin > NOW() AND lien.id_message=messages.id_message AND lien2.id_message=messages.id_message", $vus, false, false);
 	
 		echo icone_horizontale(_T('info_envoyer_message_prive'), generer_action_auteur("editer_message","normal/$id_auteur"),
-				  "message.gif","", false);
+			  "message.gif","", false);
+
 		echo fin_cadre_couleur(true);
 	}
 }
diff --git a/ecrire/exec/config_contenu.php b/ecrire/exec/config_contenu.php
index 995404f0082e0ed33ab6482dd428326254a1e362..94c120e81cba84e92754d9c44fe98d025db2367d 100644
--- a/ecrire/exec/config_contenu.php
+++ b/ecrire/exec/config_contenu.php
@@ -41,36 +41,65 @@ function exec_config_contenu_dist()
 	echo debut_droite('', true);
 
 	$participants = charger_fonction('participants', 'configuration');
+	$contenu_forums = charger_fonction('contenu_forums', 'configuration');
+
 	$redacteurs = charger_fonction('redacteurs', 'configuration');
 	$visiteurs = charger_fonction('visiteurs', 'configuration');
-	$contenu_forums = charger_fonction('contenu_forums', 'configuration');
+
+	$forums_prives = charger_fonction('forums_prives', 'configuration');
+	$messagerie_agenda = charger_fonction('messagerie_agenda', 'configuration');
+
 	$annonces = charger_fonction('annonces', 'configuration');
 	$notifications_forum = charger_fonction('notifications_forum', 'configuration');
-	$administrateurs = charger_fonction('administrateurs', 'configuration');
 
-// Mode de participation aux forums
 
-	echo $participants(), "<br />";
+	/*
+	 * Forums publics
+	 *
+	 */
 
-//
-// Inscriptions de redacteurs et visiteurs depuis le site public
-// (la balise FORMULAIRE_INSCRIPTION sert au deux)
-//
-	echo  $redacteurs(),  $visiteurs(), "<br />";
 
-// Champs actives sur les forums
+	echo "<h3>"._L('Sur le site public')."</h3>\n";
+
+	// Mode de participation aux forums
+	echo $participants();
+
+	// Champs actives sur les forums
 	echo $contenu_forums();
 
-//
-// Activer/desactiver mails automatiques
-//
-	echo  $annonces(), "<br />\n";
+	echo "<br />";
 
-	echo  $notifications_forum(), "<br />\n";
 
-// Activer forum admins
+	/*
+	 * Inscriptions de redacteurs et visiteurs depuis le site public
+	 * (la balise FORMULAIRE_INSCRIPTION sert au deux)
+	 */
+	echo  $redacteurs(),  $visiteurs(), "<br />";
+
+
+	/*
+	 * Forums prives
+	 *
+	 */
+
+	echo "<h3>"._L('Dans l&#8217;espace priv&#233;')."</h3>\n";
+
+	// Forums prives
+	echo $forums_prives();
+	echo $messagerie_agenda();
+
+	echo "<br />";
+
+
+	/*
+	 * mails automatiques
+	 *
+	 */
+	echo "<h3>"._L('Notifications')."</h3>\n";
+
+	echo  $annonces(), "<br />\n";
+	echo  $notifications_forum(), "<br />\n";
 
-	echo $administrateurs();
 
 //
 // Choix supplementaires proposees par les plugins
diff --git a/ecrire/inc/boutons.php b/ecrire/inc/boutons.php
index ca41ee1a871bd4e47d43c7a171a75f8b7c7818ad..9ea50c6ecf63914b7653d8f0094ee45ed24b97df 100644
--- a/ecrire/inc/boutons.php
+++ b/ecrire/inc/boutons.php
@@ -55,13 +55,21 @@ function definir_barre_boutons() {
 
 	global $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
 
-	$boutons_admin=array(
-		'accueil' => new Bouton('asuivre-48.png', 'icone_a_suivre'),
-		'naviguer' => new Bouton("documents-48$spip_lang_rtl.png",
-								 'icone_edition_site'),
-		'forum' => new Bouton('messagerie-48.png', 'titre_forum'),
-		'auteurs' => new Bouton('redacteurs-48.png', 'icone_auteurs')
-	);
+	$boutons_admin=array();
+
+	$boutons_admin['accueil'] = new Bouton(
+		'asuivre-48.png', 'icone_a_suivre');
+
+	$boutons_admin['naviguer'] = new Bouton(
+		"documents-48$spip_lang_rtl.png", 'icone_edition_site');
+
+	if ($GLOBALS['meta']['forum_prive'] != 'non')
+		$boutons_admin['forum'] = new Bouton(
+			'messagerie-48.png', 'titre_forum');
+	
+	$boutons_admin['auteurs'] = new Bouton(
+		'redacteurs-48.png', 'icone_auteurs');
+
 
 	if ($GLOBALS['meta']["activer_statistiques"] != 'non'
 	AND autoriser('voirstats')) {
@@ -144,8 +152,15 @@ function definir_barre_boutons() {
 		$sousmenu['controle_petition']=
 			new Bouton("suivi-petition-24.gif", "icone_suivi_pettions");
 
-	if ($sousmenu)
-		$boutons_admin['forum']->sousmenu= $sousmenu;
+	// Si le forum a ete desactive, mais qu'il y a un sous-menu de suivi
+	// des forums ou des petitions, on colle ce suivi sous le menu "a suivre"
+	if ($sousmenu) {
+		if (isset($boutons_admin['forum']))
+			$boutons_admin['forum']->sousmenu= $sousmenu;
+		else
+			$boutons_admin['accueil']->sousmenu= $sousmenu;
+	}
+
 
 
 	// sous menu auteurs
diff --git a/ecrire/inc/config.php b/ecrire/inc/config.php
index 19162005f8296399263897248f141097ab7375e2..a5d6126ee791e518064e8fb4ff37b0e0f1da0d91 100644
--- a/ecrire/inc/config.php
+++ b/ecrire/inc/config.php
@@ -72,7 +72,10 @@ function liste_metas()
 		'adresse_neuf' => '',
 		'jours_neuf' => '',
 		'quoi_de_neuf' => 'non',
-		'forum_prive_admin' => 'non',
+		'forum_prive' => 'oui', # forum global dans l'espace prive
+		'forum_prive_objets' => 'oui', # forum sous chaque article de l'espace prive
+		'forum_prive_admin' => 'non', # forum des administrateurs
+		'messagerie_agenda' => 'oui',
 
 		'articles_versions' => 'non',
 		'activer_statistiques' => 'non',
diff --git a/ecrire/inc/discuter.php b/ecrire/inc/discuter.php
index 431c2944f80a73da9602d02528cac3352a1ca30e..2781ba233328c71ce0e413cfc37cc0a2bdd05f44 100644
--- a/ecrire/inc/discuter.php
+++ b/ecrire/inc/discuter.php
@@ -45,6 +45,9 @@ function formulaire_discuter($script, $args, $debut, $pas, $ancre, $total, $obje
 // http://doc.spip.org/@inc_discuter_dist
 function inc_discuter_dist($id, $script, $objet, $statut='prive', $debut=1, $pas=10, $id_parent = 0)
 {
+	if ($GLOBALS['meta']['forum_prive_objets'] == 'non')
+		return '';
+
 	$debut = intval($debut);
 	if (!$pas) $pas = 10;
 	$id = intval($id);
diff --git a/ecrire/inc/formater_auteur.php b/ecrire/inc/formater_auteur.php
index 300c833eff6ca2a5468868a6ca46a46a9b04437b..548ac23559098d30207d639edae436c0f42a4970 100644
--- a/ecrire/inc/formater_auteur.php
+++ b/ecrire/inc/formater_auteur.php
@@ -79,11 +79,20 @@ function formater_auteur_mail($row, $id_auteur)
 {
 	global $spip_lang_rtl;
 
-	if (!autoriser('modifier', 'auteur', $id_auteur, $row))
-		$href= 'mailto:' . $row['email'];
-	else $href = generer_action_auteur("editer_message","normal/$id_auteur");
-	return "<a href='$href' title=\""
+	if ($row['imessage'] != 'non'
+	AND $GLOBALS['meta']['messagerie_agenda'] != 'non')
+		$href = generer_action_auteur("editer_message","normal/$id_auteur");
+	else if (strlen($row['email'])
+	AND autoriser('voir', 'auteur', $id_auteur))
+		$href = 'mailto:' . $row['email'];
+	else
+		$href = '';
+
+	if ($href)
+		return "<a href='$href' title=\""
 	  .  _T('info_envoyer_message_prive')
 	  . "\" class='message'>&nbsp;</a>";
+	else
+		return '';
 }
 ?>
diff --git a/ecrire/inc/gadgets.php b/ecrire/inc/gadgets.php
index 1ed9e95b79a789fdd0a7cf9ce2c764213eb4b31a..23c4b2fcec150c8024eada2a567571ebe971ac22 100644
--- a/ecrire/inc/gadgets.php
+++ b/ecrire/inc/gadgets.php
@@ -164,22 +164,25 @@ function installer_gadgets($id_rubrique)
 	. "' class='icone26' onmouseover=\"changestyle('bandeaurecherche'); jQuery('#form_recherche')[0].focus();\" onfocus=\"changestyle('bandeaurecherche');\" onblur=\"changestyle('bandeaurecherche');\">"
 	. http_img_pack("loupe.png", _T('info_rechercher'), "width='26' height='20'")
 	."</a>"
-	. http_img_pack("rien.gif", "", "width='10'")
-	. "<a id='boutonbandeauagenda' href='"
-	. generer_url_ecrire("calendrier","type=semaine")
-	. "' class='icone26' onmouseover=\"changestyle('bandeauagenda');\">"
-	. http_img_pack("cal-rv.png", _T('icone_agenda'), "width='26' height='20'")
-	."</a>"
-	. "<a href='"
-	. generer_url_ecrire("messagerie")
-	. "' class='icone26' onmouseover=\"changestyle('bandeaumessagerie');\" onfocus=\"changestyle('bandeaumessagerie');\" onblur=\"changestyle('bandeaumessagerie');\">"
-	. http_img_pack("cal-messagerie.png", _T('icone_messagerie_personnelle'), "width='26' height='20'")
-	."</a>"
-	. "<a href='"
-	. generer_url_ecrire("synchro")
-	. "' class='icone26' onmouseover=\"changestyle('bandeausynchro');\" onfocus=\"changestyle('bandeausynchro');\" onblur=\"changestyle('bandeausynchro');\">"
-	. http_img_pack("cal-suivi.png", _T('icone_suivi_activite'), "width='26' height='20'")
-	. "</a>";
+
+	. (($GLOBALS['meta']['messagerie_agenda'] != 'non')
+		? http_img_pack("rien.gif", "", "width='10'")
+		. "<a id='boutonbandeauagenda' href='"
+		. generer_url_ecrire("calendrier","type=semaine")
+		. "' class='icone26' onmouseover=\"changestyle('bandeauagenda');\">"
+		. http_img_pack("cal-rv.png", _T('icone_agenda'), "width='26' height='20'")
+		."</a>"
+		. "<a href='"
+		. generer_url_ecrire("messagerie")
+		. "' class='icone26' onmouseover=\"changestyle('bandeaumessagerie');\" onfocus=\"changestyle('bandeaumessagerie');\" onblur=\"changestyle('bandeaumessagerie');\">"
+		. http_img_pack("cal-messagerie.png", _T('icone_messagerie_personnelle'), "width='26' height='20'")
+		."</a>"
+		. "<a href='"
+		. generer_url_ecrire("synchro")
+		. "' class='icone26' onmouseover=\"changestyle('bandeausynchro');\" onfocus=\"changestyle('bandeausynchro');\" onblur=\"changestyle('bandeausynchro');\">"
+		. http_img_pack("cal-suivi.png", _T('icone_suivi_activite'), "width='26' height='20'")
+		. "</a>"
+	: '');
 }
 
 // http://doc.spip.org/@repercuter_gadgets
diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php
index f62110915402412b63257a5f32d883dfbf15554d..10e3456bd8b17462c13ca584326dbb3c009069aa 100644
--- a/ecrire/inc/presentation.php
+++ b/ecrire/inc/presentation.php
@@ -443,8 +443,10 @@ function envoi_link($nom_site_spip, $minipres=false) {
 	. '" id="cssprivee" />'  . "\n"
 	
 	// CSS calendrier
-	. '<link rel="stylesheet" type="text/css" href="'
-	  . url_absolue(find_in_path('agenda.css')) .'" />' . "\n"
+	. (($GLOBALS['meta']['messagerie_agenda'] != 'non')
+		? '<link rel="stylesheet" type="text/css" href="'
+		. url_absolue(find_in_path('agenda.css')) .'" />' . "\n"
+		: '')
 	
 	// CSS imprimante (masque des trucs, a completer)
 	. '<link rel="stylesheet" type="text/css" href="'