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