diff --git a/.gitattributes b/.gitattributes
index e5de9d819146136a617a29f7d394586231af5240..b97ca5dc8c5a6926fcbec5d5dbff8718879cf70e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -316,6 +316,9 @@ prive/themes/spip/images/document-new-16.png -text
 prive/themes/spip/images/document-new-24.png -text
 prive/themes/spip/images/document-new-32.png -text
 prive/themes/spip/images/document-vu-24.png -text
+prive/themes/spip/images/documents-cases-16.png -text
+prive/themes/spip/images/documents-liste-16.png -text
+prive/themes/spip/images/documents-liste-courte-16.png -text
 prive/themes/spip/images/image-16.png -text
 prive/themes/spip/images/image-24.png -text
 prive/themes/spip/images/image-32.png -text
diff --git a/lang/medias_fr.php b/lang/medias_fr.php
index a8f578479e340e93def5c7ed59745f29ed5e36dc..cb057fa400bca0f32ecd5e5c38b3cd652010332a 100644
--- a/lang/medias_fr.php
+++ b/lang/medias_fr.php
@@ -8,6 +8,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
 	// A
+	'affichage_documents_en_grand' => 'Affichage en grand',
+	'affichage_documents_en_cases' => 'Affichage en cases',
+	'affichage_documents_en_liste_compacte' => 'Affichage en liste compacte',
 	'aucun_audio' => 'Aucune bande-son',
 	'aucun_document' => 'Aucun document',
 	'aucun_file' => 'Aucun document',
diff --git a/paquet.xml b/paquet.xml
index 43fb9b6046992941c89213c90344cd54bdf04f03..d745fbf8e0e70d0458e62fa90cd126cbdf9682fd 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,7 +1,7 @@
 <paquet
 	prefix="medias"
 	categorie="multimedia"
-	version="2.14.4"
+	version="2.15.0"
 	etat="stable"
 	compatibilite="[3.2.0-dev;]"
 	logo="prive/themes/spip/images/portfolio-32.png"
diff --git a/prive/squelettes/inclure/portfolio-documents.html b/prive/squelettes/inclure/portfolio-documents.html
index 2a517595a823d4ed21e7e6059ea0763d9cd1fdf9..30198d1873b04664c9da8d9cf2a88c55024be04d 100644
--- a/prive/squelettes/inclure/portfolio-documents.html
+++ b/prive/squelettes/inclure/portfolio-documents.html
@@ -56,6 +56,7 @@ var multifile='[(#CHEMIN{javascript/jquery.multifile.js}|texte_script)]';
 [(#INCLURE{javascript/medias_edit.js}|compacte{js})]
 [(#OBJET|=={rubrique}|et{#EVAL{_AJAX}}|et{#GET{nbdocs}|=={1}}|oui)
 if (window.jQuery) jQuery('#navigation .box.info').ajaxReload();]
+
 function check_reload_page(){
 	var reload = false;
 	if($('#illustrations[(#ENV{id_unique})]').length && !$('#illustrations[(#ENV{id_unique})] .item').length){
@@ -72,6 +73,72 @@ function check_reload_page(){
 		jQuery('#navigation .box.info').ajaxReload();
 	}
 }
-if (window.jQuery) jQuery(function(){onAjaxLoad(check_reload_page);});
+
+if (window.jQuery) {
+	jQuery(function(){onAjaxLoad(check_reload_page);});
+	jQuery(function($) {
+		/** Choix des différents affichages des documents (grand, en case, en liste courte) */
+		var affichages = function () {
+			$('#portfolios h3:not(:has(.affichages))').each(function () {
+				var titre = $(this);
+				var liste = titre.next('.liste_items.documents');
+
+				var identifiant = liste.attr('id');
+				if ($.inArray(identifiant, ['illustrations', 'portfolio', 'documents']) < 0) {
+					identifiant = null;
+				}
+
+				titre.append(
+					"<div class='affichages'>"
+					+ "<span class='icone grand on' title='<:medias:affichage_documents_en_grand|attribut_html:>'></span>"
+					+ "<span class='icone cases' title='<:medias:affichage_documents_en_cases|attribut_html:>'></span>"
+					+ "<span class='icone liste' title='<:medias:affichage_documents_en_liste_compacte|attribut_html:>'></span>"
+					+ "</div>"
+				);
+
+				var changer_affichage_documents = function (me, bouton, classe) {
+					$(me).parent().find('.icone').removeClass('on').end().end().addClass('on');
+					var liste = $(me).parents('h3').next('.liste_items.documents');
+					liste.removeClass('documents_cases').removeClass('documents_liste');
+					if (classe) {
+						liste.addClass(classe);
+					}
+					if (identifiant) {
+						Cookies.set('affichage-' + identifiant, bouton);
+					}
+
+					liste.trigger('affichage.documents.change', {
+						'liste': liste,
+						'icone': me,
+						'bouton': bouton,
+						'classe': classe
+					});
+
+				};
+
+				titre.find('.affichages > .grand').click(function () {
+					changer_affichage_documents(this, 'grand', null);
+				});
+
+				titre.find('.affichages > .cases').click(function () {
+					changer_affichage_documents(this, 'cases', 'documents_cases');
+				});
+
+				titre.find('.affichages > .liste').click(function () {
+					changer_affichage_documents(this, 'liste', 'documents_liste');
+				});
+
+				if (identifiant) {
+					var defaut = Cookies.get('affichage-' + identifiant);
+					if (defaut) {
+						titre.find('.affichages > .' + defaut).trigger('click');
+					}
+				}
+			});
+		}
+		affichages();
+		onAjaxLoad(affichages);
+	});
+}
 /*]]>*/</script>
 </div>
diff --git a/prive/style_prive_plugin_medias.html b/prive/style_prive_plugin_medias.html
index 52579e8e44f74eb788727896f9bbd1eeb282b69c..e4fb4ccf5a9d278bae07fbd588bb21be362190d0 100644
--- a/prive/style_prive_plugin_medias.html
+++ b/prive/style_prive_plugin_medias.html
@@ -183,3 +183,148 @@ p.actions {clear:both;}
 .portfolios .tout_supprimer span {display:block;text-align:#GET{right};}
 
 .item.vu_oui {background:#f9f9f9;}
+
+
+/* Types d'affichages des listes de douments */
+
+h3 .affichages {
+	float:#GET{right};
+}
+
+.affichages .icone {
+	width:16px;
+	height:16px;
+	margin:0;
+	padding:2px;
+	display:inline-block;
+	background:rgba(255, 255, 255, 0.5) center center no-repeat;
+	border-radius:3px;
+	cursor:pointer;
+}
+.affichages .icone + .icone {
+	margin-#GET{left}:5px;
+}
+.affichages .icone.grand {
+	background-image: url([(#CHEMIN_IMAGE{documents-liste-16.png})]);
+}
+.affichages .icone.liste {
+	background-image: url([(#CHEMIN_IMAGE{documents-liste-courte-16.png})]);
+}
+.affichages .icone.cases {
+	background-image: url([(#CHEMIN_IMAGE{documents-cases-16.png})]);
+}
+.affichages .icone.on {
+	background-color:rgba(255, 255, 255, 0.9);
+}
+.affichages .icone.on:hover,
+.affichages .icone:hover {
+	background-color:rgba(255, 255, 255, 1);
+}
+
+/* Liste courte de documents */
+.portfolios .documents_liste .tout_supprimer {
+	clear:both;
+	margin-top:.5em;
+	display:block;
+}
+.portfolios .documents_liste .item  {
+	padding: 7px;
+	padding-#GET{right}: 100px;
+	padding-#GET{left}: 75px;
+	position:relative;
+}
+.portfolios .documents_liste .item .vignette {
+	width:65px;
+	margin-#GET{left}: -75px;
+}
+.portfolios .documents_liste .item .vignette img {
+	max-height: 36px;
+	max-width:65px;
+	height:auto;
+	width:auto;
+}
+.portfolios .documents_liste .item .tourner,
+.portfolios .documents_liste .item .infos,
+.portfolios .documents_liste .item .mode,
+.portfolios .documents_liste .item .actions > * {
+	display:none;
+}
+.portfolios .documents_liste .item .titrem {
+	margin-bottom:0;
+}
+.portfolios .documents_liste .item .titrem .fichier,
+.portfolios .documents_liste .item .titrem .titre {
+	max-height:1.2em;
+	line-height:1.2em;
+	overflow:hidden;
+	white-space: nowrap;
+	display:block;
+	text-overflow:ellipsis;
+}
+.portfolios .documents_liste .item .titrem .titre {
+	max-height:1.5em;
+	line-height:1.5em;
+}
+.portfolios .documents_liste .item .actions {
+	position:absolute;
+	#GET{right}:0;
+	top:1.2em;
+}
+.portfolios .documents_liste .item .actions .editbox,
+.portfolios .documents_liste .item .actions .ordoc-deplacer {
+	display:inline-block;
+}
+
+
+/* Grille en cases des documents. */
+.portfolios .documents_cases {
+	display:flex;
+	flex-wrap: wrap;
+}
+.portfolios .documents_cases .item {
+	padding: 2px;
+	margin: 2px;
+	border:1px solid #eee;
+	border-radius:5px;
+	width:113px;
+	height:130px;
+	display:flex;
+	flex-direction:column;
+
+}
+.portfolios .documents_cases .item .tourner,
+.portfolios .documents_cases .item .infos,
+.portfolios .documents_cases .item .mode,
+.portfolios .documents_cases .item .titrem,
+.portfolios .documents_cases .item .actions > * {
+	display:none;
+}
+.portfolios .documents_cases .item .actions .editbox {
+	display:inline-block;
+	float:#GET{right};
+}
+.portfolios .documents_cases .item .actions .ordoc-deplacer {
+	display:inline-block;
+	float:#GET{left};
+}
+.portfolios .documents_cases .item .vignette {
+	float: none;
+	margin-#GET{left}: 0;
+	width:auto;
+	height:auto;
+	flex-grow:1;
+}
+.portfolios .documents_cases .item .vignette img {
+	max-height:110px;
+	max-width:110px;
+	width: auto;
+	height: auto;
+}
+
+.portfolios .documents_cases .item .actions {
+	display:block;
+	width:100%;
+}
+.portfolios .documents_cases .tout_supprimer {
+	flex-basis: 100%;
+}
\ No newline at end of file
diff --git a/prive/themes/spip/images/documents-cases-16.png b/prive/themes/spip/images/documents-cases-16.png
new file mode 100644
index 0000000000000000000000000000000000000000..80d989da31b02f8e3996a747bbac8690b596fa81
Binary files /dev/null and b/prive/themes/spip/images/documents-cases-16.png differ
diff --git a/prive/themes/spip/images/documents-liste-16.png b/prive/themes/spip/images/documents-liste-16.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d3d5069f4f8a61eb982a67ea51aa4b31153ac5b
Binary files /dev/null and b/prive/themes/spip/images/documents-liste-16.png differ
diff --git a/prive/themes/spip/images/documents-liste-courte-16.png b/prive/themes/spip/images/documents-liste-courte-16.png
new file mode 100644
index 0000000000000000000000000000000000000000..330ff51e44f6e0aaf87904be68cb842c48831312
Binary files /dev/null and b/prive/themes/spip/images/documents-liste-courte-16.png differ