diff -r 919e362b9db1 -r 3ab36f402b0c src/widgets/Slideshare.js --- a/src/widgets/Slideshare.js Thu Aug 30 14:45:23 2012 +0200 +++ b/src/widgets/Slideshare.js Thu Jan 02 16:40:25 2014 +0100 @@ -2,129 +2,116 @@ IriSP.Widgets.Slideshare = function(player, config) { IriSP.Widgets.Widget.call(this, player, config); - this.lastSlide = { - presentation: "", - slide: 0 - } - this.embedObject = null; - this.oembedCache = {} -} +}; IriSP.Widgets.Slideshare.prototype = new IriSP.Widgets.Widget(); IriSP.Widgets.Slideshare.prototype.defaults = { annotation_type: "slide", sync: true, - embed_width: 400, - embed_height: 300 -} +}; IriSP.Widgets.Slideshare.prototype.messages = { fr: { - slides_ : "Diapositives :" + slides_ : "Diapositives" }, en: { - slides_ : "Slides:" + slides_ : "Slides" } -} +}; IriSP.Widgets.Slideshare.prototype.template = '

{{l10n.slides_}}


'; IriSP.Widgets.Slideshare.prototype.draw = function() { - var _hide = false; - if (typeof this.annotation_type !== "undefined" && this.annotation_type) { - var _annType = this.source.getAnnotationTypes().searchByTitle(this.annotation_type); - _hide = !_annType.length; + + function insertSlideshare(_presentation, _slide) { + if (_lastEmbedded === _presentation) { + if (_embedObject && typeof _embedObject.jumpTo === "function") { + _embedObject.jumpTo(parseInt(_slide)); + } + } else { + _lastEmbedded = _presentation; + var _id = IriSP.Model.getUID(), + _params = { + allowScriptAccess: "always" + }, + _atts = { + id: _id + }, + _flashvars = { + doc : _presentation, + startSlide : _slide + }; + $container.html('
'); + swfobject.embedSWF( + "http://static.slidesharecdn.com/swf/ssplayer2.swf", + _id, + _this.embed_width, + _this.embed_height, + "8", + null, + _flashvars, + _params, + _atts + ); + _embedObject = document.getElementById(_id); + } + $container.show(); } - if (_hide) { + + var _annotations = this.getWidgetAnnotations(); + if (!_annotations.length) { this.$.hide(); } else { this.renderTemplate(); - this.$container = this.$.find(".Ldt-SlideShare-Container"); - this.bindPopcorn("timeupdate","onTimeupdate"); - this.onTimeupdate(); - } -} - -IriSP.Widgets.Slideshare.prototype.onTimeupdate = function() { - var _list = this.getWidgetAnnotationsAtTime(); - if (_list.length) { - var _description = _list[0].description, - _isurl = /^https?:\/\//.test(_description), - _presentation = _description.replace(/#.*$/,''), - _slidematch = _description.match(/(#|\?|&)id=(\d+)/), - _slide = parseInt(_slidematch && _slidematch.length > 2 ? _slidematch[2] : 1), - _this = this; - if (_presentation !== this.lastSlide.presentation) { - if (_isurl) { - if (typeof this.oembedCache[_presentation] === "undefined") { - var _ajaxUrl = "http://www.slideshare.net/api/oembed/1?url=" - + encodeURIComponent(_presentation) - + "&format=jsonp&callback=?"; - IriSP.jQuery.getJSON(_ajaxUrl, function(_oembedData) { - var _presmatch = _oembedData.html.match(/doc=([a-z0-9\-_%]+)/i); - if (_presmatch && _presmatch.length > 1) { - _this.oembedCache[_presentation] = _presmatch[1]; - _this.insertSlideshare(_presmatch[1], _slide); + var _lastPres = "", + _embedObject = null, + _oembedCache = {}, + _lastEmbedded = "", + _this = this, + $container = this.$.find(".Ldt-SlideShare-Container"); + + this.embed_width = this.embed_width || $container.innerWidth(); + this.embed_height = this.embed_height || Math.floor(this.embed_width * 3/4); + + _annotations.forEach(function(_a) { + _a.on("leave", function() { + $container.hide(); + _lastPres = ""; + }); + _a.on("enter", function() { + var _description = _a.description, + _isurl = /^https?:\/\//.test(_description), + _presentation = _description.replace(/#.*$/,''), + _slidematch = _description.match(/(#|\?|&)id=(\d+)/), + _slide = parseInt(_slidematch && _slidematch.length > 2 ? _slidematch[2] : 1); + if (_presentation !== _lastPres) { + if (_isurl) { + if (typeof _oembedCache[_presentation] === "undefined") { + var _ajaxUrl = "http://www.slideshare.net/api/oembed/1?url=" + + encodeURIComponent(_presentation) + + "&format=jsonp&callback=?"; + IriSP.jQuery.getJSON(_ajaxUrl, function(_oembedData) { + var _presmatch = _oembedData.html.match(/doc=([a-z0-9\-_%]+)/i); + if (_presmatch && _presmatch.length > 1) { + _oembedCache[_presentation] = _presmatch[1]; + insertSlideshare(_presmatch[1], _slide); + } + }); + } else { + insertSlideshare(_oembedCache[_presentation], _slide); } - }); - } else { - this.insertSlideshare(this.oembedCache[_presentation], _slide); + } else { + insertSlideshare(_presentation, _slide); + } } - } else { - this.insertSlideshare(_presentation, _slide); - } - } - if (_slide != this.lastSlide.slide && this.sync && this.embedObject && typeof this.embedObject.jumpTo === "function") { - this.embedObject.jumpTo(parseInt(_slide)); - } - this.lastSlide = { - presentation: _presentation, - slide: _slide - } - } else { - if (this.lastSlide.presentation) { - this.$container.hide(); - this.lastSlide = { - presentation: "", - slide: 0 - } - } + if (_this.sync && _embedObject && typeof _embedObject.jumpTo === "function") { + _embedObject.jumpTo(parseInt(_slide)); + } + _lastPres = _presentation; + + }); + }); } -} - -IriSP.Widgets.Slideshare.prototype.insertSlideshare = function(_presentation, _slide) { - if (this.lastEmbedded === _presentation) { - if (this.embedObject && typeof this.embedObject.jumpTo === "function") { - this.embedObject.jumpTo(parseInt(_slide)); - } - } else { - this.lastEmbedded = _presentation; - var _id = IriSP.Model.getUID(), - _params = { - allowScriptAccess: "always" - } - _atts = { - id: _id - }, - _flashvars = { - doc : _presentation, - startSlide : _slide - }; - this.$container.html('
'); - swfobject.embedSWF( - "http://static.slidesharecdn.com/swf/ssplayer2.swf", - _id, - this.embed_width, - this.embed_height, - "8", - null, - _flashvars, - _params, - _atts - ); - this.embedObject = document.getElementById(_id); - } - this.$container.show(); -} +};