src/widgets/Slideshare.js
author durandn
Fri, 25 Sep 2015 14:45:38 +0200
changeset 1067 539c9bee5372
parent 1013 392ddcd212d7
child 1072 ac1eacb3aa33
permissions -rw-r--r--
Translating comments into English
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
921
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
     1
/* TODO: Add Slide synchronization */
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
     2
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
     3
IriSP.Widgets.Slideshare = function(player, config) {
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
     4
    IriSP.Widgets.Widget.call(this, player, config);
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
     5
};
921
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
     6
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
     7
IriSP.Widgets.Slideshare.prototype = new IriSP.Widgets.Widget();
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
     8
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
     9
IriSP.Widgets.Slideshare.prototype.defaults = {
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    10
    annotation_type: "slide",
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    11
    sync: true,
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
    12
};
921
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    13
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    14
IriSP.Widgets.Slideshare.prototype.messages = {
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    15
    fr: {
988
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 965
diff changeset
    16
        slides_ : "Diapositives"
921
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    17
    },
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    18
    en: {
988
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 965
diff changeset
    19
        slides_ : "Slides"
921
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    20
    }
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
    21
};
921
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    22
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    23
IriSP.Widgets.Slideshare.prototype.template =
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    24
    '<div class="Ldt-SlideShare"><h2>{{l10n.slides_}}</h2><hr /><div class="Ldt-SlideShare-Container"></div></div>';
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    25
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    26
IriSP.Widgets.Slideshare.prototype.draw = function() {
965
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    27
    
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    28
    function insertSlideshare(_presentation, _slide) {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    29
        if (_lastEmbedded === _presentation) {
988
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 965
diff changeset
    30
            if (_embedObject && typeof _embedObject.jumpTo === "function") {
965
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    31
                _embedObject.jumpTo(parseInt(_slide));
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    32
            }
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    33
        } else {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    34
            _lastEmbedded = _presentation;
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    35
            var _id = IriSP.Model.getUID(),
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    36
                _params = {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    37
                    allowScriptAccess: "always"
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
    38
                },
965
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    39
                _atts = {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    40
                    id: _id
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    41
                },
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    42
                _flashvars = {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    43
                    doc : _presentation,
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    44
                    startSlide : _slide
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    45
                };
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    46
            $container.html('<div id="' + _id + '"></div>');
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    47
            swfobject.embedSWF(
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    48
                "http://static.slidesharecdn.com/swf/ssplayer2.swf",
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    49
                _id,
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    50
                _this.embed_width,
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    51
                _this.embed_height,
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    52
                "8",
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    53
                null,
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    54
                _flashvars,
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    55
                _params,
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    56
                _atts
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    57
            );
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    58
            _embedObject = document.getElementById(_id);
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    59
        }
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    60
        $container.show();
921
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    61
    }
965
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    62
    
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    63
    var _annotations = this.getWidgetAnnotations();
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    64
    if (!_annotations.length) {
921
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    65
        this.$.hide();
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    66
    } else {
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
    67
        this.renderTemplate();
965
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    68
        var _lastPres = "",
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    69
            _embedObject = null,
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    70
            _oembedCache = {},
988
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 965
diff changeset
    71
            _lastEmbedded = "",
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
    72
            _this = this,
988
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 965
diff changeset
    73
            $container = this.$.find(".Ldt-SlideShare-Container");
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 965
diff changeset
    74
            
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 965
diff changeset
    75
        this.embed_width = this.embed_width || $container.innerWidth();
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 965
diff changeset
    76
        this.embed_height = this.embed_height || Math.floor(this.embed_width * 3/4);
eefd336335f9 Some improvements: Hashtags can be used, links are now clickable, ....
veltr
parents: 965
diff changeset
    77
        
965
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    78
        _annotations.forEach(function(_a) {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    79
            _a.on("leave", function() {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    80
                $container.hide();
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    81
                _lastPres = "";
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    82
            });
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    83
            _a.on("enter", function() {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    84
                var _description = _a.description,
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    85
                    _isurl = /^https?:\/\//.test(_description),
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    86
                    _presentation = _description.replace(/#.*$/,''),
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    87
                    _slidematch = _description.match(/(#|\?|&)id=(\d+)/),
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    88
                    _slide = parseInt(_slidematch && _slidematch.length > 2 ? _slidematch[2] : 1);
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    89
                if (_presentation !== _lastPres) {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    90
                    if (_isurl) {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    91
                        if (typeof _oembedCache[_presentation] === "undefined") {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    92
                            var _ajaxUrl = "http://www.slideshare.net/api/oembed/1?url="
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    93
                                + encodeURIComponent(_presentation)
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    94
                                + "&format=jsonp&callback=?";
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    95
                            IriSP.jQuery.getJSON(_ajaxUrl, function(_oembedData) {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    96
                                var _presmatch = _oembedData.html.match(/doc=([a-z0-9\-_%]+)/i);
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    97
                                if (_presmatch && _presmatch.length > 1) {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    98
                                    _oembedCache[_presentation] =  _presmatch[1];
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
    99
                                    insertSlideshare(_presmatch[1], _slide);
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   100
                                }
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   101
                            });
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   102
                        } else {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   103
                            insertSlideshare(_oembedCache[_presentation], _slide);
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   104
                        }
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   105
                    } else {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   106
                        insertSlideshare(_presentation, _slide);
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   107
                    }
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   108
                }
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   109
                if (_this.sync && _embedObject && typeof _embedObject.jumpTo === "function") {
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   110
                    _embedObject.jumpTo(parseInt(_slide));
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   111
                }
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   112
                _lastPres = _presentation;
eadb7290c325 Improvements in widget communication
veltr
parents: 957
diff changeset
   113
                
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
   114
            });
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
   115
        });
921
d4dc652bf050 Added Slideshare Widget
veltr
parents:
diff changeset
   116
    }
1013
392ddcd212d7 Throwed in a bunch of semicolons
veltr
parents: 988
diff changeset
   117
};