Bonjour,
Voici une proposition de modification/amélioration de l’affichage de la médiathèque (je n’ai plus accès au GIT SPIP : compte désactivé et n’ai jamais reçu un seul mail après plusieurs tentatives).
J’ai ajouté dans les documents un « media »=‹ iframe › qui correspond à des inclusions d’IFRAME (avec ou sans OEmbed)(Youtube, Prezi, ArteRadio,…).
Pour cela, il fallait que la médiathèque affiche ce nouveau média. J’ai donc fait, dans les deux fichiers « media/prive/squelettes/inclure/mediatheque-navigation.html » et « media/prive/squelettes/inclure/mediatheque-navigation_fonctions.php » des modifications/ajouts pour permettre d’afficher dynamiquement (selon présence dans la base) de tous les médias et rajouter devant la liste détaillée des différents types ‹ Tous › (pas de trad!) cliquable pour revenir à la liste complète quand on avait cliqué sur un type. J’ai aussi optimisé la liste des types qui retournait les X extensions selon le nombre X de documents du média pour ne faire une liste que des N types différents (distinct dans la requête).
« media/prive/squelettes/inclure/mediatheque-navigation.html »
#SET{self,#SELF|parametre_url{debut_galerie,''}}
#SET{self,#GET{self}|parametre_url{extension,''}}
#SET{editable,#ENV{editable,oui}|=={non}|non}
#SET{grand_total,0}
<div class='onglets_simple'>
<ul class='medias'>
[<li>(#GET{self}|parametre_url{media,''}|lien_ou_expose{<:medias:tous_les_medias:>,#ENV{media,''}|=={''},ajax})</li>]
<BOUCLE_medias(DATA){source table,#REM|liste_tous_media}>
<BOUCLE_comptem(DOCUMENTS){id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut==.*}{media=#VALEUR} />
[(#ENV{media}|=={#VALEUR}|oui)#SET{grand_total,#TOTAL_BOUCLE}]
[<li class='#VALEUR'>(#GET{self}|parametre_url{media,#VALEUR}|lien_ou_expose{#VAL{medias:media_}|concat{#VALEUR}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{media}|=={#VALEUR},ajax})</li>]
<//B_comptem>
</BOUCLE_medias>
</ul>
<div class="nettoyeur"></div>
</div>
[(#ENV{id_document}|oui)
<a class='annule_filtre' href='[(#GET{self}|parametre_url{id_document,''})]' title="<:medias:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:medias:tout_voir:>})]</a>
]
<div class='onglets_simple second'>
<ul class='statut'>
[<li class='first'>(#GET{self}|parametre_url{statut,''}|lien_ou_expose{<:medias:documents_tous:>,#ENV{statut,.*}|=={.*},ajax})</li>]
[<li>(#GET{self}|parametre_url{statut,publie}|lien_ou_expose{<:medias:documents_publies:>,#ENV{statut}|=={publie},ajax})</li>]
[<li>(#GET{self}|parametre_url{statut,prop|prepa|poubelle}|lien_ou_expose{<:medias:documents_non_publies:>,#ENV{statut}|=={prop|prepa|poubelle},ajax})</li>]
</ul>
<ul class='distant'>
[<li class='first'>(#GET{self}|parametre_url{distant,''}|lien_ou_expose{<:medias:documents_tous:>,#ENV{distant,''}|=={''},ajax})</li>]
[<li>(#GET{self}|parametre_url{distant,'oui'}|lien_ou_expose{<:medias:documents_distants:>,#ENV{distant,''}|=={'oui'},ajax})</li>]
[<li>(#GET{self}|parametre_url{distant,'non'}|lien_ou_expose{<:medias:documents_locaux:>,#ENV{distant,''}|=={'non'},ajax})</li>]
</ul>
<ul class='brises'>
[<li class='first'>(#GET{self}|parametre_url{brise|orphelins,''}|lien_ou_expose{<:medias:documents_tous:>,#ENV{brise,0}|non|et{#ENV{orphelins,0}|non},ajax})</li>]
[<li>(#GET{self}|parametre_url{brise,''}|parametre_url{orphelins,1}|lien_ou_expose{<:medias:documents_orphelins:>,#ENV{orphelins,0}|=={1},ajax})</li>]
[<li>(#GET{self}|parametre_url{brise,1}|parametre_url{orphelins,''}|lien_ou_expose{<:medias:documents_brises:>,#ENV{brise,0}|=={1},ajax})</li>]
</ul>
<ul class='sanstitre'>
[<li class='first'>(#GET{self}|parametre_url{sanstitre,''}|parametre_url{sansvignette,''}|lien_ou_expose{<:medias:documents_tous:>,#ENV{sanstitre,#ENV{sansvignette}}|=={''},ajax})</li>]
[<li>(#GET{self}|parametre_url{sanstitre,'1'}|parametre_url{sansvignette,''}|lien_ou_expose{<:info_sans_titre:>,#ENV{sanstitre,''}|=={'1'},ajax})</li>]
[<li>(#GET{self}|parametre_url{sansvignette,'1'}|parametre_url{sanstitre,''}|lien_ou_expose{<:medias:info_sans_vignette:>,#ENV{sansvignette,''}|=={'1'},ajax})</li>]
</ul>
</div>
<B_types>
<ul class='choix-type'>
[<li>(#GET{self}|parametre_url{extension,''}|lien_ou_expose{#REM|concat{'Tous (',#GET{grand_total},')'},#ENV{extension,''}|=={''},ajax})</li>]
<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><span> | </span>(#GET{self}|parametre_url{extension,#EXTENSION}|lien_ou_expose{#TITRE|concat{' (',#_compte:TOTAL_BOUCLE,')'},#ENV{extension}|=={#EXTENSION},ajax})</li>]]
<//B_compte>
</BOUCLE_types>
</ul>
</B_types>
<div class='nettoyeur'></div>
#FORMULAIRE_RECHERCHE_ECRIRE{#GET{self},ajax}
<div class="nettoyeur"></div>
<INCLURE{fond=#ENV{galerie,''}|spip_sanitize_from_request{galerie,vide}|sinon{prive/squelettes/inclure/mediatheque-galerie},ajax=documents,env} />
<div class='nettoyeur'></div>
[(#GET{editable})
<div class='actions'>
[(#ENV{brise,0}|oui)
[(#URL_ACTION_AUTEUR{verifier_documents_brises,'1',#GET{self}}|lien_ou_expose{<:medias:verifier_documents_brises:>,0,ajax})]
]
[(#ENV{orphelins,0}|oui)
[(#URL_ACTION_AUTEUR{verifier_documents_liens,'*',#GET{self}}|lien_ou_expose{<:medias:verifier_documents_inutilises:>,0,ajax})]
]
<INCLURE{fond=prive/squelettes/inclure/ajouter-documents, env, ajax,ajouter=oui} />
</div>]
« media/prive/squelettes/inclure/mediatheque-navigation_fonctions.php »
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) {
}
function liste_tous_media($arg='') {
$out=array_column(sql_allfetsel(
'distinct(`media`)',
'spip_documents','','','`media` asc'
),'media');
return $out;
}
function liste_extensions_utilisees($media) {
$out=$media ? array_column(
sql_allfetsel(
'distinct(`extension`)',
'spip_documents',
'media=' . sql_quote($media)
),
'extension'
) : [];
return $out;
}
A faire ce que bon vous semble.