diff --git a/.gitattributes b/.gitattributes
index 753b628f3ff178eefe339b05f290d333939cde60..7d3aa0479ff870e1e13a6c0595e9e0704092b1d5 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -36,7 +36,6 @@ ecrire/action/instituer_breve.php -text
 ecrire/action/instituer_collaboration.php -text
 ecrire/action/instituer_groupe_mots.php -text
 ecrire/action/instituer_langue_rubrique.php -text
-ecrire/action/instituer_rubrique_breves.php -text
 ecrire/action/instituer_site.php -text
 ecrire/action/instituer_syndic.php -text
 ecrire/action/joindre.php -text
@@ -169,7 +168,6 @@ ecrire/exec/install.php -text
 ecrire/exec/instituer_auteur.php -text
 ecrire/exec/lang_raccourcis.php -text
 ecrire/exec/legender.php -text
-ecrire/exec/meme_rubrique.php -text
 ecrire/exec/memoriser.php -text
 ecrire/exec/menu_agenda.php -text
 ecrire/exec/menu_navigation.php -text
@@ -199,6 +197,7 @@ ecrire/exec/tourner.php -text
 ecrire/exec/upgrade.php -text
 ecrire/exec/valider_xml.php -text
 ecrire/exec/virtualiser.php -text
+ecrire/exec/visiteurs.php -text
 ecrire/genie/maintenance.php -text
 ecrire/genie/mise_a_jour.php -text
 ecrire/genie/syndic.php -text
@@ -258,6 +257,7 @@ ecrire/inc/json.php -text
 ecrire/inc/lang_liste.php -text
 ecrire/inc/legender.php -text
 ecrire/inc/lien.php -text
+ecrire/inc/lister_objets.php -text
 ecrire/inc/log.php -text
 ecrire/inc/mail.php -text
 ecrire/inc/meme_rubrique.php -text
@@ -736,6 +736,17 @@ prive/javascript/login.js -text
 prive/javascript/multilang.js -text
 prive/javascript/pause.js -text
 prive/javascript/sha256.js -text
+prive/listes/articles.html -text
+prive/listes/auteurs.html -text
+prive/listes/auteurs_fonctions.php -text
+prive/listes/breves.html -text
+prive/listes/mots.html -text
+prive/listes/rubriques.html -text
+prive/listes/syndic.html -text
+prive/listes/syndic_articles.html -text
+prive/listes/syndic_articles_fonctions.php -text
+prive/listes/visiteurs.html -text
+prive/listes/visiteurs_fonctions.php -text
 prive/minipres.css -text
 prive/modeles/application.html -text
 prive/modeles/audio.html -text
diff --git a/ecrire/exec/accueil.php b/ecrire/exec/accueil.php
index f7baf9b5b74fe60978d4bbbe3751e6f133e505bc..2cfd4a7bfb23e88a2f604780a5fe0645b396d98e 100644
--- a/ecrire/exec/accueil.php
+++ b/ecrire/exec/accueil.php
@@ -17,53 +17,8 @@ include_spip('inc/presentation');
 // http://doc.spip.org/@encours_accueil
 function encours_accueil()
 {
-	global $connect_statut;
-
-
-	$res = '';
-
-	// Les articles a valider
-	//
-
-	$res .=  afficher_objets('article',_T('info_articles_proposes'), array("WHERE" => "statut='prop'", 'ORDER BY' => "date DESC"));
-
-	//
-	// Les breves a valider
-	//
-	$res .= afficher_objets('breve',afficher_plus(generer_url_ecrire('breves'))._T('info_breves_valider'), array("FROM" => 'spip_breves', 'WHERE' => "statut='prepa' OR statut='prop'", 'ORDER BY' => "date_heure DESC"), true);
-
-	//
-	// Les sites references a valider
-	//
-	if ($GLOBALS['meta']['activer_sites'] != 'non') {
-		$res .= afficher_objets('site',afficher_plus(generer_url_ecrire('sites_tous')).'<b>' . _T('info_site_valider') . '</b>', array("FROM" => 'spip_syndic', 'WHERE' => "statut='prop'", 'ORDER BY'=> "nom_site"));
-	}
-
-	if ($connect_statut == '0minirezo') {
-	//
-	// Les sites a probleme
-	//
-	  if ($GLOBALS['meta']['activer_sites'] != 'non') {
-		$res .= afficher_objets('site',afficher_plus(generer_url_ecrire('sites_tous')). '<b>' . _T('avis_sites_syndiques_probleme') . '</b>', array('FROM' => 'spip_syndic', 'WHERE' => "(syndication='off' OR syndication='sus') AND statut='publie'", 'ORDER BY' => 'nom_site'));
-	}
-
-	// Les articles syndiques en attente de validation
-		$cpt = sql_countsel("spip_syndic_articles", "statut='dispo'");
-		if ($cpt)
-			$res .= "\n<br /><small><a href='"
-			. generer_url_ecrire("sites_tous","")
-			. "' style='color: black;'>"
-			. $cpt
-			. " "
-			. _T('info_liens_syndiques_1')
-			. " "
-			. _T('info_liens_syndiques_2')
-			. "</a></small>";
-
-	}
-	
-	$res = pipeline('accueil_encours',$res);
-
+	include_spip("exec/suivi_edito");
+	$res = encours_suivi();
 	if (!$res) return '';
 
 	return 
@@ -388,25 +343,26 @@ function exec_accueil_dist()
 	echo pipeline('affiche_droite',array('args'=>array('exec'=>'accueil','id_rubrique'=>$id_rubrique),'data'=>''));
 
 	echo debut_droite("", true);
+	
+	$lister_objets = charger_fonction('lister_objets','inc');
 
+	$date_now = date('Y-m-d H:i:s');
 	if ($GLOBALS['meta']["post_dates"] == "non"
 	AND $connect_statut == '0minirezo')
-		echo afficher_objets('article',_T('info_article_a_paraitre'), array("WHERE" => "statut='publie' AND date>".sql_quote(date('Y-m-d H:i:s')), 'ORDER BY' => "date"));
-
+		echo $lister_objets('articles',array('titre'=>_T('info_article_a_paraitre'),'statut'=>'publie', 'par'=>'date', 'where'=>'date>'.sql_quote($date_now), 'date_sens'=>1));
 
 	// Les articles recents
 	//
-	echo afficher_objets('article',
-	#afficher_plus(generer_url_ecrire('articles_page')) .
-	_T('articles_recents'), array("WHERE" => "statut='publie'" .($GLOBALS['meta']["post_dates"] == "non"
-		? " AND date<=".sql_quote(date('Y-m-d H:i:s')) : ''),
-		'ORDER BY' => "date DESC", 'LIMIT' => '0,4'));
+	$contexte = array('titre'=>_T('articles_recents'),'statut'=>'publie', 'par'=>'date','nb'=>5);
+	if ($GLOBALS['meta']["post_dates"] == "non")
+		$contexte['where']='date<='.sql_quote($date_now);
+	echo $lister_objets('articles',$contexte);
 
 //
 // Vos articles en cours 
 //
 
-	echo afficher_objets('article',afficher_plus_info(generer_url_ecrire('articles_page'))._T('info_en_cours_validation'),	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='prepa'", "ORDER BY" => "A.date DESC"));
+	echo $lister_objets('articles',array('titre'=>afficher_plus_info(generer_url_ecrire('articles_page'))._T('info_en_cours_validation'),'statut'=>'prepa', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));
 
 	if ($spip_display == 4)
 	  echo colonne_droite_eq4($id_rubrique,
diff --git a/ecrire/exec/articles_page.php b/ecrire/exec/articles_page.php
index 7c5d6c73781be1ca221870080f328fac2de80621..45a1342a9c222710235bfbfcb90313c371126a2a 100644
--- a/ecrire/exec/articles_page.php
+++ b/ecrire/exec/articles_page.php
@@ -15,11 +15,10 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/presentation');
 
 // http://doc.spip.org/@exec_articles_page_dist
-function exec_articles_page_dist()
-{
+function exec_articles_page_dist(){
 	global $connect_statut, $connect_id_auteur;
 
- 	pipeline('exec_init',array('args'=>array('exec'=>'articles_page'),'data'=>''));
+	pipeline('exec_init',array('args'=>array('exec'=>'articles_page'),'data'=>''));
 	$commencer_page = charger_fonction('commencer_page', 'inc');
 	echo $commencer_page(_T('titre_page_articles_page'), "suivi_edito", "tous_articles");
 
@@ -27,50 +26,49 @@ function exec_articles_page_dist()
 
 	echo debut_gauche('', true);
 
-//
-// Afficher le bouton de creation d'article
-//
+	//
+	// Afficher le bouton de creation d'article
+	//
 
 	echo pipeline('affiche_gauche',array('args'=>array('exec'=>'articles_page'),'data'=>''));
 
 	if (sql_countsel('spip_rubriques')) {
-		echo bloc_des_raccourcis(icone_horizontale(_T('icone_ecrire_article'), generer_url_ecrire("articles_edit","new=oui"), "article-24.png", "new", false));
+	echo bloc_des_raccourcis(icone_horizontale(_T('icone_ecrire_article'), generer_url_ecrire("articles_edit","new=oui"), "article-24.png", "new", false));
 	} else {
-		if (autoriser('creerrubriquedans', 'rubrique')) {
-			echo _T('texte_creer_rubrique');
-			echo	bloc_des_raccourcis(icone_horizontale (_T('icone_creer_rubrique'), generer_url_ecrire("rubriques_edit","new=oui&retour=nav"), "rubrique-24.png", "new",false));
-		}
+	if (autoriser('creerrubriquedans', 'rubrique')) {
+		echo _T('texte_creer_rubrique');
+		echo	bloc_des_raccourcis(icone_horizontale (_T('icone_creer_rubrique'), generer_url_ecrire("rubriques_edit","new=oui&retour=nav"), "rubrique-24.png", "new",false));
+	}
 	}
 
 	echo creer_colonne_droite('', true);
 	echo pipeline('affiche_droite',array('args'=>array('exec'=>'articles_page'),'data'=>''));
-echo debut_droite('', true);
-
-//
-// Vos articles en cours de redaction
-//
-
-	echo afficher_objets('article',_T('info_en_cours_validation'), 	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='prepa'", "ORDER BY" => "A.date DESC"));
+	echo debut_droite('', true);
 
+	//
+	// Vos articles en cours de redaction
+	//
+	$lister_objets = charger_fonction('lister_objets','inc');
 
+	echo $lister_objets('articles',array('titre'=>_T('info_en_cours_validation'),'statut'=>'prepa', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));
 
-//
-// Vos articles soumis au vote
-//
+	//
+	// Vos articles soumis au vote
+	//
 
-	echo afficher_objets('article',_T('info_attente_validation'), 	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='prop'", "ORDER BY" => "A.date DESC"));
+	echo $lister_objets('articles',array('titre'=>_T('info_attente_validation'),'statut'=>'prop', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));
 
-//
-// Vos articles publies
-//
+	//
+	// Vos articles publies
+	//
 
-	echo afficher_objets('article',_T('info_publies'), 	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='publie'", "ORDER BY" => "A.date DESC"));
+	echo $lister_objets('articles',array('titre'=>_T('info_publies'),'statut'=>'publie', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));
 
-//
-//  Vos articles refuses
-//
+	//
+	//  Vos articles refuses
+	//
 
-	echo afficher_objets('article',_T('info_refuses'),	array('FROM' =>"spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='refuse'",  'ORDER BY' => "A.date DESC"));
+	echo $lister_objets('articles',array('titre'=>_T('info_refuses'),'statut'=>'refuse', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));
 
 	echo pipeline('affiche_milieu',array('args'=>array('exec'=>'articles_page'),'data'=>''));
 
diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php
index 07059034d8b333f1d3c97316e2100378a0fd07eb..0105852eb8b92479714ad87745d7c3a706f81c6c 100644
--- a/ecrire/exec/auteur_infos.php
+++ b/ecrire/exec/auteur_infos.php
@@ -155,7 +155,8 @@ function auteurs_interventions($auteur) {
 	else if ($connect_id_auteur == $id_auteur) $aff_art = array('prepa','prop','publie'); 
 	else $aff_art = array('prop','publie'); 
 
-	echo afficher_objets('article',_T('info_articles_auteur'), 	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$id_auteur AND " . sql_in('A.statut', $aff_art), "ORDER BY" => "A.date DESC"));
+	$lister_objets = charger_fonction('lister_objets','inc');
+	echo $lister_objets('articles',array('titre'=>_T('info_articles_auteur'),'statut'=>$aff_art, 'par'=>'date','id_auteur'=>$id_auteur));
 
 	// Messages de l'auteur et discussions en cours
 	if ($GLOBALS['meta']['messagerie_agenda'] != 'non'
diff --git a/ecrire/exec/auteurs.php b/ecrire/exec/auteurs.php
index d3ea893752b5a71c31577c5956fac0ec1057d619..b84b79ce370835999052d3f6eb0a4ccf2795e67c 100644
--- a/ecrire/exec/auteurs.php
+++ b/ecrire/exec/auteurs.php
@@ -18,379 +18,96 @@ include_spip('inc/presentation');
 @define('MAX_AUTEURS_PAR_PAGE', 30);
 @define('AUTEURS_MIN_REDAC', "0minirezo,1comite,5poubelle");
 @define('AUTEURS_DEFAUT', '');
-// decommenter cette ligne et commenter la precedente 
+// decommenter cette ligne et commenter la precedente
 // pour que l'affichage par defaut soit les visiteurs
 #@define('AUTEURS_DEFAUT', '!');
 
 // http://doc.spip.org/@exec_auteurs_dist
-function exec_auteurs_dist()
-{
-	$tri = preg_replace('/\W/', '', _request('tri'));
-	if (!$tri) $tri='nom'; 
-	$statut =  _request('statut');
-	if (!$statut)  $statut = AUTEURS_DEFAUT . AUTEURS_MIN_REDAC;
-	$debut = intval(_request('debut'));
+function exec_auteurs_dist($vue = 'auteurs'){
 
-	$recherche = NULL;
-	if ($cherche = _request('recherche')) {
-		include_spip('inc/rechercher');
-		$tables = liste_des_champs();
-		$tables = array('auteur'=>$tables['auteur']);
-		$recherche = recherche_en_base($cherche, $tables,array('toutvoir'=>true));
-		if ($recherche['auteur'])
-			$recherche = array_keys($recherche['auteur']);
-		else {
-			$recherche = "aut.id_auteur=0"; // rien trouve !
-		}
-	}
-	$form = formulaire_recherche("auteurs",(($s=_request('statut'))?"<input type='hidden' name='statut' value='$s' />":""));
-	exec_auteurs_args($statut, $tri, $debut, $recherche,$form, $cherche);
-}
-
-
-// http://doc.spip.org/@exec_auteurs_args
-function exec_auteurs_args($statut, $tri, $debut, $recherche=NULL, $trouve='', $cherche='')
-{
-	if ($recherche !=='') {
-		list($auteurs, $lettre, $nombre_auteurs, $debut) =
-		  lettres_d_auteurs(requete_auteurs($tri, $statut, $recherche), $debut, MAX_AUTEURS_PAR_PAGE, $tri);
-
-
-		$recherche = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, MAX_AUTEURS_PAR_PAGE, $nombre_auteurs,$cherche);
-
-		if ($cherche){
-			if (count($auteurs))
-				$recherche = "<h3>". _T('info_resultat_recherche')." &laquo;$cherche&raquo;</h3>" . $recherche;
-			else
-				$recherche = "<h3>". _T('info_recherche_auteur_zero',array('cherche_auteur'=>$cherche))."</h3>" . $recherche;
-		}
+	$statut = AUTEURS_DEFAUT . AUTEURS_MIN_REDAC;
 
-	}
-
-	if (_AJAX) {
-		ajax_retour($recherche); //ecrire en id='auteurs' ci-dessous
-	} else {
-
-		pipeline('exec_init',array('args'=>array('exec'=>'auteurs'),'data'=>''));
-
-		$visiteurs = !statut_min_redac($statut);
-		$commencer_page = charger_fonction('commencer_page', 'inc');
-		echo $commencer_page(
-			$visiteurs ? _T('info_visiteurs') :  _T('info_auteurs'),
-				     "auteurs","redacteurs");
-
-		echo bandeau_auteurs($tri, $visiteurs);
-		
-		echo  $trouve, "<br class='nettoyeur' />";
-
-		echo "<div id='auteurs'>", $recherche, "</div>";
-		echo pipeline('affiche_milieu',array('args'=>array('exec'=>'auteurs'),'data'=>''));
-		echo fin_gauche(), fin_page();
-	}
-}
+	pipeline('exec_init',array('args'=>array('exec'=>$vue),'data'=>''));
 
-// http://doc.spip.org/@bandeau_auteurs
-function bandeau_auteurs($tri, $visiteurs)
-{
-	global $connect_id_auteur,   $connect_statut,   $connect_toutes_rubriques;
+	$commencer_page = charger_fonction('commencer_page', 'inc');
+	echo $commencer_page(_T('info_'.$vue),"auteurs","$vue");
 
-	$ret = gros_titre($visiteurs ? _T('info_visiteurs') :  _T('info_auteurs'),'',false) . debut_gauche("auteurs",true) . debut_boite_info(true);
+	$ret = debut_gauche("$vue",true) . debut_boite_info(true);
 
-	if ($visiteurs) 
-		$ret .= "\n<p class='arial1'>"._T('info_gauche_visiteurs_enregistres'). '</p>';
-	else 
-		$ret .= "\n<p class='arial1'>"._T('info_gauche_auteurs'). '</p>';
+	$ret .= "\n<p class='arial1'>"._T('info_gauche_auteurs'). '</p>';
 
-	if ($connect_statut == '0minirezo')
+	if ($GLOBALS['visiteur_session']['statut'] == '0minirezo')
 		$ret .= "\n<p class='arial1'>". _T('info_gauche_auteurs_exterieurs') . '</p>';
 
 	$ret .= fin_boite_info(true);
 
-	$ret .= pipeline('affiche_gauche',array('args'=>array('exec'=>'auteurs'),'data'=>''));
+	$ret .= pipeline('affiche_gauche',array('args'=>array('exec'=>$vue),'data'=>''));
 
-	if ($connect_statut == '0minirezo') {
+	$res = '';
+	if (autoriser('creer','auteur'))
+		$res = icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos", 'new=oui'), "auteur-24.gif", "creer.gif", false);
 
-		if ($connect_toutes_rubriques) 
-			$res = icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos", 'new=oui'), "auteur-24.png", "new", false);
-		else $res = '';
+	$res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=".$GLOBALS['visiteur_session']['id_auteur']), "fiche-perso-24.gif","rien.gif", false);
 
-		$res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur"), "information-perso-24.png","", false);
+	if ($vue=='auteurs' AND avoir_visiteurs(true))
+		$res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("visiteurs"), "auteur-24.gif", "", false);
+	if ($vue=='visiteurs')
+		$res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs"), "auteur-24.gif", "", false);
 
-		if (avoir_visiteurs(true)) {
-                        if ($visiteurs)
-				$res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs", "statut=" . AUTEURS_MIN_REDAC), "auteur-24.png", "", false);
-			else
-				$res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","statut=!" . AUTEURS_MIN_REDAC), "auteur-6forum-24.png", "", false);
-		}
-		$ret .= bloc_des_raccourcis($res);
-	}
-	$ret .= creer_colonne_droite('auteurs',true);
-	$ret .= pipeline('affiche_droite',array('args'=>array('exec'=>'auteurs'),'data'=>''));
+	$ret .= bloc_des_raccourcis($res);
+	$ret .= creer_colonne_droite($vue,true);
+	$ret .= pipeline('affiche_droite',array('args'=>array('exec'=>$vue),'data'=>''));
 	$ret .= debut_droite('',true);
 
-	return $ret;
-}
+	$ret .= gros_titre(_T('info_'.$vue),'',false);
 
-// http://doc.spip.org/@statut_min_redac
-function statut_min_redac($statut)
-{
-  $x = (!$statut)
-    || (strpos($statut, "0minirezo")!==false)
-    || (strpos($statut, "1comite")!==false);
+	echo $ret;
+	echo formulaire_recherche($vue,(($s=_request('statut'))?"<input type='hidden' name='statut' value='$s' />":""));
 
-  return $statut[0] =='!' ? !$x : $x;
-}
+	echo "<div class='nettoyeur'></div>";
 
-// http://doc.spip.org/@lettres_d_auteurs
-function lettres_d_auteurs($query, $debut, $max_par_page, $tri)
-{
-	$auteurs = $lettre = array();
-	$lettres_nombre_auteurs = 0;
-	$lettre_prec ="";
-	$nombre_auteurs = 0;
-	$query = sql_select($query['SELECT'], $query['FROM'], $query['WHERE'], $query['GROUP BY'], $query['ORDER BY']);
-
-	while ($auteur = sql_fetch($query)) {
-		if ($nombre_auteurs>=$debut AND $nombre_auteurs<$debut+$max_par_page) {
-			$auteur['restreint'] = sql_countsel("spip_auteurs_rubriques", "id_auteur=".$auteur['id_auteur']);
-			
-			$auteurs[] = $auteur;
-		}
-
-		if ($tri == 'nom') {
-			$premiere_lettre = strtoupper(spip_substr(corriger_typo($auteur['nom']),0,1));
-			if ($premiere_lettre != $lettre_prec) { 
-				$lettre[$premiere_lettre] = $nombre_auteurs;
-			}
-			$lettre_prec = $premiere_lettre;
-		}
-		$nombre_auteurs++;
-	}
-	return array($auteurs, $lettre, $nombre_auteurs, $debut);
-}
-
-// http://doc.spip.org/@auteurs_tranches
-function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs, $cherche='')
-{
-	global $spip_lang_right;
-
-	$arg = ($statut ? ("&statut=" .urlencode($statut)) : '')
-	   .  ($cherche ? ("&recherche=" . urlencode($cherche)) : '');
-
-	$res ="\n<tr class='titrem'>"
-	. "\n<th style='width: 20px'>";
-
-	if ($tri=='statut')
-  		$res .= http_img_pack(chemin_image('auteur-0minirezo-16.png'),'', "");
+	$contexte = $_GET;
+	$contexte['nb'] = MAX_AUTEURS_PAR_PAGE;
+	if (substr($statut,0,1)!=='!')
+		$contexte['statut'] = explode(',',$statut);
 	else {
-	  $t =  _T('lien_trier_statut');
-	  $res .= auteurs_href(http_img_pack(chemin_image('auteur-0minirezo-16.png'), $t, ""),"tri=statut$arg", " title=\"$t\"");
+		$statut = substr($statut,1);
+		$statut = explode(',',$statut);
+		$statut = sql_allfetsel('DISTINCT statut','spip_auteurs',sql_in('statut',$statut,'NOT'));
+		$contexte['statut'] = array_map('reset',$statut);
 	}
 
-	$res .= "</th><th style='width: 20px'></th><th>";
-
-	if ($tri=='nom')
-		$res .= '<b>'._T('info_nom').'</b>';
-	else
-		$res .= auteurs_href(_T('info_nom'), "tri=nom$arg", " title='"._T('lien_trier_nom'). "'");
-
-	$res .= "</th><th>";
-
-	if ($tri=='site')
-		$res .= '<b>'._T('info_site').'</b>';
-	else
-		$res .= auteurs_href(_T('info_site'), "tri=site$arg", " title='"._T('info_site'). "'");
-
-	$res .= '</th><th>';
-
-	$col = statut_min_redac($statut) ? _T('info_articles') : _T('message') ;
-
-	if ($tri=='nombre')
-		$res .= '<b>' . $col .'</b>';
-	else
-		$res .= auteurs_href($col, "tri=nombre$arg", " title=\""._T('lien_trier_nombre_articles'). '"');
-
-	$res .= "</th></tr>\n";
-
-	if ($nombre_auteurs > $max_par_page) {
-		$res .= "\n<tr class='' ><td colspan='5'><div class='arial1 tranches'>";
-
-		for ($j=0; $j < $nombre_auteurs; $j+=$max_par_page) {
-			if ($j > 0) 	$res .= " | ";
-
-			if ($j == $debut)
-				$res .= "<b>$j</b>";
-			else if ($j > 0)
-				$res .= auteurs_href($j, "tri=$tri$arg&debut=$j");
-			else
-				$res .= auteurs_href('0', "tri=$tri$arg");
-			if ($debut > $j  AND $debut < $j+$max_par_page){
-				$res .= " | <b>$debut</b>";
-			}
-		}
-
-		if ($tri == 'nom') {
-			$res .= "</div><div>\n";
-			$val_prev = 0;
-			foreach ($lettre as $key => $val) {
-				if ($val == $debut)
-					$res .= "<b>$key</b>\n";
-				else {
-					if ($debut>$val_prev && $debut<$val)
-						$res .= "<b>..</b> ";
-					$res .= auteurs_href($key, "tri=$tri$arg&debut=$val") . "\n";
-				}
-				$val_prev = $val;
-			}
-			$res .= "</div></td></tr>\n";
+	// une barre de navigation entre statuts
+	if (count($contexte['statut'])>1) {
+		$nav = array(lien_ou_expose(generer_url_ecrire($vue), _T('info_tout_afficher'), !_request('statut')));
+		$statuts = $contexte['statut'];
+		$res = sql_allfetsel('*', 'spip_auteurs', $cond, '', "statut, nom");
+		foreach ($statuts as $statut) {
+			$texte = array_search($statut, $GLOBALS['liste_des_statuts']);
+			$texte = ($texte?_T($texte):$statut);
+
+			$nav[] = lien_ou_expose(generer_url_ecrire($vue, 'statut='.$statut), $texte, _request('statut')==$statut);
+			// verification du get
+			if ($statut == _request('statut'))
+				$contexte['statut'] = $statut;
 		}
+		echo "<p class='pagination'>".implode(' | ',$nav)."</p>";
 	}
 
-	$nav = '';
-	$debut_suivant = $debut + $max_par_page;
-	if ($debut_suivant < $nombre_auteurs OR $debut > 0) {
-		$nav = "\n<table id='bas' style='width: 100%' border='0'>"
-		. "\n<tr class=''><td align='left'>";
-
-		if ($debut > 0) {
-			$debut_prec = max($debut - $max_par_page, 0);
-			$nav .= auteurs_href('&lt;&lt;&lt;',"tri=$tri&debut=$debut_prec$arg");
-		}
-		$nav .= "</td><td style='text-align: $spip_lang_right'>";
-		if ($debut_suivant < $nombre_auteurs) {
-			$nav .= auteurs_href('&gt;&gt;&gt;',"tri=$tri&debut=$debut_suivant&$arg");
-		}
-		$nav .= "</td></tr></table>\n";
+	if ($GLOBALS['visiteur_session']['statut']=='0minirezo'){
+		// n'exclure que les articles a la poubelle des compteurs
+		$contexte['filtre_statut_articles'] = array('poubelle');
 	}
-
-	return 	debut_cadre('liste','auteur-24.png','','','lesauteurs')
-	. "\n<br /><table  class='arial2' cellpadding='2' style='width: 100%; border: 0px;'>\n"
-	. $res
-	. $auteurs
-	. "</table>\n<br />"
-	.  $nav
-	. fin_cadre();
-}
-
-// http://doc.spip.org/@auteurs_href
-function auteurs_href($clic, $args='', $att='')
-{
-	$h = generer_url_ecrire('auteurs', $args);
-	$a = 'auteurs';
-
-	if (_SPIP_AJAX === 1 )
-		$att .= ("\nonclick=" . ajax_action_declencheur($h,$a));
-
-	return "<a href='$h#$a'$att>$clic</a>";
-}
-
-
-// http://doc.spip.org/@requete_auteurs
-function requete_auteurs($tri, $statut, $recherche=NULL)
-{
-	global $connect_statut, $spip_lang, $connect_id_auteur;
-
-	//
-	// Construire la requete
-	//
-	
-	// si on n'est pas minirezo, ignorer les auteurs sans article
-	// sauf les admins, toujours visibles.
-
-	// limiter les statuts affiches
-	if ($connect_statut == '0minirezo') {
-		if ($statut[0]=='!') {
-			  $statut = substr($statut,1); $not = "NOT";
-		} else $not = '';
-		$visit = !statut_min_redac($statut);
-		$statut = preg_split('/\W+/', $statut); 
-		$sql_visible = sql_in("A.statut", $statut, $not);
-	} else {
-		$sql_visible = "(
-			A.statut = '0minirezo'
-			OR A.id_auteur=$connect_id_auteur
-			OR " . sql_in('P.statut', array('prop', 'publie'))
-		. ')';
-		$visit = false;
-	}
-
-	$sql_sel = '';
-	$join = $visit ?
-	 ""
-	 : 
-	 (strpos($sql_visible,'P.statut')?("LEFT JOIN spip_auteurs_articles AS L ON A.id_auteur=L.id_auteur" . " LEFT JOIN spip_articles AS P ON (L.id_article = P.id_article)"):"");
-	
-	// tri
-	switch ($tri) {
-	case 'nombre':
-		if (!$visit OR test_plugin_actif('forum')){
-			$sql_sel = "COUNT(L.id_article) AS compteur";
-			$sql_order = 'compteur DESC, unom';
-			$join = $visit ?
-			 "LEFT JOIN spip_forum AS L ON A.id_auteur=L.id_auteur"
-			 : ("LEFT JOIN spip_auteurs_articles AS L ON A.id_auteur=L.id_auteur" 
-			. (strpos($sql_visible,'P.statut')?" LEFT JOIN spip_articles AS P ON (L.id_article = P.id_article)":""));
-		}
-		break;
-	
-	case 'site':
-		$sql_order = 'site, unom';
-		break;
-	
-	case 'statut':
-		$sql_order = 'statut, unom';
-		break;
-	
-	case 'nom':
-	default:
-		$sql_sel = sql_multi ("nom", $spip_lang);
-		$sql_order = "multi";
+	else {
+		// exclure les articles a la poubelle, en redac ou refuse des compteurs
+		$contexte['filtre_statut_articles'] = array('prepa','poubelle','refuse');
 	}
-	//
-	// La requete de base est tres sympa
-	// (pour les visiteurs, ca postule que les messages concernent des articles)
-	if ($recherche)
-		$recherche = (" AND " . sql_in('A.id_auteur', $recherche));
-	return array('SELECT' =>
-			array_diff(
-			array(
-				"A.id_auteur AS id_auteur",
-				"A.statut AS statut", 
-				"A.nom_site AS site", 
-				"A.nom AS nom", 
-				"UPPER(A.nom) AS unom", 
-				$sql_sel),array('',null)),
-		     'FROM' => "spip_auteurs AS A $join",
-		     'WHERE' => $sql_visible . $recherche, 
-		     'GROUP BY' => "A.statut, A.nom_site, A.nom, A.id_auteur", 
-		     'ORDER BY' => $sql_order);
-}
-
-// http://doc.spip.org/@afficher_n_auteurs
-function afficher_n_auteurs($auteurs) {
 
-	$res = '';
-	$formater_auteur = charger_fonction('formater_auteur', 'inc');
-	foreach ($auteurs as $row) {
-
-		list($s, $mail, $nom, $w, $p) = $formater_auteur($row['id_auteur']);
+	$lister_objets = charger_fonction('lister_objets','inc');
+	echo $lister_objets($vue,$contexte);
 
-		$res .= "\n<tr class='tr_liste'>"
-		. "\n<td>"
-		. $s
-		. "</td><td class='arial1'>"
-		. $mail
-		. "</td><td class='verdana1'>"
-		. $nom
-		. ((isset($row['restreint']) AND $row['restreint'])
-		   ? (" &nbsp;<small>"._T('statut_admin_restreint')."</small>")
-		   : '')
-		 ."</td><td class='arial1'>"
-		 . $w
-		 . "</td><td class='arial1'>"
-		 . $p
-		.  "</td></tr>\n";
-	}
-	return $res;
+	echo pipeline('affiche_milieu',array('args'=>array('exec'=>$vue),'data'=>''));
+	echo fin_gauche(), fin_page();
 }
-?>
+
+?>
\ No newline at end of file
diff --git a/ecrire/exec/breves.php b/ecrire/exec/breves.php
index f2de0efad624b68857cbf48a6f2879f11ee2cec5..3b31d02ee4cd182173bcd4fd2c47e6c8bfef4aa6 100644
--- a/ecrire/exec/breves.php
+++ b/ecrire/exec/breves.php
@@ -30,6 +30,7 @@ function exec_breves_dist()
 	echo debut_droite('', true);
 
  	$result = sql_select('*', "spip_rubriques", "id_parent=0",'', '0+titre,titre');
+	$lister_objets = charger_fonction('lister_objets','inc');
 
  	while($row=sql_fetch($result)){
 		$id_rubrique=$row['id_rubrique'];
@@ -39,9 +40,11 @@ function exec_breves_dist()
 		$texte=$row['texte'];
 		$editable = autoriser('publierdans','rubrique',$id_rubrique);
 
-		$statuts = "'prop', 'publie'" . ($editable ? ", 'refuse'": "");
+		$statuts = array('prop', 'publie');
+		if ($editable)
+			$statuts[] = 'refuse';
 
-		$res = afficher_objets('breve',$titre.aide ("breves"), array("SELECT" => 'id_rubrique, id_breve, date_heure, titre, statut', "FROM" => 'spip_breves', 'WHERE' => "id_rubrique=$id_rubrique AND statut IN ($statuts)", 'ORDER BY' => "date_heure DESC"),'',true);
+		$res = $lister_objets('breves',array('titre'=>$titre.aide ("breves"),'statut'=>$statuts, 'id_rubrique'=>$id_rubrique, 'par'=>'date_heure'), true);
 
 		echo $res ;
 
diff --git a/ecrire/exec/meme_rubrique.php b/ecrire/exec/meme_rubrique.php
deleted file mode 100644
index b11e338444b655ce46474346a74f86cdc73e6b3b..0000000000000000000000000000000000000000
--- a/ecrire/exec/meme_rubrique.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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;
-
-// http://doc.spip.org/@exec_meme_rubrique_dist
-function exec_meme_rubrique_dist()
-{
-	exec_meme_rubrique_args(intval(_request('id')), _request('type'), _request('order'));
-}
-
-// http://doc.spip.org/@exec_meme_rubrique_args
-function exec_meme_rubrique_args($id, $type, $order)
-{
-        if ((!autoriser('publierdans','rubrique',$id))
-	OR (!preg_match('/^[\w_-]*$/',$order))) {
-		include_spip('inc/minipres');
-                echo minipres();
-        } else {
-		$meme_rubrique = charger_fonction('meme_rubrique', 'inc');
-	// on connait pas le vrai 2e arg mais c'est pas dramatique
-		if (!$order) $order = 'date';
-		$res = $meme_rubrique($id, 0, $type, $order, NULL, true);
-		include_spip('inc/actions');
-		ajax_retour($res);
-	}
-}
-?>
diff --git a/ecrire/exec/memoriser.php b/ecrire/exec/memoriser.php
index 493c8bf16841274de3f2069efd52a34ed3f86c80..d9b7be4cf2af35dd4006b9fc324ad5265ce53190 100644
--- a/ecrire/exec/memoriser.php
+++ b/ecrire/exec/memoriser.php
@@ -14,6 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 
 // Recupere et affiche (en ajax) une fonction memorisee dans inc/presentation
+// obsolete : utilise uniquement par afficher_objets
 // http://doc.spip.org/@exec_memoriser_dist
 function exec_memoriser_dist()
 {
diff --git a/ecrire/exec/mots_edit.php b/ecrire/exec/mots_edit.php
index 9be52012f0fc106b4eed1ec320510227dccf80d8..f2b878a7e0331c6d55d96bfa6e5e9040c51678a6 100644
--- a/ecrire/exec/mots_edit.php
+++ b/ecrire/exec/mots_edit.php
@@ -179,17 +179,19 @@ function exec_mots_edit_args($id_mot, $id_groupe, $new, $table='', $table_id='',
 	if ($id_mot) {
 
 		if ($connect_statut == "0minirezo")
-			$aff_articles = "'prepa','prop','publie','refuse'";
+			$aff_articles = array('prepa','prop','publie','refuse');
 		else
-			$aff_articles = "'prop','publie'";
+			$aff_articles = array('prop','publie');
 
-		$out .= afficher_objets('rubrique','<b>' . _T('info_rubriques_liees_mot') . '</b>', array("FROM" => 'spip_rubriques AS R LEFT JOIN spip_mots_rubriques AS L ON L.id_rubrique=R.id_rubrique', 'WHERE' => "L.id_mot=$id_mot", 'ORDER BY' => "R.titre"));
+		$lister_objets = charger_fonction('lister_objets','inc');
 
-		$out .= afficher_objets('article',_T('info_articles_lies_mot'), array('FROM' => "spip_articles AS A LEFT JOIN spip_mots_articles AS L ON L.id_article=A.id_article", 'WHERE' => "L.id_mot=$id_mot AND A.statut IN ($aff_articles)", 'ORDER BY' => "A.date DESC"));
+		$out .=  $lister_objets('rubriques',array('titre'=>_T('info_rubriques_liees_mot'), 'id_mot'=>$id_mot, 'par'=>'titre'));
 
-		$out .= afficher_objets('breve','<b>' . _T('info_breves_liees_mot') . '</b>', array("FROM" => 'spip_breves AS B LEFT JOIN spip_mots_breves AS L ON L.id_breve=B.id_breve', 'WHERE' => "L.id_mot=$id_mot", 'ORDER BY' => "B.date_heure DESC"));
+		$out .=  $lister_objets('articles',array('titre'=>_T('info_articles_lies_mot'),'statut'=>$aff_articles, 'id_mot'=>$id_mot, 'par'=>'date'));
 
-		$out .= afficher_objets('site','<b>' . _T('info_sites_lies_mot') . '</b>', array("FROM" => 'spip_syndic AS S LEFT JOIN spip_mots_syndic AS L ON L.id_syndic=S.id_syndic', 'WHERE' => "L.id_mot=$id_mot", 'ORDER BY' => "S.nom_site DESC"));
+		$out .=  $lister_objets('breves',array('titre'=>_T('info_breves_liees_mot'), 'id_mot'=>$id_mot, 'par'=>'date_heure'));
+
+		$out .=  $lister_objets('sites',array('titre'=>_T('info_sites_lies_mot'), 'id_mot'=>$id_mot, 'par'=>'nom_site'));
 	}
 
 	$out .= pipeline('affiche_milieu',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>''))
diff --git a/ecrire/exec/naviguer.php b/ecrire/exec/naviguer.php
index 616d5f01ff8a486f699913d311e292947abd1c06..b7949eb540d1d77e0613599d2b5f498453f4689e 100644
--- a/ecrire/exec/naviguer.php
+++ b/ecrire/exec/naviguer.php
@@ -262,78 +262,59 @@ function contenu_naviguer($id_rubrique, $id_parent) {
 
 	global  $spip_lang_right;
 
+	$res = '';
+	$lister_objets = charger_fonction('lister_objets','inc');
+
+	$encours = "";
 	//
-	// Verifier les boucles a mettre en relief
+	// Les articles a valider
 	//
+	$encours .=  $lister_objets('articles',array('titre'=>_T('info_articles_proposes'),'statut'=>'prop', 'id_rubrique'=>$id_rubrique,'par'=>'date'));
 
-	$relief = sql_countsel('spip_articles', "id_rubrique=$id_rubrique AND statut='prop'");
-
-	if (!$relief) {
-		$relief = sql_countsel('spip_breves', "id_rubrique=$id_rubrique AND (statut='prepa' OR statut='prop')");
-	}
+	//
+	// Les breves a valider
+	//
+	$encours .= $lister_objets('breves',array('titre'=>_T('info_breves_valider'),'statut'=>array('prepa','prop'),'id_rubrique'=>$id_rubrique, 'par'=>'date_heure'));
 
-	if (!$relief AND $GLOBALS['meta']['activer_sites'] != 'non') {
-		$relief = sql_countsel('spip_syndic', "id_rubrique=$id_rubrique AND statut='prop'");
+	//
+	// Les sites references a valider
+	//
+	if ($GLOBALS['meta']['activer_sites'] != 'non') {
+		$encours .= $lister_objets('sites',array('titre'=> _T('info_site_valider') ,'statut'=>'prop','id_rubrique'=>$id_rubrique, 'par'=>'nom_site'));
 	}
 
-	if (!$relief AND $GLOBALS['meta']['activer_syndic'] != 'non'
+	//
+	// Les sites a probleme
+	//
+	if ($GLOBALS['meta']['activer_sites'] != 'non'
 	AND autoriser('publierdans','rubrique',$id_rubrique)) {
-		$relief = sql_countsel('spip_syndic', "id_rubrique=$id_rubrique AND (syndication='off' OR syndication='sus') AND statut='publie'");
+		$encours .= $lister_objets('sites',array('titre'=> _T('avis_sites_syndiques_probleme') ,'statut'=>'publie', 'syndication'=>array('off','sus'),'id_rubrique'=>$id_rubrique, 'par'=>'nom_site'));
 	}
 
-	$res = '';
-
-	if ($relief) {
-
-		$encours = "";
-		//
-		// Les articles a valider
-		//
-		$encours .= afficher_objets('article',_T('info_articles_proposes'),	array('WHERE' => "id_rubrique=$id_rubrique AND statut='prop'", 'ORDER BY' => "date DESC"));
-
-		//
-		// Les breves a valider
-		//
-		$encours .= afficher_objets('breve','<b>' . _T('info_breves_valider') . '</b>', array("FROM" => 'spip_breves', 'WHERE' => "id_rubrique=$id_rubrique AND (statut='prepa' OR statut='prop')", 'ORDER BY' => "date_heure DESC"), true);
-
-		//
-		// Les sites references a valider
-		//
-		if ($GLOBALS['meta']['activer_sites'] != 'non') {
-			$encours .= afficher_objets('site','<b>' . _T('info_site_valider') . '</b>', array("FROM" => 'spip_syndic', 'WHERE' => "id_rubrique=$id_rubrique AND statut='prop'", 'ORDER BY' => "nom_site"));
-		}
-
-		//
-		// Les sites a probleme
-		//
-		if ($GLOBALS['meta']['activer_sites'] != 'non'
-		AND autoriser('publierdans','rubrique',$id_rubrique)) {
+	// Les articles syndiques en attente de validation
+	if ($id_rubrique == 0
+	AND autoriser('publierdans','rubrique',$id_rubrique)) {
 
-			$encours .= afficher_objets('site','<b>' . _T('avis_sites_syndiques_probleme') . '</b>', array('FROM' => 'spip_syndic', 'WHERE' => "id_rubrique=$id_rubrique AND (syndication='off' OR syndication='sus') AND statut='publie'", 'ORDER BY' => "nom_site"));
-		}
+		$cpt = sql_countsel("spip_syndic_articles", "statut='dispo'");
+		if ($cpt)
+			$encours .= "<br /><small><a href='" .
+				generer_url_ecrire("sites_tous") .
+				"' style='color: black;'>" .
+				$cpt .
+				" " .
+				_T('info_liens_syndiques_1') .
+				" " .
+				_T('info_liens_syndiques_2') .
+				"</a></small>";
+	}
 
-		// Les articles syndiques en attente de validation
-		if ($id_rubrique == 0
-		AND autoriser('publierdans','rubrique',$id_rubrique)) {
-
-			$cpt = sql_countsel("spip_syndic_articles", "statut='dispo'");
-			if ($cpt)
-				$encours .= "<br /><small><a href='" .
-					generer_url_ecrire("sites_tous") .
-					"' style='color: black;'>" .
-					$cpt .
-					" " .
-					_T('info_liens_syndiques_1') .
-					" " .
-					_T('info_liens_syndiques_2') .
-					"</a></small>";
-		}
+	$encours = pipeline('rubrique_encours',array('args'=>array('type'=>'rubrique','id_objet'=>$id_rubrique),'data'=>$encours));
 
+	if (strlen(trim($encours)))
 		$res .= 
 			debut_cadre_couleur_foncee("",true, "", _T('texte_en_cours_validation'))
-			. pipeline('rubrique_encours',array('args'=>array('type'=>'rubrique','id_objet'=>$id_rubrique),'data'=>$encours))
+			. $encours
 			. fin_cadre_couleur_foncee(true);
-	}
 
 	$n = sql_countsel('spip_rubriques');
 	$bouton_article = $bouton_breves = $bouton_sites = "";
@@ -355,31 +336,31 @@ function contenu_naviguer($id_rubrique, $id_parent) {
 	//////////  Les articles en cours de redaction
 	/////////////////////////
 
-  $res .= afficher_objets('article',_T('info_tous_articles_en_redaction'), array("WHERE" => "statut='prepa' AND id_rubrique=$id_rubrique", 'ORDER BY' => "date DESC"));
+	$res .=  $lister_objets('articles',array('titre'=>_T('info_tous_articles_en_redaction'),'statut'=>'prepa', 'id_rubrique'=>$id_rubrique,'par'=>'date'));
 
 
 	//////////  Les articles publies
 	/////////////////////////
 
-	define('_TRI_ARTICLES_RUBRIQUE', 'date DESC');  # 0+titre,titre
-	$res .= afficher_objets('article',_T('info_tous_articles_presents'), array("WHERE" => "statut='publie' AND id_rubrique=$id_rubrique", 'ORDER BY' => _TRI_ARTICLES_RUBRIQUE));
+	@define('_TRI_ARTICLES_RUBRIQUE', 'date');  # 'num titre'
+	$res .=  $lister_objets('articles',array('titre'=>_T('info_tous_articles_presents'),'statut'=>'publie', 'id_rubrique'=>$id_rubrique,'par'=>_TRI_ARTICLES_RUBRIQUE));
 
 	// si une rubrique n'a pas/plus d'article publie, afficher les eventuels articles refuses
 	// pour permettre de la vider et la supprimer eventuellement
 	if (sql_countsel("spip_articles", "statut='publie' AND id_rubrique=".intval($id_rubrique), $groupby, $having)==0)
-		$res .= afficher_objets('article',_T('info_tous_articles_refuses'), array("WHERE" => "statut='refuse' AND id_rubrique=$id_rubrique", 'ORDER BY' => _TRI_ARTICLES_RUBRIQUE));
+		$res .=  $lister_objets('articles',array('titre'=>_T('info_tous_articles_refuses'),'statut'=>'refuse', 'id_rubrique'=>$id_rubrique,'par'=>_TRI_ARTICLES_RUBRIQUE));
 
   $res .= $bouton_article;
 
 	//// Les breves
 
-	$res .= afficher_objets('breve','<b>' . _T('icone_ecrire_nouvel_article') . '</b>', array("FROM" => 'spip_breves', 'WHERE' => "id_rubrique=$id_rubrique AND statut != 'prop' AND statut != 'prepa'", 'ORDER BY' => "date_heure DESC"));
+	$res .= $lister_objets('breves',array('titre'=>_T('icone_ecrire_nouvel_article'),'where'=>"statut != 'prop' AND statut != 'prepa'", 'id_rubrique'=>$id_rubrique,'par'=>'date_heure'));
   $res .= $bouton_breves;
 
 	//// Les sites references
 
 	if ($GLOBALS['meta']["activer_sites"] == 'oui') {
-		$res .= afficher_objets('site','<b>' . _T('titre_sites_references_rubrique') . '</b>', array("FROM" => 'spip_syndic', 'WHERE' => "id_rubrique=$id_rubrique AND statut!='refuse' AND statut != 'prop' AND syndication NOT IN ('off','sus')", 'ORDER BY' => 'nom_site'));
+		$res .= $lister_objets('sites',array('titre'=>_T('titre_sites_references_rubrique') ,'where'=>"statut!='refuse' AND statut != 'prop' AND syndication NOT IN ('off','sus')", 'id_rubrique'=>$id_rubrique,'par'=>'nom_site'));
  		$res .= $bouton_sites;
 	}
 	return $res;
diff --git a/ecrire/exec/recherche.php b/ecrire/exec/recherche.php
index 725a60f05d7bfad2e7b6da070dccbd116beefac8..133e7a8fdee48d2bed17e6cb8bc8ef06d92d7201 100644
--- a/ecrire/exec/recherche.php
+++ b/ecrire/exec/recherche.php
@@ -71,25 +71,25 @@ function exec_recherche_dist() {
 	if ($results) {
 		echo "<span class='verdana1'><b>"._T('info_resultat_recherche')."</b></span><br />";
 		echo "<h1>$recherche_aff</h1>";
-		include_spip('inc/afficher_objets');
+		$lister_objets = charger_fonction('lister_objets','inc');
 
 		foreach($results as $table => $r) {
 			switch ($table) {
 			case 'article':
 				$titre = _T('info_articles_trouves');
-				$order = 'date DESC';
+				$order = 'date';
 				break;
 			case 'breve':
 				$titre = _T('info_breves_touvees');
-				$order = 'date_heure DESC';
+				$order = 'date_heure';
 				break;
 			case 'rubrique':
 				$titre = _T('info_rubriques_trouvees');
-				$order = 'date DESC';
+				$order = 'date';
 				break;
 			case 'site':
 				$titre = _T('info_sites_trouves');
-				$order = 'date DESC';
+				$order = 'date';
 				break;
 			case 'auteur':
 				$titre = _T('info_auteurs_trouves');
@@ -109,16 +109,7 @@ function exec_recherche_dist() {
 				break;
 			}
 
-			echo afficher_objets($table,$titre,
-				array(
-			// gasp: la requete spip_articles exige AS A
-					'FROM' => table_objet_sql($table).' AS A',
-					'WHERE' => sql_in('A.'.id_table_objet($table),
-						array_keys($r)
-					),
-					'ORDER BY' => $order
-				)
-			);
+			echo $lister_objets(table_objet($table),array('titre'=>$titre,id_table_objet($table)=>array_keys($r),'par'=>$order));
 		}
 
 	}
diff --git a/ecrire/exec/sites.php b/ecrire/exec/sites.php
index 4d3d38b494de64f77f27935bd00137090b11fc1e..783e2d3683664950f944fc78e5d239a3f045eb82 100644
--- a/ecrire/exec/sites.php
+++ b/ecrire/exec/sites.php
@@ -47,8 +47,7 @@ function exec_sites_args($id_syndic)
 // http://doc.spip.org/@afficher_site
 function afficher_site($id_syndic, $id_rubrique, $nom_site, $row){
 
-	global $spip_lang_left,  
-$spip_lang_right;
+	global $spip_lang_left, $spip_lang_right;
 
 	$cherche_mot = _request('cherche_mot');
 	$select_groupe = _request('select_groupe');
@@ -74,6 +73,8 @@ $spip_lang_right;
 	if ($flag_administrable)
 		$instituer_site = charger_fonction('instituer_site','inc');
 
+	$lister_objets = charger_fonction('lister_objets','inc');
+
 	echo debut_grand_cadre(true);
 	echo afficher_hierarchie($id_rubrique);
 	echo fin_grand_cadre(true);
@@ -151,7 +152,7 @@ $spip_lang_right;
 				. "</div>"
 			  : "")
 
-			. afficher_objets('syndic_article',_T('titre_articles_syndiques'), array('FROM' => 'spip_syndic_articles', 'WHERE' => "id_syndic=$id_syndic", 'ORDER BY' => "date DESC"), $id_syndic)
+			. $lister_objets('syndic_articles',array('titre'=>_T('titre_articles_syndiques'),'id_syndic'=>$id_syndic,'par'=>'date'))
 
 			. ($date_syndic ? "<div class='date_syndic'>" . _T('info_derniere_syndication').' '.affdate_heure($date_syndic) .".</div>" : "")
 			. "<div class='mise_a_jour_syndic'>"
diff --git a/ecrire/exec/sites_tous.php b/ecrire/exec/sites_tous.php
index 055a7683d6171ccba0e2ace12a8138a02a10bd4b..ec83d5b5919c660eabd3d636c27db50e0ed3d5f4 100644
--- a/ecrire/exec/sites_tous.php
+++ b/ecrire/exec/sites_tous.php
@@ -27,11 +27,12 @@ function exec_sites_tous_dist() {
 	echo pipeline('affiche_droite',array('args'=>array('exec'=>'sites_tous'),'data'=>''));
 	echo debut_droite('', true);
 
-	echo afficher_objets('site','<b>' . _T('titre_sites_tous') . '</b>', array("FROM" => 'spip_syndic', 'WHERE' => "syndication='non' AND statut='publie'", 'ORDER BY'=> "nom_site"));
+	$lister_objets = charger_fonction('lister_objets','inc');
+	echo $lister_objets('sites',array('titre'=>_T('titre_sites_tous'),'syndication'=>'non','statut'=>'publie','par'=>"nom_site"));
 
-	echo afficher_objets('site','<b>' . _T('titre_sites_syndiques') . '</b>', array('FROM' => 'spip_syndic', 'WHERE' => "(syndication='oui' OR syndication='sus') AND statut='publie'", 'ORDER BY' => "nom_site"));
+	echo $lister_objets('sites',array('titre'=>_T('titre_sites_syndiques'),'syndication'=>array('oui','sus'),'statut'=>'publie','par'=>"nom_site"));
 
-	echo afficher_objets('site','<b>' . _T('titre_sites_proposes') . '</b>', array("FROM" => 'spip_syndic', 'WHERE' => "statut='prop'", 'ORDER BY' => "nom_site"));
+	echo $lister_objets('sites',array('titre'=>_T('titre_sites_proposes'),'statut'=>'prop','par'=>"nom_site"));
 
 	if (autoriser('bouton','site_creer')) {
 		echo
@@ -42,13 +43,13 @@ function exec_sites_tous_dist() {
 	echo pipeline('affiche_milieu',array('args'=>array('exec'=>'sites_tous'),'data'=>''));
 
 
-	echo afficher_objets('site','<b>' . _T('avis_sites_probleme_syndication') . '</b>', array("FROM" => 'spip_syndic', 'WHERE' => "syndication='off' AND statut='publie'", 'ORDER BY' => "nom_site"));
+	echo $lister_objets('sites',array('titre'=>_T('avis_sites_probleme_syndication'),'syndication'=>'off','statut'=>'publie','par'=>"nom_site"));
 
 	if ($GLOBALS['visiteur_session']['statut'] == '0minirezo') {
-		echo afficher_objets('site','<b>' . _T('info_sites_refuses') . '</b>', array("FROM" => 'spip_syndic', 'WHERE' => "statut='refuse'", 'ORDER BY' => "nom_site"));
+		echo $lister_objets('sites',array('titre'=>_T('info_sites_refuses'),'statut'=>'refuse','par'=>"nom_site"));
 	}
 
-	echo afficher_objets('syndic_article','<b>' . _T('titre_dernier_article_syndique') . '</b>', array('FROM' => 'spip_syndic_articles', 'ORDER BY' => "date DESC"));
+	echo $lister_objets('syndic_articles',array('titre'=>_T('titre_dernier_article_syndique'),'par'=>'date'));
 
 	echo fin_gauche(), fin_page();
 }
diff --git a/ecrire/exec/suivi_edito.php b/ecrire/exec/suivi_edito.php
index c3ea71be787fa61694078043aee45ec33f053503..740f9b5039f8d7d8c6f8f1bdac21c7d0f99b15f8 100644
--- a/ecrire/exec/suivi_edito.php
+++ b/ecrire/exec/suivi_edito.php
@@ -15,34 +15,32 @@ include_spip('inc/presentation');
 
 function encours_suivi()
 {
-	global $connect_statut;
-
-
+	$lister_objets = charger_fonction('lister_objets','inc');
 	$res = '';
 
 	// Les articles a valider
 	//
 
-	$res .=  afficher_objets('article',_T('info_articles_proposes'), array("WHERE" => "statut='prop'", 'ORDER BY' => "date DESC"));
+	$res .=  $lister_objets('articles',array('titre'=>_T('info_articles_proposes'),'statut'=>'prop', 'par'=>'date'));
 
 	//
 	// Les breves a valider
 	//
-	$res .= afficher_objets('breve',afficher_plus(generer_url_ecrire('breves'))._T('info_breves_valider'), array("FROM" => 'spip_breves', 'WHERE' => "statut='prepa' OR statut='prop'", 'ORDER BY' => "date_heure DESC"), true);
+	$res .= $lister_objets('breves',array('titre'=>afficher_plus_info(generer_url_ecrire('breves'))._T('info_breves_valider'),'statut'=>array('prepa','prop'), 'par'=>'date_heure'));
 
 	//
 	// Les sites references a valider
 	//
 	if ($GLOBALS['meta']['activer_sites'] != 'non') {
-		$res .= afficher_objets('site',afficher_plus(generer_url_ecrire('sites_tous')).'<b>' . _T('info_site_valider') . '</b>', array("FROM" => 'spip_syndic', 'WHERE' => "statut='prop'", 'ORDER BY'=> "nom_site"));
+		$res .= $lister_objets('sites',array('titre'=>afficher_plus_info(generer_url_ecrire('sites_tous')). _T('info_site_valider') ,'statut'=>'prop', 'par'=>'nom_site'));
 	}
 
-	if ($connect_statut == '0minirezo') {
-	//
-	// Les sites a probleme
-	//
-	  if ($GLOBALS['meta']['activer_sites'] != 'non') {
-		$res .= afficher_objets('site',afficher_plus(generer_url_ecrire('sites_tous')). '<b>' . _T('avis_sites_syndiques_probleme') . '</b>', array('FROM' => 'spip_syndic', 'WHERE' => "(syndication='off' OR syndication='sus') AND statut='publie'", 'ORDER BY' => 'nom_site'));
+	if ($GLOBALS['visiteur_session']['statut'] == '0minirezo') {
+		//
+		// Les sites a probleme
+		//
+		if ($GLOBALS['meta']['activer_sites'] != 'non') {
+		$res .= $lister_objets('sites',array('titre'=>afficher_plus_info(generer_url_ecrire('sites_tous')). _T('avis_sites_syndiques_probleme') ,'statut'=>'publie', 'syndication'=>array('off','sus'), 'par'=>'nom_site'));
 	}
 
 	// Les articles syndiques en attente de validation
@@ -59,14 +57,9 @@ function encours_suivi()
 			. "</a></small>";
 
 	}
-	
-	$res = pipeline('accueil_encours',$res);
 
-	if (!$res) return '';
+	return pipeline('accueil_encours',$res);
 
-	return 
-	"<h2>"._T('texte_en_cours_validation')."</h2>"
-	. $res;
 }
 
 // http://doc.spip.org/@etat_base_accueil
@@ -169,6 +162,7 @@ function suivi_liste_participants()
 function exec_suivi_edito_dist()
 {
   global $id_rubrique, $connect_statut, $connect_id_auteur, $spip_display, $connect_id_rubrique;
+	$lister_objets = charger_fonction('lister_objets','inc');
 
 	$id_rubrique =  intval($id_rubrique);
  	pipeline('exec_init',array('args'=>array('exec'=>'suivi_edito','id_rubrique'=>$id_rubrique),'data'=>''));
@@ -189,21 +183,23 @@ function exec_suivi_edito_dist()
 
 	echo debut_droite("", true);
 
+	$date_now = date('Y-m-d H:i:s');
 	if ($GLOBALS['meta']["post_dates"] == "non"
 	AND $connect_statut == '0minirezo')
-		echo afficher_objets('article',_T('info_article_a_paraitre'), array("WHERE" => "statut='publie' AND date>".sql_quote(date('Y-m-d H:i:s')), 'ORDER BY' => "date"));
+		echo $lister_objets('articles',array('titre'=>_T('info_article_a_paraitre'),'statut'=>'publie', 'par'=>'date', 'where'=>'date>'.sql_quote($date_now), 'date_sens'=>1));
 
 
-	echo encours_suivi();
+	$s = encours_suivi();
+	if ($s)
+		echo "<h2>"._T('texte_en_cours_validation')."</h2>" . $s;
 
 	// Les articles recents
 	//
 	echo "<h2>"._T('articles_recents')."</h2>";
-	echo afficher_objets('article',
-	#afficher_plus(generer_url_ecrire('articles_page')) .
-	_T('articles_recents'), array("WHERE" => "statut='publie'" .($GLOBALS['meta']["post_dates"] == "non"
-		? " AND date<".sql_quote(date('Y-m-d H:i:s')) : ''),
-		'ORDER BY' => "date DESC", 'LIMIT' => '0,4'));
+	$contexte = array('titre'=>_T('articles_recents'),'statut'=>'publie', 'par'=>'date','nb'=>5);
+	if ($GLOBALS['meta']["post_dates"] == "non")
+		$contexte['where']='date<='.sql_quote($date_now);
+	echo $lister_objets('articles',$contexte);
 
 	echo pipeline('affiche_milieu',array('args'=>array('exec'=>'suivi_edito'),'data'=>''));
 
diff --git a/ecrire/action/instituer_rubrique_breves.php b/ecrire/exec/visiteurs.php
similarity index 53%
rename from ecrire/action/instituer_rubrique_breves.php
rename to ecrire/exec/visiteurs.php
index e29ebad152467c8190b67dd847a5e751bcdc8ea2..e0e570c063bbaa06c40be98186699dda680c0e67 100644
--- a/ecrire/action/instituer_rubrique_breves.php
+++ b/ecrire/exec/visiteurs.php
@@ -12,27 +12,15 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_instituer_rubrique_breves_dist
-function action_instituer_rubrique_breves_dist() {
+include_spip('inc/presentation');
 
-	$securiser_action = charger_fonction('securiser_action', 'inc');
-	$arg = $securiser_action();
 
-	list($id, $statut) = preg_split('/\W/', $arg);
-	$id = intval($id);
+// afficher les nons redacteurs !
+@define('AUTEURS_DEFAUT', '!');
+function exec_visiteurs_dist(){
 
-	include_spip('action/editer_breve');
-
-	$table = 'articles';
-	$key = 'id_article';
-
-	$voss = sql_select("$key AS id", "spip_$table", "id_rubrique=$id AND (statut = 'publie' OR statut = 'prop')");
-
-	while($row = sql_fetch($voss)) {
-		set_request('statut', $statut);
-		revisions_breves($row['id']);
-	}
-
-	redirige_url_ecrire('meme_rubrique', "id=$id&type=breve&order=date_heure");
+	$auteurs = charger_fonction('auteurs','exec');
+	return $auteurs('visiteurs');
 }
+
 ?>
diff --git a/ecrire/inc/formater_article.php b/ecrire/inc/formater_article.php
index d98f24597ef24b266bb08233fe661a6fcca96c73..2cd8f79daea4c951032e23b64b6cf97981884b89 100644
--- a/ecrire/inc/formater_article.php
+++ b/ecrire/inc/formater_article.php
@@ -13,6 +13,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/afficher_objets');
 // Fonction appelee dans une boucle, calculer les invariants au premier appel.
+// obsolete, utilise uniquement par afficher_objets
 
 // http://doc.spip.org/@inc_formater_article_dist
 function inc_formater_article_dist($row, $own='')
diff --git a/ecrire/inc/lister_objets.php b/ecrire/inc/lister_objets.php
new file mode 100644
index 0000000000000000000000000000000000000000..b3b4be230256a7ac262eb6b9436219427df6ba95
--- /dev/null
+++ b/ecrire/inc/lister_objets.php
@@ -0,0 +1,49 @@
+<?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;
+
+
+
+/**
+ * affichage des liste d'objets
+ * surcharge pour aiguiller vers la mise en skel
+ *
+ * @param string $vue
+ * @param string $titre
+ * @param array $requete
+ * @param string $formater
+ * @param bool $force
+ * @return string
+ */
+function inc_lister_objets_dist($vue, $contexte=array(), $force=false){
+	$res = ""; // debug
+	if ($vue=='sites')
+		$vue='syndic';
+
+	if (!is_array($contexte))
+		return _L('$contexte doit etre un tableau dans inc/lister_objets');
+
+	$fond = "prive/listes/$vue";
+	if (!find_in_path($fond."."._EXTENSION_SQUELETTES))
+		return _L("vue $vue introuvable pour lister les objets");
+	
+	$contexte['sinon']=($force ? $contexte['titre']:'');
+
+	$res = recuperer_fond($fond,$contexte,array('ajax'=>true));
+	if (_request('var_liste'))
+		var_dump($contexte);
+		
+	return $res;
+}
+
+?>
\ No newline at end of file
diff --git a/ecrire/inc/meme_rubrique.php b/ecrire/inc/meme_rubrique.php
index 824f623adb250325444d561c0d9717d361247681..5738dd6b85f85c2fe2d266608886beae42d6ec39 100644
--- a/ecrire/inc/meme_rubrique.php
+++ b/ecrire/inc/meme_rubrique.php
@@ -12,83 +12,24 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 // http://doc.spip.org/@inc_meme_rubrique_dist
-function inc_meme_rubrique_dist($id_rubrique, $id, $type, $order='', $limit=NULL, $ajax=false)
-{
-	global $spip_lang_right, $spip_lang_left;
-	include_spip('inc/presentation');
-	include_spip('inc/afficher_objets');
+function inc_meme_rubrique_dist($id_rubrique, $id, $type, $order=''){
 
-	$table = table_objet_sql($type);
-	if (!id_table_objet($table)) {
-		spip_log("meme_rubrique: $type table inconnue");
-		$type = 'article';
-		$table = 'spip_articles';
-	}
-	$prim = 'id_' . $type;
-	if (!$limit) 
-		$limit = defined("_MAX_ART_AFFICHES") ? _MAX_ART_AFFICHES : 10;
+	$table = table_objet($type);
+	$primary = id_table_objet($type);
 
-	$titre = ($type!='syndic'?'titre':'nom_site');
-	$exec = array('article'=>'articles','breve'=>'breves_voir','syndic'=>'sites');
+	$lister_objets = charger_fonction('lister_objets','inc');
+	$contexte = array('id_rubrique'=>$id_rubrique,'where'=>"$primary!=".intval($id));
 
-	$where = (($GLOBALS['visiteur_session']['statut'] == '0minirezo')
-		  ? ''
-		  :  "(statut = 'publie' OR statut = 'prop') AND ") 
-	. "id_rubrique=$id_rubrique AND ($prim != $id)";
+	if ($GLOBALS['visiteur_session']['statut'] !== '0minirezo')
+		$contexte['statut'] = array('publie','prop');
 
-	$select = "$prim AS id, $titre AS titre, statut";
+	if ($order)
+		$contexte['par'] = $order;
+	elseif ($type=='article' AND defined('_TRI_ARTICLES_RUBRIQUE'))
+		$contexte['par'] = _TRI_ARTICLES_RUBRIQUE;
 
-	$n = sql_countsel($table, $where);
+	$contexte['titre'] = _T('info_meme_rubrique');
+	return $lister_objets($table,$contexte);
 
-	if (!$n) return '';
-
-	if (!defined('_TRI_ARTICLES_RUBRIQUE')) define('_TRI_ARTICLES_RUBRIQUE', 'date DESC'); // surcharge possible dans mes_options.php
-	$order = ($order == '') ? ($type=='article'?_TRI_ARTICLES_RUBRIQUE:'date desc') : "$order DESC";
-	$voss = sql_select($select, $table, $where, '', "$order", $limit);
-
-	$limit = $n - $limit;
-	$retour = '';
-	$puce_statut = charger_fonction('puce_statut', 'inc');
-	$idom = 'rubrique_' . $type;
-
-	while($row = sql_fetch($voss)) {
-		$id = $row['id'];
-		$num = afficher_numero_edit($id, $prim, $type);
-		$statut = $row['statut'];
-		$statut = $puce_statut($id, $statut, $id_rubrique, $type);
-		$href = "<a class='verdana1' href='"
-		. generer_url_ecrire($exec[$type],"$prim=$id")
-		. "'>"
-		. sinon(typo($row['titre']), _T('info_sans_titre'))
-		. "</a>";
-
-		// Todo: refaire en css plus sains
-		$retour .= "\n<div>"
-				. "\n<div style='float:$spip_lang_right;width: 32%'>"
-				. $num . "</div>"
-				. "<div style='float:$spip_lang_left; padding-top:1px; width:18px;'>".$statut ."</div>"
-				. "<div style='padding-$spip_lang_left:18px;'>".$href."</div>"
-				. "<div style='clear:both; height: 3px;'></div>"
-				. "</div>";
-	}
-
-	$icone =  '<b>' . _T('info_meme_rubrique')  . '</b>';
-	$bouton = bouton_block_depliable(_T('info_meme_rubrique'),true,'memerub');
-
-	$retour = 
-		debut_cadre('meme-rubriques',"article-24.png",'',$bouton)
-		. debut_block_depliable(true,'memerub')
-		. $retour;
-	
-
-	//	$retour .= (($limit <= 0) ? '' : "<tr><td colspan='3' style='text-align: center'>+ $limit</td></tr>");
-
-	$retour .= fin_block()
-		. fin_cadre('meme-rubriques');
-
-	if ($ajax) return $retour;
-
-	// id utilise dans puce_statut_article
-	return "\n<div id='imgstatut$idom$id_rubrique'>$retour</div>";
 }
 ?>
diff --git a/prive/listes/articles.html b/prive/listes/articles.html
new file mode 100644
index 0000000000000000000000000000000000000000..b3fffecd29d1fa2312b7fdc6139a860678b6b754
--- /dev/null
+++ b/prive/listes/articles.html
@@ -0,0 +1,39 @@
+[(#SET{defaut_tri,#ARRAY{
+	date,#ENV{date_sens,-1},
+	titre,1,
+	id_article,1
+}})
+]<B_liste_art>
+#ANCRE_PAGINATION
+<div class="liste-objets articles">
+<table class='spip liste'>
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_article,info_nb_articles}})</strong></caption>]
+	<thead>
+		<tr class='first_row'>
+			<th class='statut'>[(#TRI{statut,<span title="<:afficher_objets:info_statut|attribut_html:>">#</span>,ajax})]</th>
+			<th class='titre principale'>[(#TRI{titre,<:info_titre:>,ajax})]</th>
+			<th class='auteur'><:auteur:></th>
+			<th class='date secondaire'>[(#TRI{date,<:date:>,ajax})]</th>
+			<th class='id'>[(#TRI{id_article,<:info_numero_abbreviation:>,ajax})]</th>
+		</tr>
+	</thead>
+	<tbody>
+	<BOUCLE_liste_art(ARTICLES){id_article?}{id_rubrique?}{id_mot?}{id_auteur?}{where?}{statut?}{tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,10}}{!lang_select}>
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
+			<td class='statut'>[(#ID_ARTICLE|puce_changement_statut{#STATUT,#ID_RUBRIQUE,article})]</td>
+			<td class='titre principale'>[(#LOGO_ARTICLE|image_reduire{20,26})]<a href="[(#ID_ARTICLE|generer_url_entite{article})]">[(#RANG). ]#TITRE</a></td>
+			<td class='auteur'><BOUCLE_auteurs(AUTEURS){id_article}{', '}><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a></BOUCLE_auteurs></td>
+			<td class='date secondaire'>[(#DATE|affdate_jourcourt)]</td>
+			<td class='id'>[(#AUTORISER{modifier,article,#ID_ARTICLE}|?{
+				<a href="[(#URL_ECRIRE{articles_edit,id_article=#ID_ARTICLE})]">#ID_ARTICLE</a>,
+				#ID_ARTICLE
+			})]</td>
+		</tr>
+	</BOUCLE_liste_art>
+	</tbody>
+</table>
+[<p class='pagination'>(#PAGINATION{prive})</p>]
+</div>
+</B_liste_art>[
+<div class="liste-objets articles"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_art>
diff --git a/prive/listes/auteurs.html b/prive/listes/auteurs.html
new file mode 100644
index 0000000000000000000000000000000000000000..14e1bc9eb8895efb9fc3cd893c2e05019a70c8d1
--- /dev/null
+++ b/prive/listes/auteurs.html
@@ -0,0 +1,49 @@
+[(#SET{defaut_tri,#ARRAY{
+	statut,1,
+	multi nom,1,
+	site,1,
+	compteur_articles,-1
+}})
+]<B_liste_aut>
+#SET{afficher_lettres,#TRI|=={'multi nom'}|oui}
+#SET{debut,#ENV{debutaut,#EVAL{_request("debutaut");}}}
+#ANCRE_PAGINATION
+[<h3><:info_resultat_recherche:> &laquo;(#ENV{recherche})&raquo;</h3>]
+<div class="liste-objets auteurs">
+<table class='spip liste'>
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_auteur,info_nb_auteurs}})</strong></caption>]
+	<thead>
+
+		<B_lettre><tr><td colspan="5"><p class='pagination'><BOUCLE_lettre(AUTEURS){tout}{id_auteur?}{where?}{statut?}{recherche?}{par multi nom}{id_auteur==#GET{afficher_lettres}|?{'.*','A'}}>[
+		(#NOM**|extraire_multi|initiale|unique|oui)
+		[(#SELF|parametre_url{debutaut,@#ID_AUTEUR}|ancre_url{paginationaut}|afficher_initiale{[(#NOM**|extraire_multi|initiale)],#COMPTEUR_BOUCLE,#GET{debut},#ENV{nb,10}})]
+		]#SAUTER{#ENV{nb,10}|moins{#COMPTEUR_BOUCLE|=={1}|?{2,1}}}</BOUCLE_lettre>[
+		(#REM|afficher_initiale{#REM,#TOTAL_BOUCLE,#GET{debut},#ENV{nb,10}})
+		]</p></td></tr></B_lettre>
+	
+		[<tr><td colspan="5"><p class='pagination'>(#PAGINATION{prive})</p></td></tr>]
+		<tr class='first_row'>
+			<th class='statut'>[(#TRI{statut,#CHEMIN{images/admin-12.gif}|balise_img{<:afficher_objets:info_statut|attribut_html:>},ajax})]</th>
+			<th class='email'></th>
+			<th class='nom'>[(#TRI{multi nom,<:info_nom:>,ajax})]</th>
+			<th class='site'>[(#TRI{url_site,<:info_site:>,ajax})]</th>
+			<th class='nombre'>[(#TRI{compteur_articles,<:info_articles:>,ajax})]</th>
+		</tr>
+	</thead>
+	<tbody>
+	<BOUCLE_liste_aut(AUTEURS){tout}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{pagination #ENV{nb,10} aut}{!compteur_articles_filtres #ENV{filtre_statut_articles,poubelle}}>
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#NOM**|extraire_multi|initiale|=={#ENV{i}}|?{on}|unique)]">
+			<td class='statut'>[(#ID_AUTEUR|puce_changement_statut{#STATUT,0,auteur})]</td>
+			<td class="mail">[<a href="(#ID_AUTEUR|auteur_lien_messagerie{#EN_LIGNE,#STATUT,#IMESSAGE,#EMAIL})">[(#CHEMIN{images/m_envoi.gif}|balise_img{<:info_envoyer_message_prive:>})]</a>]</td>
+			<td class='nom[ (#NOM|non)vide]'>[(#LOGO_AUTEUR|image_reduire{20,26})]<a href="[(#ID_AUTEUR|generer_url_entite{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[(#RANG). ][(#NOM|sinon{<:texte_vide:>})]</a></td>
+			<td class='site'>[<a href='(#URL_SITE|traiter_lien_explicite)'>[(#NOM_SITE|sinon{#URL_SITE|traiter_lien_explicite|couper{30}})]</a>]</td>
+			<td class='nombre'>[(#COMPTEUR_ARTICLES|singulier_ou_pluriel{info_1_article,info_nb_articles})][<br /><span>(#PIPELINE{'compter_contributions_auteur',#ARRAY{args,#ARRAY{id_auteur,#ID_AUTEUR},data,#ARRAY{}}}|implode{'<br />'})</span>]</td>
+		</tr>
+	</BOUCLE_liste_aut>
+	</tbody>
+</table>
+[<p class='pagination'>(#PAGINATION{prive})</p>]
+</div>
+</B_liste_aut>[<h3>[(#VAL{info_recherche_auteur_zero}|_T{#ARRAY{cherche_auteur,#ENV{recherche}}})]</h3>(#ENV{recherche}|oui)][
+<div class="liste-objets auteurs"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_aut>
diff --git a/prive/listes/auteurs_fonctions.php b/prive/listes/auteurs_fonctions.php
new file mode 100644
index 0000000000000000000000000000000000000000..1bc9fc722307cdb3cc6381989833e6297d10a291
--- /dev/null
+++ b/prive/listes/auteurs_fonctions.php
@@ -0,0 +1,135 @@
+<?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.   *
+\***************************************************************************/
+
+
+/**
+ * Compter les articles publies lies a un auteur, dans une boucle auteurs
+ * pour la vue prive/liste/auteurs.html
+ *
+ * @param <type> $idb
+ * @param <type> $boucles
+ * @param <type> $crit
+ * @param <type> $left
+ */
+function critere_compteur_articles_filtres_dist($idb, &$boucles, $crit, $left=false){
+	$boucle = &$boucles[$idb];
+
+	$_statut = calculer_liste($crit->param[0], array(), $boucles, $boucle->id_parent);
+
+	$not="";
+	if ($crit->not)
+		$not=", 'NOT'";
+	$boucle->from['auteurs_articles'] = 'spip_auteurs_articles';
+	$boucle->from_type['auteurs_articles'] = 'left';
+	$boucle->join['auteurs_articles'] = array("'auteurs'","'id_auteur'");
+
+	$boucle->from['articles'] = 'spip_articles';
+	$boucle->from_type['articles'] = 'left';
+	$boucle->join['articles'] = array("'auteurs_articles'","'id_article'","'id_article'","'(articles.statut IS NULL OR '.sql_in('articles.statut',$_statut$not).')'");
+
+	$boucle->select[]= "COUNT(articles.id_article) AS compteur_articles";
+	$boucle->group[] = 'auteurs.id_auteur';
+}
+/**
+ * Compter les articles publies lies a un auteur, dans une boucle auteurs
+ * pour la vue prive/liste/auteurs.html
+ *
+ * @param <type> $p
+ * @return <type>
+ */
+function balise_COMPTEUR_ARTICLES_dist($p) {
+	return rindex_pile($p, 'compteur_articles', 'compteur_articles_filtres');
+}
+
+
+/**
+ * Calculer l'initiale d'un nom
+ *
+ * @param <type> $nom
+ * @return <type>
+ */
+function initiale($nom){
+	return spip_substr(trim(strtoupper($nom)),0,1);
+}
+
+/**
+ * Afficher l'initiale pour la navigation par lettres
+ *
+ * @staticvar string $memo
+ * @param <type> $url
+ * @param <type> $initiale
+ * @param <type> $compteur
+ * @param <type> $debut
+ * @param <type> $pas
+ * @return <type>
+ */
+function afficher_initiale($url,$initiale,$compteur,$debut,$pas){
+	static $memo = null;
+	$res = '';
+	if (!$memo
+		OR (!$initiale AND !$url)
+		OR ($initiale!==$memo['initiale'])
+		){
+		$newcompt = intval(floor(($compteur-1)/$pas)*$pas);
+		#var_dump("$initiale:$newcompt");
+		if ($memo){
+			$on = (($memo['compteur']<=$debut)
+				AND (
+						$newcompt>$debut OR ($newcompt==$debut AND $newcompt==$memo['compteur'])
+						));
+			$res = lien_ou_expose($memo['url'],$memo['initiale'],$on,'lien_pagination');
+		}
+		if ($initiale)
+			$memo = array('initiale'=>$initiale,'url'=>parametre_url($url,'i',$initiale),'compteur'=>$newcompt);
+	}
+	return $res;
+}
+
+/**
+ * Calculer l'url vers la messagerie :
+ * - si l'auteur accepte les messages internes et que la messagerie est activee
+ * et qu'il est en ligne, on propose le lien vers la messagerie interne
+ * - sinon on propose un lien vers un email si possible
+ * - sinon rien
+ *
+ * @staticvar string $time
+ * @param int $id_auteur
+ * @param date $en_ligne
+ * @param string $statut
+ * @param string $imessage
+ * @param string $email
+ * @return string
+ */
+function auteur_lien_messagerie($id_auteur,$en_ligne,$statut,$imessage,$email){
+	static $time = null;
+	if (!in_array($statut, array('0minirezo', '1comite')))
+		return '';
+
+	if (is_null($time))
+		$time = time();
+	$parti = (($time-strtotime($en_ligne))>15*60);
+
+	if ($imessage != 'non' AND !$parti AND $GLOBALS['meta']['messagerie_agenda'] != 'non')
+		return generer_action_auteur("editer_message","normal/$id_auteur");
+
+	elseif (strlen($email) AND autoriser('voir', 'auteur', $id_auteur))
+		return 'mailto:' . $email;
+
+	else
+		return '';
+
+	return "<a href='$href' title=\""
+	  .  _T('info_envoyer_message_prive')
+	  . "\" class='message'>&nbsp;</a>";
+}
+
+?>
\ No newline at end of file
diff --git a/prive/listes/breves.html b/prive/listes/breves.html
new file mode 100644
index 0000000000000000000000000000000000000000..1354cc1b13bf3eb0789d33fb8969c1305ea6f4d2
--- /dev/null
+++ b/prive/listes/breves.html
@@ -0,0 +1,38 @@
+[(#SET{defaut_tri,#ARRAY{
+	date,#ENV{date_sens,-1},
+	date_heure,#ENV{date_sens,-1},
+	titre,1,
+	id_breve,1
+}})
+]<B_liste_bre>
+#ANCRE_PAGINATION
+<div class="liste-objets breves">
+<table class='spip liste'>
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_breve,info_nb_breves}})</strong></caption>]
+	<thead>
+		<tr class='first_row'>
+			<th class='statut'>[(#TRI{statut,<span title="<:afficher_objets:info_statut|attribut_html:>">#</span>,ajax})]</th>
+			<th class='titre'>[(#TRI{titre,<:info_titre:>,ajax})]</th>
+			<th class='date'>[(#TRI{date,<:date:>,ajax})]</th>
+			<th class='id'>[(#TRI{id_breve,<:info_numero_abbreviation:>,ajax})]</th>
+		</tr>
+	</thead>
+	<tbody>
+	<BOUCLE_liste_bre(BREVES){id_breve?}{id_secteur?}{id_mot?}{id_rubrique?}{where?}{statut?}{tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
+			<td class='statut'>[(#ID_BREVE|puce_changement_statut{#STATUT,#ID_RUBRIQUE,breve})]</td>
+			<td class='titre principale'>[(#LOGO_BREVE|image_reduire{20,26})]<a href="[(#ID_BREVE|generer_url_entite{breve})]">#TITRE</a></td>
+			<td class='date secondaire'>[(#DATE|affdate_jourcourt)]</td>
+			<td class='id'>[(#AUTORISER{modifier,breve,#ID_BREVE}|?{
+				<a href="[(#URL_ECRIRE{breves_edit,id_breve=#ID_BREVE})]">#ID_BREVE</a>,
+				#ID_BREVE
+			})]</td>
+		</tr>
+	</BOUCLE_liste_bre>
+	</tbody>
+</table>
+[<p class='pagination'>(#PAGINATION{prive})</p>]
+</div>
+</B_liste_bre>[
+<div class="liste-objets breves"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_bre>
diff --git a/prive/listes/mots.html b/prive/listes/mots.html
new file mode 100644
index 0000000000000000000000000000000000000000..277f75d2aff86e6fb8cce2ceb5329a769de202f6
--- /dev/null
+++ b/prive/listes/mots.html
@@ -0,0 +1,37 @@
+[(#SET{defaut_tri,#ARRAY{
+	date,#ENV{date_sens,-1},
+	titre,1,
+	id_mot,1
+}})
+]<B_liste_mot>
+#ANCRE_PAGINATION
+<div class="liste-objets mots">
+<table class='spip liste'>
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_mot_cle,info_nb_mots_cles}})</strong></caption>]
+	<thead>
+		<tr class='first_row'>
+			<th class='icone'></th>
+			<th class='titre'>[(#TRI{titre,<:info_titre:>,ajax})]</th>
+			<th class='type'>[(#TRI{type,<:info_dans_groupe:>,ajax})]</th>
+			<th class='id'>[(#TRI{id_mot,<:info_numero_abbreviation:>,ajax})]</th>
+		</tr>
+	</thead>
+	<tbody>
+	<BOUCLE_liste_mot(MOTS){id_mot?}{id_rubrique?}{id_article?}{where?}{tri #ENV{par,num titre},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}>
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
+			<td class='icone'>[(#CHEMIN_IMAGE{mot-16.png}|balise_img)]</td>
+			<td class='titre principale'>[(#LOGO_MOT|image_reduire{20,26})]<a href="[(#ID_MOT|generer_url_entite{mot})]">[(#RANG). ]#TITRE</a></td>
+			<td class='type secondaire'>#TYPE</td>
+			<td class='id'>[(#AUTORISER{modifier,mot,#ID_MOT}|?{
+				<a href="[(#URL_ECRIRE{mots_edit,id_mot=#ID_MOT})]">#ID_MOT</a>,
+				#ID_MOT
+			})]</td>
+		</tr>
+	</BOUCLE_liste_mot>
+	</tbody>
+</table>
+[<p class='pagination'>(#PAGINATION{prive})</p>]
+</div>
+</B_liste_mot>[
+<div class="liste-objets mots"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_mot>
diff --git a/prive/listes/rubriques.html b/prive/listes/rubriques.html
new file mode 100644
index 0000000000000000000000000000000000000000..216357ed2ddb40dcd956bde348a499e5901a6c75
--- /dev/null
+++ b/prive/listes/rubriques.html
@@ -0,0 +1,39 @@
+[(#SET{defaut_tri,#ARRAY{
+	date,#ENV{date_sens,-1},
+	titre,1,
+	id_rubrique,1
+}})
+]<B_liste_rub>
+#ANCRE_PAGINATION
+<div class="liste-objets rubriques">
+<table class='spip liste'>
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_rubrique,info_nb_rubriques}})</strong></caption>]
+	<thead>
+		<tr class='first_row'>
+			<th class='icone'></th>
+			<th class='titre'>[(#TRI{titre,<:info_titre:>,ajax})]</th>
+			<th class='langue'></th>
+			<th class='date'>[(#TRI{date,<:date:>,ajax})]</th>
+			<th class='id'>[(#TRI{id_rubrique,<:info_numero_abbreviation:>,ajax})]</th>
+		</tr>
+	</thead>
+	<tbody>
+	<BOUCLE_liste_rub(RUBRIQUES){id_rubrique?}{id_parent?}{id_mot?}{id_auteur?}{where?}{statut?}{tri #ENV{par,num titre},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}>
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
+			<td class='icone'>[(#CHEMIN_IMAGE{rubrique-16.png}|balise_img)]</td>
+			<td class='titre principale'>[(#LOGO_RUBRIQUE|image_reduire{20,26})]<a href="[(#ID_RUBRIQUE|generer_url_entite{rubrique})]">[(#RANG). ]#TITRE</a></td>
+			<td class='langue'></td>
+			<td class='date secondaire'>[(#DATE|affdate_jourcourt)]</td>
+			<td class='id'>[(#AUTORISER{modifier,rubrique,#ID_RUBRIQUE}|?{
+				<a href="[(#URL_ECRIRE{rubriques_edit,id_rubrique=#ID_RUBRIQUE})]">#ID_RUBRIQUE</a>,
+				#ID_RUBRIQUE
+			})]</td>
+		</tr>
+	</BOUCLE_liste_rub>
+	</tbody>
+</table>
+[<p class='pagination'>(#PAGINATION{prive})</p>]
+</div>
+</B_liste_rub>[
+<div class="liste-objets rubriques"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_rub>
diff --git a/prive/listes/syndic.html b/prive/listes/syndic.html
new file mode 100644
index 0000000000000000000000000000000000000000..c9fc323911a1c92207e46ae05d908ad2bf4b3bf9
--- /dev/null
+++ b/prive/listes/syndic.html
@@ -0,0 +1,50 @@
+[(#SET{defaut_tri,#ARRAY{
+	date,#ENV{date_sens,-1},
+	nom_site,1,
+	id_syndic,1
+}})
+]<B_liste_sites>
+#ANCRE_PAGINATION
+<div class="liste-objets sites">
+<table class='spip liste'>
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_site,info_nb_sites}})</strong></caption>]
+	<thead>
+		<tr class='first_row'>
+			<th class='statut'>[(#TRI{statut,<span title="<:afficher_objets:info_statut|attribut_html:>">#</span>,ajax})]</th>
+			<th class='nom_site'>[(#TRI{nom_site,<:form_prop_nom_site:>,ajax})]</th>
+			<th class='syndication'><:info_syndication:></th>
+			<th class='date'>[(#TRI{date,<:date:>,ajax})]</th>
+			<th class='id'>[(#TRI{id_syndic,<:info_numero_abbreviation:>,ajax})]</th>
+		</tr>
+	</thead>
+	<tbody>
+	<BOUCLE_liste_sites(SYNDIC){id_syndic?}{id_mot?}{id_rubrique?}{where?}{statut?}{syndication?}{tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
+			<td class='statut'>[(#ID_SYNDIC|puce_changement_statut{#STATUT,#ID_RUBRIQUE,site})]</td>
+			<td class='nom_site principale'>[(#LOGO_SITE|image_reduire{26,20})]
+				<a href="[(#ID_SYNDIC|generer_url_entite{site})]">#NOM_SITE</a> [<span class='visiter'>&#91;<a href='(#URL_SITE)'><:lien_visite_site:></a>&#93;</span>]
+			</td>
+			<td class='syndication'>[(#SYNDICATION|match{off|sus}|oui)
+				<span class="etat #SYNDICATION">[(#CHEMIN{puce-orange-anim.gif}|balise_img|inserer_attribut{alt,<:info_panne_site_syndique:>})<:info_probleme_grave:>]</span>
+			]<BOUCLE_articlesyndic(SYNDIC_ARTICLES){id_syndic}{statut==.*}{tout} />[
+				(#SYNDICATION|match{oui|off|sus}|oui)
+				[(#TOTAL_BOUCLE)] <:info_syndication_articles:>
+			]<//B_articlesyndic>
+			</td>
+			<td class='date secondaire'>[
+				(#STATUT|=={prop}|non) [(#DATE|affdate_jourcourt)]][
+				(#STATUT|=={prop}|oui) <:info_a_valider:>
+			]</td>
+			<td class='id'>[(#AUTORISER{modifier,site,#ID_SYNDIC}|?{
+				<a href="[(#URL_ECRIRE{sites_edit,id_syndic=#ID_SYNDIC})]">#ID_SYNDIC</a>,
+				#ID_SYNDIC
+			})]</td>
+		</tr>
+	</BOUCLE_liste_sites>
+	</tbody>
+</table>
+[<p class='pagination'>(#PAGINATION{prive})</p>]
+</div>
+</B_liste_sites>[
+<div class="liste-objets sites"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_sites>
diff --git a/prive/listes/syndic_articles.html b/prive/listes/syndic_articles.html
new file mode 100644
index 0000000000000000000000000000000000000000..a060587fd84fa3ad377b628d42d97569fc53a2bc
--- /dev/null
+++ b/prive/listes/syndic_articles.html
@@ -0,0 +1,57 @@
+[(#SET{defaut_tri,#ARRAY{
+	date,#ENV{date_sens,-1},
+	titre,1,
+	id_article,1
+}})
+]<B_liste_syndicart>
+#ANCRE_PAGINATION
+<div class="liste-objets syndic_articles">
+<table class='spip liste'>
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_article_syndique,info_nb_articles_syndiques}})</strong></caption>]
+	<thead>
+		<tr class='first_row'>
+			<th class='statut'>[(#TRI{statut,<span title="<:afficher_objets:info_statut|attribut_html:>">#</span>,ajax})]</th>
+			<th class='titre'>[(#TRI{titre,<:info_titre:>,ajax})]</th>
+			[(#ENV{id_syndic,''}|non)
+			<th class='site'>site</th>
+			]
+			<th class='date'>[(#TRI{date,<:date:>,ajax})]</th>
+			<th class='action'></th>
+		</tr>
+	</thead>
+	<tbody>
+	<BOUCLE_liste_syndicart(SYNDIC_ARTICLES){id_syndic_article?}{id_syndic?}{where?}{statut?}{tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
+			<td class='statut'>[(#ID_SYNDIC_ARTICLE|puce_changement_statut{#STATUT,#ID_SYNDIC,syndic_article})]</td>
+			<td class='titre principale'>[<a
+					href="(#URL_ARTICLE)">#SET{a,'</a>'}]#TITRE[(#GET{a})]
+				<span class="auteurs">([(#LESAUTEURS), ][(#DATE|affdate_court)])</span>
+				[(#TAGS|afficher_enclosures)]
+				[<span class="tags"><em>(#TAGS|afficher_tags)</em></span>]
+				[<span class="source">[<a href="(#URL_SOURCE)">#SET{b,'</a>'}](#SOURCE|sinon{#URL_SOURCE})#GET{b}</span>]
+			</td>
+			[(#ENV{id_syndic,''}|non)
+			<td class='site'><a href="[(#ID_SYNDIC|generer_url_entite{site})]">#INFO_TITRE{syndic,#ID_SYNDIC}</a></td>
+			]
+			<td class='date secondaire'>[(#DATE|affdate_jourcourt)]</td>
+			<td class='action'>[(#AUTORISER{modifier,syndic_article,#ID_SYNDIC_ARTICLE}|oui)
+				#SET{valider,' '}
+				[(#STATUT|=={publie}|oui)[(#BOUTON_ACTION{<:info_bloquer_lien:>,#URL_ACTION_AUTEUR{instituer_syndic,#ID_SYNDIC_ARTICLE-refuse,#SELF},ajax})]
+				#SET{valider,''}][
+				(#STATUT|=={refuse}|oui)[(#BOUTON_ACTION{<:info_retablir_lien:>,#URL_ACTION_AUTEUR{instituer_syndic,#ID_SYNDIC_ARTICLE-publie,#SELF},ajax})]
+				#SET{valider,''}][
+				(#STATUT|=={off}|et{#ID_SYNDIC_ARTICLE|test_syndic_article_miroir}|oui)
+				<:syndic_lien_obsolete:>
+				#SET{valider,''}][(#GET{valider}|oui)
+					[(#BOUTON_ACTION{<:info_retablir_lien:>,#URL_ACTION_AUTEUR{instituer_syndic,#ID_SYNDIC_ARTICLE-publie,#SELF},ajax})]
+				]
+			]</td>
+		</tr>
+	</BOUCLE_liste_syndicart>
+	</tbody>
+</table>
+[<p class='pagination'>(#PAGINATION{prive})</p>]
+</div>
+</B_liste_syndicart>[
+<div class="liste-objets syndic_articles"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_syndicart>
diff --git a/prive/listes/syndic_articles_fonctions.php b/prive/listes/syndic_articles_fonctions.php
new file mode 100644
index 0000000000000000000000000000000000000000..d6a0f4cd3e7ff7f6472cd402febb192aee83dc0a
--- /dev/null
+++ b/prive/listes/syndic_articles_fonctions.php
@@ -0,0 +1,27 @@
+<?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.   *
+\***************************************************************************/
+
+
+/**
+ * Un test sur les articles syndiques
+ * pour "depublier les items qui ne figurent plsu dans le flux"
+ * @global <type> $my_sites
+ * @param <type> $id
+ * @return <type>
+ */
+function filtre_test_syndic_article_miroir_dist($id){
+	if (isset($GLOBALS['my_sites'][$id]['miroir']) AND $GLOBALS['my_sites'][$id]['miroir'] == 'oui')
+		return ' ';
+	return '';
+}
+
+?>
\ No newline at end of file
diff --git a/prive/listes/visiteurs.html b/prive/listes/visiteurs.html
new file mode 100644
index 0000000000000000000000000000000000000000..1ea92b3195f8b9cb62ec23c288cf8b278b11cfcd
--- /dev/null
+++ b/prive/listes/visiteurs.html
@@ -0,0 +1,48 @@
+[(#SET{defaut_tri,#ARRAY{
+	statut,1,
+	multi nom,1,
+	site,1
+}})
+]<B_liste_aut>
+#SET{afficher_lettres,#TRI|=={'multi nom'}|oui}
+#SET{debut,#ENV{debutaut,#EVAL{_request("debutaut");}}}
+#ANCRE_PAGINATION
+[<h3><:info_resultat_recherche:> &laquo;(#ENV{recherche})&raquo;</h3>]
+<div class="liste-objets visiteurs">
+<table class='spip liste'>
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_visiteur,info_nb_visiteurs}})</strong></caption>]
+	<thead>
+
+		<B_lettre><tr><td colspan="5"><p class='pagination'><BOUCLE_lettre(AUTEURS){tout}{id_auteur?}{where?}{statut?}{recherche?}{par multi nom}{id_auteur==#GET{afficher_lettres}|?{'.*','A'}}>[
+		(#NOM**|extraire_multi|initiale|unique|oui)
+		[(#SELF|parametre_url{debutaut,@#ID_AUTEUR}|ancre_url{paginationaut}|afficher_initiale{[(#NOM**|extraire_multi|initiale)],#COMPTEUR_BOUCLE,#GET{debut},#ENV{nb,10}})]
+		]#SAUTER{#ENV{nb,10}|moins{#COMPTEUR_BOUCLE|=={1}|?{2,1}}}</BOUCLE_lettre>[
+		(#REM|afficher_initiale{#REM,#TOTAL_BOUCLE,#GET{debut},#ENV{nb,10}})
+		]</p></td></tr></B_lettre>
+	
+		[<tr><td colspan="5"><p class='pagination'>(#PAGINATION{prive})</p></td></tr>]
+		<tr class='first_row'>
+			<th class='statut'>[(#TRI{statut,#CHEMIN{images/admin-12.gif}|balise_img{<:afficher_objets:info_statut|attribut_html:>},ajax})]</th>
+			<th class='email'></th>
+			<th class='nom'>[(#TRI{multi nom,<:info_nom:>,ajax})]</th>
+			<th class='site'>[(#TRI{url_site,<:info_site:>,ajax})]</th>
+			<th class='contributions'><:info_contributions:></th>
+		</tr>
+	</thead>
+	<tbody>
+	<BOUCLE_liste_aut(AUTEURS){tout}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{pagination #ENV{nb,10} aut}{!compteur_articles_filtres #ENV{filtre_statut_articles,poubelle}}>
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#NOM**|extraire_multi|initiale|=={#ENV{i}}|?{on}|unique)]">
+			<td class='statut'>[(#ID_AUTEUR|puce_changement_statut{#STATUT,0,auteur})]</td>
+			<td class="mail">[<a href="(#ID_AUTEUR|auteur_lien_messagerie{#EN_LIGNE,#STATUT,#IMESSAGE,#EMAIL})">[(#CHEMIN{images/m_envoi.gif}|balise_img{<:info_envoyer_message_prive:>})]</a>]</td>
+			<td class='nom[ (#NOM|non)vide]'>[(#LOGO_AUTEUR|image_reduire{20,26})]<a href="[(#ID_AUTEUR|generer_url_entite{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[(#RANG). ][(#NOM|sinon{<:texte_vide:>})]</a></td>
+			<td class='site'>[<a href='(#URL_SITE|traiter_lien_explicite)'>[(#NOM_SITE|sinon{#URL_SITE|traiter_lien_explicite|couper{30}})]</a>]</td>
+			<td class='contributions'>[(#PIPELINE{'compter_contributions_auteur',#ARRAY{args,#ARRAY{id_auteur,#ID_AUTEUR},'data',#ARRAY{}}}|implode{'<br />'})]</td>
+		</tr>
+	</BOUCLE_liste_aut>
+	</tbody>
+</table>
+[<p class='pagination'>(#PAGINATION{prive})</p>]
+</div>
+</B_liste_aut>[<h3>[(#VAL{info_recherche_auteur_zero}|_T{#ARRAY{cherche_auteur,#ENV{recherche}}})]</h3>(#ENV{recherche}|oui)][
+<div class="liste-objets auteurs"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_liste_aut>
diff --git a/prive/listes/visiteurs_fonctions.php b/prive/listes/visiteurs_fonctions.php
new file mode 100644
index 0000000000000000000000000000000000000000..e78625f5d395ca436551f783f0cace5a05cd47dd
--- /dev/null
+++ b/prive/listes/visiteurs_fonctions.php
@@ -0,0 +1,15 @@
+<?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.   *
+\***************************************************************************/
+
+include_spip('prive/listes/auteurs_fonctions');
+
+?>
\ No newline at end of file
diff --git a/prive/navigation.xml b/prive/navigation.xml
index 0e55874c205188bd4814c22ca24806f4d355f947..c90714ad00c1d1acfe4da17a9022859511e591eb 100644
--- a/prive/navigation.xml
+++ b/prive/navigation.xml
@@ -65,8 +65,7 @@
 	<bouton id='visiteurs' parent="bando_activite">
 		<icone>images/auteur-6forum-16.png</icone>
 		<titre>icone_afficher_visiteurs</titre>
-		<url>auteurs</url>
-		<args>statut=!1comite,0minirezo,nouveau</args>
+		<url>visiteurs</url>
 	</bouton>
 	
 	<bouton id="bando_squelette">
diff --git a/prive/style_prive.html b/prive/style_prive.html
index e32d988b7907ba13fa7aab6477f5c0ea33ef9dac..4805a05476924bf6105c72a34cc1837ae6caefa0 100644
--- a/prive/style_prive.html
+++ b/prive/style_prive.html
@@ -9,7 +9,6 @@
 
 	ATTENTION: il faut absolument le charset sinon Firefox croit que
 	c'est du text/html !
-	<style>
 ]
 #CACHE{3600*100,cache-client}
 #HTTP_HEADER{Content-Type: text/css; charset=iso-8859-15}
@@ -289,7 +288,7 @@ a.cellule-h-texte:hover { text-decoration: none; color: #000; border-#GET{right}
 
 
 /* * Style des icones */
-
+/*
 .fondgris { cursor: pointer; padding: 4px; margin: 1px; }
 .fondgrison { cursor: pointer; padding: 3px; margin: 1px; border: 1px dashed #999; background-color: #e4e4e4; }
 .fondgrison2 { cursor: pointer; padding: 3px; margin: 1px; border: 1px dashed #999; background-color: #fff; }
@@ -297,6 +296,7 @@ a.cellule-h-texte:hover { text-decoration: none; color: #000; border-#GET{right}
 .bouton36blanc { padding: 6px; margin-top: 2px; border: 1px solid #999; background-color: #fff; }
 .bouton36rouge { padding: 6px; margin-top: 2px; border: 1px solid red; background-color: #fff; }
 .bouton36off { padding: 6px; margin-top: 2px; width: 24px; height: 24px; }
+*/
 
 div.onglet { font-family: Verdana, Arial, Sans, sans-serif; font-size: 11px; font-weight: bold; border: 1px solid #GET{foncee}; margin-#GET{right}: 3px; padding: 5px; background-color: #fff; }
 div.onglet a { color: #GET{foncee}; }
@@ -333,8 +333,8 @@ div.onglet_off { font-family: Verdana, Arial, Sans, sans-serif; font-size: 11px;
 
 
 /* Liens hypertexte */
-a { text-decoration: none; color: #GET{foncee}; }
-a:hover { text-decoration: none; }
+a { text-decoration: none; color: [#(#GET{foncee}|couleur_foncer{0.25})]; }
+a:hover { text-decoration: underline; }
 a.icone { text-decoration: none; }
 a.icone:hover { text-decoration: none; }
 
@@ -391,64 +391,6 @@ td.icone a img { border: 0; }
 .cadre-alerte { border: 6px solid red; }
 
 
-/* * Styles pour "Tout le site" */
-
-.plan-rubrique { margin-#GET{left}: 12px; padding-#GET{left}: 10px; border-#GET{left}: 1px dotted #888; }
-.plan-secteur { margin-#GET{left}: 12px; padding-#GET{left}: 10px; border-#GET{left}: 1px dotted #404040; }
- 
-.plan-articles, .plan-articles-bloques { border-top: 1px solid #ccc; border-#GET{left}: 1px solid #ccc; border-#GET{right}: 1px solid #ccc; }
-.plan-articles a, .plan-articles-bloques .publie, .plan-articles-bloques .prepa, .plan-articles-bloques .prop, .plan-articles-bloques .refuse, .plan-articles-bloques .poubelle { display: block; padding: 2px; padding-#GET{left}: 18px; border-bottom: 1px solid #ccc; background: [(#ENV{ltr}|choixsiegal{left,1,99})%] no-repeat; background-color: #eee; font-size: 11px; text-decoration: none; }
-.plan-articles a:hover { background-color: #fff; text-decoration: none; }
-.plan-articles .publie, .plan-articles-bloques .publie { background-image: url(#CHEMIN_IMAGE{puce-verte.gif}); }
-.plan-articles .prepa, .plan-articles-bloques .prepa { background-image: url(#CHEMIN_IMAGE{puce-blanche.gif}); }
-.plan-articles .prop, .plan-articles-bloques .prop { background-image: url(#CHEMIN_IMAGE{puce-orange.gif}); }
-.plan-articles .refuse, .plan-articles-bloques .refuse { background-image: url(#CHEMIN_IMAGE{puce-rouge.gif}); }
-.plan-articles .poubelle, .plan-articles-bloques .poubelle { background-image: url(#CHEMIN_IMAGE{puce-poubelle.gif}); }
-
-a.foncee, a.foncee:hover, a.claire, a.claire:hover, span.creer, span.lang_base { display: inline; float: none; padding: 2px; margin: 0; margin-#GET{left}: 1px; margin-#GET{right}: 1px; border: 0; font-family: Arial, Helvetica, Sans, sans-serif; font-size: 9px; text-decoration: none; z-index: 1; }
-a.foncee, a.foncee:hover { background-color: #GET{foncee}; color: #fff; border: 1px solid #GET{foncee}; }
-a.claire, a.claire:hover { background-color: #GET{claire}; color: #GET{foncee}; border: 1px solid #GET{foncee}; }
-span.lang_base { color: #666; border: 1px solid #666; background-color: #eee; }
-span.creer { color: #333; border: 1px solid #333; background-color: #fff; }
-.trad_float { float: #GET{right}; z-index: 20; margin-top: 4px; }
-
-div.liste,div.cadre-liste { border: 1px solid #ccc; background:white; }
-div.cadre div.cadre-liste { margin-top: 3px; margin-bottom: 3px; }
-div.cadre-couleur-foncee div.cadre-liste { margin-top: 10px; margin-bottom: 3px; }
-div.cadre-liste .cadre_padding {padding: 0; }
-div.cadre-liste .padding_x .bloc_depliable {padding: 0; }
-div.cadre-liste .tranches{ position: relative;border-top: 1px solid #ccc; background-color: #ddd; border-bottom: 1px solid #ccc; padding: 2px;padding-#GET{right}:25px; }
-div.cadre-liste .tranches a.plus {position: absolute; top: 3px; #GET{right}:10px;}
-	
-.tout-site #page ul#articles_tous,.tout-site ul#articles_tous ul { list-style: none; }
-.tout-site #page ul { margin-#GET{left}: 10px; padding-#GET{left}: 12px; border-#GET{left}: 1px dotted #888; }
-.tout-site #page ul,.tout-site #page li { clear: both; }
-li.sec, li.rub { display: inline; }
-ul>li.sec,ul>li.rub { display: block; }
-li.sec a.titre,  li.rub a.titre { display: block; height: 20px; margin: 0; margin-bottom: 5px; padding: 0; padding-top: 4px; padding-#GET{left}: 5px; font-weight: bold; }
-li.art { display: block; height:24px; }
-li.sec a.titre { background-color: #GET{claire}; }
-li.rub a.titre { background-color: transparent; }
-li.art a.titre { display: inline; background-color: transparent; font-weight: normal; padding-#GET{left}: 5px; padding-top: 4px; height: 20px; }
-span.icone { float: #GET{left}; position: relative; display: block; width: 28px; height: 24px; margin-#GET{left}: -14px; }
-li.art span.icone { margin-#GET{left}: 0; }
-
-span.holder {}
-li.sec span.icone { background: url(#CHEMIN_IMAGE{secteur-24.gif}) [(#GET{left})] bottom no-repeat; }
-li.rub span.icone { background: url(#CHEMIN_IMAGE{rubrique-24.gif}) [(#GET{left})] top no-repeat; }
-li.art span.icone { background: url(#CHEMIN_IMAGE{article-24.gif}) [(#GET{left})] top no-repeat; }
-li.sec ul{ display: none; }
-li.rub ul{ display: none; }
-
-li img.expandImage { display: block; float: #GET{left}; position: relative; #GET{left}: -20px; width: 16px; height: 16px; }
-li.selected { background-color: #GET{claire}}
-
-.tr_liste { background-color: #eee; }
-.tr_liste_over, .tr_liste:hover { background-color: #fff; }
-.tr_liste td, .tr_liste:hover td, .tr_liste_over td { border-bottom: 1px solid #ddd; }
-tbody>.tr_liste:last-child td { border-bottom: 0px; }
-.tr_liste td div.liste_clip { height: 12px; overflow: hidden; }
-.tr_liste:hover td div.liste_clip, span.liste_clip { overflow: visible; height: 100%; }
 
 img.puce { width: 7px; height: 7px; border: 0; }
 img.lang { width: 12px; height: 12px; border: 0; }
@@ -550,9 +492,6 @@ h3.titrem {position:relative;}
 
 
 
-.cadre-liste .titrem { background-color: #fff; color: #444; }
-.cadre-liste .titrem.hover { background-color: #GET{claire}}
-.cadre-liste .tr_liste .titrem { background-color:#eee; }
 .cadre-couleur .titrem { background-color: #fff; }
 
 .joindre .titrem, #navigation .joindre .titrem { background-color: #GET{claire}; }
@@ -586,6 +525,68 @@ td.message, a.message { background: url([(#CHEMIN_IMAGE{m_envoi[(#GET{rtl})].gif
 .enfants ul { list-style: none; }
 .enfants ul li.rubrique_12 {background:url(#CHEMIN_IMAGE{rubrique-12.gif})[ (#GET{left})] center no-repeat; padding: 2px; padding-#GET{left}: 18px; margin-#GET{left}: 6px;position:relative;}
 
+/* Listes d'objet */
+.liste-objets{
+	margin:1em 0;
+	font-size:.85em;
+	border: 1px solid #dfdfdf;
+}
+.cadre .liste-objets{font-size:1em;}
+
+.liste-objets .pagination {
+	margin-top:0; padding:1px 5px;
+	background:#eee; border:none;
+}
+.liste-objets .pagination .separateur {color:#aaa;}
+
+.liste-objets table.spip {width:100%; /* surcharger le 99% de spip ? */ max-width:none; background:white; border:none; margin-bottom:0;}
+.liste-objets table.spip caption {margin:0;text-align:left;}
+.liste-objets .caption {display:block;color:#333;font-size:1.1em;padding:7px 6px 6px 30px;background:none no-repeat scroll 2px 2px #FFFFFF}
+.liste-objets table.spip tr {background:white;}
+.liste-objets table.spip tr.row_odd {background:white;}
+.liste-objets table.spip tr.row_even {background:white;}
+.liste-objets table.spip thead tr {background:#eee;}
+.liste-objets table.spip tbody tr:hover {background-color: #f8f8f8;}
+.liste-objets table.spip tr th {border-color:#dfdfdf; border-left:0; border-right:0;}
+.liste-objets table.spip tr td {border-color:#dfdfdf; border-left:0; border-right:0;}
+
+.liste-objets tr > .statut,.liste-objets tr > .icone {width: 16px; padding-left:2px;padding-right:2px;text-align:center;}
+.liste-objets tr > .auteur {width: 80px;}
+.liste-objets tr > .date {width: 90px;}
+.liste-objets tr > .id {width: 40px; text-align:#GET{right};}
+.liste-objets tr > .action {width: 90px; text-align:#GET{right};}
+.liste-objets tr td .spip_logos {float:#GET{right};}
+.liste-objets tr td.syndication .etat {display:block;color:red;}
+
+.liste-objets tr td {font-size:0.9em;}
+.liste-objets tr td.secondaire {font-size:0.85em;}
+.liste-objets tr td.principale {font-size:1.025em;}
+.liste-objets tr td > span {font-size:0.85em;}
+.liste-objets .bouton_action_post .submit {font-size:1em;}
+
+.liste-objets.syndic_articles tr > .action {width: 50px;}
+.liste-objets.syndic_articles td .tags,
+.liste-objets.syndic_articles td .source {display:block;text-align:#GET{right};}
+.liste-objets.syndic_articles td .tags a {color:#666;}
+
+.liste-objets.mots .caption {background-image:url(#CHEMIN_IMAGE{mot-cle-24.gif});}
+.liste-objets.rubriques .caption {background-image:url(#CHEMIN_IMAGE{rubrique-24.gif});}
+.liste-objets.articles .caption {background-image:url(#CHEMIN_IMAGE{article-24.gif});}
+.liste-objets.breves .caption {background-image:url(#CHEMIN_IMAGE{breve-24.gif});}
+.liste-objets.sites .caption {background-image:url(#CHEMIN_IMAGE{site-24.gif});}
+.liste-objets.syndic_articles .caption {background-image:url(#CHEMIN_IMAGE{site-24.gif});}
+
+/* dans une colonne laterale, ne visualiser que l'info principale, le statut et l'id */
+#navigation .liste-objets tr > .secondaire,
+#navigation .liste-objets tr > .auteur,
+#navigation .liste-objets tr > .date,
+#navigation .liste-objets tr > .action,
+#navigation .liste-objets tr > .syndication,
+#navigation .liste-objets tr .spip_logos
+{display:none;}
+#navigation .liste-objets tr td.principale {font-size:0.9em;max-width:120px;}
+
+
 /* * ***************************************************/
 /* directives specifiques a une page */
 /* exec=admin_tech */
diff --git a/prive/style_vieilles_def.html b/prive/style_vieilles_def.html
index 3c341423e48701b65e89a2f9f26eeaba6ef9d2fa..a23af923760bfc3a00f20b0acb8fb087590e22ce 100644
--- a/prive/style_vieilles_def.html
+++ b/prive/style_vieilles_def.html
@@ -178,11 +178,12 @@ a.icone:hover { text-decoration: none; }
 
 
 /* * Styles pour "Tout le site" */
+
 .plan-rubrique { margin-#GET{left}: 12px; padding-#GET{left}: 10px; border-#GET{left}: 1px dotted #888; }
 .plan-secteur { margin-#GET{left}: 12px; padding-#GET{left}: 10px; border-#GET{left}: 1px dotted #404040; }
 
 .plan-articles, .plan-articles-bloques { border-top: 1px solid #ccc; border-#GET{left}: 1px solid #ccc; border-#GET{right}: 1px solid #ccc; }
-.plan-articles a, .plan-articles-bloques .publie, .plan-articles-bloques .prepa, .plan-articles-bloques .prop, .plan-articles-bloques .refuse, .plan-articles-bloques .poubelle { display: block; padding: 2px; padding-#GET{left}: 18px; border-bottom: 1px solid #ccc; background: [(#ENV{ltr}|choixsiegal{left,1,99})%] no-repeat; background-color: #e0e0e0; font-size: 11px; text-decoration: none; }
+.plan-articles a, .plan-articles-bloques .publie, .plan-articles-bloques .prepa, .plan-articles-bloques .prop, .plan-articles-bloques .refuse, .plan-articles-bloques .poubelle { display: block; padding: 2px; padding-#GET{left}: 18px; border-bottom: 1px solid #ccc; background: [(#ENV{ltr}|choixsiegal{left,1,99})%] no-repeat; background-color: #eee; font-size: 11px; text-decoration: none; }
 .plan-articles a:hover { background-color: #fff; text-decoration: none; }
 .plan-articles .publie, .plan-articles-bloques .publie { background-image: url(#CHEMIN_IMAGE{puce-verte.gif}); }
 .plan-articles .prepa, .plan-articles-bloques .prepa { background-image: url(#CHEMIN_IMAGE{puce-blanche.gif}); }
@@ -197,17 +198,14 @@ span.lang_base { color: #666; border: 1px solid #666; background-color: #eee; }
 span.creer { color: #333; border: 1px solid #333; background-color: #fff; }
 .trad_float { float: #GET{right}; z-index: 20; margin-top: 4px; }
 
-div.liste,div.cadre-liste { border: 1px solid #aaa; background:white; }
+div.liste,div.cadre-liste { border: 1px solid #ccc; background:white; }
+div.cadre div.cadre-liste { margin-top: 3px; margin-bottom: 3px; }
+div.cadre-couleur-foncee div.cadre-liste { margin-top: 10px; margin-bottom: 3px; }
 div.cadre-liste .cadre_padding {padding: 0; }
 div.cadre-liste .padding_x .bloc_depliable {padding: 0; }
-div.cadre-liste .tranches{ position: relative;border-top: 1px solid #000; background-color: #ddd; border-bottom: 1px solid #444; padding: 2px;padding-#GET{right}:25px; }
+div.cadre-liste .tranches{ position: relative;border-top: 1px solid #ccc; background-color: #ddd; border-bottom: 1px solid #ccc; padding: 2px;padding-#GET{right}:25px; }
 div.cadre-liste .tranches a.plus {position: absolute; top: 3px; #GET{right}:10px;}
 
-.cadre-meme-rubriques { background: #eee; border: 1px solid #aaa; }
-.cadre-meme-rubriques .cadre_padding.padding_x { padding: 0; }
-.cadre-meme-rubriques .padding_x .bloc_depliable { padding: 0; }
-
-
 .tout-site #page ul#articles_tous,.tout-site ul#articles_tous ul { list-style: none; }
 .tout-site #page ul { margin-#GET{left}: 10px; padding-#GET{left}: 12px; border-#GET{left}: 1px dotted #888; }
 .tout-site #page ul,.tout-site #page li { clear: both; }
@@ -237,3 +235,14 @@ a.triangle_block:hover { filter: alpha(opacity=100); -moz-opacity: 1; opacity: 1
 
 /*.swap-couche { border: 0; height: 10px; width: 10px; }*/
 
+/* anciennes listes d'objet */
+.tr_liste { background-color: #eee; }
+.tr_liste_over, .tr_liste:hover { background-color: #fff; }
+.tr_liste td, .tr_liste:hover td, .tr_liste_over td { border-bottom: 1px solid #ddd; }
+tbody>.tr_liste:last-child td { border-bottom: 0px; }
+.tr_liste td div.liste_clip { height: 12px; overflow: hidden; }
+.tr_liste:hover td div.liste_clip, span.liste_clip { overflow: visible; height: 100%; }
+
+.cadre-liste .titrem { background-color: #fff; color: #444; }
+.cadre-liste .titrem.hover { background-color: #GET{claire}}
+.cadre-liste .tr_liste .titrem { background-color:#eee; }