diff --git a/.gitattributes b/.gitattributes
index ddd8631cb4864c860276c4bf2388d3f436a5c5e8..4f80a59141307e47f76a82e91cdc6590145f7735 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -139,6 +139,7 @@ prive/squelettes/inclure/document_infos.html -text
 prive/squelettes/inclure/mediatheque-choisir.html -text
 prive/squelettes/inclure/mediatheque-galerie.html -text
 prive/squelettes/inclure/mediatheque-navigation.html -text
+prive/squelettes/inclure/mediatheque-navigation_fonctions.php -text
 prive/squelettes/inclure/portfolio-documents.html -text
 prive/squelettes/navigation/document_edit.html -text
 prive/squelettes/top/documents.html -text
diff --git a/action/ajouter_documents.php b/action/ajouter_documents.php
index 066d26665902e638080fa2e4a2c933a6f2447916..b3428c499f9ac12bf3553e9a67c0297c94efc4e9 100644
--- a/action/ajouter_documents.php
+++ b/action/ajouter_documents.php
@@ -161,6 +161,11 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
 		unset($champs['inclus']);
 		$champs['fichier'] = set_spip_doc($champs['fichier']);
 	}
+
+	// si le media est pas renseigne, le faire, en fonction de l'extension
+	if (!isset($champs['media'])){
+		$champs['media'] = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($champs['extension']));
+	}
 	
 	// lier le parent si necessaire
 	if ($id_objet=intval($id_objet) AND $objet)
@@ -256,11 +261,11 @@ function verifier_upload_autorise($source, $mode=''){
 	  AND $ext = $match[1]){
 		
 	  $ext = corriger_extension(strtolower($ext));
-		if ($res = sql_fetsel("extension,inclus,media", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'"))
+		if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'"))
 			$infos = array_merge($infos,$res);
 	}
 	if (!$res){
-		if ($res = sql_fetsel("extension,inclus,media", "spip_types_documents", "extension='zip' AND upload='oui'")){
+		if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension='zip' AND upload='oui'")){
 			$infos = array_merge($infos,$res);
 			$res['autozip'] = true;
 		}
diff --git a/action/editer_document.php b/action/editer_document.php
index 2ccb2e358ae46b10e36b144cf9cf24aa6e8a8ada..4df438698eed966b33f0b35922c4309d9a3fa751 100644
--- a/action/editer_document.php
+++ b/action/editer_document.php
@@ -90,7 +90,7 @@ function document_modifier($id_document, $set=false) {
 		// white list
 		array(
 		 'titre', 'descriptif', 'date', 'taille', 'largeur','hauteur','mode','credits',
-		 'fichier','distant','extension', 'id_vignette',
+		 'fichier','distant','extension', 'id_vignette', 'media',
 		),
 		// black list
 		array('parents', 'ajout_parents'),
diff --git a/action/supprimer_tous_orphelins.php b/action/supprimer_tous_orphelins.php
index 6920654a9fc4e41c1e4a8295b8d207abd4874bae..6964bf1f604e2ed8aecd811fd4a7026759224f7c 100644
--- a/action/supprimer_tous_orphelins.php
+++ b/action/supprimer_tous_orphelins.php
@@ -23,10 +23,8 @@ function action_supprimer_tous_orphelins() {
 	list($media,$distant,$statut,$sanstitre) = explode('/',$arg);
 	
 	//critere sur le media
-	if($media) {
-		$select = sql_get_select("extension","spip_types_documents as nnnn","media=".sql_quote($media));
-		$where[] = "spip_documents.extension IN ($select)";
-	}
+	if($media)
+		$select = "media=".sql_quote($media);
 
 	//critere sur le distant
 	if($distant)
diff --git a/base/medias.php b/base/medias.php
index 9fb2281672978a3a9f90334542202e8d187d9138..80eb8b6469572a9eb0ee4155b7f883a56129a9e2 100644
--- a/base/medias.php
+++ b/base/medias.php
@@ -25,7 +25,7 @@ function medias_declarer_tables_interfaces($interfaces) {
 	$interfaces['exceptions_des_tables']['documents']['type_document']=array('types_documents', 'titre');
 	$interfaces['exceptions_des_tables']['documents']['extension_document']=array('types_documents', 'extension');
 	$interfaces['exceptions_des_tables']['documents']['mime_type']=array('types_documents', 'mime_type');
-	$interfaces['exceptions_des_tables']['documents']['media']=array('types_documents', 'media');
+	$interfaces['exceptions_des_tables']['documents']['media_document']=array('types_documents', 'media');
 
 	$interfaces['exceptions_des_jointures']['spip_documents']['id_forum']=array('spip_documents_liens','id_forum');
 	$interfaces['exceptions_des_jointures']['spip_documents']['vu']=array('spip_documents_liens', 'vu');
@@ -52,7 +52,7 @@ function medias_declarer_tables_principales($tables_principales) {
 			"mime_type"	=> "varchar(100) DEFAULT '' NOT NULL",
 			"inclus"	=> "ENUM('non', 'image', 'embed') DEFAULT 'non'  NOT NULL",
 			"upload"	=> "ENUM('oui', 'non') DEFAULT 'oui'  NOT NULL",
-			"media" => "varchar(10) DEFAULT 'file' NOT NULL",
+			"media_defaut" => "varchar(10) DEFAULT 'file' NOT NULL",
 			"maj"	=> "TIMESTAMP");
 
 	$spip_types_documents_key = array(
@@ -131,6 +131,7 @@ function medias_declarer_tables_objets_sql($tables){
 			"taille"	=> "bigint",
 			"largeur"	=> "integer",
 			"hauteur"	=> "integer",
+			"media" => "varchar(10) DEFAULT 'file' NOT NULL",
 			"mode"	=> "varchar(10) DEFAULT 'document' NOT NULL",
 			"distant"	=> "VARCHAR(3) DEFAULT 'non'",
 			"statut" => "varchar(10) DEFAULT '0' NOT NULL",
@@ -221,7 +222,7 @@ function creer_base_types_doc($serveur='') {
 		'titre' => $titre,
 		'inclus' => $inclus,
 		'extension' => $extension,
-		'media' => $media,
+		'media_defaut' => $media,
 		'upload' => 'oui'
 		);
 	}
diff --git a/inc/renseigner_document.php b/inc/renseigner_document.php
index 9b185f8ef1d55f40582180878b573a1497396fab..343afe91d8f8e9a9b89186d535e360cb98342967 100644
--- a/inc/renseigner_document.php
+++ b/inc/renseigner_document.php
@@ -82,7 +82,7 @@ function renseigner_taille_dimension_image($fichier,$ext){
 		$meta = $metadata($fichier);
 	}
   else {
-	  $media = sql_getfetsel('media','spip_types_documents','extension='.sql_quote($ext));
+	  $media = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($ext));
 	  if ($metadata = charger_fonction($media,"metadata",true)){
 		  $meta = $metadata($fichier);
 	  }
diff --git a/medias_administrations.php b/medias_administrations.php
index 4e83216b9c80668d5859ac15ec7abe8224d319d7..36ef49fe40285ce3b988b0c31df4084244e99806 100644
--- a/medias_administrations.php
+++ b/medias_administrations.php
@@ -99,6 +99,19 @@ function medias_upgrade($nom_meta_base_version,$version_cible){
 	$maj['0.16.0'] = array(
 		array('creer_base_types_doc'),
 	);
+
+	$maj['1.0.0'] = array(
+		// on cree le champ en defaut '?' pour reperer les nouveaux a peupler
+		array('sql_alter',"TABLE spip_documents ADD media varchar(10) DEFAULT '?' NOT NULL"),
+		array('medias_peuple_media_document'),
+		// puis on retablit le bon defaut
+		array('sql_alter',"TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"),
+	);
+	$maj['1.0.1'] = array(
+		// puis on retablit le bon defaut
+		array('sql_alter',"TABLE spip_types_documents CHANGE media media_defaut varchar(10) DEFAULT 'file' NOT NULL"),
+	);
+
 	include_spip('base/upgrade');
 	maj_plugin($nom_meta_base_version, $version_cible, $maj);
 
@@ -117,6 +130,16 @@ function medias_maj_meta_documents(){
 	ecrire_meta('documents_objets',implode(',',$config));
 }
 
+function medias_peuple_media_document(){
+	$res = sql_select("DISTINCT extension","spip_documents","media=".sql_quote('?'));
+	while($row = sql_fetch($res)){
+		$media = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($row['extension']));
+		sql_updateq('spip_documents',array('media'=>$media),"media=".sql_quote('?').' AND extension='.sql_quote($row['extension']));
+		if (time() >= _TIME_OUT)
+			return;
+	}
+}
+
 /*
 function medias_install($action,$prefix,$version_cible){
 	$version_base = $GLOBALS[$prefix."_base_version"];
diff --git a/paquet.xml b/paquet.xml
index 78d2adb2077525b7dc53bbfac7df9be910bdc014..3742036bb78da9f20e97282adecde7bbae98d4cc 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,11 +1,11 @@
 <paquet
 	prefix="medias"
 	categorie="multimedia"
-	version="2.6.0"
+	version="2.7.0"
 	etat="test"
 	compatibilite="[3.0.0-alpha2;["
 	logo="prive/themes/spip/images/portfolio-32.png"
-	schema="0.16.0"
+	schema="1.0.1"
 >	
 
 	<nom>Medias</nom>
diff --git a/prive/squelettes/inclure/mediatheque-navigation.html b/prive/squelettes/inclure/mediatheque-navigation.html
index abcbc098065a39566d2a5e53414cef459b436265..7e174e4e36eac5b49c29839ffc57f4dc3faca6bd 100644
--- a/prive/squelettes/inclure/mediatheque-navigation.html
+++ b/prive/squelettes/inclure/mediatheque-navigation.html
@@ -45,11 +45,11 @@
 
 <B_types>
 <ul class='choix-type'>
-<BOUCLE_types(TYPES_DOCUMENTS){media=#ENV{media,''}}>
-<BOUCLE_compte(DOCUMENTS){id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut==.*}{extension} />
-[(#TOTAL_BOUCLE|oui)[<li>(#GET{self}|parametre_url{extension,#EXTENSION}|lien_ou_expose{#TITRE|concat{' (',#TOTAL_BOUCLE,')'},#ENV{extension}|=={#EXTENSION},ajax})<span> | </span></li>]]
-<//B_compte>
-</BOUCLE_types>
+	<BOUCLE_types(TYPES_DOCUMENTS){par titre}{extension IN #ENV{media,''}|liste_extensions_utilisees}>
+	<BOUCLE_compte(DOCUMENTS){id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut==.*}{extension}{media=#ENV{media}} />
+	[(#_compte:TOTAL_BOUCLE|oui)[<li>(#GET{self}|parametre_url{extension,#EXTENSION}|lien_ou_expose{#TITRE|concat{' (',#_compte:TOTAL_BOUCLE,')'},#ENV{extension}|=={#EXTENSION},ajax})<span> | </span></li>]]
+	<//B_compte>
+	</BOUCLE_types>
 </ul>
 </B_types>
 
diff --git a/prive/squelettes/inclure/mediatheque-navigation_fonctions.php b/prive/squelettes/inclure/mediatheque-navigation_fonctions.php
new file mode 100644
index 0000000000000000000000000000000000000000..3429dfff26bee87d42a4ab330155338233e4216b
--- /dev/null
+++ b/prive/squelettes/inclure/mediatheque-navigation_fonctions.php
@@ -0,0 +1,19 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2011                                                *
+ *  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;
+
+
+function liste_extensions_utilisees($media){
+	return $media?array_map('reset',sql_allfetsel('extension','spip_documents','media='.sql_quote($media))):array();
+}
\ No newline at end of file