Browse Source

Finalisation de la récupération de la fin de lecture de playlist pour le lecteur streaming générique.

Sevajol Bastien 11 years ago
parent
commit
da46b7a3fb

+ 0 - 252
src/Muzich/CoreBundle/Resources/public/js/play2.js View File

@@ -1,4 +1,3 @@
1
-
2 1
 function DynamicPlayer()
3 2
 {
4 3
   
@@ -33,257 +32,6 @@ function DynamicPlayer()
33 32
   
34 33
 }
35 34
 
36
-function YoutubePlayer(ref_id, object_for_player)
37
-{
38
-  var _ref_id = ref_id;
39
-  var _object_for_player = object_for_player;
40
-  var _yt_player;
41
-  
42
-  this.play = function()
43
-  { 
44
-    create_player();
45
-  }
46
-  
47
-  var create_player = function()
48
-  {
49
-    var div_for_iframe = $('<div>').attr('id', _object_for_player.attr('id')+'_iframe');
50
-    _object_for_player.append(div_for_iframe);
51
-    
52
-    _yt_player = new YT.Player(_object_for_player.attr('id')+'_iframe', {
53
-      height  : config_player_youtube_height,
54
-      width   : config_player_youtube_width,
55
-      videoId : _ref_id,
56
-      events  : {
57
-        'onReady': onPlayerReady,
58
-        'onStateChange': onPlayerStateChange
59
-      }
60
-    });
61
-    
62
-    
63
-  }
64
-  
65
-  var onPlayerReady = function(event)
66
-  {
67
-    _yt_player.playVideo();
68
-  }
69
-  
70
-  var onPlayerStateChange = function(event)
71
-  {
72
-    if (event.data == YT.PlayerState.PLAYING)
73
-    {
74
-      
75
-    }
76
-    if (event.data == YT.PlayerState.ENDED)
77
-    {
78
-      
79
-    }
80
-    if (event.data == YT.PlayerState.PAUSED)
81
-    {
82
-      
83
-    }
84
-    if (event.data == YT.PlayerState.BUFFERING)
85
-    {
86
-      
87
-    }
88
-    if (event.data == YT.PlayerState.CUED)
89
-    {
90
-      
91
-    }
92
-  }
93
-  
94
-  this.pause = function()
95
-  {
96
-    _yt_player.pauseVideo();
97
-  }
98
-  
99
-  this.stop = function()
100
-  {
101
-    _yt_player.stopVideo();
102
-    _object_for_player.html('');
103
-  }
104
-}
105
-
106
-function GenericPlayer(ref_id, object_for_player)
107
-{
108
-  var _ref_id = ref_id;
109
-  var _object_for_player = object_for_player;
110
-  
111
-  this.play = function()
112
-  {
113
-    JQueryJson(url_get_embed_for_element+'/'+_ref_id, {}, function(response){
114
-      if (response.status == 'success')
115
-      {
116
-        object_for_player.html(response.data);
117
-      }
118
-    });
119
-  }
120
-  
121
-  this.stop = function()
122
-  {
123
-    _object_for_player.html('');
124
-  }
125
-}
126
-
127
-function SoundCloudPlayer(ref_id, object_for_player)
128
-{
129
-  var _ref_id = ref_id;
130
-  var _object_for_player = object_for_player;
131
-  var _player = null;
132
-  var _sounds_count = 0;
133
-  var _current_sound_index = 0;
134
-  
135
-  this.play = function()
136
-  {
137
-    if (!_player)
138
-    {
139
-      createPlayer();
140
-    }
141
-  }
142
-  
143
-  var createPlayer = function()
144
-  {
145
-    var div_for_iframe = $('<div>').attr('id', _object_for_player.attr('id')+'_iframe');
146
-    _object_for_player.append(div_for_iframe);
147
-    
148
-    SC.initialize({
149
-      client_id: '39946ea18e3d78d64c0ac95a025794e1'
150
-    });
151
-    
152
-    SC.oEmbed(_ref_id, {
153
-      show_artwork: false
154
-    }, function(oembed){
155
-      _object_for_player.html(oembed.html)
156
-      var iframe = _object_for_player.find('iframe')[0];
157
-      _player = SC.Widget(iframe);
158
-      _player.bind(SC.Widget.Events.READY, event_ready);
159
-      _player.bind(SC.Widget.Events.PLAY, event_play);
160
-      _player.bind(SC.Widget.Events.FINISH, event_finish);
161
-    });
162
-    
163
-    var event_ready = function()
164
-    {
165
-      console.log('sc ready');
166
-      _player.play();
167
-      _player.getSounds(function(value){
168
-        _sounds_count = value.length;
169
-      });
170
-    }
171
-    
172
-    var event_play = function()
173
-    {
174
-      console.log('sc play');
175
-      _player.getSounds(function(value){
176
-        _sounds_count = value.length;
177
-      });
178
-      _player.getCurrentSoundIndex(function(value){
179
-        _current_sound_index = value;
180
-      });
181
-    }
182
-    
183
-    var event_finish = function()
184
-    {
185
-      if (_sounds_count == _current_sound_index+1)
186
-      {
187
-        event_finish_playlist();
188
-      }
189
-    }
190
-    
191
-    var event_finish_playlist = function()
192
-    {
193
-      // Fin de lecture
194
-    }
195
-    
196
-  }
197
-}
198
-
199
-function GenericSong(title, mp3)
200
-{
201
-  this.title = title;
202
-  this.mp3   = mp3;
203
-}
204
-
205
-function JamendoPlayer(ref_id, object_for_player)
206
-{
207
-  var _ref_id = ref_id;
208
-  var _object_for_player = object_for_player;
209
-  var _playlist = new Array();
210
-  
211
-  this.play = function()
212
-  {
213
-    create_player();
214
-  }
215
-  
216
-  var create_player = function()
217
-  {
218
-    // TODO efactoriser dans un objet lecteur generique
219
-    var jplayer_player  = $('#jquery_jplayer_1').clone();
220
-    var jplayer_content = $('#jp_container_1').clone();
221
-    
222
-    jplayer_player.attr ('id', 'jplayer_player_element_'+ref_id);
223
-    jplayer_content.attr('id', 'jplayer_content_element_'+ref_id);
224
-    
225
-    _object_for_player.html('');
226
-    _object_for_player.append(jplayer_player);
227
-    _object_for_player.append(jplayer_content);
228
-    
229
-    JQueryJson(url_element_get_stream_data+'/'+ref_id, {}, function(response){
230
-      if (response.status == 'success')
231
-      {
232
-        
233
-        for(var i = 0; i < response.data.length; i++)
234
-        {
235
-          var song = new GenericSong(response.data[i].name, response.data[i].url);
236
-          _playlist[i] = song;
237
-        }
238
-        
239
-        autoplay_generic_player_playlist = new jPlayerPlaylist
240
-        (
241
-          {
242
-            jPlayer: '#jplayer_player_element_'+ref_id,
243
-            cssSelectorAncestor: '#jplayer_content_element_'+ref_id
244
-          },
245
-          _playlist,
246
-          {
247
-            playlistOptions:
248
-            {
249
-              autoPlay: true,
250
-              enableRemoveControls: true
251
-            },
252
-            swfPath: "/jplayer/js",
253
-            supplied: "mp3",
254
-            wmode: "window"
255
-          }
256
-        );
257
-        
258
-        $('#jplayer_player_element_'+ref_id).bind($.jPlayer.event.play, event_play);
259
-        $('#jplayer_player_element_'+ref_id).bind($.jPlayer.event.ended, event_end);
260
-        $('#jplayer_player_element_'+ref_id).bind($.jPlayer.event.error, event_error);
261
-        
262
-      }
263
-    });
264
-  }
265
-  
266
-  var event_play = function(event)
267
-  {
268
-    
269
-  }
270
-  
271
-  var event_end = function(event)
272
-  {
273
-    
274
-  }
275
-  
276
-  var event_error = function(event)
277
-  {
278
-    
279
-  }
280
-  
281
-  this.stop = function()
282
-  {
283
-    
284
-  }
285
-}
286
-
287 35
 function PlayersManager()
288 36
 {
289 37
   var _players = new Array();

+ 20 - 0
src/Muzich/CoreBundle/Resources/public/js/player/GenericPlayer.js View File

@@ -0,0 +1,20 @@
1
+function GenericPlayer(ref_id, object_for_player)
2
+{
3
+  var _ref_id = ref_id;
4
+  var _object_for_player = object_for_player;
5
+  
6
+  this.play = function()
7
+  {
8
+    JQueryJson(url_get_embed_for_element+'/'+_ref_id, {}, function(response){
9
+      if (response.status == 'success')
10
+      {
11
+        object_for_player.html(response.data);
12
+      }
13
+    });
14
+  }
15
+  
16
+  this.stop = function()
17
+  {
18
+    _object_for_player.html('');
19
+  }
20
+}

+ 116 - 0
src/Muzich/CoreBundle/Resources/public/js/player/GenericStreamingPlayer.js View File

@@ -0,0 +1,116 @@
1
+function GenericStreamingPlayer(ref_id, object_for_player,
2
+  callback_event_play,
3
+  callback_event_end,
4
+  callback_event_error,
5
+  callback_event_finish_playlist
6
+)
7
+{
8
+  var _ref_id = ref_id;
9
+  var _object_for_player = object_for_player;
10
+  var _playlist = new Array();
11
+  var _player = null;
12
+  
13
+  var _callback_event_play = callback_event_play;
14
+  var _callback_event_end = callback_event_end;
15
+  var _callback_event_error = callback_event_error;
16
+  var _callback_event_finish_playlist = callback_event_finish_playlist;
17
+  
18
+  var _current_index = 0;
19
+  
20
+  this.create_player = function()
21
+  {
22
+    var jplayer_player  = $('#jquery_jplayer_1').clone();
23
+    var jplayer_content = $('#jp_container_1').clone();
24
+    
25
+    jplayer_player.attr ('id', 'jplayer_player_element_'+ref_id);
26
+    jplayer_content.attr('id', 'jplayer_content_element_'+ref_id);
27
+    
28
+    _object_for_player.html('');
29
+    _object_for_player.append(jplayer_player);
30
+    _object_for_player.append(jplayer_content);
31
+    
32
+    JQueryJson(url_element_get_stream_data+'/'+ref_id, {}, function(response){
33
+      if (response.status == 'success')
34
+      {
35
+        
36
+        for(var i = 0; i < response.data.length; i++)
37
+        {
38
+          var song = new GenericSong(response.data[i].name, response.data[i].url);
39
+          _playlist[i] = song;
40
+        }
41
+        
42
+        _player = new jPlayerPlaylist
43
+        (
44
+          {
45
+            jPlayer: '#jplayer_player_element_'+ref_id,
46
+            cssSelectorAncestor: '#jplayer_content_element_'+ref_id
47
+          },
48
+          _playlist,
49
+          {
50
+            playlistOptions:
51
+            {
52
+              autoPlay: true,
53
+              enableRemoveControls: true
54
+            },
55
+            swfPath: "/jplayer/js",
56
+            supplied: "mp3",
57
+            wmode: "window"
58
+          }
59
+        );
60
+        
61
+        var player = $('#jplayer_player_element_'+ref_id);
62
+        player.bind($.jPlayer.event.play, event_play);
63
+        player.bind($.jPlayer.event.ended, event_end);
64
+        player.bind($.jPlayer.event.error, event_error);
65
+        
66
+      }
67
+    });
68
+  }
69
+  
70
+  var event_play = function(event)
71
+  {
72
+    _current_index = _player.current;
73
+  
74
+    _callback_event_play(event);
75
+  }
76
+  
77
+  var event_end = function(event)
78
+  {
79
+    _callback_event_end(event);
80
+    if (_current_index+1 == _playlist.length)
81
+    {
82
+      event_finish_playlist(event);
83
+    }
84
+  }
85
+  
86
+  var event_error = function(event)
87
+  {
88
+    _callback_event_error(event);
89
+  }
90
+  
91
+  var event_finish_playlist = function(event)
92
+  {
93
+    _callback_event_finish_playlist(event);
94
+  }
95
+  
96
+  this.play = function()
97
+  {
98
+    _player.jPlayer("play");
99
+  }
100
+  
101
+  this.stop = function()
102
+  {
103
+    _player.jPlayer("stop");
104
+  }
105
+  
106
+  this.pause = function()
107
+  {
108
+    _player.jPlayer("pause");
109
+  }
110
+}
111
+
112
+function GenericSong(title, mp3)
113
+{
114
+  this.title = title;
115
+  this.mp3   = mp3;
116
+}

+ 47 - 0
src/Muzich/CoreBundle/Resources/public/js/player/JamendoPlayer.js View File

@@ -0,0 +1,47 @@
1
+function JamendoPlayer(ref_id, object_for_player)
2
+{
3
+  var _ref_id = ref_id;
4
+  var _object_for_player = object_for_player;
5
+  var _player = null;
6
+  
7
+  this.play = function()
8
+  {
9
+    _player = new GenericStreamingPlayer(_ref_id, _object_for_player,
10
+      event_play,
11
+      event_end,
12
+      event_error,
13
+      event_finish_playlist);
14
+    _player.create_player();
15
+  }
16
+  
17
+  var event_play = function()
18
+  {
19
+    
20
+  }
21
+  
22
+  var event_end = function()
23
+  {
24
+    
25
+  }
26
+  
27
+  var event_error = function()
28
+  {
29
+    
30
+  }
31
+  
32
+  var event_finish_playlist = function()
33
+  {
34
+    
35
+  }
36
+  
37
+  this.stop = function()
38
+  {
39
+    _player.stop();
40
+  }
41
+  
42
+  this.pause = function()
43
+  {
44
+    _player.pause();
45
+  }
46
+  
47
+}

+ 71 - 0
src/Muzich/CoreBundle/Resources/public/js/player/SoundCloudPlayer.js View File

@@ -0,0 +1,71 @@
1
+function SoundCloudPlayer(ref_id, object_for_player)
2
+{
3
+  var _ref_id = ref_id;
4
+  var _object_for_player = object_for_player;
5
+  var _player = null;
6
+  var _sounds_count = 0;
7
+  var _current_sound_index = 0;
8
+  
9
+  this.play = function()
10
+  {
11
+    if (!_player)
12
+    {
13
+      createPlayer();
14
+    }
15
+  }
16
+  
17
+  var createPlayer = function()
18
+  {
19
+    var div_for_iframe = $('<div>').attr('id', _object_for_player.attr('id')+'_iframe');
20
+    _object_for_player.append(div_for_iframe);
21
+    
22
+    SC.initialize({
23
+      client_id: '39946ea18e3d78d64c0ac95a025794e1'
24
+    });
25
+    
26
+    SC.oEmbed(_ref_id, {
27
+      show_artwork: false
28
+    }, function(oembed){
29
+      _object_for_player.html(oembed.html)
30
+      var iframe = _object_for_player.find('iframe')[0];
31
+      _player = SC.Widget(iframe);
32
+      _player.bind(SC.Widget.Events.READY, event_ready);
33
+      _player.bind(SC.Widget.Events.PLAY, event_play);
34
+      _player.bind(SC.Widget.Events.FINISH, event_finish);
35
+    });
36
+    
37
+    var event_ready = function()
38
+    {
39
+      console.log('sc ready');
40
+      _player.play();
41
+      _player.getSounds(function(value){
42
+        _sounds_count = value.length;
43
+      });
44
+    }
45
+    
46
+    var event_play = function()
47
+    {
48
+      console.log('sc play');
49
+      _player.getSounds(function(value){
50
+        _sounds_count = value.length;
51
+      });
52
+      _player.getCurrentSoundIndex(function(value){
53
+        _current_sound_index = value;
54
+      });
55
+    }
56
+    
57
+    var event_finish = function()
58
+    {
59
+      if (_sounds_count == _current_sound_index+1)
60
+      {
61
+        event_finish_playlist();
62
+      }
63
+    }
64
+    
65
+    var event_finish_playlist = function()
66
+    {
67
+      // Fin de lecture
68
+    }
69
+    
70
+  }
71
+}

+ 69 - 0
src/Muzich/CoreBundle/Resources/public/js/player/YoutubePlayer.js View File

@@ -0,0 +1,69 @@
1
+function YoutubePlayer(ref_id, object_for_player)
2
+{
3
+  var _ref_id = ref_id;
4
+  var _object_for_player = object_for_player;
5
+  var _yt_player;
6
+  
7
+  this.play = function()
8
+  { 
9
+    create_player();
10
+  }
11
+  
12
+  var create_player = function()
13
+  {
14
+    var div_for_iframe = $('<div>').attr('id', _object_for_player.attr('id')+'_iframe');
15
+    _object_for_player.append(div_for_iframe);
16
+    
17
+    _yt_player = new YT.Player(_object_for_player.attr('id')+'_iframe', {
18
+      height  : config_player_youtube_height,
19
+      width   : config_player_youtube_width,
20
+      videoId : _ref_id,
21
+      events  : {
22
+        'onReady': onPlayerReady,
23
+        'onStateChange': onPlayerStateChange
24
+      }
25
+    });
26
+    
27
+    
28
+  }
29
+  
30
+  var onPlayerReady = function(event)
31
+  {
32
+    _yt_player.playVideo();
33
+  }
34
+  
35
+  var onPlayerStateChange = function(event)
36
+  {
37
+    if (event.data == YT.PlayerState.PLAYING)
38
+    {
39
+      
40
+    }
41
+    if (event.data == YT.PlayerState.ENDED)
42
+    {
43
+      
44
+    }
45
+    if (event.data == YT.PlayerState.PAUSED)
46
+    {
47
+      
48
+    }
49
+    if (event.data == YT.PlayerState.BUFFERING)
50
+    {
51
+      
52
+    }
53
+    if (event.data == YT.PlayerState.CUED)
54
+    {
55
+      
56
+    }
57
+  }
58
+  
59
+  this.pause = function()
60
+  {
61
+    _yt_player.pauseVideo();
62
+  }
63
+  
64
+  this.stop = function()
65
+  {
66
+    _yt_player.stopVideo();
67
+    _object_for_player.html('');
68
+  }
69
+}

+ 1 - 0
src/Muzich/CoreBundle/Resources/views/Layout/head_js.html.twig View File

@@ -11,6 +11,7 @@
11 11
   '@MuzichCoreBundle/Resources/public/js/TagPrompt.js'
12 12
   '@MuzichCoreBundle/Resources/public/js/play.js'
13 13
   '@MuzichCoreBundle/Resources/public/js/play2.js'
14
+  '@MuzichCoreBundle/Resources/public/js/player/*'
14 15
   '@MuzichCoreBundle/Resources/public/js/muzich.js' %}{# filter='yui_js' %}#}
15 16
   <script src="{{ asset_url }}"></script>
16 17
 {% endjavascripts %}

+ 1 - 1
web/jplayer/skin/blue.monday/jplayer.blue.monday.css View File

@@ -31,7 +31,7 @@ div.jp-video {
31 31
 	background-color:#eee;
32 32
 }
33 33
 div.jp-audio {
34
-	width:500px;
34
+	width:100%;
35 35
 }
36 36
 div.jp-audio-stream {
37 37
 	width:182px;