# HG changeset patch # User ymh # Date 1291218236 -3600 # Node ID 849bbb496fe6e8d3064241f33f3cc966a2bdfb52 # Parent 6de7f434618a7ff6d2ac5c56af2fb99462728439 maj client diff -r 6de7f434618a -r 849bbb496fe6 client/player/src/js/LdtPlayer.js --- a/client/player/src/js/LdtPlayer.js Wed Dec 01 16:29:15 2010 +0100 +++ b/client/player/src/js/LdtPlayer.js Wed Dec 01 16:43:56 2010 +0100 @@ -1,4 +1,4 @@ -/* +/* * * Copyright 2010 Institut de recherche et d'innovation * contributor(s) : Samuel Huron @@ -17,13 +17,11 @@ * knowledge of the CeCILL-C license and that you accept its terms. */ - - - if(window.__IriSP === undefined ){ var __IriSP={};} -// Player Configuration -__IriSP.config = { +// Player Configuration +__IriSP.config = undefined; +__IriSP.configDefault = { metadata:{ format:'cinelab', src:'http://exp.iri.centrepompidou.fr/franceculture/franceculture/ldt/cljson/id/ef4dcc2e-8d3b-11df-8a24-00145ea4a2be', @@ -39,7 +37,24 @@ }, player:{ type:'jwplayer', - src:'../res/swf/player.swf' + src:'../res/swf/player.swf', + params:{ + allowfullscreen:"true", + allowscriptaccess:"always", + wmode:"transparent" + }, + flashvars:{ + streamer:"streamer", + file:"file", + live:"true", + autostart:"true", + controlbar:"none", + playerready:"__IriSP.playerReady" + }, + attributes:{ + id:"Ldtplayer1", + name:"Ldtplayer1" + } }, module:null }; @@ -57,8 +72,7 @@ "\n"+ "\n "+ "\n "+ -"\n "+ -"\n "; +"\n "; // Official instance - to refactor ? __IriSP.MyLdt = null; @@ -68,8 +82,8 @@ // genral var (old code) - to refactor __IriSP.Durration = null; -__IriSP.playerLdtWidth= null; -__IriSP.playerLdtHeight= null; +__IriSP.playerLdtWidth = null; +__IriSP.playerLdtHeight = null; @@ -77,7 +91,26 @@ __IriSP.init = function (config){ - __IriSP.config = config; + + if(config === null){ + + __IriSP.config = __IriSP.configDefault; + + } else { + + __IriSP.config = config; + + + + if (__IriSP.config.player.params == null){ + __IriSP.config.player.params = __IriSP.configDefault.player.params;} + + if (__IriSP.config.player.flashvars == null){ + __IriSP.config.player.flashvars = __IriSP.configDefault.player.flashvars;} + if (__IriSP.config.player.attributes == null){ + __IriSP.config.player.attributes = __IriSP.configDefault.player.attributes;} + } + var metadataSrc = __IriSP.config.metadata.src; var guiContainer = __IriSP.config.gui.container; var guiMode = __IriSP.config.gui.mode; @@ -85,7 +118,6 @@ // Localize jQuery variable __IriSP.jQuery = null; - /******** Load jQuery if not present *********/ if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.4.2') { var script_tag = document.createElement('script'); @@ -201,7 +233,7 @@ /******* Load Metadata *******/ __IriSP.jQuery.ajax({ - dataType: 'jsonp', + dataType: __IriSP.config.metadata.load, url:metadataSrc, success : function(json){ @@ -294,6 +326,7 @@ // AUDIO */ // PB dans le html : ; + if(__IriSP.config.gui.mode=="radio"){ __IriSP.jQuery( "
\n"+ "
\n"+ " Get flash to see this player \n"+ @@ -335,9 +368,54 @@ //"
Mots clefs :
"+ "
"+ "
").appendTo("#"+__IriSP.config.gui.container); + } else if(__IriSP.config.gui.mode=="video") { + + __IriSP.jQuery( "
\n"+ + "
\n"+ + " Get flash to see this player \n"+ + "
\n"+ + "
\n"+ + "
\n"+ + " \n"+ + " \n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + " \n"+ + " \n"+ + "
\n"+ + "
 \;
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + "
\n"+ + " \n"+ + " "+__IriSP.LdtShareTool+"\n"+ + " \n"+ + "
\n"+ + "
"+ + "
"+ + //"
Mots clefs :
"+ + "
"+ + "
").appendTo("#"+__IriSP.config.gui.container); + + } + __IriSP.trace("__IriSP.createHtml","end"); - __IriSP.jQuery("#Ldt-Annotations").width(width-(75*2)); __IriSP.jQuery("#Ldt-Show-Arrow-container").width(width-(75*2)); __IriSP.jQuery("#Ldt-ShowAnnotation-audio").width(width-10); @@ -393,7 +471,7 @@ //__IriSP.jQuery("#Ldt-Root").css('display','visible'); __IriSP.trace("__IriSP.createInterface",width+","+height+","+duration+","); - __IriSP.jQuery("#Ldt-ShowAnnotation").click(function () { + __IriSP.jQuery("#Ldt-ShowAnnotation").click(function () { //__IriSP.jQuery(this).slideUp(); }); @@ -472,17 +550,25 @@ __IriSP.MyApiPlayer = this; - __IriSP.createPlayer(width,height,this.url,this.duration,this.streamerPath,this.MySwfPath); + __IriSP.createPlayer(this.url,this.streamerPath); __IriSP.trace("__IriSP.APIplayer","__IriSP.createPlayer"); + + //__IriSP.config.player + /* + - dailymotion // &enableApi=1&chromeless=1 + - youtube + - html5 + - flowplayer + - jwplayer + */ } __IriSP.APIplayer.prototype.ready = function(player){ //__IriSP.trace("__IriSP.APIplayer.prototype.APIpReady"," __IriSP.createInterface"); __IriSP.createInterface(this.width,this.height,this.duration); - __IriSP.trace("__IriSP.APIplayer.prototype.APIpReady","END __IriSP.createInterface"); + //__IriSP.trace("__IriSP.APIplayer.prototype.APIpReady","END __IriSP.createInterface"); - // hashchange EVENT if (window.addEventListener){ @@ -521,14 +607,36 @@ } __IriSP.APIplayer.prototype.play = function(){ this.hashchangeUpdate = true; - __IriSP.player.sendEvent('PLAY'); + //__IriSP.trace("__IriSP.config.player.type",__IriSP.config.player.type); + if(__IriSP.config.player.type=='jwplayer'){ + + __IriSP.player.sendEvent('PLAY'); + + } else if(__IriSP.config.player.type=='dailymotion' + || __IriSP.config.player.type=='youtube') { + + var status = __IriSP.player.getPlayerState(); + __IriSP.trace("__IriSP.APIplayer.prototype.play.status",status); + if (status!=1){ + __IriSP.player.playVideo(); + }else{ + __IriSP.player.pauseVideo(); + } + } } __IriSP.APIplayer.prototype.mute = function(){ __IriSP.player.sendEvent('MUTE'); + + //alert(__IriSP.jQuery(".ui-icon-volume-on").css("background-position-x")); + if (__IriSP.jQuery(".ui-icon-volume-on").css("background-position")=="-144px -160px"){ + __IriSP.jQuery(".ui-icon-volume-on").css("background-position","-130px -160px"); + } else { + __IriSP.jQuery(".ui-icon-volume-on").css("background-position","-144px -160px"); + } } __IriSP.APIplayer.prototype.share = function(network){ - var MyMessage = "Je regarde :"; + var MyMessage = encodeURIComponent("J'écoute Les Retours du Dimanche : "); var MyURLNow = window.location.href; var shareURL; //alert(network+" : "+MyURLNow); @@ -546,10 +654,17 @@ //alert(network+" non actif pour l'instant : "+MyURLNow); } - window.location.href = shareURL+encodeURIComponent(MyURLNow); + window.open(shareURL+encodeURIComponent(MyURLNow)); + //window.location.href = shareURL+encodeURIComponent(MyURLNow); } __IriSP.APIplayer.prototype.seek = function (time){ - __IriSP.player.sendEvent('SEEK', time); + __IriSP.trace("__IriSP.APIplayer.prototype.seek",time); + if(__IriSP.config.player.type=='jwplayer'){ + __IriSP.player.sendEvent('SEEK', time); + } else if(__IriSP.config.player.type=='dailymotion' + || __IriSP.config.player.type=='youtube') { + __IriSP.player.seekTo(time); + } this.changePageUrlOffset(time); } __IriSP.APIplayer.prototype.update = function (time){ @@ -589,48 +704,172 @@ } - /* CODE SPECIAL JW PLAYER creation + listener */ __IriSP.currentPosition = 0; __IriSP.currentVolume = 50; -__IriSP.player = null; -__IriSP.startPosition = null; +__IriSP.player = null; +__IriSP.startPosition = null; + + + +__IriSP.createPlayer = function (url,streamerPath) { -__IriSP.createPlayer = function (width,height,url,duration,streamerPath,MySwfPath) { + if(__IriSP.config.player.type=='dailymotion'){ + __IriSP.config.player.src = __IriSP.config.player.src+"&chromeless=1&enableApi=1"; + } else if (__IriSP.config.player.type=='youtube'){ + __IriSP.config.player.src = __IriSP.config.player.src+"&enablejsapi=1&version=3"; + } + __IriSP.trace("__IriSP.createPlayer","start"); - __IriSP.myUrlFragment = url.split(streamerPath); - var file = __IriSP.myUrlFragment[1]; - var streamer = streamerPath; + __IriSP.myUrlFragment = url.split(streamerPath); + __IriSP.config.player.flashvars.streamer = streamerPath; + __IriSP.config.player.flashvars.file = __IriSP.myUrlFragment[1]; + + var flashvars = __IriSP.config.player.flashvars; + var params = __IriSP.config.player.params; + var attributes = __IriSP.config.player.attributes; - var flashvars = { - streamer:streamer, - file:file, - live:"true", - autostart:"true", - controlbar:"none", - playerready:"__IriSP.playerReady" - } - - var params = { - allowfullscreen:"true", - allowscriptaccess:"always", - wmode:"transparent" - } - - var attributes = { - id:"Ldtplayer1", - name:"Ldtplayer1" - } + __IriSP.trace( + "__IriSP.createPlayer", + "SWFOBJECT src:"+ + __IriSP.config.player.src+ + " " +__IriSP.config.gui.width+ + " " +__IriSP.config.gui.height + ); - __IriSP.trace("__IriSP.createPlayer","SWFOBJECT src:"+__IriSP.config.player.src+" " +width+" "+height); - swfobject.embedSWF(__IriSP.config.player.src, "Ldt-PlaceHolder", width, height, "9.0.115", false, flashvars, params, attributes); - + swfobject.embedSWF( + __IriSP.config.player.src, + "Ldt-PlaceHolder", + __IriSP.config.gui.width, + __IriSP.config.gui.height, + "9.0.115", + false, + flashvars, + params, + attributes + ); + // need a methode to // re execute if this swf call does'nt work } + +/* API DAILYMOTION */ +onDailymotionPlayerReady = function (playerid){ + + //alert(playerid); + __IriSP.player = document.getElementById(__IriSP.config.player.attributes.id); + __IriSP.MyApiPlayer.ready(__IriSP.player); + + var url = document.location.href; + var time = __IriSP.retrieveTimeFragment(url); + __IriSP.startPosition = time; + __IriSP.DailymotionAddListeners(); + + __IriSP.MyApiPlayer.ready(playerid); +} +__IriSP.DailymotionAddListeners = function () { + if (__IriSP.player) { + __IriSP.trace("__IriSP.addListeners","ADD Listener "); + //__IriSP.player.addEventListener("onStateChange", "__IriSP.DailymotionPositionListener"); + setTimeout("__IriSP.DailymotionPositionListener()",100); + __IriSP.DailymotionPositionListener(); + __IriSP.player.addModelListener("VOLUME", "__IriSP.volumeListener"); + //__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor'); + } else { + __IriSP.setTimeout("__IriSP.DailymotionAddListeners()",100); + } +} +__IriSP.DailymotionPositionListener = function() { + + __IriSP.currentPosition = __IriSP.player.getCurrentTime(); + //__IriSP.trace("__IriSP.DailymotionPositionListener",__IriSP.currentPosition); + //__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition); + + __IriSP.jQuery("#slider-range-min").slider("value",__IriSP.currentPosition); + __IriSP.jQuery("#amount").val(__IriSP.currentPosition+" s"); + // afficher annotation + /*__IriSP.MyLdt.checkTime(__IriSP.currentPosition); + */ + + setTimeout("__IriSP.DailymotionPositionListener()",10); +} + +/* API YOUTUBE */ +onYouTubePlayerReady= function (playerid){ + + var url = document.location.href; + var time = __IriSP.retrieveTimeFragment(url); + __IriSP.player = document.getElementById(__IriSP.config.player.attributes.id); + __IriSP.startPosition = time; + + __IriSP.MyApiPlayer.ready(__IriSP.player); + + __IriSP.MyApiPlayer.seek(time); + __IriSP.MyApiPlayer.play(); + + + __IriSP.YouTubeAddListeners(); + __IriSP.trace("onYouTubePlayerReady=",time); + //__IriSP.MyApiPlayer.ready(playerid); +} +__IriSP.YouTubeAddListeners = function () { + if (__IriSP.player) { + __IriSP.trace("__IriSP.addListeners","ADD Listener "); + __IriSP.player.addEventListener("onStateChange", "__IriSP.YouTubeStateMonitor"); + setTimeout("__IriSP.YouTubePositionListener()",100); + __IriSP.player.addModelListener("VOLUME", "__IriSP.volumeListener"); + //__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor'); + } else { + __IriSP.setTimeout("__IriSP.YouTubePositionListener()",100); + } +} +__IriSP.YouTubePositionListener = function() { + + __IriSP.currentPosition = __IriSP.player.getCurrentTime(); + //__IriSP.trace("__IriSP.YouTubePositionListener",__IriSP.currentPosition); + //__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition); + + __IriSP.MyLdt.checkTime(__IriSP.currentPosition); + __IriSP.jQuery("#slider-range-min").slider("value",__IriSP.currentPosition); + __IriSP.jQuery("#amount").val(__IriSP.currentPosition+" s"); + // afficher annotation + __IriSP.MyLdt.checkTime(__IriSP.currentPosition); + + + setTimeout("__IriSP.YouTubePositionListener()",10); +} +__IriSP.YouTubeStateMonitor = function (obj) { + __IriSP.player.addModelListener('__IriSP.YouTubeStateMonitor ', newstate); + //alert(newstate+" "+obj.newstate); + if(newstate == '2') + { + __IriSP.trace("__IriSP.stateMonitor","PAUSE"); + __IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition); + + }else if (newstate == '1'){ + // une fois la video prete a lire la déplacer au bon timecode + if(__IriSP.startPosition!=null){ + __IriSP.MyApiPlayer.update(__IriSP.startPosition); + __IriSP.startPosition = null; + } + } + else if (newstate == '-1'){ + // une fois la video prete a lire la déplacer au bon timecode + if(__IriSP.startPosition!=null){ + __IriSP.MyApiPlayer.update(__IriSP.startPosition); + __IriSP.startPosition = null; + } + } else if (newstate == '3'){ + __IriSP.trace("__IriSP.stateMonitor","BUFFERING : "); + //changePageUrlOffset(currentPosition); + } + +} + +/* API JW PLAYER */ __IriSP.playerReady = function (thePlayer) { //__IriSP.trace("__IriSP.playerReady","PLAYER READY !!!!!!!!!!!!"); @@ -655,17 +894,20 @@ __IriSP.player.addControllerListener("VOLUME", "__IriSP.volumeListener"); __IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor'); } else { - __IriSP.setTimeout("addListeners()",100); + __IriSP.setTimeout("__IriSP.addListeners()",100); } // et changer les boutons } __IriSP.stateMonitor = function (obj) { + + if(obj.newstate == 'PAUSED') { __IriSP.trace("__IriSP.stateMonitor","PAUSE"); __IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition); + __IriSP.jQuery(".ui-icon-play").css("background-position","0px -160px"); } else if (obj.newstate == 'PLAYING'){ // une fois la video prete a lire la déplacer au bon timecode @@ -673,6 +915,7 @@ __IriSP.MyApiPlayer.update(__IriSP.startPosition); __IriSP.startPosition = null; } + __IriSP.jQuery(".ui-icon-play").css("background-position","-16px -160px"); } else if (obj.newstate == 'BUFFERING'){ __IriSP.trace("__IriSP.stateMonitor","BUFFERING : "); //changePageUrlOffset(currentPosition); @@ -688,6 +931,8 @@ __IriSP.jQuery("#amount").val(obj.position+" s"); // afficher annotation __IriSP.MyLdt.checkTime(__IriSP.currentPosition); + + } __IriSP.volumeListener = function (obj) { __IriSP.currentVolume = obj.percentage; @@ -729,6 +974,7 @@ // this.annotations = new Array(); this.duration = duration; + this.annotationOldRead=""; __IriSP.LDTligne = this; __IriSP.trace("__IriSP.Ligne","CREATE "+__IriSP.LDTligne); } @@ -773,9 +1019,10 @@ __IriSP.Ligne.prototype.checkTime = function(time){ var annotationTempo = -1; //__IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",time); + //__IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",this.annotations.length); for (var i=0; i < this.annotations.length; ++i){ - var annotationTempo = this.annotations[i]; + annotationTempo = this.annotations[i]; if (time>annotationTempo.begin/1000 && time\n \n \n \n "; -__IriSP.MyLdt=null;__IriSP.MyTags=null;__IriSP.MyApiPlayer=null;__IriSP.player=null;__IriSP.Durration=null;__IriSP.playerLdtWidth=null;__IriSP.playerLdtHeight=null; -__IriSP.init=function(a){function b(){var f=document.createElement("script");f.setAttribute("type","text/javascript");f.setAttribute("src",__IriSP.lib.jQueryToolTip);f.onload=c;f.onreadystatechange=function(){if(this.readyState=="complete"||this.readyState=="loaded")c("jquery.tools.min.js loded")};var i=document.createElement("script");i.setAttribute("type","text/javascript");i.setAttribute("src",__IriSP.lib.swfObject);i.onload=c;i.onreadystatechange=function(){if(this.readyState=="complete"||this.readyState== -"loaded")c("swfobject.js loded")};var j=document.createElement("script");j.setAttribute("type","text/javascript");j.setAttribute("src",__IriSP.lib.jQueryUI);j.onload=c;j.onreadystatechange=function(){if(this.readyState=="complete"||this.readyState=="loaded")c("jquery-ui.min.js loded")};(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(f);(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(j);(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(i)} -function c(){g+=1;g===3&&d()}function d(){__IriSP.jQuery=window.jQuery.noConflict(true);__IriSP.jQuery(document).ready(function(f){var i=__IriSP.jQuery("",{rel:"stylesheet",type:"text/css",href:__IriSP.lib.cssjQueryUI,"class":"dynamic_css"}),j=__IriSP.jQuery("",{rel:"stylesheet",type:"text/css",href:__IriSP.config.gui.css,"class":"dynamic_css"});i.appendTo("head");j.appendTo("head");f.browser.msie&&f(".dynamic_css").clone().appendTo("head");__IriSP.createMyHtml();__IriSP.jQuery.ajax({dataType:"jsonp", -url:h,success:function(e){__IriSP.trace("ajax","success");if(e==="")alert("ERREUR DE CHARGEMENT JSON");else{new __IriSP.Media(e.medias[0].id,e.medias[0].href,e.medias[0].meta["dc:duration"],e.medias[0]["dc:title"],e.medias[0]["dc:description"]);__IriSP.trace("__IriSP.MyApiPlayer",__IriSP.config.gui.width+" "+__IriSP.config.gui.height+" "+e.medias[0].href+" "+e.medias[0].meta["dc:duration"]+" "+e.medias[0].meta.item.value);__IriSP.MyApiPlayer=new __IriSP.APIplayer(__IriSP.config.gui.width,__IriSP.config.gui.height, -e.medias[0].href,e.medias[0].meta["dc:duration"],e.medias[0].meta.item.value);__IriSP.trace("__IriSP.init.main","__IriSP.Ligne");__IriSP.MyLdt=new __IriSP.Ligne(e["annotation-types"][0].id,e["annotation-types"][0]["dc:title"],e["annotation-types"][0]["dc:description"],e.medias[0].meta["dc:duration"]);__IriSP.trace("__IriSP.init.main","__IriSP.Tags");__IriSP.MyTags=new __IriSP.Tags(e.tags);__IriSP.jQuery.each(e.annotations,function(l,k){k.meta["id-ref"]==__IriSP.MyLdt.id&&__IriSP.MyLdt.addAnnotation(k.id, -k.begin,k.end,k.media,k.content.title,k.content.description,k.content.color,k.tags)});__IriSP.jQuery.each(e.lists,function(){__IriSP.trace("lists","")});__IriSP.jQuery.each(e.views,function(){__IriSP.trace("views","")})}},error:function(e){alert("ERROR : "+e)}})})}__IriSP.config=a;var h=__IriSP.config.metadata.src;__IriSP.jQuery=null;if(window.jQuery===undefined||window.jQuery.fn.jquery!=="1.4.2"){a=document.createElement("script");a.setAttribute("type","text/javascript");a.setAttribute("src",__IriSP.lib.jQuery); -a.onload=b;a.onreadystatechange=function(){if(this.readyState=="complete"||this.readyState=="loaded")b()};(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(a)}else{__IriSP.jQuery=window.jQuery;b()}var g=0}; -__IriSP.createMyHtml=function(){var a=__IriSP.config.gui.width;__IriSP.jQuery("
\n\t
\n\t\tGet flash to see this player\t\n\t
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n
 
\n
\n \t
\n
\n
\n
\n
\n\t
\n\t\t
\n\t\t
\n \t\t