diff --git a/javascript/mejs-init.js b/javascript/mejs-init.js index e4a4686b4caf02dc7f997f8417b65603f8c243a5..d1b5aa608e4a29d728a99a7ce58ae25c9107b1fd 100644 --- a/javascript/mejs-init.js +++ b/javascript/mejs-init.js @@ -1,5 +1,6 @@ var mejsloader; var mejsplugins={}; +var mejscss={}; (function(){ var mejs_counter = 0; function mejs_init(){ @@ -9,13 +10,26 @@ var mejsplugins={}; //console.log(this); mejs_counter++; var id = "mejs-" + (jQuery(this).attr('data-id')) + "-" + mejs_counter; - var autoplay = jQuery(this).attr('autoplay'); jQuery(this).attr('id',id); - var options = jQuery.parseJSON(jQuery(this).attr('data-mejsoptions')); - var plugins = jQuery.parseJSON(jQuery(this).attr('data-mejsplugins')); + var autoplay = jQuery(this).attr('autoplay'); + var opt = {options:{},plugins:{},css:[]}, i,v; + for (i in opt){ + if (v = jQuery(this).attr('data-mejs'+i)) opt[i] = jQuery.parseJSON(v); + } function runthisplayer(){ var run = true; - for(var p in plugins){ + //console.log(css); + for(var c in opt.css){ + if (typeof mejscss[opt.css[c]]=="undefined"){ + mejscss[opt.css[c]] = true; + var stylesheet = document.createElement('link'); + stylesheet.href = opt.css[c]; + stylesheet.rel = 'stylesheet'; + stylesheet.type = 'text/css'; + document.getElementsByTagName('head')[0].appendChild(stylesheet); + } + } + for(var p in opt.plugins){ //console.log(p); //console.log(mejsplugins[p]); // load this plugin @@ -23,7 +37,7 @@ var mejsplugins={}; //console.log("Load Plugin "+p); run = false; mejsplugins[p] = false; - jQuery.getScript(plugins[p],function(){mejsplugins[p] = true;runthisplayer();}); + jQuery.getScript(opt.plugins[p],function(){mejsplugins[p] = true;runthisplayer();}); } // this plugin is loading else if(mejsplugins[p]==false){ @@ -35,8 +49,16 @@ var mejsplugins={}; } } if (run) { - new MediaElementPlayer('#'+id,jQuery.extend(options,{ + new MediaElementPlayer('#'+id,jQuery.extend(opt.options,{ "success": function(media) { + function togglePlayingState(){ + jQuery(media).closest('.mejs-inner').removeClass(media.paused?'playing':'paused').addClass(media.paused?'paused':'playing'); + } + togglePlayingState(); + media.addEventListener('play',togglePlayingState, false); + media.addEventListener('playing',togglePlayingState, false); + media.addEventListener('pause',togglePlayingState, false); + media.addEventListener('paused',togglePlayingState, false); if (autoplay) media.play(); } })); diff --git a/javascript/mejs-init.min.js b/javascript/mejs-init.min.js index 24fc8171c7ff11b55d17892709cecadd21bad82a..1515ef9c03f3630a9110597808f54cb38009648b 100644 --- a/javascript/mejs-init.min.js +++ b/javascript/mejs-init.min.js @@ -1 +1 @@ -var mejsloader,mejsplugins={}; (function(){function a(){(function(a){jQuery("audio.mejs,video.mejs").not(".done").each(function(){function a(){var c=!0,b;for(b in d)"undefined"==typeof mejsplugins[b]?(c=!1,mejsplugins[b]=!1,jQuery.getScript(d[b],function(){mejsplugins[b]=!0;a()})):0==mejsplugins[b]&&(c=!1);c&&new MediaElementPlayer("#"+e,jQuery.extend(g,{success:function(a){h&&a.play()}}))}jQuery(this).addClass("done");f++;var e="mejs-"+jQuery(this).attr("data-id")+"-"+f,h=jQuery(this).attr("autoplay");jQuery(this).attr("id",e); var g=jQuery.parseJSON(jQuery(this).attr("data-mejsoptions")),d=jQuery.parseJSON(jQuery(this).attr("data-mejsplugins"));a()})})(jQuery)}var f=0;"undefined"==typeof mejsloader&&(mejsloader=jQuery.getScript(mejspath,function(){a();jQuery(a);onAjaxLoad(a)}))})(); \ No newline at end of file +var mejsloader,mejsplugins={},mejscss={}; (function(){function b(){(function(b){jQuery("audio.mejs,video.mejs").not(".done").each(function(){function b(){var c=!0,e;for(e in a.css)if("undefined"==typeof mejscss[a.css[e]]){mejscss[a.css[e]]=!0;var f=document.createElement("link");f.href=a.css[e];f.rel="stylesheet";f.type="text/css";document.getElementsByTagName("head")[0].appendChild(f)}for(var d in a.plugins)"undefined"==typeof mejsplugins[d]?(c=!1,mejsplugins[d]=!1,jQuery.getScript(a.plugins[d],function(){mejsplugins[d]=!0;b()})):0==mejsplugins[d]&& (c=!1);c&&new MediaElementPlayer("#"+g,jQuery.extend(a.options,{success:function(a){function b(){jQuery(a).closest(".mejs-inner").removeClass(a.paused?"playing":"paused").addClass(a.paused?"paused":"playing")}b();a.addEventListener("play",b,!1);a.addEventListener("playing",b,!1);a.addEventListener("pause",b,!1);a.addEventListener("paused",b,!1);l&&a.play()}}))}jQuery(this).addClass("done");h++;var g="mejs-"+jQuery(this).attr("data-id")+"-"+h;jQuery(this).attr("id",g);var l=jQuery(this).attr("autoplay"), a={options:{},plugins:{},css:[]},c,k;for(c in a)if(k=jQuery(this).attr("data-mejs"+c))a[c]=jQuery.parseJSON(k);b()})})(jQuery)}var h=0;"undefined"==typeof mejsloader&&(mejsloader=jQuery.getScript(mejspath,function(){b();jQuery(b);onAjaxLoad(b)}))})(); \ No newline at end of file diff --git a/modeles/audio.html b/modeles/audio.html index ed453f4d942ca255ba4a6c5f4f852f974915efbf..e11c9586e2157cef321f72fa3b791564609a192a 100644 --- a/modeles/audio.html +++ b/modeles/audio.html @@ -9,13 +9,14 @@ src="#FICHIER" type="#MIME_TYPE" data-mejsoptions='{"alwaysShowControls": true[,"loop":(#ENV{loop}|?{true,false})],"audioWidth":"100%"[,"audioHeight":"(#ENV{hauteur})"][,"startVolume":"(#ENV{volume})"]}' + data-mejscss='[(#LISTE{#CHEMIN{lib/mejs/mediaelementplayer.min.css}}|json_encode)]' controls="controls" [autoplay="autoplay"(#ENV{autoplay}|oui)]></audio> </div> [<div class='spip_doc_titre'><strong>(#TITRE)</strong></div>] [<div class='spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>] [<script>/*<!\[CDATA\[*/var mejspath = '[(#CHEMIN{lib/mejs/mediaelement-and-player.min.js}|timestamp)]'; -(#INCLURE{javascript/mejs-init.min.js})/*\]\]>*/</script>] -[<style>(#INCLURE{#CHEMIN{lib/mejs/mediaelementplayer.min.css}|url_absolue_css})</style>] +(#INCLURE{javascript/mejs-init.min.js}|compacte{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 diff --git a/modeles/video.html b/modeles/video.html index 25df1415f890ab9e6589d713747f1bab26e1c2e3..713f495a6710088d73a2f6862c9fea791889ab59 100644 --- a/modeles/video.html +++ b/modeles/video.html @@ -14,6 +14,7 @@ <video class="mejs mejs-#ID_DOCUMENT [ mejs-(#ENV{skin})]" data-id="[(#VAL{mejs-#ID_DOCUMENT}|concat{#ENV{skin}}|md5)]" data-mejsoptions='{"alwaysShowControls": true,"pluginPath":"[(#CHEMIN{lib/mejs/flashmediaelement.swf}|dirname)/]"[,"loop":(#ENV{loop}|?{true,false})],"videoWidth":"100%",videoHeight:"100%"[,startVolume:"(#ENV{volume})"]}' + data-mejscss='[(#LISTE{#CHEMIN{lib/mejs/mediaelementplayer.min.css}}|json_encode)]' width="100%" height="100%" poster="[(#LOGO_DOCUMENT{vignette}|image_reduire{#GET{largeur},0}|extraire_attribut{src})]" @@ -35,7 +36,7 @@ [<div class='spip_doc_titre'><strong>(#TITRE)</strong></div>] [<div class='spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>] [<script>/*<!\[CDATA\[*/var mejspath = '[(#CHEMIN{lib/mejs/mediaelement-and-player.min.js}|timestamp)]'; -(#INCLURE{javascript/mejs_init.js}|compacte{js})/*\]\]>*/</script>] -<style>[(#INCLURE{#CHEMIN{lib/mejs/mediaelementplayer.min.css}|url_absolue_css})].spip_document_video .me-cannotplay {width:100% !important;height:100% !important;}.spip_document_video .me-cannotplay a {display: block;}</style> +(#INCLURE{javascript/mejs-init.min.js}|compacte{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 diff --git a/paquet.xml b/paquet.xml index 55ceafcd5c5257eb7289d9b542f10f9d04b675f1..cec8ebc5d1fc8babf47275ce583f4cc270b33c0b 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@ <paquet prefix="medias" categorie="multimedia" - version="2.10.6" + version="2.10.7" etat="stable" compatibilite="[3.0.0;3.1.*]" logo="prive/themes/spip/images/portfolio-32.png"