Browse Source

Retour sur la gestion des <emb> pour ameliorer le support et la migration : ce n'est pas seulement les media=file qui peuvent etre emb mais aussi les autres

on generalise le mecanisme en renommant le filtre en medias_trouver_modele_emb qui prend en 3eme argument la racine du modele cherche, et si aucun modele specifique n'utilise pour l'extention ou le mime type on revient sur le modele racine initial
De cette façon les plugins peuvent proposer des modeles emb specifiques pour tout type de media (cf oembed). Par defaut seule le modele file propose des declinaisons historiques pour text/html et text/csv
pull/3/head
Cerdic 1 year ago
parent
commit
5df7ada711
  1. 35
      medias_fonctions.php
  2. 3
      modeles/audio_emb.html
  3. 2
      modeles/file_emb.html
  4. 30
      modeles/file_emb_fonctions.php
  5. 3
      modeles/image_emb.html
  6. 3
      modeles/video_emb.html
  7. 2
      paquet.xml

35
medias_fonctions.php

@ -380,4 +380,37 @@ function duree_en_secondes($duree, $precis = false) {
$out .= intval($duree).'s';
}
return $out;
}
}
/**
* Trouver le fond pour embarquer un document
* - avec une extension
* - avec un mime_type donne
*
* => modeles/{modele_base}_emb_html.html si il existe
* => modeles/{modele_base}_text_html.html si il existe,
* => modeles/{modele_base}_text.html si il existe,
* => modeles/{modele_base}.html sinon
*
* @param $extension
* @param $mime_type
* @return mixed
*/
function medias_trouver_modele_emb($extension, $mime_type, $modele_base='file') {
if ($extension and trouve_modele($fond = $modele_base . '_emb_' . $extension)) {
return $fond;
}
$fond = $modele_base . '_emb_' . preg_replace(',\W,', '_', $mime_type);
if (trouve_modele($fond)) {
return $fond;
}
$fond = $modele_base . '_emb_' . preg_replace(',\W.*$,', '', $mime_type);
if (trouve_modele($fond)) {
return $fond;
}
return $modele_base;
}

3
modeles/audio_emb.html

@ -0,0 +1,3 @@
<BOUCLE_ext(DOCUMENTS types_documents) {id_document=#ENV{id,#ENV{id_document}}} {tout}>
<INCLURE{fond=modeles/#EXTENSION|medias_trouver_modele_emb{#MIME_TYPE,audio}}{id=#ID_DOCUMENT}{env}{emb=' '}/>
</BOUCLE_ext>

2
modeles/file_emb.html

@ -1,3 +1,3 @@
<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=' '}/>
<INCLURE{fond=modeles/#EXTENSION|medias_trouver_modele_emb{#MIME_TYPE,file}}{id=#ID_DOCUMENT}{env}{emb=' '}/>
</BOUCLE_ext>

30
modeles/file_emb_fonctions.php

@ -1,30 +0,0 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Trouver le fond pour embarquer un document
* - avec une extension
* - avec un mime_type donne
*
* => modeles/emb_html.html si il existe
* => modeles/text_html.html si il existe,
* => modeles/text.html sinon
*
* @param $extension
* @param $mime_type
* @return mixed
*/
function trouver_modele_emb($extension, $mime_type) {
if ($extension and trouve_modele($fond = 'file_emb_' . $extension)) {
return $fond;
}
$fond = 'file_emb_' . preg_replace(',\W,', '_', $mime_type);
if (trouve_modele($fond)) {
return $fond;
} else {
return 'file_emb_' . preg_replace(',\W.*$,', '', $mime_type);
}
}

3
modeles/image_emb.html

@ -0,0 +1,3 @@
<BOUCLE_ext(DOCUMENTS types_documents) {id_document=#ENV{id,#ENV{id_document}}} {tout}>
<INCLURE{fond=modeles/#EXTENSION|medias_trouver_modele_emb{#MIME_TYPE,image}}{id=#ID_DOCUMENT}{env}{emb=' '}/>
</BOUCLE_ext>

3
modeles/video_emb.html

@ -0,0 +1,3 @@
<BOUCLE_ext(DOCUMENTS types_documents) {id_document=#ENV{id,#ENV{id_document}}} {tout}>
<INCLURE{fond=modeles/#EXTENSION|medias_trouver_modele_emb{#MIME_TYPE,video}}{id=#ID_DOCUMENT}{env}{emb=' '}/>
</BOUCLE_ext>

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="medias"
categorie="multimedia"
version="2.26.1"
version="2.27.0"
etat="stable"
compatibilite="[3.3.0-dev;3.3.*]"
logo="prive/themes/spip/images/portfolio-32.png"

Loading…
Cancel
Save