Valider fa13018a rédigé par cedric@yterium.com's avatar cedric@yterium.com
Parcourir les fichiers

Refonte des modeles document :

* on declare le routeur de modele medias_modeles_styliser qui redirige les raccourcis img, doc et emb selon la regle suivante
   - le nouveal modele correspond au champ media du document : image, audio, video, file
   - si une declinaison correspondant au raccourci initial (_img, _doc ou _emb) existe on la prend
     -> un modele file_emb.html reprend le mecanisme d'embed generique selon extension+mime-type de l'ancien modele emb.html
* les 4 modeles de base image, audio, video, file et les declinaisons file_emb sont toutes en <figure></figure>
* les styles en dur float sont supprimes, on ne garde qu'un width:{largeur}px sur l'element <figure> qui permet d'avoir un conteneur ajuste
  - il se contourne facilement par un min-width:100%; ou un width:auto !important;
* spip_doc_titre, spip_doc_descriptif et spip_doc_credits sont regroupes dans le figcaption.spip_doc_legende
* les modeles historiques doc, img et emb disparaissent. Les eventuels modeles surcharges dans squelettes/ sont ignores
* les 3 modeles image, audio et video ajoutent des conditions sur leur boucle, pour etre sur qu'on a bien a faire avec le bon type de media, et sinon renvoient vers le modele file
* le mode du document n'est plus considere dans aucun modele dans le format de l'affichage qui n'en depend donc plus du tout

En pratique donc <emb>, <img> et <doc> sont equivalents pour les medias audio, video, image (et consistent a afficher/embed le media par defaut)
Pour les autres types de media <doc> affiche le lien vers le document avec une vignette + legende, et <emb> affiche un traitement differencie en fonction du mime type
On peut utiliser le raccourci <fileXX> pour n'importe quel media
Si on utilise <imageXX> ou <audioXX> ou <videoXX> sur un media inaproprie ca affichera le contenu de <fileXX>
parent 0e26332f
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+7 −10
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -278,22 +278,19 @@ metadata/image.php -text
metadata/svg.php -text
metadata/swf.php -text
metadata/video.php -text
modeles/application.html -text
modeles/audio.html -text
modeles/doc.html -text
modeles/doc_legende.html -text
modeles/document_case.html -text
modeles/document_case_fonctions.php -text
modeles/document_desc.html -text
modeles/document_desc_fonctions.php -text
modeles/emb.html -text
modeles/emb_fonctions.php -text
modeles/emb_mp4.html -text
modeles/file.html -text
modeles/file_emb.html -text
modeles/file_emb_application.html -text
modeles/file_emb_fonctions.php -text
modeles/file_emb_text.html -text
modeles/file_emb_text_csv.html -text
modeles/file_emb_text_html.html -text
modeles/image.html -text
modeles/img.html -text
modeles/text.html -text
modeles/text_csv.html -text
modeles/text_html.html -text
modeles/video.html -text
prive/objets/contenu/portfolio_document.html -text
prive/objets/editer/colonne_document.html -text
+2 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -213,7 +213,8 @@ function medias_declarer_tables_objets_sql($tables) {
			'fichier',
			'distant'
		),
		'modeles' => array('document', 'doc', 'img', 'emb', 'image', 'video', 'text', 'audio', 'application'),
		'modeles' => array('document', 'doc', 'img', 'emb', 'image', 'video', 'audio', 'file'),
		'modeles_styliser' => 'medias_modeles_styliser',
	);

	// jointures sur les forum pour tous les objets
+29 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -53,6 +53,35 @@ if (isset($_SERVER['REQUEST_METHOD'])
	exit;
}

/**
 * Styliser le modele media : reroute les <img> <doc> <emb> vers <image>, <audio>, <video>, <file> selon le media du document
 * si le document n'est pas trouve c'est <file> qui s'applique
 * @param $modele
 * @param $id
 * @return string
 */
function medias_modeles_styliser($modele, $id) {
	switch($modele) {
		case 'img':
		case 'doc':
		case 'emb':
			$m = 'file';
			if ($doc = sql_fetsel('id_document,media', 'spip_documents', 'id_document='.intval($id))) {
				$m = $doc['media']; // image, audio, video, file
			}
			if (trouve_modele("{$m}_{$modele}")) {
				// on peut decliner file_emb qui sera utilisable soit par <docXX|emb> soit par <embXX>
				// permet d'embed explicitement des fichiers exotiques qui sinon seraient de simples liens a telecharger
				// tels que text/csv, text/html, text
				$m = "{$m}_{$modele}";
			}
			$modele = $m;
			break;
	}
	return $modele;
}


/**
 * Retourne la taille en octet d'une valeur de configuration php
 *
+28 −17
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout}>
[(#REM)

	Modele pour les sons
  Filtrer en acceptant uniquement les extensions jouables par le player ?

]<BOUCLE_audio(DOCUMENTS types_documents) {media=audio} {id_document=#ENV{id,#ENV{id_document}}} {inclus=embed} {tout}>
#SET{largeur,#ENV{largeur, #LARGEUR|?{#LARGEUR,400}}|max{120}}
#SET{duree,#ENV{duree,#DUREE}}[(#SET{duree,[(#GET{duree}|intval|?{[(#GET{duree}|intval)],''})]})]
<div	class='spip_document_#ID_DOCUMENT spip_document_audio spip_documents[ spip_documents_(#ENV{align})]'
	style='[(#ENV{align}|match{^(left|right)$}|oui)float:#ENV{align};][width:(#GET{largeur})px]'>
<figure class='spip_document_#ID_DOCUMENT spip_documents spip_document_audio[ spip_documents_(#ENV{align})]'[ style='width:(#GET{largeur})px;']>
	[(#LOGO_DOCUMENT{vignette}|image_reduire{#GET{largeur},0}|vider_attribut{class})]
  <div class="audio-wrapper"[ style='width:(#GET{largeur})px;max-width:100%;']>
  	<audio class="mejs mejs-#ID_DOCUMENT [ mejs-(#ENV{skin})]"
@@ -14,10 +18,17 @@
  	       controls="controls"
  				 [autoplay="autoplay"(#ENV{autoplay}|oui)]></audio>
  </div>
[<div class='#EDIT{titre} spip_doc_titre'><strong>(#TITRE)</strong></div>]
[<div class='#EDIT{descriptif} spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>]
[(#TITRE|trim|sinon{#DESCRIPTIF|trim}|sinon{#CREDITS|trim}|oui)
  <figcaption class='spip_doc_legende'>
    [<div class='spip_doc_titre #EDIT{titre}'><strong>(#TITRE|propre|ptobr)</strong></div>]
    [<div class='spip_doc_descriptif #EDIT{descriptif}'>(#DESCRIPTIF|propre|PtoBR)[(#NOTES|PtoBR)]</div>]
    [<div class='spip_doc_credits  #EDIT{credits}'>(#CREDITS|propre|PtoBR)</div>]
  </figcaption>
]
[<script>/*<!\[CDATA\[*/var mejspath='[(#CHEMIN{lib/mejs/mediaelement-and-player.min.js}|timestamp)]',mejscss='[(#CHEMIN{lib/mejs/mediaelementplayer.min.css}|timestamp)]';
(#INCLURE{javascript/mejs-init.min.js})/*\]\]>*/</script>]
[(#ENV{skin}|oui)[<style>(#INCLURE{#CHEMIN{css/mejs-skin-#ENV{skin}.css}|sinon{#CHEMIN{lib/mejs/mejs-skins.css}}|url_absolue_css})</style>]]
</div>
</BOUCLE_tous>
 No newline at end of file
</figure>
</BOUCLE_audio>
<INCLURE{fond=modeles/file,env} />
<//B_audio>

modeles/doc_legende.html

supprimé100644 → 0
+0 −38
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<BOUCLE_doc (DOCUMENTS) {id_document} {tout}>
[(#REM)

	Modele pour <doc> en dl/dt/dd
	cf. http://pompage.net/pompe/listesdefinitions/

	La largeur de la legende est egale a la largeur de l'image
	avec un minimum de 120px, et un maximum de 350px.

	Dans le cas d'une simple image (mode=image), on affiche
	le document lui-meme, sans lien de telechargement
]
[(#MODE|=={image}|oui)
	#SET{fichier,#URL_DOCUMENT}
	#SET{width,#LARGEUR}
	#SET{height,#HAUTEUR}
	#SET{url,#ENV{lien}}
]
[(#MODE|=={image}|oui)
	[(#SET{fichier,[(#LOGO_DOCUMENT|extraire_attribut{src})]})]
	[(#SET{width,[(#LOGO_DOCUMENT|extraire_attribut{width})]})]
	[(#SET{height,[(#LOGO_DOCUMENT|extraire_attribut{height})]})]
	#SET{url,#ENV{lien,#URL_DOCUMENT}}
][(#ENV{largeur,0}|ou{#ENV{hauteur,0}})
#SET{fichier,#GET{fichier}|image_reduire{#ENV{largeur,0},#ENV{hauteur,0}}}
#SET{width,#GET{fichier}|largeur}
#SET{height,#GET{fichier}|hauteur}
#SET{fichier,#GET{fichier}|extraire_attribut{src}}
]
<dl class='spip_document_#ID_DOCUMENT spip_documents_legende[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[ style='float:(#ENV{align}|match{left|right});']>
[<dt class='#EDIT{titre} titre'>(#TITRE|sinon{#FICHIER})</dt>]
<dd class='vignette'>[<a href="(#GET{url})"[ class="(#ENV{lien_class})"] title='#TYPE_DOCUMENT - [(#TAILLE|taille_en_octets|texte_backend)]'[ (#ENV{lien}|?{'',type="#MIME_TYPE"})]>]<img src='#GET{fichier}' width='#GET{width}' height='#GET{height}' alt='' />[(#GET{url}|?{</a>})]</dd>
<dd class='type'>#TYPE_DOCUMENT</dd>
<dd class='taille'>[(#LARGEUR|ou{#HAUTEUR}|oui)[
(#VAL{info_largeur_vignette}|_T{#ARRAY{largeur_vignette,#LARGEUR,hauteur_vignette,#HAUTEUR}})
] - ][(#TAILLE|taille_en_octets|texte_backend)]</dd>
</dl>
</BOUCLE_doc>
Chargement en cours