diff --git a/.gitattributes b/.gitattributes
index 86a6ce07ca19a853c43ea4ad33c08d68648ed50e..547480446a7f333ea7503bf66579913a4929c9f8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -321,6 +321,7 @@ ecrire/action/activer_plugins.php -text
 ecrire/action/autoriser.php -text
 ecrire/action/converser.php -text
 ecrire/action/dater.php -text
+ecrire/action/desinstaller_plugin.php -text
 ecrire/action/documenter.php -text
 ecrire/action/editer_article.php -text
 ecrire/action/editer_auteurs.php -text
diff --git a/ecrire/action/desinstaller_plugin.php b/ecrire/action/desinstaller_plugin.php
new file mode 100644
index 0000000000000000000000000000000000000000..be16295cdb20bb12fe53081f277fb8eec82feb3f
--- /dev/null
+++ b/ecrire/action/desinstaller_plugin.php
@@ -0,0 +1,36 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  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/plugin');
+function action_desinstaller_plugin_dist() {
+
+	$securiser_action = charger_fonction('securiser_action', 'inc');
+	$plug_file = $securiser_action();
+	$infos = plugin_get_infos($plug_file);
+	if (isset($infos['install'])){
+		// desinstaller
+		$etat = desinstalle_un_plugin($plug_file,$infos['prefix'],$infos['install']);
+		// desactiver si il a bien ete desinstalle
+		if (!$etat)
+			ecrire_plugin_actifs($plug_file,false,'enleve');
+		ecrire_metas();
+	}
+	if ($redirect = _request('redirect')){
+		include_spip('inc/headers');
+		$redirect = str_replace('&amp;','&',$redirect);
+		redirige_par_entete($redirect);
+	}
+}
+
+?>
diff --git a/ecrire/exec/admin_plugin.php b/ecrire/exec/admin_plugin.php
index 7e7ebede4b42bbb86d0c52909c60ea755c0e10c1..fa5ad55630d928065f15f1d29d64f5aa021ced7d 100644
--- a/ecrire/exec/admin_plugin.php
+++ b/ecrire/exec/admin_plugin.php
@@ -268,6 +268,7 @@ function affiche_arbre_plugins($liste_plugins,$liste_plugins_actifs){
 
 // http://doc.spip.org/@ligne_plug
 function ligne_plug($plug_file, $actif, $id){
+	global $spip_lang_right;
 	static $id_input=0;
 
 	$erreur = false;
@@ -281,6 +282,14 @@ function ligne_plug($plug_file, $actif, $id){
 			$s .= "/!\ $err <br/>";
 		$s .=  "</div>";
 	}
+	
+	// bouton de desinstallation
+	if ($actif && plugin_est_installe($plug_file)){
+		$s .= "<div style='float:$spip_lang_right'>";
+		$action = generer_action_auteur('desinstaller_plugin',$plug_file,generer_url_ecrire('admin_plugin'));
+		$s .= "<a href='$action'>"._T('bouton_effacer_tout')."</a>";
+		$s .= "</div>";
+	}
 
 	$etat = 'dev';
 	if (isset($info['etat']))
diff --git a/ecrire/inc/plugin.php b/ecrire/inc/plugin.php
index ba21c71794101295ca1a0e52e1ee3a4d72cb6252..70909258dec63e4013a90442caa7d1ed33b937b0 100644
--- a/ecrire/inc/plugin.php
+++ b/ecrire/inc/plugin.php
@@ -249,6 +249,22 @@ function ordonne_plugin(){
 	ecrire_plugin_actifs($liste_triee);
 	ecrire_metas();
 }
+
+function desinstalle_un_plugin($plug,$prefix,$install){
+	// faire les include qui vont bien
+	foreach($install as $file){
+		$file = trim($file);
+		@include_once(_DIR_PLUGINS."$plug/$file");
+	}
+	$prefix_install = $prefix."_install";
+	if (!function_exists($prefix_install))
+		return false;
+	// voir si on a besoin de faire l'install
+	$prefix_install('uninstall');
+	$ok = $prefix_install('test');
+	return $ok;
+}
+
 // http://doc.spip.org/@installe_un_plugin
 function installe_un_plugin($plug,$prefix,$install){
 	// faire les include qui vont bien
@@ -285,6 +301,11 @@ function installe_plugins(){
 	ecrire_meta('plugin_installes',serialize($meta_plug_installes),'non');
 	ecrire_metas();
 }
+function plugin_est_installe($plug_path){
+	$plugin_installes = isset($GLOBALS['meta']['plugin_installes'])?unserialize($GLOBALS['meta']['plugin_installes']):array();
+	if (!$plugin_installes) return false;
+	return in_array($plug_path,$plugin_installes);
+}
 
 // lecture du fichier de configuration d'un plugin
 // http://doc.spip.org/@plugin_get_infos