Changeset 47794 in spip-zone


Ignore:
Timestamp:
May 14, 2011, 3:35:35 PM (8 years ago)
Author:
xdjuj@…
Message:
  • Se rapprocher de SPIP 3 :

--- Nécessiter la médiathèque
--- Se brancher sur le bando

  • Pouvoir choisir le wmode pour les fallback et les iframes
  • Corriger quelques bugs FF (couleurs de background du fallback et marge inventées)
  • Corriger le bug de modèle, si un id_document est présent il doit être prioritaire sur #ID (sinon ça plante les appels via le squelette et #MODELE)
  • Corriger la boucle des "autres formats présents" pour la balise <video> qui était très imprécise et remontait beaucoup trop de résultats
  • Utiliser le figcaption lié à la balise <video> plutôt que la définition des docs spip pour les formats utilisés par la balise (c'est plus propre en HTML5)
Location:
_plugins_/videos
Files:
5 added
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/videos/formulaires/config_videos.html

    r44311 r47794  
    3434                                        </li>
    3535                                        <li>
    36                                                 <label for="hauteur"><:videos:cfg_label_titre_descriptif:></label>
     36                                                <label for="wmode"><:videos:cfg_label_wmode:></label>
     37                                                <div class='explication'><:videos:cfg_explication_wmode:></div>
     38                                                [(#SET{wmode,[(#ENV{wmode}|sinon{opaque})]})]
     39                                                <select name="wmode" id="wmode" size="1">
     40                                                        <option value="opaque"[(#ENV{wmode}|=={opaque}|oui) selected='selected']>Opaque</option>
     41                                                        <option value="transparent"[(#ENV{wmode}|=={transparent}|oui) selected='selected']>Transparent</option>
     42                                                        <option value="window"[(#ENV{wmode}|=={window}|oui) selected='selected']>Window</option>
     43
     44                                                </select>
     45                                        </li>
     46                                        <li>
     47                                                <label for="titre_descriptif"><:videos:cfg_label_titre_descriptif:></label>
    3748                                                <p class='explication'><:videos:cfg_explication_titre_descriptif:></p>
    38                   <div class="choix">
    39                      <input type="radio" name="titre_descriptif" class="radio" id="titre_descriptif_on" value="oui" [(#ENV{titre_descriptif,#GET{titre_descriptif_defaut}}|=={oui}|oui) checked="checked"] />
    40                      <label for='titre_descriptif_on'><:item_oui:></label>
    41                   </div>
    42                   <div class="choix">
    43                      <input type="radio" name="titre_descriptif" class="radio" id="titre_descriptif_off" value="non" [(#ENV{titre_descriptif,#GET{titre_descriptif_defaut}}|=={non}|oui) checked="checked"] />
    44                      <label for='titre_descriptif_off'><:item_non:></label>
    45                   </div>
     49                                                <div class="choix">
     50                                                        <input type="radio" name="titre_descriptif" class="radio" id="titre_descriptif_on" value="oui" [(#ENV{titre_descriptif,#GET{titre_descriptif_defaut}}|=={oui}|oui) checked="checked"] />
     51                                                        <label for='titre_descriptif_on'><:item_oui:></label>
     52                                                </div>
     53                                                <div class="choix">
     54                                                        <input type="radio" name="titre_descriptif" class="radio" id="titre_descriptif_off" value="non" [(#ENV{titre_descriptif,#GET{titre_descriptif_defaut}}|=={non}|oui) checked="checked"] />
     55                                                        <label for='titre_descriptif_off'><:item_non:></label>
     56                                                </div>
    4657                                        </li>
    4758                                </ul>
  • _plugins_/videos/javascript/html5media/html5media.min.js

    r44961 r47794  
    3636{video:{ogg:a,ogv:a,avi:c,mp4:c,mkv:c,h264:c,"264":c,avc:c,m4v:c,"3gp":c,"3gpp":c,"3g2":c,mpg:c,mpeg:c},audio:{ogg:e,oga:e,aac:b,m4a:b,mp3:l,wav:z}},o=v.location.protocol+"//"+v.location.host,u=String(v.location);w(p.getElementsByTagName("base"),function(i){if(i.href)u=i.href});u=u.split("/").slice(0,-1).join("/")+"/";r.configureFlowplayer=function(i,n,s){return s};r.createFallback=function(i,n){var s=A(n,"controls"),x=n.getAttribute("poster")||"",H=n.getAttribute("src")||"",G;if(H)G=B(i,H);else w(n.getElementsByTagName("source"),
    3737function(k){var q=k.getAttribute("src");q&&!H&&w(h,function(E){G=B(i,q,k.getAttribute("type"));if(y(G)==y(E))H=q})});var I=p.createElement("span");I.id=n.id;I.className=n.className;I.title=n.title;I.style.display="block";I.style.width=C(n,"width","300px");I.style.height=C(n,"height","24px");n.parentNode.replaceChild(I,n);var f=(n.getAttribute("preload")||"").toLowerCase(),m=[];x&&m.push({url:D(x)});if(H)m.push({url:D(H),autoPlay:A(n,"autoplay"),autoBuffering:A(n,"autobuffer")||A(n,"preload")&&(f==
    38 ""||f=="auto"),onBeforeFinish:function(){return!A(n,"loop")}});x={controls:s&&{url:D(r.flowplayerControlsSwf),fullscreen:false,autoHide:i==t&&"always"||"never"}||null};if(y(G)==y(l)){x.audio={url:D(r.flowplayerAudioSwf)};s||(x.controls={url:D(r.flowplayerControlsSwf),display:"none"});m.slice(-1)[0].autoBuffering=false}s={play:null,playlist:m,clip:{scaling:"fit",fadeInSpeed:0,fadeOutSpeed:0},plugins:x};r.configureFlowplayer(i,n,s);flowplayer(I,{src:D(r.flowplayerSwf),wmode:"opaque"},s)};if(v.jQuery)jQuery(r);
     38""||f=="auto"),onBeforeFinish:function(){return!A(n,"loop")}});x={controls:s&&{url:D(r.flowplayerControlsSwf),fullscreen:false,autoHide:i==t&&"always"||"never"}||null};if(y(G)==y(l)){x.audio={url:D(r.flowplayerAudioSwf)};s||(x.controls={url:D(r.flowplayerControlsSwf),display:"none"});m.slice(-1)[0].autoBuffering=false}s={play:null,playlist:m,clip:{scaling:"fit",fadeInSpeed:0,fadeOutSpeed:0},plugins:x};r.configureFlowplayer(i,n,s);flowplayer(I,{src:D(r.flowplayerSwf),wmode:CONFIG_WMODE},s)};if(v.jQuery)jQuery(r);
    3939else v.DomReady&&DomReady.ready(r);v.html5media=r})(this,document);
  • _plugins_/videos/javascript/html5media/jquery.html5media.min.js

    r44961 r47794  
    3434{video:{ogg:a,ogv:a,avi:c,mp4:c,mkv:c,h264:c,"264":c,avc:c,m4v:c,"3gp":c,"3gpp":c,"3g2":c,mpg:c,mpeg:c},audio:{ogg:d,oga:d,aac:b,m4a:b,mp3:l,wav:x}},o=w.location.protocol+"//"+w.location.host,t=String(w.location);v(q.getElementsByTagName("base"),function(h){if(h.href)t=h.href});t=t.split("/").slice(0,-1).join("/")+"/";r.configureFlowplayer=function(h,n,s){return s};r.createFallback=function(h,n){var s=z(n,"controls"),u=n.getAttribute("poster")||"",F=n.getAttribute("src")||"",E;if(F)E=I(h,F);else v(n.getElementsByTagName("source"),
    3535function(k){var p=k.getAttribute("src");p&&!F&&v(g,function(A){E=I(h,p,k.getAttribute("type"));if(y(E)==y(A))F=p})});var H=q.createElement("span");H.id=n.id;H.className=n.className;H.title=n.title;H.style.display="block";H.style.width=G(n,"width","300px");H.style.height=G(n,"height","24px");n.parentNode.replaceChild(H,n);var f=(n.getAttribute("preload")||"").toLowerCase(),m=[];u&&m.push({url:B(u)});if(F)m.push({url:B(F),autoPlay:z(n,"autoplay"),autoBuffering:z(n,"autobuffer")||z(n,"preload")&&(f==
    36 ""||f=="auto"),onBeforeFinish:function(){return!z(n,"loop")}});u={controls:s&&{url:B(r.flowplayerControlsSwf),fullscreen:false,autoHide:h==D&&"always"||"never"}||null};if(y(E)==y(l)){u.audio={url:B(r.flowplayerAudioSwf)};s||(u.controls={url:B(r.flowplayerControlsSwf),display:"none"});m.slice(-1)[0].autoBuffering=false}s={play:null,playlist:m,clip:{scaling:"fit",fadeInSpeed:0,fadeOutSpeed:0},plugins:u};r.configureFlowplayer(h,n,s);flowplayer(H,{src:B(r.flowplayerSwf),wmode:"opaque"},s)};if(w.jQuery)jQuery(r);
     36""||f=="auto"),onBeforeFinish:function(){return!z(n,"loop")}});u={controls:s&&{url:B(r.flowplayerControlsSwf),fullscreen:false,autoHide:h==D&&"always"||"never"}||null};if(y(E)==y(l)){u.audio={url:B(r.flowplayerAudioSwf)};s||(u.controls={url:B(r.flowplayerControlsSwf),display:"none"});m.slice(-1)[0].autoBuffering=false}s={play:null,playlist:m,clip:{scaling:"fit",fadeInSpeed:0,fadeOutSpeed:0},plugins:u};r.configureFlowplayer(h,n,s);flowplayer(H,{src:B(r.flowplayerSwf),wmode:CONFIG_WMODE},s)};if(w.jQuery)jQuery(r);
    3737else w.DomReady&&DomReady.ready(r);w.html5media=r})(this,document);
  • _plugins_/videos/lang/videos_en.php

    r44892 r47794  
    1010        'cfg_explication_largeur' => 'Choose the default width for your videos. This option can be overloaded in the call to the model.',
    1111        'cfg_explication_titre_descriptif' => "Display the title and the description of your videos. This option can be overloaded in the call to the model.",
     12        'cfg_explication_wmode' => "Choose the mode to apply to Flash objects (Flowplayer fallback, Dailymotion, Youtube and Vimeo iFrames).",
    1213        'cfg_label_hauteur' => 'Default height',
    1314        'cfg_label_largeur' => 'Default width',
    1415        'cfg_label_titre_descriptif' => "Title and description",       
     16        'cfg_label_wmode' => "Default wmode",   
    1517        'cfg_titre_configurations_communes' => 'Shared settings',
    1618        'cfg_titre_configurations_dailymotion' => 'Dailymotion settings',
  • _plugins_/videos/lang/videos_fr.php

    r44891 r47794  
    1010        'cfg_explication_largeur' => "Choisissez la largeur par d&eacute;faut pour vos vid&eacute;os. Cette option reste surchargeable dans l&#x27;appel au mod&egrave;le.",
    1111        'cfg_explication_titre_descriptif' => "Afficher le titre et la description des vid&eacute;os. Cette option reste surchargeable dans l&#x27;appel au mod&egrave;le.",
     12        'cfg_explication_wmode' => "Choisissez le mode &agrave; appliquer pour les objets Flash (fallback Flowplayer, iFrames Dailymotion, Youtube, Vimeo).",
    1213        'cfg_label_hauteur' => "Hauteur par d&eacute;faut",     
    1314        'cfg_label_largeur' => "Largeur par d&eacute;faut",     
    1415        'cfg_label_titre_descriptif' => "Titre et descriptif", 
     16        'cfg_label_wmode' => "Wmode par d&eacute;faut",
    1517        'cfg_titre_configurations_communes' => 'Configurations communes',
    1618        'cfg_titre_configurations_dailymotion' => 'Configurations Dailymotion',
  • _plugins_/videos/modeles/video.html

    r47473 r47794  
    22/** Valeurs communes surchargeables **/
    33]
    4 #SET{document,#ID|sinon{#ENV{document}}}
     4#SET{document,#ENV{document}|sinon{#ID}}
    55#SET{titre_descriptif,#ENV{titre_descriptif,#CONFIG{videos/titre_descriptif,'non'}}}
     6#SET{wmode,#ENV{wmode,#CONFIG{videos/wmode,'opaque'}}}
    67
    78[(#REM) "Extensions" gérées ou rajoutées par le plugin
     
    1718        }
    1819})]
     20[(#SET{lesExtensionsHtml5,
     21        #ARRAY{ 1,m4v,
     22                        2,mp4,
     23                        3,webm,
     24                        4,ogv,
     25                        5,mkv
     26        }
     27})]
     28<BOUCLE_LaVideo(DOCUMENTS){id_document=#GET{document}}>
     29[(#REM)
     30        Si une dimension est fournie avec le modele on la prend,
     31        sinon celle du document si elle n'est pas nulle,
     32        sinon celle de la config,
     33        sinon une valeur en dur
     34]
     35[(#LARGEUR|>{0}|oui) #SET{larg,#LARGEUR} ]
     36#SET{largeur,#ENV{largeur,#GET{larg,#CONFIG{videos/largeur,'560'}}}}
     37[(#HAUTEUR|>{0}|oui) #SET{haut,#HAUTEUR} ]
     38#SET{hauteur,#ENV{hauteur,#GET{haut,#CONFIG{videos/hauteur,'315'}}}}
    1939
    20 <BOUCLE_LaVideo(DOCUMENTS){id_document=#GET{document}}>
    21         [(#REM) Si une dimension est fournie avec le modele on la prend,
    22                         sinon celle du document si elle n'est pas nulle,
    23             sinon celle de la config,
    24             sinon une valeur en dur]
    25         [(#LARGEUR|>{0}|oui) #SET{larg,#LARGEUR} ]
    26    #SET{largeur,#ENV{largeur,#GET{larg,#CONFIG{videos/largeur,'560'}}}}
    27         [(#HAUTEUR|>{0}|oui) #SET{haut,#HAUTEUR} ]
    28    #SET{hauteur,#ENV{hauteur,#GET{haut,#CONFIG{videos/hauteur,'315'}}}}
    29 
    30         [(#SET{fichier,#FICHIER*})]
    31    <dl class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[ style='float:(#ENV{align}|match{left|right});']>
    32    <dt class='spip_doc_titre'>
     40[(#SET{fichier,#FICHIER*})]
     41<dl class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[ style='float:(#ENV{align}|match{left|right});']>
     42<dt class='spip_doc_titre'>
    3343
    3444[(#REM)
     
    5464                #SET{videosLiees,#ENV{videosLiees,#CONFIG{videos/videosLiees,'0'}}}
    5565       
    56                 <iframe frameborder="0" width="#GET{largeur}" height="#GET{hauteur}" src="http://www.dailymotion.com/embed/video/#GET{fichier}?width=#GET{largeur}&theme=none&foreground=%23F7FFFD&highlight=%23FFC300&background=%23171D1B&start=[&animatedTitle=(#TITRE)]&iframe=1&additionalInfos=0&autoPlay=0&hideInfos=0"></iframe>
     66                <iframe frameborder="0" width="#GET{largeur}" height="#GET{hauteur}" src="http://www.dailymotion.com/embed/video/#GET{fichier}?width=#GET{largeur}&amp;theme=none&amp;foreground=%23F7FFFD&amp;highlight=%23FFC300&amp;background=%23171D1B&amp;start=[&amp;animatedTitle=(#TITRE)]&amp;iframe=1&amp;additionalInfos=0&amp;autoPlay=0&amp;hideInfos=0&amp;wmode=#GET{wmode}"></iframe>
    5767        ]
    5868[(#REM)
     
    90100        - cc_load_policy        || Values: 1. Default is based on user preference. Setting to 1 will cause closed captions to be shown by default, even if the user has turned captions off.]
    91101        [(#EXTENSION|=={dist_youtu}|oui)
    92         <iframe title="YouTube video player" class="youtube-player" type="text/html" width="#GET{largeur}" height="#GET{hauteur}" src="http://www.youtube.com/embed/#GET{fichier}?hd=1" frameborder="0"></iframe>
     102        <iframe title="YouTube video player" class="youtube-player" type="text/html" width="#GET{largeur}" height="#GET{hauteur}" src="http://www.youtube.com/embed/#GET{fichier}?hd=1&amp;wmode=#GET{wmode}" frameborder="0"></iframe>
    93103        ]
    94104       
     
    99109
    100110        [(#EXTENSION|=={dist_cubox}|oui)
    101         <iframe src="http://culturebox.france3.fr/player.swf?video=#GET{fichier}" width="#GET{largeur}" height="#GET{hauteur}" frameborder="0"></iframe>
     111        <iframe src="http://culturebox.france3.fr/player.swf?video=#GET{fichier}&amp;wmode=#GET{wmode}" width="#GET{largeur}" height="#GET{hauteur}" frameborder="0"></iframe>
    102112        ]
    103113       
     
    105115
    106116[(#REM)
    107 /** Traiter les vidéos H264/WebM/Ogg en HTML5 **/
     117/** Traiter les vidéos H264/WebM/Ogg/Mkv en HTML5 **/
    108118]
    109         [(#EXTENSION|match{m4v|mp4|webm|ogv|mkv}|oui)
     119        [(#EXTENSION|in_array{#GET{lesExtensionsHtml5}}|oui)
    110120        <div class="playerVideo">
    111121                <section>
     
    113123                        [(#SET{nomVideo,[(#FICHIER|basename|pathinfo|table_valeur{filename})]})]
    114124                        <INCLURE{fond=noisettes/balise_video_html5,nomVideo=#GET{nomVideo},largeur=#GET{largeur},hauteur=#GET{hauteur},env} />
    115                         [(#REM)
     125                        [(#GET{titre_descriptif}|=={oui}|oui)
    116126                        <figcaption>
    117                                 Commentaire au besoin, ou titre ou descriptif ou what else
     127                                <p><strong>#TITRE</strong></p>
     128                                #DESCRIPTIF
    118129                        </figcaption>
    119130                        ]
     
    127138/** CAS GENERAL == MODELE VIDEO DE DIST DE SPIP **/
    128139]
    129         [(#MIME_TYPE|match{m4v|webm|ogg}|non)
     140        [(#EXTENSION|in_array{#GET{lesExtensionsHtml5}}|non)
    130141        [(#EXTENSION|match{dist_}|non)
    131142                [(#INCLURE{fond=prive/modeles/video,id=#GET{document},env,emb=' '})]
     
    136147]
    137148        [(#GET{titre_descriptif}|=={oui}|oui)
    138       [<br /><strong>(#TITRE)</strong>]
    139    ]
    140    </dt>
     149        [(#EXTENSION|in_array{#GET{lesExtensionsHtml5}}|non)
     150        [<br /><strong>(#TITRE)</strong>]
     151        ]]
     152</dt>
    141153        [(#GET{titre_descriptif}|=={oui}|oui)
    142       [<dd class='spip_doc_descriptif'[ style='width:(#GET{largeur})']>(#DESCRIPTIF|PtoBR)</dd>]
    143    ]
    144         </dl>
    145 
     154        [(#EXTENSION|in_array{#GET{lesExtensionsHtml5}}|non)
     155        [<dd class='spip_doc_descriptif'[ style='width:(#GET{largeur})']>(#DESCRIPTIF|PtoBR)</dd>]
     156        ]]
     157</dl>
    146158
    147159</BOUCLE_LaVideo>
  • _plugins_/videos/noisettes/balise_video_html5.html

    r47473 r47794  
    22<video width="#ENV{largeur}" height="#ENV{hauteur}" preload="metadata" tabindex="-1" controls autobuffer[(#ENV{autoplay}|oui)autoplay]>
    33        [(#REM) 4 boucles pour donner la préférence au H264 qui a besoin d'être en premier pour iPad notamment et pour bien nommer les types ]
    4         <BOUCLE_h264(DOCUMENTS){fichier==#ENV{nomVideo}}{extension==m4v|mp4}{par num titre}>
     4        <BOUCLE_h264(DOCUMENTS){fichier==^(m4v|mp4)/#ENV{nomVideo}\.(m4v|mp4)$}{par num titre}>
    55                <source src="#FICHIER" type='video/mp4'> [(#REM) ; codecs="avc1.42E01E, mp4a.40.2" H264 peut utiliser plusieurs codecs, on l'oublie donc ]
    66        </BOUCLE_h264>
    7         <BOUCLE_webm(DOCUMENTS){fichier==#ENV{nomVideo}}{extension=="webm"}{par num titre}>
     7        <BOUCLE_webm(DOCUMENTS){fichier==^webm/#ENV{nomVideo}\.webm$}{par num titre}>
    88                <source src="#FICHIER" type='video/webm; codecs="vp8, vorbis"'>
    99        </BOUCLE_webm>
    10         <BOUCLE_ogg(DOCUMENTS){fichier==#ENV{nomVideo}}{extension=="ogv"}{par num titre}>
     10        <BOUCLE_ogg(DOCUMENTS){fichier==^ogv/#ENV{nomVideo}\.ogv$}{par num titre}>
    1111                <source src="#FICHIER" type='video/ogg'> [(#REM) ; codecs="theora, vorbis" OGV peut utiliser plusieurs codecs, on l'oublie donc ]
    1212        </BOUCLE_ogg>
    13         <BOUCLE_mkv(DOCUMENTS){fichier==#ENV{nomVideo}}{extension=="mkv"}{par num titre}>
     13        <BOUCLE_mkv(DOCUMENTS){fichier==^mkv/#ENV{nomVideo}\.mkv$}{par num titre}>
    1414                <source src='#FICHIER' type='video/x-matroska; codecs="theora, vorbis"'>
    1515        </BOUCLE_mkv>
  • _plugins_/videos/plugin.xml

    r47473 r47794  
    99        <licence>GPL &#169; 2010</licence>
    1010       
    11         <version>0.7.2</version>
     11        <version>0.8</version>
    1212        <version_base>0.3</version_base>
    1313        <!-- <version_html5media>1.1.3</version_html5media> -->
     
    1919                <multi>
    2020                        [fr]Interface de gestion et modèles d'insertion de(s) vidéo(s) (HTML5, multi navs, iPad, iPhone, Android, etc.) :
    21                         -* Fichiers H264/OGG
     21                        -* Fichiers MP4/H264/WebM/OGG/MKV
    2222                        -* Dailymotion
    2323                        -* Vimeo
     
    2525                        -* CultureBox
    2626                        [en]Management interface and integration models of video(s) (HTML5, multi navs, iPad, iPhone, Android, etc.) :
    27                         -* H264/OGG files
     27                        -* MP4/H264/WebM/OGG/MKV files
    2828                        -* Dailymotion
    2929                        -* Vimeo
     
    3636        <install>base/videos_sql.php</install>
    3737       
     38        <pipeline>
     39                <nom>insert_head</nom>
     40                <inclure>pipelines/videos_insert_head.php</inclure>
     41        </pipeline>
    3842        <pipeline>
    3943                <nom>jquery_plugins</nom>
     
    5155                <url>configurer_videos</url>
    5256        </bouton>
     57        <bouton id='videos2' parent='bando_squelette'>
     58                <icone>theme/img/videos-16.png</icone>
     59                <titre>videos:titre_admin</titre>
     60                <url>configurer_videos</url>
     61        </bouton>
    5362       
    5463        <necessite id="SPIP" version="[2.0.0;]" />
     64        <necessite id="medias" version="[1.6.0;]" />
    5565        <utilise id="cfg" version="[1.9.4;]" />
    5666       
Note: See TracChangeset for help on using the changeset viewer.