diff --git a/ecrire/action/charger_plugin.php b/ecrire/action/charger_plugin.php
index f8b36611d29b7f5822e8bbbf570955bbb5c98400..0d9ca2fd0b9138723281db79b72c4be15a6cd827 100644
--- a/ecrire/action/charger_plugin.php
+++ b/ecrire/action/charger_plugin.php
@@ -145,6 +145,7 @@ function action_charger_plugin_dist() {
 					. $retour;
 
 			if (_request('extract')) {
+				$afficher = charger_fonction('afficher_plugin','plugins'); // pour plugin_propre
 				$texte = plugin_propre(
 				spip_xml_aplatit($arbre['plugin'][0]['description']));
 				$texte .= '<p>'._T('plugin_zip_installe_finie',array('zip'=>$zip)).'</p>';
@@ -192,7 +193,7 @@ function action_charger_plugin_dist() {
 	// par defaut on revient sur la page admin_plugin
 	if($redirect == _DIR_RESTREINT OR $redirect == "./"){
 		$redirect_annul = generer_url_ecrire('admin_plugin');
-		$redirect_form = 'admin_plugin&'.$type.'='.preg_replace(',^[^/]+/|/$,', '', $status['dirname']);
+		$redirect_form = 'admin_plugin&voir=recents&'.$type.'='.preg_replace(',^[^/]+/|/$,', '', $status['dirname']);
 		$redirect_action = '';
 	}
 	else{
diff --git a/ecrire/exec/admin_plugin.php b/ecrire/exec/admin_plugin.php
index 5a6f7d7e49acebfb40e8490f2c841ed39cb703d1..9faffd7155abcb9aa0d16ea0ae475dbda6c43af4 100644
--- a/ecrire/exec/admin_plugin.php
+++ b/ecrire/exec/admin_plugin.php
@@ -72,51 +72,68 @@ function exec_admin_plugin_dist($retour='') {
 		$plugins_interessants = array();
 
 	if ($lpf) {
-		echo "<div class='liste_plugins'>";
+		echo "<div class='liste-plugins formulaire_spip'>";
 		echo debut_cadre_trait_couleur('plugin-24.png',true,'',_T('plugins_liste'),
 		'liste_plugins');
 		echo "<p>"._T('texte_presente_plugin')."</p>";
 
 
-		$sub = "\n<div style='text-align:".$GLOBALS['spip_lang_right']."'>"
-		.  "<input type='submit' value='"._T('bouton_valider')
-		."' class='fondo' />" . "</div>";
+		$sub = "\n<div class='boutons'>"
+		.  "<input type='submit' class='submit' value='"._T('bouton_enregistrer')
+		."' />" . "</div>";
 
 
-		// S'il y a plus de 10 plugins pas installes, les signaler a part ;
-		// mais on affiche tous les plugins mis a la racine ou dans auto/
-		if (count($lpf) - count($lcpa) > 9
-		AND _request('afficher_tous_plugins') != 'oui') {
+		$quoi = _request('voir');
+		$quoi = $quoi ? $quoi : 'actifs';
 
-			$dir_auto = substr(_DIR_PLUGINS_AUTO, strlen(_DIR_PLUGINS));
-			$lcpaffiche = array();
-			foreach ($lpf as $f)
-				if (!strpos($f, '/')
-				OR ($dir_auto AND substr($f, 0, strlen($dir_auto)) == $dir_auto)
-				OR in_array($f, $lcpa)
-				OR in_array($f, $plugins_interessants))
-					$lcpaffiche[] = $f;
-			if (count($lcpaffiche)<10 AND !$format) $format = 'liste';
-			$lien_format = $format!='liste' ?
+		$corps .= "<div class='liens'>"
+		 . lien_ou_expose(parametre_url(self(),'voir','actifs'), _T('plugins_actifs',array('count'=>count($lcpa))), $quoi=='actifs')
+		 . ' | '
+		 . lien_ou_expose(parametre_url(self(),'voir','recents'), _T('plugins_recents'), $quoi=='recents')
+		 . ' | '
+		 . lien_ou_expose(parametre_url(self(),'voir','tous'), _T('plugins_disponibles',array('count'=>count($lpf))), $quoi=='tous')
+		 . "</div>";
+
+		// les liens de navigation (actifs, frequents, tous)
+		/*	$lien_format = $format!='liste' ?
 			  ("<a href='".parametre_url(self(),'format','liste')."'>"._T('plugins_vue_liste')."</a>")
 			  :("<a href='".parametre_url(self(),'format','arbre')."'>"._T('plugins_vue_hierarchie')."</a>");
 			$corps = "<p>$lien_format | "._T('plugins_actifs',array('count'=>count($lcpa)))."\n"
 			  . " | <a href='". parametre_url(self(),'afficher_tous_plugins', 'oui') ."'>"
 			  ._T('plugins_disponibles',array('count'=>count($lpf)))."</a></p>\n"
-				. affiche_les_plugins($lcpaffiche, $lcpa, $format);
-
-		} else {
+		 *
+		else {
 			if (count($lpf)<10 AND !$format) $format = 'liste';
 			$lien_format = $format!='liste' ?
 			  ("<a href='".parametre_url(self(),'format','liste')."'>"._T('plugins_vue_liste')."</a>")
 			  :("<a href='".parametre_url(self(),'format','arbre')."'>"._T('plugins_vue_hierarchie')."</a>");
-			$corps = 
+			$corps =
 				"<p>$lien_format | "
 			  ."<a href='". parametre_url(self(),'afficher_tous_plugins', '') ."'>" . _T('plugins_actifs',array('count'=>count($lcpa)))."</a> | \n"
 				. ""._T('plugins_disponibles',array('count'=>count($lpf)))
 				. "</p>\n"
 				. (count($lpf)>20 ? $sub : '')
 				. affiche_les_plugins($lpf, $lcpa, $format);
+		}
+		 */
+
+		// la liste
+		if ($quoi=='actifs')
+			$corps .= affiche_les_plugins($lcpa, $lcpa, $format);
+		elseif ($quoi=='tous')
+			$corps .= affiche_les_plugins($lpf, $lcpa, $format);
+		else {
+			$dir_auto = substr(_DIR_PLUGINS_AUTO, strlen(_DIR_PLUGINS));
+			$lcpaffiche = array();
+			foreach ($lpf as $f)
+				if (!strpos($f, '/')
+				OR ($dir_auto AND substr($f, 0, strlen($dir_auto)) == $dir_auto)
+				OR in_array($f, $lcpa)
+				OR in_array($f, $plugins_interessants))
+					$lcpaffiche[] = $f;
+
+			$corps .= affiche_les_plugins($lcpaffiche, $lcpa, $format);
+
 		}
 
 		$corps .= "\n<br />" . $sub;
@@ -147,7 +164,7 @@ function affiche_les_extensions($liste_plugins_actifs){
 		$res .= "<p>"._L('Les extensions ci-dessous sont charg&#233;es et activ&#233;es dans le r&#233;pertoire @extensions@. Elles ne sont pas d&#233;sactivables.', array('extensions' => joli_repertoire(_DIR_EXTENSIONS)))."</p>";
 
 		$afficher = charger_fonction("afficher_$format",'plugins');
-		$res .= $afficher($liste_extensions,$liste_plugins_actifs);
+		$res .= $afficher(self(), $liste_extensions,$liste_plugins_actifs);
 
 		$res .= fin_cadre_trait_couleur(true);
 		$res .= "</div>\n";
@@ -160,38 +177,41 @@ function affiche_les_plugins($liste_plugins, $liste_plugins_actifs, $format='lis
 
 #	(spip_timer('cachexml'));
 
+	if (!$format)
+		$format = 'liste';
 	if (!in_array($format,array('liste','repertoires')))
 		$format = 'repertoires';
 
 	$afficher = charger_fonction("afficher_$format",'plugins');
-	$res = $afficher($liste_plugins,$liste_plugins_actifs);
+	$res = $afficher(self(), $liste_plugins,$liste_plugins_actifs);
 
 #	var_dump(spip_timer('cachexml'));
 
 
-	return http_script("
+	return 
+	http_script("
 	jQuery(function(){
-		jQuery('input.check').click(function(){
-			jQuery(this).parent().toggleClass('nomplugin_on');
-		});
-		jQuery('div.nomplugin a[rel=info]').click(function(){
-			var prefix = jQuery(this).parent().prev().attr('name');
-			if (!jQuery(this).siblings('div.info').html()) {
-				jQuery(this).siblings('div.info').prepend(ajax_image_searching).load(
-					jQuery(this).attr('href').replace(/admin_plugin|plugins/, 'info_plugin'), {},
-					function() {
-						document.location = '#' + prefix;
+		jQuery('.plugins li.item a[rel=info]').click(function(){
+			var li = jQuery(this).parents('li').eq(0);
+			var prefix = li.find('input.checkbox').attr('name');
+			if (!jQuery('div.details',li).html()) {
+				jQuery('div.details',li).prepend(ajax_image_searching).load(
+					jQuery(this).attr('href').replace(/admin_plugin|plugins/, 'info_plugin'), {}, function(){
+						li.addClass('on');
 					}
 				);
-			} else {
-				if (jQuery(this).siblings('div.info').toggle().attr('display') != 'none') {
-					document.location = '#' + prefix;
-				}
+			}
+			else {
+				if (jQuery('div.details',li).toggle().is(':visible'))
+					li.addClass('on');
+				else
+					li.removeClass('on');
 			}
 			return false;
 		});
 	});
-	") . $res;
+	") .
+	$res;
 }
 
 /**
diff --git a/ecrire/exec/info_plugin.php b/ecrire/exec/info_plugin.php
index e781bc4fe5599faf3dddba0bed3be99498e64795..27e4535b27d70afe3e9901e252de9b794e652c37 100644
--- a/ecrire/exec/info_plugin.php
+++ b/ecrire/exec/info_plugin.php
@@ -2,9 +2,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-include_spip('inc/plugin');
 include_spip('inc/actions');
-
 // http://doc.spip.org/@exec_info_plugin_dist
 function exec_info_plugin_dist() {
 	if (!autoriser('configurer', 'plugins')) {
@@ -14,6 +12,7 @@ function exec_info_plugin_dist() {
 		$plug = _request('plugin');
 		$get_infos = charger_fonction('get_infos','plugins');
 		$info = $get_infos($plug);
+		$afficher_plugin = charger_fonction("afficher_plugin","plugins");
 		ajax_retour(affiche_bloc_plugin($plug, $info));
 	}
 }
diff --git a/ecrire/inc/plugin.php b/ecrire/inc/plugin.php
index f349cc6ab1a8a6ff0fda44059fa87d56baea9fff..ab0de21e714dadac0273be952bb39fc70c778e92 100644
--- a/ecrire/inc/plugin.php
+++ b/ecrire/inc/plugin.php
@@ -685,117 +685,5 @@ function message_crash_plugins() {
 }
 
 
-// http://doc.spip.org/@affiche_bloc_plugin
-function affiche_bloc_plugin($plug_file, $info, $dir_plugins=null) {
-	global $spip_lang_right;
-	if (!$dir_plugins)
-		$dir_plugins = _DIR_PLUGINS;
-
-	// puce d'etat du plugin
-	// <etat>dev|experimental|test|stable</etat>
-	$etat = 'dev';
-	if (isset($info['etat']))
-		$etat = $info['etat'];
-	switch ($etat) {
-		case 'experimental':
-			$puce = 'puce-rouge.gif';
-			$titre_etat = _T('plugin_etat_experimental');
-			break;
-		case 'test':
-			$puce = 'puce-orange.gif';
-			$titre_etat = _T('plugin_etat_test');
-			break;
-		case 'stable':
-			$puce = 'puce-verte.gif';
-			$titre_etat = _T('plugin_etat_stable');
-			break;
-		default:
-			$puce = 'puce-poubelle.gif';
-			$titre_etat = _T('plugin_etat_developpement');
-			break;
-	}
-
-	$s .= "<div class='detailplugin verdana2'>";
-
-	if (isset($info['icon'])) {
-		include_spip("inc/filtres_images_mini");
-		$s.= "<div  style='float:$spip_lang_right;'>".image_reduire($dir_plugins.$plug_file.'/'.trim($info['icon']), 64)."</div>";
-
-	}
-	// TODO: le traiter_multi ici n'est pas beau
-	// cf. description du plugin/_stable_/ortho/plugin.xml
-	if (isset($info['description']))
-		$s .= plugin_propre($info['description']) . "<br/>";
-
-	if (isset($info['auteur']))
-		$s .= "<hr/>" . _T('auteur') .' '. plugin_propre($info['auteur']) . "<br/>";
-	if (isset($info['licence']))
-		$s .= "<hr/>" . _T('intitule_licence') .' '. plugin_propre($info['licence']) . "<br/>";
-
-	if (trim($info['lien'])) {
-		if (preg_match(',^https?://,iS', $info['lien']))
-			$s .= "<hr/>" . _T('info_url') .' '. plugin_propre("[->".$info['lien']."]") . "<br/>";
-		else
-			$s .= "<hr/>" . _T('info_url') .' '. plugin_propre($info['lien']) . "<br/>";
-	}
-
-	$s .= "</div>";
-
-	//
-	// Ajouter les infos techniques
-	//
-	$infotech = array();
-
-	$version = _T('version') .' '.  $info['version'];
-	if ($svn_revision = version_svn_courante($dir_plugins.$plug_file))
-		$version .= ($svn_revision<0 ? ' SVN':'').' ['.abs($svn_revision).']';
-
-	$infotech[] = $version;
-	$infotech[] = "<strong>$titre_etat</strong>";
-
-	// Version SVN
-
-	// bouton de desinstallation
-	if (plugin_est_installe($plug_file)){
-		$action = redirige_action_auteur('desinstaller_plugin',$plug_file,'admin_plugin');
-		$infotech[] = "<a href='$action'
-		onclick='return confirm(\""._T('bouton_desinstaller')
-		." ".basename($plug_file)." ?\\n"._T('info_desinstaller_plugin')."\")'
-		title=\""._T('info_desinstaller_plugin')."\">"
-		. http_img_pack('spip-pack-24.png','spip-pack','',
-			'')
-		."</a>"
-		;
-	}
-
-	// source zip le cas echeant
-	$source = (lire_fichier($dir_plugins.$plug_file.'/install.log', $log)
-	AND preg_match(',^source:(.*)$,m', $log, $r))
-		? '<br />'._T('plugin_source').' '.trim($r[1])
-		:'';
-
-	$s .= "<div style='text-align:$spip_lang_right' class='spip_pack'>"
-		. join(' &mdash; ', $infotech) .
-		 '<br />' . _T('repertoire_plugins') .' '. $plug_file
-		. $source
-		."</div>";
-
-
-	return $s;
-}
-
-// http://doc.spip.org/@plugin_propre
-function plugin_propre($texte) {
-	$mem = $GLOBALS['toujours_paragrapher'];
-	$GLOBALS['toujours_paragrapher'] = false;
-	$regexp = "|\[:([^>]*):\]|";
-	if (preg_match_all($regexp, $texte, $matches, PREG_SET_ORDER))
-	foreach ($matches as $regs)
-		$texte = str_replace($regs[0],
-		_T('spip/ecrire/public:'.$regs[1]), $texte);
-	$texte = propre($texte);
-	$GLOBALS['toujours_paragrapher'] = $mem;
-	return $texte;
-}
 
 ?>
diff --git a/ecrire/lang/ecrire_fr.php b/ecrire/lang/ecrire_fr.php
index 2c6aab6ec39a36dbf760524e660c52e24150cf71..a8dd547f37527b5ff1f2b252bf4fd2d9a9ec9ff2 100644
--- a/ecrire/lang/ecrire_fr.php
+++ b/ecrire/lang/ecrire_fr.php
@@ -914,6 +914,7 @@ dans une couleur qui indique leur &eacute;tat&nbsp;:',
 'plugins_actifs' => '@count@ plugins activ&#233;s.',
 'plugins_compte' => '@count@ plugins',
 'plugins_disponibles' => '@count@ plugins disponibles.',
+'plugins_recents' => 'Plugins r&eacute;cents.',
 'plugins_erreur' => 'Erreur dans les plugins : @plugins@',
 'plugins_liste' => 'Liste des plugins',
 'plugins_vue_hierarchie' => 'Hi&eacute;rarchie',
diff --git a/ecrire/plugins/afficher_liste.php b/ecrire/plugins/afficher_liste.php
index 68945a62104ea0c5cde4de0a45132af5e0acde7e..72d76f65ad89658c8c9cce6fb58ed2cc091a50f8 100644
--- a/ecrire/plugins/afficher_liste.php
+++ b/ecrire/plugins/afficher_liste.php
@@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/charsets');
 
 // http://doc.spip.org/@affiche_liste_plugins
-function plugins_afficher_liste_dist($liste_plugins, $liste_plugins_actifs){
+function plugins_afficher_liste_dist($url_page,$liste_plugins, $liste_plugins_actifs, $dir_plugins=_DIR_PLUGINS){
 	$get_infos = charger_fonction('get_infos','plugins');
 	$ligne_plug = charger_fonction('afficher_plugin','plugins');
 	$liste_plugins = array_flip($liste_plugins);
@@ -40,8 +40,8 @@ function plugins_afficher_liste_dist($liste_plugins, $liste_plugins_actifs){
 		// le rep suivant
 		$actif = @isset($fast_liste_plugins_actifs[$plug]);
 		$block_actif = $block_actif | $actif;
-		$id = substr(md5($plug),0,16);
-		$block .= $ligne_plug($plug, $actif, "item")."\n";
+		$expose = (urldecode(_request('plugin'))==$plug OR urldecode(_request('plugin'))==substr(_DIR_PLUGINS,strlen(_DIR_RACINE)) . $plug);
+		$block .= $ligne_plug($url_page, $plug, $actif, $expose, "item", $dir_plugins)."\n";
 	}
 	$res .= $block_par_lettre ? affiche_block_initiale($initiale,$block,$block_actif): $block;
 	return "<ul class='liste-items plugins'>"
diff --git a/ecrire/plugins/afficher_plugin.php b/ecrire/plugins/afficher_plugin.php
index ffd42d675271cc6782a9217fcc2c6d5bf4639f4f..cbe6e89f111d8896e560b65cff8473652526c86c 100644
--- a/ecrire/plugins/afficher_plugin.php
+++ b/ecrire/plugins/afficher_plugin.php
@@ -12,10 +12,10 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/charsets');
+include_spip('inc/texte');
 
 // http://doc.spip.org/@ligne_plug
-function plugins_afficher_plugin_dist($plug_file, $actif,$class_li="item"){
-	global $spip_lang_right;
+function plugins_afficher_plugin_dist($url_page, $plug_file, $actif, $expose=false, $class_li="item", $dir_plugins=_DIR_PLUGINS){
 	static $id_input=0;
 	static $versions = array();
 
@@ -30,61 +30,149 @@ function plugins_afficher_plugin_dist($plug_file, $actif,$class_li="item"){
 	$id = $info['prefix'] . $versions[$info['prefix']];
 	
 	$class = $class_li;
-	$class .= $actif?"on":"";
-	if (isset($info['erreur']))
+	$class .= $actif?" actif":"";
+	$class .= $expose?" on":"";
+	$erreur = isset($info['erreur']);
+	if ($erreur)
 		$class .= " erreur";
 	$s .= "<li id='$id' class='$class'>";
-	
+
+
+	// checkbox pour activer ou desactiver
+	// si $actif vaut -1, c'est actif, et ce n'est pas desactivable (extension)
+	if (!$erreur AND $actif>=0){
+		$name = 's' . substr(md5("statusplug_$plug_file"),0,16);
+		$id_input++;
+		$check = "\n<input type='checkbox' name='$name' id='label_$id_input' value='O'";
+		$check .= $actif?" checked='checked'":"";
+		$check .= " class='checkbox' />";
+		$check .= "\n<label for='label_$id_input'>"._T('activer_plugin')."</label>";
+		$s .= "<div class='check'>$check</div>";
+	}
+
+	// Cartouche Resume
+	$s .= "<div class='resume'>";
+
+	$desc = plugin_propre($info['description']);
+	$url_stat = parametre_url($url_page, "plugin",$plug_file);
+
+	$s .= "<h3 class='nom'><a href='$url_stat' rel='info'>".typo($info['nom'])."</a></h3>";
+	$s .= " <span class='version'>".$info['version']."</span>";
+	$s .= " <span class='etat'> - ".plugin_etat_en_clair($info['etat'])."</span>";
+	$s .= "<div class='short'>".couper($desc,60)."</div>";
+	if (isset($info['icon'])) {
+		include_spip("inc/filtres_images_mini");
+		$s.= "<div class='icon'>".image_reduire($dir_plugins.$plug_file.'/'.trim($info['icon']), 32)."</div>";
+	}
+	$s .= "</div>";
+
 	// plug pour CFG
 	if ($actif
 	AND defined('_DIR_PLUGIN_CFG')) {
 		if (include_spip('inc/cfg') // test CFG version >= 1.0.5
-		AND $i = icone_lien_cfg(_DIR_PLUGINS.$plug_file))
+		AND $i = icone_lien_cfg($dir_plugins.$plug_file))
 			$s .= '<div class="cfg_link">'.$i.'</div>';
 	}
 
-	// nom
-
-	$s .= "<div class='nomplugin ".($actif?'nomplugin_on':'')."'>";
-	if (isset($info['erreur'])){
-		$s .=  "<div class='plugin_erreur'>";
-		$erreur = true;
+	if ($erreur){
+		$s .=  "<div class='erreur'>";
 		foreach($info['erreur'] as $err)
-			$s .= "/!\ $err <br/>";
+			$s .= "$err <br/>";
 		$s .=  "</div>";
 	}
 
-	$etat = 'dev';
-	if (isset($info['etat']))
-		$etat = $info['etat'];
-	$nom = typo($info['nom']);
-
-	$id = "aide_$id";
-	// si $actif vaut -1, c'est actif, et ce n'est pas desactivable (extension)
-	if (!$erreur
-	AND $actif>=0
-	){
-		$name = 's' . substr(md5("statusplug_$plug_file"),0,16);
-		$s .= "\n<input type='checkbox' name='$name' id='label_$id_input' value='O'";
-		$s .= $actif?" checked='checked'":"";
-		$s .= " class='check' />";
-		$s .= "\n<label for='label_$id_input'>"._T('activer_plugin')."</label>";
+	// bouton de desinstallation
+	if (plugin_est_installe($plug_file)){
+		$action = redirige_action_auteur('desinstaller_plugin',$plug_file,'admin_plugin');
+		$s .= "<div class='actions'>[".
+		"<a href='$action'
+		onclick='return confirm(\""._T('bouton_desinstaller')
+		." ".basename($plug_file)." ?\\n"._T('info_desinstaller_plugin')."\")'>"
+		._T('bouton_desinstaller')
+		."</a>]</div>"
+		;
 	}
-	$id_input++;
-
-	$url_stat = generer_url_ecrire(_request('exec'),"plugin=".urlencode($plug_file));
-	$s .= "<a href='$url_stat' rel='info'>$nom</a>";
 
 	// afficher les details d'un plug en secours ; la div sert pour l'ajax
-	$s .= "<div class='info'>";
-	if (urldecode(_request('plugin'))==$plug_file OR urldecode(_request('plugin'))==substr(_DIR_PLUGINS,strlen(_DIR_RACINE)) . $plug_file)
+	$s .= "<div class='details'>";
+	if ($expose)
 		$s .= affiche_bloc_plugin($plug_file, $info);
 	$s .= "</div>";
 
-	$s .= "</div>";
 	$s .= "</li>";
 	return $s;
 }
 
 
+function plugin_etat_en_clair($etat){
+	if (!in_array($etat,array('stable','test','experimental')))
+		$etat = 'developpement';
+	return _T('plugin_etat_'.$etat);
+}
+
+// http://doc.spip.org/@plugin_propre
+function plugin_propre($texte) {
+	$mem = $GLOBALS['toujours_paragrapher'];
+	$GLOBALS['toujours_paragrapher'] = false;
+	$regexp = "|\[:([^>]*):\]|";
+	if (preg_match_all($regexp, $texte, $matches, PREG_SET_ORDER))
+	foreach ($matches as $regs)
+		$texte = str_replace($regs[0],
+		_T('spip/ecrire/public:'.$regs[1]), $texte);
+	$texte = propre($texte);
+	$GLOBALS['toujours_paragrapher'] = $mem;
+	return $texte;
+}
+
+
+
+// http://doc.spip.org/@affiche_bloc_plugin
+function affiche_bloc_plugin($plug_file, $info, $dir_plugins=null) {
+	if (!$dir_plugins)
+		$dir_plugins = _DIR_PLUGINS;
+
+	$s = "";
+	// TODO: le traiter_multi ici n'est pas beau
+	// cf. description du plugin/_stable_/ortho/plugin.xml
+	if (isset($info['description']))
+		$s .= "<div class='desc'>".plugin_propre($info['description']) . "</div>";
+
+	if (isset($info['auteur']) AND trim($info['auteur']))
+		$s .= "<div class='auteurs'>" . _T('public:par_auteur') .' '. plugin_propre($info['auteur']) . "</div>";
+	if (isset($info['licence']))
+		$s .= "<div class='licence'>" . _T('intitule_licence') .' '. plugin_propre($info['licence']) . "</div>";
+
+	if (trim($info['lien'])) {
+		$lien = $info['lien'];
+		if (preg_match(',^https?://,iS', $lien))
+			$lien = "[->$lien]";
+		$s .= "<div class='site'>" . _T('en_savoir_plus') .' '. plugin_propre($lien) . "</div>";
+	}
+
+	//
+	// Ajouter les infos techniques
+	//
+	$infotech = array();
+
+	$version = _T('version') .' '.  $info['version'];
+	// Version SVN
+	if ($svn_revision = version_svn_courante($dir_plugins.$plug_file))
+		$version .= ($svn_revision<0 ? ' SVN':'').' ['.abs($svn_revision).']';
+	$infotech[] = $version;
+
+	// source zip le cas echeant
+	$source = (lire_fichier($dir_plugins.$plug_file.'/install.log', $log)
+	AND preg_match(',^source:(.*)$,m', $log, $r))
+		? '<br />'._T('plugin_source').' '.trim($r[1])
+		:'';
+
+	$s .= "<div class='tech'>"
+		. join(' &mdash; ', $infotech) .
+		 '<br />' . _T('repertoire_plugins') .' '. $plug_file
+		. $source
+		."</div>";
+
+
+	return $s;
+}
 ?>
\ No newline at end of file
diff --git a/ecrire/plugins/afficher_repertoires.php b/ecrire/plugins/afficher_repertoires.php
index d4342b9ab6adb6a4912a1315d7a9d1c7cf053e7d..95cb96675c34609adab8260d26c47e98fe8a03e4 100644
--- a/ecrire/plugins/afficher_repertoires.php
+++ b/ecrire/plugins/afficher_repertoires.php
@@ -13,7 +13,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 // http://doc.spip.org/@affiche_arbre_plugins
-function plugins_afficher_repertoires_dist($liste_plugins, $liste_plugins_actifs){
+function plugins_afficher_repertoires_dist($url_page, $liste_plugins, $liste_plugins_actifs){
 	$ligne_plug = charger_fonction('afficher_plugin','plugins');
 	$racine = basename(_DIR_PLUGINS);
 	$init_dir = $current_dir = "";
@@ -54,7 +54,7 @@ function plugins_afficher_repertoires_dist($liste_plugins, $liste_plugins_actifs
 				$plug = $liste_plugins[$key];
 				$actif = @isset($fast_liste_plugins_actifs[$plug]);
 				$id = substr(md5($plug),0,16);
-				$res .= $ligne_plug(str_replace(_DIR_PLUGINS, '', _DIR_RACINE.$plug), $actif, 'menu-entree') . "\n";
+				$res .= $ligne_plug($url_page, str_replace(_DIR_PLUGINS, '', _DIR_RACINE.$plug), $actif, 'menu-entree') . "\n";
 				unset($liste_plugins[$key]);
 			}
 	}
diff --git a/prive/style_prive.html b/prive/style_prive.html
index 81c3dffe777ed58e72152b051156046d3a00b2af..4522bcd0253b93f4ade2bc34d117b2834cde4a71 100644
--- a/prive/style_prive.html
+++ b/prive/style_prive.html
@@ -479,23 +479,32 @@ td.message, a.message { background: url([(#CHEMIN_IMAGE{m_envoi[(#GET{rtl})].gif
 #sauvegarder,#restaurer,#reparer { margin: 0 0 2em 0; }
 
 /* exec=admin_plugin */
-.liste_plugins ul li { list-style: none; border-bottom: 1px solid #fff; }
-.liste_plugins ul { padding-#GET{left}: 1em; margin:.5em 0 .5em 0; }
-.liste_plugins ul ul { border-#GET{left}:5px solid #dfdfdf; }
-.liste_plugins ul li li { margin: 0; padding:0 0 0.25em 0; }
-.liste_plugins ul li div.nomplugin { border-bottom: 1px solid #afafaf; font-weight: normal; padding:.3em; }
-.liste_plugins ul li li div.nomplugin {padding:.1em .3em .2em; }
-.liste_plugins ul li li div.nomplugin>a { outline:0; outline:0 !important; -moz-outline:0 !important; color: #000; }
-.liste_plugins ul li li div.nomplugin_on>a { font-weight: bold; }
-
-.liste_plugins div.droite label { padding:.3em; background: #efefef; border:1px dotted #95989f !important; border: 1px solid #95989f; cursor:pointer; margin:.2em; display: block; width:10.1em; }
-.liste_plugins input { cursor:pointer; }
-.liste_plugins div.detailplugin { border-top: 1px solid #b5becf; padding:.6em; background: #f5f5f5; }
-.liste_plugins div.detailplugin hr { border-top: 1px solid #67707f; border-bottom:0; border-#GET{left}:0; border-#GET{right}:0; }
-.liste_plugins div.nomplugin label { display: none; }
-.liste_plugins .nomplugin_on { background: #GET{claire}; }
-.liste_plugins .plugin_erreur { background:red; }
-.desc_plug { height:1.9em;overflow:hidden;border-bottom:1px dotted grey; }
+.liste-plugins.formulaire_spip {border:0;background:none;padding:0;}
+.liste-plugins .liens {padding:5px;background:#ddd;}
+.liste-plugins .liste-items .item {position:relative;padding-left:70px;}
+.liste-plugins .liste-items .item.actif {background:#eee;}
+.liste-plugins .liste-items .item.actif:hover {background:#e8e8e8;}
+.liste-plugins .liste-items .item.erreur {background:#fdd;}
+.liste-plugins .liste-items .item.erreur .erreur {color:red;font-weight:bold;}
+.liste-plugins .liste-items .item .short {color:#666;font-size:0.95em;}
+.liste-plugins .liste-items .item.on .short {display:none;}
+
+.liste-plugins .liste-items .item .check {float:#GET{left};margin-#GET{left}:-70px;position:relative;display:inline;}
+.liste-plugins .liste-items .item .check input {margin:0;}
+.liste-plugins .liste-items .item .check label {display:none;}
+
+.liste-plugins .liste-items .item .nom {font-size:1.2em;display:inline;}
+.liste-plugins .liste-items .item .nom a {color:#444;}
+.liste-plugins .liste-items .item.actif .nom a {color:#GET{foncee};}
+
+.liste-plugins .liste-items .item .icon {position:absolute;top:3px;left:28px;}
+.liste-plugins .liste-items .item .actions {float:#GET{right};visibility:hidden;}
+.liste-plugins .liste-items .item:hover .actions {visibility:visible;}
+
+.liste-plugins .liste-items .item .details .desc {padding:5px 0 2px;}
+.liste-plugins .liste-items .item .details .auteurs {font-style:italic;padding-bottom:5px;}
+.liste-plugins .liste-items .item .details .tech {font-size:0.9em;float:#GET{right};text-align:#GET{right};}
+
 #liste_plug { border: solid 1px #GET{foncee}; padding:3px; background-color:white; height: 200px; overflow:auto;overflow-y: auto; }
 
 /* agenda */
diff --git a/prive/style_prive_plugins.html b/prive/style_prive_plugins.html
index 7288218e3cb1d64ed21b606c96a38130215de560..3615e325527194b1b1c293edfe19b75c3ba669fa 100644
--- a/prive/style_prive_plugins.html
+++ b/prive/style_prive_plugins.html
@@ -25,17 +25,17 @@ h2.titrem { display: block; padding-top: 6px; padding-bottom: 4px; background-re
 
 
 /* listes */
-.liste_items {list-style:none;margin:1em 0;padding:0;border-top:1px solid #ddd;clear:both;}
-.liste_items li.item {border-bottom:1px solid #ddd;padding:0.4em 0; font-size: 11px;overflow:hidden;clear:both;}
-.liste_items li.item.odd {background:#eee;}
-.liste_items li.item:hover {background-color:[#(#GET{claire}|couleur_eclaircir|couleur_eclaircir)];}
-.liste_items li.court:hover {background-color:#eee;}
-.liste_items li.item.on {background-color:[#(#GET{claire}|couleur_eclaircir|couleur_eclaircir)];font-weight:normal;}
-.liste_items li.item.on:hover {background-color:[#(#GET{claire}|couleur_eclaircir)];}
-.liste_items li.item h3 {margin:0;}
+.liste_items,.liste-items {list-style:none;margin:1em 0;padding:0;border-top:1px solid #ddd;clear:both;}
+.liste_items .item,.liste-items .item  {border-bottom:1px solid #ddd;padding:0.4em 0; font-size: 11px;overflow:hidden;clear:both;}
+.liste_items .item.odd,.liste-items .item.odd  {background:#eee;}
+.liste_items .item:hover,.liste-items .item:hover  {background-color:[#(#GET{claire}|couleur_eclaircir|couleur_eclaircir)];}
+.liste_items .court:hover,.liste-items .court:hover  {background-color:#eee;}
+.liste_items .item.on,.liste-items .item.on  {background-color:[#(#GET{claire}|couleur_eclaircir|couleur_eclaircir)];font-weight:normal;}
+.liste_items .item.on:hover,.liste-items .item.on:hover  {background-color:[#(#GET{claire}|couleur_eclaircir)];}
+.liste_items .item h3,.liste-items .item h3  {margin:0;}
 
 
-.liste_items li.item .actions {float:none;margin:0;clear:both;text-align:#GET{right};}
+.liste_items .item .actions,.liste-items .item .actions  {float:none;margin:0;clear:both;text-align:#GET{right};}
 
 .tri, .pagination {background:#eee;border-top:1px solid #ddd;border-bottom:1px solid #ddd; margin: 0;padding:2px 0; font-size: 11px; font-weight: bold; text-align: #GET{right}; white-space: nowrap;margin-top:1em; }
 .tri {text-align:#GET{left};}