From fa13018a9ef63c633e78da253106867d6bac8a78 Mon Sep 17 00:00:00 2001 From: "cedric@yterium.com" <> Date: Mon, 29 Jul 2019 12:40:49 +0000 Subject: [PATCH] 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> --- .gitattributes | 17 ++--- base/medias.php | 3 +- medias_fonctions.php | 29 ++++++++ modeles/audio.html | 45 +++++++----- modeles/doc.html | 48 ------------ modeles/doc_legende.html | 38 ---------- modeles/emb_mp4.html | 1 - modeles/file.html | 40 ++++++++++ modeles/{emb.html => file_emb.html} | 2 +- ...ication.html => file_emb_application.html} | 28 +++---- ...b_fonctions.php => file_emb_fonctions.php} | 6 +- modeles/file_emb_text.html | 12 +++ modeles/file_emb_text_csv.html | 11 +++ modeles/file_emb_text_html.html | 12 +++ modeles/image.html | 73 +++++++------------ modeles/img.html | 53 -------------- modeles/text.html | 6 -- modeles/text_csv.html | 3 - modeles/text_html.html | 6 -- modeles/video.html | 23 +++--- 20 files changed, 200 insertions(+), 256 deletions(-) delete mode 100644 modeles/doc.html delete mode 100644 modeles/doc_legende.html delete mode 100644 modeles/emb_mp4.html create mode 100644 modeles/file.html rename modeles/{emb.html => file_emb.html} (56%) rename modeles/{application.html => file_emb_application.html} (68%) rename modeles/{emb_fonctions.php => file_emb_fonctions.php} (70%) create mode 100644 modeles/file_emb_text.html create mode 100644 modeles/file_emb_text_csv.html create mode 100644 modeles/file_emb_text_html.html delete mode 100644 modeles/img.html delete mode 100644 modeles/text.html delete mode 100644 modeles/text_csv.html delete mode 100644 modeles/text_html.html diff --git a/.gitattributes b/.gitattributes index 68dd429a..9edc820f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/base/medias.php b/base/medias.php index 75434779..63b31165 100644 --- a/base/medias.php +++ b/base/medias.php @@ -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 diff --git a/medias_fonctions.php b/medias_fonctions.php index 17d7f85a..b5b89e53 100644 --- a/medias_fonctions.php +++ b/medias_fonctions.php @@ -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 * diff --git a/modeles/audio.html b/modeles/audio.html index 41b3e1a0..c8118b4c 100644 --- a/modeles/audio.html +++ b/modeles/audio.html @@ -1,23 +1,34 @@ -<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})]" - data-id="[(#VAL{mejs-#ID_DOCUMENT}|concat{#ENV{skin}}|md5)]" - src="#FICHIER" - type="#MIME_TYPE" - preload="none" - data-mejsoptions='{"alwaysShowControls": true[,"loop":(#ENV{loop}|?{true,false})],"audioWidth":"100%"[,"audioHeight":"(#ENV{hauteur})"][,"startVolume":"(#ENV{volume})"][,"duration":(#GET{duree})]}' - 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>] + <div class="audio-wrapper"[ style='width:(#GET{largeur})px;max-width:100%;']> + <audio class="mejs mejs-#ID_DOCUMENT [ mejs-(#ENV{skin})]" + data-id="[(#VAL{mejs-#ID_DOCUMENT}|concat{#ENV{skin}}|md5)]" + src="#FICHIER" + type="#MIME_TYPE" + preload="none" + data-mejsoptions='{"alwaysShowControls": true[,"loop":(#ENV{loop}|?{true,false})],"audioWidth":"100%"[,"audioHeight":"(#ENV{hauteur})"][,"startVolume":"(#ENV{volume})"][,"duration":(#GET{duree})]}' + controls="controls" + [autoplay="autoplay"(#ENV{autoplay}|oui)]></audio> + </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> diff --git a/modeles/doc.html b/modeles/doc.html deleted file mode 100644 index 022adb6a..00000000 --- a/modeles/doc.html +++ /dev/null @@ -1,48 +0,0 @@ -<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 --->] -[(#ENV{mode_force,#MODE}|=={image}|oui) - #SET{fichier,#URL_DOCUMENT} - #SET{width,#LARGEUR} - #SET{height,#HAUTEUR} - #SET{url,#ENV{lien}} -] -[(#ENV{mode_force,#MODE}|=={image}|non) - [(#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}} -][<!--(#REM) - - - Si largeur ou hauteur fournit en parametre, redimensionner - --->][ -(#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}} -] -[(#SET{title,[(#TYPE_DOCUMENT) - [(#TAILLE|taille_en_octets)]]})] -[(#MEDIA|=={image}|oui) #SET{title,#TITRE|sinon{#GET{title}}] -<dl class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[ - style='float:(#ENV{align}|match{left|right});']> -<dt>[<a href="(#GET{url})"[ - class="(#ENV{lien_class})"] title='[(#GET{title}|attribut_html)]'[ - (#ENV{lien}|?{'',type="#MIME_TYPE"})]>]<img src='#GET{fichier}' width='#GET{width}' height='#GET{height}' alt='' />[(#GET{url}|?{</a>})]</dt>[ -<dt class='#EDIT{titre} spip_doc_titre'[ style='width:(#GET{width}|min{350}|max{120})px;']><strong>(#TITRE)</strong></dt>][ -<dd class='#EDIT{descriptif} spip_doc_descriptif'[ style='width:(#GET{width}|min{350}|max{120})px;']>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</dd>] -</dl> - -</BOUCLE_doc> -#FILTRE{trim} \ No newline at end of file diff --git a/modeles/doc_legende.html b/modeles/doc_legende.html deleted file mode 100644 index beb92788..00000000 --- a/modeles/doc_legende.html +++ /dev/null @@ -1,38 +0,0 @@ -<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> diff --git a/modeles/emb_mp4.html b/modeles/emb_mp4.html deleted file mode 100644 index 97af8c35..00000000 --- a/modeles/emb_mp4.html +++ /dev/null @@ -1 +0,0 @@ -<INCLURE{fond=modeles/video,env} /> \ No newline at end of file diff --git a/modeles/file.html b/modeles/file.html new file mode 100644 index 00000000..89e44fb7 --- /dev/null +++ b/modeles/file.html @@ -0,0 +1,40 @@ +<BOUCLE_file (DOCUMENTS) {id_document=#ENV{id,#ENV{id_document}}} {tout}> +[(#MEDIA|=={image}|oui) + #SET{fichier,#URL_DOCUMENT} + #SET{width,#LARGEUR} + #SET{height,#HAUTEUR} + #SET{url,#ENV{lien}} +][(#MEDIA|=={image}|non) + #SET{image,#LOGO_DOCUMENT} + [(#SET{fichier,[(#GET{image}|extraire_attribut{src})]})] + [(#SET{width,[(#GET{image}|extraire_attribut{width})]})] + [(#SET{height,[(#GET{image}|extraire_attribut{height})]})] + #SET{url,#ENV{lien,#URL_DOCUMENT}} +][<!--(#REM) + + + Si largeur ou hauteur fournit en parametre, redimensionner + +-->][ +(#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}} +] +[(#SET{title,[(#TYPE_DOCUMENT) - [(#TAILLE|taille_en_octets)]]})] +[(#MEDIA|=={image}|oui) #SET{title,#TITRE|sinon{#GET{title}}] +<figure class='spip_document_#ID_DOCUMENT spip_documents spip_document_file[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok' [ style='width:(#GET{width}|max{120})px;']> +[<a href="(#GET{url})"[ + class="(#ENV{lien_class})"] title='[(#GET{title}|attribut_html)]'[ + (#ENV{lien}|?{'',type="#MIME_TYPE"})]>]<img src='#GET{fichier}' width='#GET{width}' height='#GET{height}' alt='' />[(#GET{url}|?{</a>})] +[(#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> +] +</figure> +</BOUCLE_file> +#FILTRE{trim} \ No newline at end of file diff --git a/modeles/emb.html b/modeles/file_emb.html similarity index 56% rename from modeles/emb.html rename to modeles/file_emb.html index 4fbea470..7f9f7331 100644 --- a/modeles/emb.html +++ b/modeles/file_emb.html @@ -1,3 +1,3 @@ -<BOUCLE_ext(DOCUMENTS types_documents) {id_document} {tout}> +<BOUCLE_ext(DOCUMENTS types_documents) {id_document=#ENV{id,#ENV{id_document}}} {tout}> <INCLURE{fond=modeles/#EXTENSION|trouver_modele_emb{#MIME_TYPE}}{id=#ID_DOCUMENT}{env}{emb=' '}/> </BOUCLE_ext> diff --git a/modeles/application.html b/modeles/file_emb_application.html similarity index 68% rename from modeles/application.html rename to modeles/file_emb_application.html index f1d69638..12fd8440 100644 --- a/modeles/application.html +++ b/modeles/file_emb_application.html @@ -1,4 +1,4 @@ -<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout}>[ +<BOUCLE_application(DOCUMENTS types_documents) {id_document=#ENV{id,#ENV{id_document}}} {inclus=embed} {mode?} {tout}>[ (#REM) on trouvera plusieurs variable de hauteur/largeur - les balises #HAUTEUR et #LARGEUR - #ENV{hauteur} et {largeur} correspondant <emb|hauteur=xx...> @@ -10,10 +10,8 @@ (#ENV{controls}=={PlayButton}|?{#SET{largeur,40},''})][ (#ENV{controls}=={PositionSlider}|?{#SET{hauteur,25},''})][ (#ENV{controls}=={PositionSlider}|?{#SET{largeur,#GET{largeur}|moins{40}},''}) -][(#INCLUS|=={embed}|?{[(#ENV{controls,''}|non) -<div class='spip_document_#ID_DOCUMENT spip_document_application spip_documents[ spip_documents_(#ENV{align})]'[ -style='[(#ENV{align}|match{^(left|right)$}|oui)float:#ENV{align};] (#ENV{align,center}|=={center}|non)[width:(#GET{largeur}|max{120})px]']> -]}) +][(#ENV{controls,''}|non) +<figure class='spip_document_#ID_DOCUMENT spip_documents spip_document_application[ spip_documents_(#ENV{align})]'> ][(#EXTENSION|=={swf}|oui) <object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=#ENV{version,'6,0,0,0'}' @@ -31,17 +29,21 @@ style='[(#ENV{align}|match{^(left|right)$}|oui)float:#ENV{align};] (#ENV{align,c </object> #SET{done,1} ][(#GET{done,0}|non) -[(#INCLUS|=={embed}|oui) <object width='#GET{largeur}' height='#GET{hauteur}'> <param name='movie' value='#URL_DOCUMENT' /> <param name='src' value='#URL_DOCUMENT' /> [(#ENV*|env_to_params)] <embed src='#URL_DOCUMENT' [(#ENV*|env_to_attributs)] width='#GET{largeur}' height='#GET{hauteur}'></embed></object> - -][(#INCLUS|=={image}|oui) -[(#INCLURE{fond=modeles/img}{id_document}{align=#ENV{align}}{embed=oui}{lien=#ENV{lien}}{lien_class=#ENV{lien_class}})] +][(#ENV{controls,''}|non) + [(#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> + ] +</figure> ] -][(#INCLUS|=={embed}|oui)[(#ENV{controls,''}|non) -[<div class='#EDIT{titre} spip_doc_titre'><strong>(#TITRE)</strong></div>][<div class='#EDIT{descriptif} spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>]</div> -]] -</BOUCLE_tous> +</BOUCLE_application> +<INCLURE{fond=modeles/file,env} /> +<//B_application> diff --git a/modeles/emb_fonctions.php b/modeles/file_emb_fonctions.php similarity index 70% rename from modeles/emb_fonctions.php rename to modeles/file_emb_fonctions.php index 98385298..49ab418e 100644 --- a/modeles/emb_fonctions.php +++ b/modeles/file_emb_fonctions.php @@ -18,13 +18,13 @@ if (!defined('_ECRIRE_INC_VERSION')) { * @return mixed */ function trouver_modele_emb($extension, $mime_type) { - if ($extension and trouve_modele($fond = 'emb_' . $extension)) { + if ($extension and trouve_modele($fond = 'file_emb_' . $extension)) { return $fond; } - $fond = preg_replace(',\W,', '_', $mime_type); + $fond = 'file_emb_' . preg_replace(',\W,', '_', $mime_type); if (trouve_modele($fond)) { return $fond; } else { - return preg_replace(',\W.*$,', '', $mime_type); + return 'file_emb_' . preg_replace(',\W.*$,', '', $mime_type); } } diff --git a/modeles/file_emb_text.html b/modeles/file_emb_text.html new file mode 100644 index 00000000..11cfc1b2 --- /dev/null +++ b/modeles/file_emb_text.html @@ -0,0 +1,12 @@ +<BOUCLE_text (DOCUMENTS types_documents) {id_document=#ENV{id,#ENV{id_document}}} {tout} + >[<figure class='spip_document_#ID_DOCUMENT spip_documents spip_document_text[ spip_documents_(#ENV{align})]' +><pre>(#FICHIER|contenu_document{#ENV{charset,auto}}|echapper_tags)</pre> +[(#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> +] +</figure> +]</BOUCLE_text> diff --git a/modeles/file_emb_text_csv.html b/modeles/file_emb_text_csv.html new file mode 100644 index 00000000..f5b96e31 --- /dev/null +++ b/modeles/file_emb_text_csv.html @@ -0,0 +1,11 @@ +<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout} + ><figure class='spip_document_#ID_DOCUMENT spip_documents spip_document_text[ spip_documents_(#ENV{align})]'> +[(#FICHIER|contenu_document{#ENV{charset,auto}}|appliquer_filtre{#MIME_TYPE})] +[(#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> +]</figure> +</BOUCLE_tous> diff --git a/modeles/file_emb_text_html.html b/modeles/file_emb_text_html.html new file mode 100644 index 00000000..1b9d5256 --- /dev/null +++ b/modeles/file_emb_text_html.html @@ -0,0 +1,12 @@ +<BOUCLE_texthtml (DOCUMENTS types_documents) {id_document=#ID} {tout} + >[<figure class='spip_document_#ID_DOCUMENT spip_documents spip_document_text_html[ spip_documents_(#ENV{align})]' +><object data="(#URL_DOCUMENT)" width="100%" height="400"><a href="#URL_DOCUMENT">#FICHIER</a></object> +[(#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> +] +</figure> +]</BOUCLE_texthtml> diff --git a/modeles/image.html b/modeles/image.html index 5ced491d..438f0ca8 100644 --- a/modeles/image.html +++ b/modeles/image.html @@ -1,49 +1,28 @@ -<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout}>[ +[(#REM) -(#REM) Cas <imageXX> : equivalent a <imgXX> pour une image en mode image + Modele pour les images -][(#INCLUS|=={image}|et{#ENV{emb,''}|non}|oui) -<span class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[ - style='float:(#ENV{align}|match{left|right});']>[ - <a href="(#ENV{lien})"[ - class="(#ENV{lien_class})"]>]<img src='#URL_DOCUMENT'[ - width="(#LARGEUR|?{#LARGEUR})"][ - height="(#HAUTEUR|?{#HAUTEUR})"][ - title="(#TITRE|attribut_html)"] - alt="[(#TITRE|attribut_html)]" />[(#ENV{lien}|?{</a>})]</span> -][ - -(#REM) Cas <embXX> : on est appele ici avec emb=' ' : on veut la legende -equivalent a un <docXX> pour une image en mode image - -][(#INCLUS|=={image}|et{#ENV{emb,''}|oui}|oui) -#SET{fichier,#URL_DOCUMENT} -#SET{width,#LARGEUR} -#SET{height,#HAUTEUR} -#SET{url,#ENV{lien}} -<dl class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[ - style='float:(#ENV{align}|match{left|right});[width:(#GET{width}|max{120})]px;']> -<dt>[<a href="(#GET{url})"[ class="(#ENV{lien_class})"] title='#TYPE_DOCUMENT - [(#TAILLE|taille_en_octets|texte_backend)]'[ type="(#ENV{lien}|?{#ENV{lien_mime},#MIME_TYPE})"]>]<img src='#GET{fichier}' width='#GET{width}' height='#GET{height}' alt='' />[(#GET{url}|?{</a>})]</dt>[ -<dt class='#EDIT{titre} spip_doc_titre'[ style='width:(#GET{width}|min{350}|max{120})px;']><strong>(#TITRE)</strong></dt>][ -<dd class='#EDIT{descriptif} spip_doc_descriptif'[ style='width:(#GET{width}|min{350}|max{120})px;']>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</dd>] -</dl> -][ - -(#REM) Cas des images qu'il faut embed (svg) -][ -(#INCLUS|=={embed}|oui) -<div class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})]'[ -style='[(#ENV{align}|match{^(left|right)$}|?{' '})float:#ENV{align};] (#ENV{align,center}|=={center}|?{'',' '})']> -<object data='#URL_DOCUMENT' - type='#MIME_TYPE'[ - width='(#ENV{largeur}?{'', #LARGEUR})'][ - height='(#ENV{hauteur}?{'', #HAUTEUR})'] - [(#ENV*|env_to_attributs)] > - <param name='src' value='#URL_DOCUMENT' /> - [(#ID_DOCUMENT|appliquer_filtre{#MIME_TYPE})] -</object>[ -<div class='#EDIT{titre} spip_doc_titre'><strong>(#TITRE)</strong></div> -][ -<div class='#EDIT{descriptif} spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div> -]</div>] -</BOUCLE_tous> +] +<BOUCLE_image (DOCUMENTS) {media=image} {id_document=#ENV{id,#ENV{id_document}}} {inclus=image} {mode?} {tout}> +[(#SET{autolien,#LARGEUR|>={800}|ou{#HAUTEUR|>={800}}|oui})] +[(#SET{image,[(#ENV{largeur}|ou{#ENV{hauteur}}|?{ + [(#FICHIER|image_reduire{#ENV{largeur,10000},#ENV{hauteur,10000}})], + [<img src='(#URL_DOCUMENT)'[ width="(#LARGEUR)"][ height="(#HAUTEUR)"]/>]})]})] +[(#TITRE|oui)#SET{image,#GET{image}|inserer_attribut{alt,#TITRE}|inserer_attribut{title,#TITRE}}] +#SET{largeur,#GET{image}|largeur} +<figure class='spip_document_#ID_DOCUMENT spip_documents spip_document_image[ spip_documents_(#ENV{align}|sinon{center})][ (#ENV{class})] spip_lien_ok' [ style='width:(#GET{largeur})px;']> +[<a href="(#ENV{lien})"[ class="(#ENV{lien_class})"]>] +[(#ENV{lien}|non|et{#GET{autolien}})<a href="#URL_DOCUMENT" class="mediabox" type="#MIME_TYPE">] + #GET{image} +[(#ENV{lien}|ou{#GET{autolien}}|?{</a>})] +[(#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> +] +</figure> +</BOUCLE_image> +<INCLURE{fond=modeles/file,env} /> +<//B_image> diff --git a/modeles/img.html b/modeles/img.html deleted file mode 100644 index 0ef76e60..00000000 --- a/modeles/img.html +++ /dev/null @@ -1,53 +0,0 @@ -<BOUCLE_document (DOCUMENTS) {id_document} {mode?} {tout}> -[(#REM) - - Modele pour <img> - - Si on est en mode "image" ou "vignette", ou appele avec embed=oui, - on affiche l'image complete ; sinon le logo - - Si un lien est passe #ENV{lien} on ajoute le a href - ou on truque le #URL_DOCUMENT - - Si une code de langue est passe #ENV{langue} ex: <img12|langue=en> - on ajoute l'attribut lang la balise img et eventuellement sur la balise a - - Dans le cas mode "image ou vignette", le contenu de l'attribut - alt et title se construit selon le schema suivant : - - prend la valeur de alt passe en environnement par le biais - d'un parametre sur la balise ex: <img12|alt=xxx> - - sinon on prend le titre - - sinon si #ENV{lien} est passe on prend #ENV{lien} ou Document si lien vers #URL_DOCUMENT - - sinon alt vide - - Dans le cas mode "document", le contenu de l'attribut - alt et title se construit selon le meme schema a ceci pres - qu'on ajoute #TYPE_DOCUMENT - #TAILLE - sauf si #ENV{lien} est passe - -] -[(#SET{ - image, - #ENV{mode_force,#MODE}|match{'image|vignette'} - |sinon{#ENV{embed}} - |oui -})][ - - (#REM) image complete ? - -][(#GET{image}) -<span class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[ - style='float:(#ENV{align}|match{left|right});']> -[<a href="(#ENV{lien})"[ class="(#ENV{lien_class})"]>]<img src='#URL_DOCUMENT'[ width="(#LARGEUR)"][ height="(#HAUTEUR)"] alt="[(#TITRE|texte_backend)]"[ title="(#TITRE|texte_backend)"] />[(#ENV{lien}|?{</a>})]</span> -][ - - (#REM) sinon logo document + lien + alt + title etc - -][(#GET{image}|non) - [(#SET{fichier,[(#LOGO_DOCUMENT|extraire_attribut{src})]})] - [(#SET{width,[(#LOGO_DOCUMENT|extraire_attribut{width})]})] - [(#SET{height,[(#LOGO_DOCUMENT|extraire_attribut{height})]})] -<span class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[ - style='float:(#ENV{align}|match{left|right});[ width:(#GET{width})px;]']><a href="[(#ENV{lien}|sinon{#URL_DOCUMENT})]"[ - (#ENV{lien}|?{'',type="#MIME_TYPE"})][ title="(#TITRE|texte_backend)"]><img src='#GET{fichier}' width='#GET{width}' height='#GET{height}' alt='[(#TITRE|strlen|?{#TITRE {#TYPE_DOCUMENT},#TYPE_DOCUMENT}|attribut_html)]' /></a></span> -]</BOUCLE_document> diff --git a/modeles/text.html b/modeles/text.html deleted file mode 100644 index d8d3ffcc..00000000 --- a/modeles/text.html +++ /dev/null @@ -1,6 +0,0 @@ -<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout} - >[<div class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})]' -><pre>(#FICHIER|contenu_document{#ENV{charset,auto}}|echapper_tags)</pre> -[<div class='#EDIT{titre} spip_doc_titre'><strong>(#TITRE)</strong></div>][<div class='#EDIT{descriptif} spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>] -</div> -]</BOUCLE_tous> diff --git a/modeles/text_csv.html b/modeles/text_csv.html deleted file mode 100644 index 8cd7d95b..00000000 --- a/modeles/text_csv.html +++ /dev/null @@ -1,3 +0,0 @@ -<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout} - >[(#FICHIER|contenu_document{#ENV{charset,auto}}|appliquer_filtre{#MIME_TYPE} -)]</BOUCLE_tous> diff --git a/modeles/text_html.html b/modeles/text_html.html deleted file mode 100644 index 4e877439..00000000 --- a/modeles/text_html.html +++ /dev/null @@ -1,6 +0,0 @@ -<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout} - >[<div class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})]' -><object data="(#URL_DOCUMENT)" width="100%" height="400"><a href="#URL_DOCUMENT">#FICHIER</a></object> -[<div class='#EDIT{titre} spip_doc_titre'><strong>(#TITRE)</strong></div>][<div class='#EDIT{descriptif} spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>] -</div> -]</BOUCLE_tous> diff --git a/modeles/video.html b/modeles/video.html index 3ca25e9e..aac36556 100644 --- a/modeles/video.html +++ b/modeles/video.html @@ -1,4 +1,4 @@ -<BOUCLE_tous(DOCUMENTS types_documents) {id_document=#ID} {tout}>[ +<BOUCLE_video(DOCUMENTS types_documents) {media=video} {id_document=#ENV{id,#ENV{id_document}}} {inclus=embed} {tout}>[ (#REM) on trouvera plusieurs variable de hauteur/largeur - les balises #HAUTEUR et #LARGEUR - #ENV{hauteur} et {largeur} correspondant <emb|hauteur=xx...> @@ -8,9 +8,8 @@ #SET{largeur,#ENV{largeur, #LARGEUR|?{#LARGEUR,480}}|max{120}} #SET{hauteur,#ENV{hauteur, #HAUTEUR|?{#HAUTEUR,300}}|max{75}} #SET{duree,#ENV{duree,#DUREE}}[(#SET{duree,[(#GET{duree}|intval|?{[(#GET{duree}|intval)],''})]})] -<div class='spip_document_#ID_DOCUMENT spip_document_video spip_documents[ spip_documents_(#ENV{align})]' - style='[(#ENV{align}|match{^(left|right)$}|oui)float:#ENV{align};][width:(#GET{largeur})px]'> -<div class="video-intrinsic-wrapper" style='height:0;width:100%;padding-bottom:[(#GET{hauteur}|div{#GET{largeur}}|mult{100}|round{2})]%;position:relative;'> +<figure class='spip_document_#ID_DOCUMENT spip_documents spip_document_video[ spip_documents_(#ENV{align})]'[ style='width:(#GET{largeur})px;']> +<div class="video-intrinsic-wrapper" style='height:0;width:#GET{largeur}px;max-width:100%;padding-bottom:[(#GET{hauteur}|div{#GET{largeur}}|mult{100}|round{2})]%;position:relative;'> <div class="video-wrapper" style="position: absolute;top:0;left:0;width:100%;height:100%;"> <video class="mejs mejs-#ID_DOCUMENT[ mejs-(#ENV{skin})]" data-id="[(#VAL{mejs-#ID_DOCUMENT}|concat{#ENV{skin}}|md5)]" @@ -39,10 +38,16 @@ </video> </div> </div> -[<div class='#EDIT{titre} spip_doc_titre'><strong>(#TITRE)</strong></div>] -[<div class='#EDIT{descriptif} spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>] -[<script>/*<!\[CDATA\[*/var mejspath='[(#CHEMIN{lib/mejs/mediaelement-and-player.min.js}|timestamp)]',mejscss='[(#CHEMIN{lib/mejs/mediaelementplayer.min.css}|timestamp)]'; +[(#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}|url_absolue_css})</style>]] -</div> -</BOUCLE_tous> \ No newline at end of file +</figure> +</BOUCLE_video> +<INCLURE{fond=modeles/file,env} /> +<//B_video> -- GitLab