| author | ymh <ymh.work@gmail.com> |
| Fri, 02 Oct 2015 11:27:17 +0200 | |
| changeset 1068 | 7623f9af9272 |
| parent 1013 | 392ddcd212d7 |
| child 1072 | ac1eacb3aa33 |
| permissions | -rw-r--r-- |
| 959 | 1 |
IriSP.Widgets.DailymotionPlayer = function(player, config) { |
2 |
IriSP.Widgets.Widget.call(this, player, config); |
|
3 |
}; |
|
4 |
||
5 |
IriSP.Widgets.DailymotionPlayer.prototype = new IriSP.Widgets.Widget(); |
|
6 |
||
7 |
IriSP.Widgets.DailymotionPlayer.prototype.defaults = { |
|
8 |
aspect_ratio: 14/9 |
|
| 1013 | 9 |
}; |
| 959 | 10 |
|
11 |
IriSP.Widgets.DailymotionPlayer.prototype.draw = function() { |
|
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
12 |
|
| 959 | 13 |
if (typeof this.video === "undefined") { |
14 |
this.video = this.media.video; |
|
15 |
} |
|
16 |
||
17 |
this.height = this.height || Math.floor(this.width / this.aspect_ratio); |
|
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
18 |
|
| 959 | 19 |
var _media = this.media, |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
20 |
videoid = null, |
| 959 | 21 |
_this = this, |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
22 |
state = { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
23 |
pause: true, |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
24 |
apiready: false, |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
25 |
volume: 0, |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
26 |
time: 0, |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
27 |
duration: 0 |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
28 |
}; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
29 |
|
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
30 |
var m = this.video.match(/www.dailymotion.com\/video\/(.+)/); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
31 |
if (m) { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
32 |
videoid = m[1]; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
33 |
} |
| 959 | 34 |
|
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
35 |
var player_url = Mustache.to_html('{{ protocol }}//www.dailymotion.com/embed/video/{{ videoid }}', { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
36 |
protocol: document.location.protocol.search('http') == 0 ? document.location.protocol : 'http:', |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
37 |
videoid: videoid |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
38 |
}); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
39 |
var params = { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
40 |
'api': 'postMessage', |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
41 |
'chromeless': 1, |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
42 |
'id': 'dm_player', |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
43 |
'related': 0, |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
44 |
'autoplay': 1 |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
45 |
}; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
46 |
|
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
47 |
_this.$.html(Mustache.to_html('<iframe id="{{ id }}" src="{{ player_url }}?{{ params }}" width="{{ width }}" height="{{ height }}" frameborder="0"></iframe>', { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
48 |
player_url: player_url, |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
49 |
params: Object.keys(params).reduce(function(a,k){a.push(k+'='+encodeURIComponent(params[k]));return a;},[]).join('&'), |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
50 |
width: this.width, |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
51 |
height: this.height, |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
52 |
id: params.id |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
53 |
})); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
54 |
|
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
55 |
function setup_media_methods () { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
56 |
var dest = _this.$.find("#" + params.id)[0].contentWindow; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
57 |
var execute = function(c, v) { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
58 |
if (v !== undefined) |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
59 |
c = c + "=" + v; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
60 |
dest.postMessage(c, "*"); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
61 |
}; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
62 |
|
| 959 | 63 |
_media.getCurrentTime = function() { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
64 |
return state.time; |
| 1013 | 65 |
}; |
| 959 | 66 |
_media.getVolume = function() { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
67 |
return state.volume; |
| 1013 | 68 |
}; |
| 959 | 69 |
_media.getPaused = function() { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
70 |
return state.pause; |
| 1013 | 71 |
}; |
| 959 | 72 |
_media.getMuted = function() { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
73 |
return state.muted; |
| 1013 | 74 |
}; |
| 959 | 75 |
_media.setCurrentTime = function(_milliseconds) { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
76 |
execute("seek", _milliseconds / 1000); |
| 1013 | 77 |
}; |
| 959 | 78 |
_media.setVolume = function(_vol) { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
79 |
execute("volume", _vol * 100); |
| 1013 | 80 |
}; |
| 959 | 81 |
_media.mute = function() { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
82 |
execute("muted", 1); |
| 1013 | 83 |
}; |
| 959 | 84 |
_media.unmute = function() { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
85 |
execute("muted", 0); |
| 1013 | 86 |
}; |
| 959 | 87 |
_media.play = function() { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
88 |
execute("play"); |
| 1013 | 89 |
}; |
| 959 | 90 |
_media.pause = function() { |
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
91 |
execute("pause"); |
| 1013 | 92 |
}; |
| 959 | 93 |
}; |
94 |
||
|
1068
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
95 |
window.addEventListener("message", function (event) { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
96 |
// Parse event.data (query-string for to object) |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
97 |
|
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
98 |
// Duck-checking if event.data is a string |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
99 |
if (event.data.split === undefined) |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
100 |
return; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
101 |
|
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
102 |
var info = event.data.split("&").map( function(s) { return s.split("="); }).reduce( function(o, v) { o[v[0]] = decodeURIComponent(v[1]); return o; }, {}); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
103 |
|
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
104 |
switch (info.event) { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
105 |
case "apiready": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
106 |
state.apiready = true; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
107 |
setup_media_methods(); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
108 |
break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
109 |
//case "canplay": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
110 |
// break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
111 |
case "durationchange": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
112 |
if (info.duration.slice(-2) == "sc") { |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
113 |
state.duration = 1000 * Number(info.duration.slice(0, -2)); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
114 |
_media.setDuration(state.duration); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
115 |
} |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
116 |
break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
117 |
case "ended": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
118 |
state.pause = true; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
119 |
break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
120 |
case "loadedmetadata": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
121 |
_media.trigger("loadedmetadata"); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
122 |
break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
123 |
case "pause": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
124 |
state.pause = true; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
125 |
_media.trigger("pause"); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
126 |
break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
127 |
case "play": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
128 |
state.pause = false; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
129 |
_media.trigger("play"); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
130 |
break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
131 |
//case "playing": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
132 |
// break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
133 |
//case "progress": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
134 |
// Loading progress |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
135 |
// break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
136 |
case "seeked": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
137 |
state.time = new IriSP.Model.Time(1000 * Number(info.time)); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
138 |
_media.trigger("seeked"); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
139 |
break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
140 |
case "timeupdate": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
141 |
state.time = new IriSP.Model.Time(1000 * Number(info.time)); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
142 |
_media.trigger("timeupdate", state.time); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
143 |
break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
144 |
case "volumechange": |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
145 |
state.muted = (info.muted == "true"); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
146 |
state.volume = Number(info.volume) / 100; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
147 |
break; |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
148 |
} |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
149 |
}, false); |
|
7623f9af9272
merge pull request #3 from O. Auber
ymh <ymh.work@gmail.com>
parents:
1013
diff
changeset
|
150 |
}; |