diff --git a/.gitattributes b/.gitattributes
index 85576dd3776577475813a826b653e878488dce9e..e56fa239f92008e389fe71659ba3d9f65e7d8376 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -27,6 +27,7 @@ ecrire/action/editer_mot.php -text
 ecrire/action/editer_mots.php -text
 ecrire/action/editer_rubrique.php -text
 ecrire/action/editer_site.php -text
+ecrire/action/etre_webmestre.php -text
 ecrire/action/export_all.php -text
 ecrire/action/iconifier.php -text
 ecrire/action/index.php -text
diff --git a/ecrire/action/editer_auteur.php b/ecrire/action/editer_auteur.php
index fc4346a8a409c3c553d798581067040da1ede72c..945ce4a73b33e697848991fe4fa891a7f9dfc762 100644
--- a/ecrire/action/editer_auteur.php
+++ b/ecrire/action/editer_auteur.php
@@ -152,7 +152,7 @@ function auteur_referent($id_auteur,$c){
 }
 
 // http://doc.spip.org/@instituer_auteur
-function instituer_auteur($id_auteur, $c) {
+function instituer_auteur($id_auteur, $c, $force_webmestre = false) {
 	if (!$id_auteur=intval($id_auteur))
 		return false;
 	// commencer par traiter les cas particuliers des logins et pass
@@ -184,7 +184,7 @@ function instituer_auteur($id_auteur, $c) {
 			$c['restreintes'] = array($c['id_parent']);
 	}
 
-	if (isset($c['webmestre']) AND autoriser('modifier', 'auteur', $id_auteur,null, array('webmestre' => '?')))
+	if (isset($c['webmestre']) AND ($force_webmestre OR autoriser('modifier', 'auteur', $id_auteur,null, array('webmestre' => '?'))))
 		$champs['webmestre'] = $c['webmestre']=='oui'?'oui':'non';
 	
 	// Envoyer aux plugins
diff --git a/ecrire/action/etre_webmestre.php b/ecrire/action/etre_webmestre.php
new file mode 100644
index 0000000000000000000000000000000000000000..f8f6552340849394cf569830109e45fd8ff6cee6
--- /dev/null
+++ b/ecrire/action/etre_webmestre.php
@@ -0,0 +1,47 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2010                                                *
+ *  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/actions');
+
+/**
+ * Prouver qu'on a les droits de webmestre via un ftp, et
+ * devenir webmestre sans refaire l'install
+ * @return <type>
+ */
+function action_etre_webmestre_dist() {
+	$securiser_action = charger_fonction('securiser_action', 'inc');
+	$time = $securiser_action();
+
+	if (time()-$time<15*60
+		AND $GLOBALS['visiteur_session']['statut']=='0minirezo'
+		AND $GLOBALS['visiteur_session']['webmestre']!=='oui') {
+		$action = _T('info_admin_etre_webmestre');
+		$admin = charger_fonction('admin', 'inc');
+		// lance la verif par ftp et l'appel
+		// a base_etre_webmestre_dist quand c'est OK
+		if ($r = $admin('etre_webmestre', $action)) {
+			echo $r;
+			exit;
+		}
+	}
+
+}
+
+function base_etre_webmestre_dist() {
+	if ($GLOBALS['visiteur_session']['statut']=='0minirezo' AND $GLOBALS['visiteur_session']['webmestre']!=='oui') {
+		include_spip('action/editer_auteur');
+		instituer_auteur($GLOBALS['visiteur_session']['id_auteur'], array('webmestre'=>'oui'), true);
+	}
+}
+?>
diff --git a/ecrire/inc/instituer_auteur.php b/ecrire/inc/instituer_auteur.php
index 07226b9e9e6d60ca0a0ea2e1029d2c26298c8ef5..f1f19470945be69571bca3d7b5d2b441d0dc6cb7 100644
--- a/ecrire/inc/instituer_auteur.php
+++ b/ecrire/inc/instituer_auteur.php
@@ -21,7 +21,7 @@ include_spip('inc/autoriser');
 
 //  affiche le statut de l'auteur dans l'espace prive
 // les admins voient et peuvent modifier les droits d'un auteur
-// les admins restreints les voient mais 
+// les admins restreints les voient mais
 // ne peuvent les utiliser que pour mettre un auteur a la poubelle
 
 // http://doc.spip.org/@inc_instituer_auteur_dist
@@ -41,9 +41,9 @@ function inc_instituer_auteur_dist($auteur, $modif = true) {
 	$res = "<$label>" . _T('info_statut_auteur')."</$label> " . $menu;
 
 	if ($modif)
-		$res .= editer_choix_webmestre($auteur);
+		$res .= "<div>".editer_choix_webmestre($auteur)."</div>";
 	else
-		$res .= afficher_webmestre($auteur);
+		$res .= (($w=afficher_webmestre($auteur))?" ($w)":"");
 
 	// Prepare le bloc des rubriques pour les admins eventuellement restreints ;
 	// si l'auteur n'est pas '0minirezo', on le cache, pour pouvoir le reveler
@@ -65,23 +65,36 @@ function inc_instituer_auteur_dist($auteur, $modif = true) {
 
 function afficher_webmestre($auteur){
 	if (autoriser('webmestre','',0,$auteur['id_auteur']))
-		return "<p>"._L("Cet administrateur est <b>webmestre</b>")."</p>";
+		if ($auteur['id_auteur']==$GLOBALS['visiteur_session']['id_auteur'])
+			return _T("info_admin_je_suis_webmestre");
+		else
+			return _T("info_admin_webmestre");
+
+	// si c'est ma fiche perso, en dire un peu plus
+	if ($auteur['id_auteur']==$GLOBALS['visiteur_session']['id_auteur']) {
+		if (defined('_ID_WEBMESTRES'))
+			return _T('info_webmestre_forces',array('file_options'=>basename(_FILE_OPTIONS)));
+		else
+			return bouton_action (_T('info_admin_etre_webmestre'), generer_action_auteur('etre_webmestre', time(), self()));
+	}
 	return "";
 }
 
 function editer_choix_webmestre($auteur){
 	$res = "";
-	$style = "";
+	$style = "";	
 	if (!autoriser('modifier', 'auteur', $auteur['id_auteur'],
 	null, array('webmestre' => '?'))){
 		$res =  afficher_webmestre($auteur);
+		if (defined('_ID_WEBMESTRES'))
+			$res .= ' '._T('info_webmestre_forces',array('file_options'=>basename(_FILE_OPTIONS)));
 	}
 	else {
 		$res = "<input type='checkbox' class='checkbox' name='webmestre' id='webmestre' value='oui'"
 			. ($auteur['webmestre']=='oui'?" checked='checked'":"")
 			. " />"
 			. "<label for='webmestre'>"
-			. _L("Donner a cet administrateur les droits de webmestre")
+			. _T("info_admin_statuer_webmestre")
 			. "</label>";
 
 		$res .= "<input type='hidden' name='saisie_webmestre' value='1' />";
@@ -101,14 +114,14 @@ function traduire_statut_auteur($statut){
 		       );
 	if (isset($recom[$statut]))
 		return $recom[$statut];
-	
+
 	// retrouver directement par le statut sinon
 	if ($t = array_search($statut, $GLOBALS['liste_des_statuts'])){
 	  if (isset($recom[$t]))
 			return $recom[$t];
 		return $t;
 	}
-	
+
 	return '';
 }
 
@@ -121,7 +134,7 @@ function choix_statut_auteur($statut, $id_auteur, $ancre) {
 	null, array('statut' => '?')))
 		return '';
 
-	// A-t-on le droit de promouvoir cet auteur comme admin 
+	// A-t-on le droit de promouvoir cet auteur comme admin
 	// et y a-t-il des visiteurs ?
 
 	$droits = $GLOBALS['liste_des_statuts'];
@@ -157,7 +170,7 @@ function choix_statut_auteur($statut, $id_auteur, $ancre) {
 		$menu .= mySel('nouveau',$statut,_T('info_statut_auteur_a_confirmer'));
 
 	$statut_rubrique = str_replace(',', '|', _STATUT_AUTEUR_RUBRIQUE);
-	return "<select class='select fondl' name='statut' id='statut' size='1'
+	return "<select class='select' name='statut' id='statut' size='1'
 		onchange=\"(this.options[this.selectedIndex].value.match(/^($statut_rubrique)\$/))?jQuery('#$ancre:hidden').slideDown():jQuery('#$ancre:visible').slideUp();"
 	. "(this.options[this.selectedIndex].value=='0minirezo')?jQuery('#choix-webmestre:hidden').slideDown():jQuery('#choix-webmestre:visible').slideUp();\">"
 	. $menu
@@ -175,7 +188,7 @@ function afficher_rubriques_admin_restreintes($auteur, $modif = true){
 
 	$id_auteur = intval($auteur['id_auteur']);
 
-	$result = sql_select("R.id_rubrique, " . sql_multi ("titre", $spip_lang), "spip_auteurs_rubriques AS L LEFT JOIN spip_rubriques AS R ON L.id_rubrique=R.id_rubrique", "L.id_auteur=$id_auteur", "", "multi");
+	$result = sql_select("rubriques.id_rubrique, " . sql_multi ("titre", $spip_lang) . "", "spip_auteurs_rubriques AS lien LEFT JOIN spip_rubriques AS rubriques ON lien.id_rubrique=rubriques.id_rubrique", "lien.id_auteur=$id_auteur", "", "multi");
 
 	$menu = $restreint = '';
 	// L'autorisation de modifier les rubriques restreintes
@@ -200,7 +213,7 @@ function afficher_rubriques_admin_restreintes($auteur, $modif = true){
 	} else {
 
 		$menu =  "<ul id='liste_rubriques_restreintes' style='list-style-image: url("
-			. chemin_image("rubrique-12.png")
+			. chemin_image("rubrique-12.gif")
 			. ")'>"
 			. $restreint
 			. "</ul>\n";
@@ -238,7 +251,7 @@ function choix_rubriques_admin_restreint($auteur, $modif=true) {
 		$res .= debut_block_depliable(true,"statut$id_auteur")
 		. "\n<div id='ajax_rubrique' class='arial1'>\n"
 		. "<b>"
-		. $label 
+		. $label
 		. "</b>"
 		. "\n<input name='id_auteur' value='"
 		. $id_auteur
diff --git a/ecrire/lang/ecrire_fr.php b/ecrire/lang/ecrire_fr.php
index fdb50b57ec034897f63711c300a23aa1c74393e6..d7ce58d24f8c7474be9ec0cce024e1024859bc44 100644
--- a/ecrire/lang/ecrire_fr.php
+++ b/ecrire/lang/ecrire_fr.php
@@ -287,6 +287,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_admin_gere_rubriques' => 'Cet administrateur g&egrave;re les rubriques suivantes :',
 'info_admin_gere_toutes_rubriques' => 'Cet administrateur g&egrave;re <b>toutes les rubriques</b>.',
 'info_admin_statuer_webmestre' => 'Donner &agrave; cet administrateur les droits de webmestre',
+'info_admin_etre_webmestre' => 'Me donner les droits de webmestre',
+'info_admin_je_suis_webmestre' => 'Je suis <b>webmestre</b>',
 'info_admin_webmestre' => 'Cet administrateur est <b>webmestre</b>',
 'info_administrateur' => 'Administrateur',
 'info_administrateur_1' => 'Administrateur',
@@ -712,6 +714,7 @@ exige d\'avoir un acc&egrave;s FTP au site Web.</p>',
 Les traductions sont associ&eacute;es &agrave; l\'original,
 dans une couleur qui indique leur &eacute;tat&nbsp;:',
 'info_travail_colaboratif' => 'Travail collaboratif sur les articles',
+'info_webmestre_forces' => 'Les webmestres sont actuellement d&eacute;finis dans <tt>@file_options@</tt>.',
 'info_un_article' => 'un article,',
 'info_un_mot' => 'Un seul mot &agrave; la fois',
 'info_un_site' => 'un site,',