# HG changeset patch # User Raphael Velt # Date 1340730369 -7200 # Node ID b28afee5470bfa6f2037cf783e27d0ce93d958c2 # Parent b43f711b5c3ec7b11ac80f471827c51726c67231 Changed Segment widget parameters diff -r b43f711b5c3e -r b28afee5470b web/player_embed.php --- a/web/player_embed.php Fri Jun 22 15:36:11 2012 +0200 +++ b/web/player_embed.php Tue Jun 26 19:06:09 2012 +0200 @@ -57,7 +57,10 @@ type: "Controller", disable_annotate_btn: true }, - { type: "Segments" }, + { + type: "Segments", + annotation_type: [ "chap", "découpage" ] + }, { type: "Arrow" }, { type: "Annotation" }, { type: "Tweet" }, diff -r b43f711b5c3e -r b28afee5470b web/polemicaltimeline.php --- a/web/polemicaltimeline.php Fri Jun 22 15:36:11 2012 +0200 +++ b/web/polemicaltimeline.php Tue Jun 26 19:06:09 2012 +0200 @@ -105,7 +105,10 @@ type: "Controller", disable_annotate_btn: true }, - { type: "Segments" }, + { + type: "Segments", + annotation_type: [ "chap", "découpage" ] + }, { type: "Arrow" }, { type: "Annotation" }, { type: "Tweet" }, diff -r b43f711b5c3e -r b28afee5470b web/res/metadataplayer/LdtPlayer-core.js --- a/web/res/metadataplayer/LdtPlayer-core.js Fri Jun 22 15:36:11 2012 +0200 +++ b/web/res/metadataplayer/LdtPlayer-core.js Tue Jun 26 19:06:09 2012 +0200 @@ -152,8 +152,32 @@ IriSP.Metadataplayer.prototype.onVideoDataLoaded = function() { if (typeof this.videoData !== "undefined" && typeof this.config.player.video === "undefined") { - var _media = this.videoData.currentMedia; - if (typeof _media !== "undefined") { + + var _media; + + if (typeof this.videoData.mainMedia !== "undefined") { + _media = this.videoData.getElement(this.videoData.mainMedia); + } + + if (this.config.player.type === "mashup" || this.config.player.type === "mashup-html") { + if (typeof _media === "undefined" || _media.elementType !== "mashup") { + var _mashups = this.videoData.getMashups(); + if (_mashups.length) { + _media = _mashups[0]; + } + } + } else { + if (typeof _media === "undefined" || _media.elementType !== "media") { + var _medias = this.videoData.getMedias(); + if (_medias.length) { + _media = _medias[0]; + } + } + } + + this.videoData.currentMedia = _media; + + if (typeof _media !== "undefined" && typeof _media.video !== "undefined") { this.config.player.video = _media.video; if (typeof _media.streamer !== "undefined") { this.config.player.streamer = _media.streamer; @@ -396,64 +420,47 @@ /* wrapper that simulates popcorn.js because popcorn is a bit unstable at the time */ +/* Popcorn.code replacement has been disabled. It didn't work properly and was not even used */ + IriSP.PopcornReplacement = { }; /** base class for our popcorn-compatible players. */ IriSP.PopcornReplacement.player = function(container, options) { - /* the jwplayer calls the callbacks in the global space so we need to - preserve them this way */ - if (typeof IriSP._ === "undefined") { - return; - } + + this.media = { + "paused": true, + "muted": false + }; - this.callbacks = { - onReady: IriSP._.bind(this.__initApi, this), - onTime: IriSP._.bind(this.__timeHandler, this), - onPlay: IriSP._.bind(this.__playHandler, this), - onPause: IriSP._.bind(this.__pauseHandler, this), - onSeek: IriSP._.bind(this.__seekHandler, this) - }; - - this.media = { - "paused": true, - "muted": false - }; - - this.container = container.replace(/^#/,''); //eschew the '#' - - this.msgPump = {}; /* dictionnary used to receive and send messages */ - this.__codes = []; /* used to schedule the execution of a piece of code in - a segment (similar to the popcorn.code plugin). */ - - this._options = options; + this.container = container.replace(/^#/,''); //remove '#' at beginning + this.msgPump = {}; /* dictionnary used to receive and send messages */ + this._options = options; }; IriSP.PopcornReplacement.player.prototype.listen = function(msg, callback) { - if (!this.msgPump.hasOwnProperty(msg)) - this.msgPump[msg] = []; - - this.msgPump[msg].push(callback); + if (!this.msgPump.hasOwnProperty(msg)) { + this.msgPump[msg] = []; + } + this.msgPump[msg].push(callback); }; IriSP.PopcornReplacement.player.prototype.on = IriSP.PopcornReplacement.player.prototype.listen; IriSP.PopcornReplacement.player.prototype.trigger = function(msg, params) { - if (!this.msgPump.hasOwnProperty(msg)) - return; - - var d = this.msgPump[msg]; - - for(var i = 0; i < d.length; i++) { - d[i].call(window, params); - } - + if (!this.msgPump.hasOwnProperty(msg)) { + return; + } + var d = this.msgPump[msg]; + for(var i = 0; i < d.length; i++) { + d[i].call(window, params); + } }; IriSP.PopcornReplacement.player.prototype.emit = IriSP.PopcornReplacement.player.prototype.trigger; - +/* IriSP.PopcornReplacement.player.prototype.guid = function(prefix) { var str = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); @@ -465,12 +472,12 @@ /** init the api after that flash player has been setup - called by the callback defined by the embedded flash player -*/ + IriSP.PopcornReplacement.player.prototype.__initApi = function() { this.trigger("loadedmetadata"); // we've done more than loading metadata of course, // but popcorn doesn't need to know more. this.media.muted = this.playerFns.getMute(); - /* some programmed segments are supposed to be run at the beginning */ + /* some programmed segments are supposed to be run at the beginning var i = 0; for(i = 0; i < this.__codes.length; i++) { var c = this.__codes[i]; @@ -482,7 +489,9 @@ c.onEnd(); } } + }; +*/ IriSP.PopcornReplacement.player.prototype.currentTime = function(time) { if (typeof(time) === "undefined") { @@ -502,7 +511,7 @@ IriSP.PopcornReplacement.player.prototype.pause = function() { this.media.paused = true; - this.trigger( "pause" ); + this.trigger("pause"); this.playerFns.pause(); }; @@ -551,74 +560,6 @@ this.muted(false); } -IriSP.PopcornReplacement.player.prototype.code = function(options) { - this.__codes.push(options); - return this; -}; - -/* called everytime the player updates itself - (onTime event) - */ - -IriSP.PopcornReplacement.player.prototype.__timeHandler = function(event) { - var pos = event.position; - - var i = 0; - for(i = 0; i < this.__codes.length; i++) { - var c = this.__codes[i]; - - if (pos >= c.start && pos < c.end && - pos - 1 <= c.start) { - c.onStart(); - } - - if (pos > c.start && pos > c.end && - pos - 1 <= c.end) { - c.onEnd(); - } - - } - - this.trigger("timeupdate"); -}; - -IriSP.PopcornReplacement.player.prototype.__seekHandler = function(event) { - var i = 0; - - for(i = 0; i < this.__codes.length; i++) { - var c = this.__codes[i]; - - if (event.position >= c.start && event.position < c.end) { - c.onEnd(); - } - } - - for(i = 0; i < this.__codes.length; i++) { - var c = this.__codes[i]; - - if (typeof(event.offset) === "undefined") - event.offset = 0; - - if (event.offset >= c.start && event.offset < c.end) { - c.onStart(); - } - - } - - /* this signal sends as an extra argument the position in the video. - As far as I know, this argument is not provided by popcorn */ - this.trigger("seeked", event.offset); -}; - -IriSP.PopcornReplacement.player.prototype.__playHandler = function(event) { - this.media.paused = false; - this.trigger("play"); -}; - -IriSP.PopcornReplacement.player.prototype.__pauseHandler = function(event) { - this.media.paused = true; - this.trigger("pause"); -}; IriSP.PopcornReplacement.player.prototype.roundTime = function() { var currentTime = this.currentTime(); @@ -1285,18 +1226,6 @@ return this.directory.getElement(_elId); } -IriSP.Model.Source.prototype.setCurrentMediaId = function(_idRef) { - if (typeof _idRef !== "undefined") { - this.currentMedia = this.getElement(_idRef); - } -} - -IriSP.Model.Source.prototype.setDefaultCurrentMedia = function() { - if (typeof this.currentMedia === "undefined" && this.getMedias().length) { - this.currentMedia = this.getMedias()[0]; - } -} - IriSP.Model.Source.prototype.get = function() { this.status = IriSP.Model._SOURCE_STATUS_WAITING; this.handleCallbacks(); @@ -1690,13 +1619,11 @@ this.player = document.getElementById(this.container); this.player.addEventListener("onStateChange", "onAllocineStateChange"); this.player.cueVideoByUrl(this._options.video); - this.callbacks.onReady(); + this.trigger("loadedmetadata"); }; IriSP.PopcornReplacement.allocine.prototype.progressHandler = function(progressInfo) { - this.callbacks.onTime({ - position: progressInfo.mediaTime - }); + this.trigger("timeupdate"); } @@ -1718,27 +1645,18 @@ } IriSP.PopcornReplacement.allocine.prototype.stateHandler = function(state) { - console.log("stateHandler"); switch(state) { case 1: - this.callbacks.onPlay(); + this.trigger("play"); break; case 2: - this.callbacks.onPause(); + this.trigger("pause"); break; case 3: - this.callbacks.onSeek({ - position: this.player.getCurrentTime() - }); + this.trigger("seeked"); break; - - /* - case 5: - this.callbacks.onReady(); - break; - */ } };/* To wrap a player the develop should create a new class derived from @@ -1852,31 +1770,26 @@ this.player.addEventListener("onVideoProgress", "onDailymotionVideoProgress"); this.player.cueVideoByUrl(this._options.video); - this.callbacks.onReady(); + this.trigger("loadedmetadata"); }; IriSP.PopcornReplacement.dailymotion.prototype.onProgress = function(progressInfo) { - - this.callbacks.onTime({ - position: progressInfo.mediaTime - }); + this.trigger("timeupdate"); } IriSP.PopcornReplacement.dailymotion.prototype.onStateChange = function(state) { switch(state) { case 1: - this.callbacks.onPlay(); + this.trigger("play"); break; case 2: - this.callbacks.onPause(); + this.trigger("pause"); break; case 3: - this.callbacks.onSeek({ - position: this.player.getCurrentTime() - }); + this.trigger("seeked"); break; } @@ -1890,12 +1803,13 @@ this.media.duration = options.duration; /* optional */ - var _player = jwplayer(this.container); + var _player = jwplayer(this.container), + _this = this; /* Définition des fonctions de l'API - */ this.playerFns = { - play: function() { return _player.play(); }, - pause: function() { return _player.pause(); }, + play: function() { return _player.play(true); }, + pause: function() { return _player.pause(true); }, getPosition: function() { return _player.getPosition(); }, seek: function(pos) { return _player.seek(pos); }, getMute: function() { return _player.getMute() }, @@ -1904,7 +1818,23 @@ setVolume: function(p) { return _player.setVolume(Math.floor(100*p)); } } - options.events = this.callbacks; + options.events = { + onReady: function() { + _this.trigger("loadedmetadata"); + }, + onTime: function() { + _this.trigger("timeupdate"); + }, + onPlay: function() { + _this.trigger("play"); + }, + onPause: function() { + _this.trigger("pause"); + }, + onSeek: function() { + _this.trigger("seeked"); + } + }; _player.setup(options); }; @@ -1927,11 +1857,15 @@ IriSP._(metadata.currentMedia.medias).each(function(_media) { var _tmpId = Popcorn.guid("video"), - _videoEl = IriSP.jQuery('