Selaa lähdekoodia

Evolution #553: Réécrire js autoplay

Sevajol Bastien 12 vuotta sitten
vanhempi
commit
fba0408cdf

+ 155 - 0
src/Muzich/CoreBundle/Resources/public/js/autoplay.js Näytä tiedosto

@@ -0,0 +1,155 @@
1
+
2
+// TODO: On recpere un tableau des lectures a effectuer:
3
+// actuellement on a un champ element_id, puis un champs
4
+// normalized_id (pour soundcloud par exemple). Il faudrait plutot
5
+// traité du coté php que l'on veut le "id utilisé par objet lecteur"
6
+// pour ne pas gérer l'héterogénéité coté js
7
+
8
+function Autoplay()
9
+{
10
+  
11
+  var _playlist = new Array();
12
+  var _player = null;
13
+  var _current_index = 0;
14
+  
15
+  this.start = function()
16
+  {
17
+    open_popin_dialog('autoplay');
18
+    initializePlaylist(this.play);
19
+  }
20
+  
21
+  var initializePlaylist = function(callback)
22
+  {
23
+    JQueryJson($('a#autoplay_launch').attr('href'), {}, function(response){
24
+      if (response.status == 'success')
25
+      {
26
+        if (response.data.length)
27
+        {
28
+          _playlist = response.data;
29
+        }
30
+      }
31
+      callback(0);
32
+    });
33
+  }
34
+  
35
+  this.play = function(index_to_play, timed)
36
+  {
37
+    window.autoplay.stopAndClearAllPlayers();
38
+    if (array_key_exists(index_to_play, _playlist))
39
+    {
40
+      if (!timed)
41
+      {
42
+        _current_index = index_to_play;
43
+        $('#autoplay_element_loader').show();
44
+        setTimeout(window.autoplay.play, 1000, index_to_play, true);
45
+      }
46
+      else if (_current_index == index_to_play)
47
+      {
48
+        loadAndDisplayInfos(_playlist[index_to_play].element_id);
49
+        if (!createPlayer(_playlist[index_to_play], window.autoplay.playNext))
50
+        {
51
+          this.play(index_to_play+1);
52
+        }
53
+        else
54
+        {
55
+          _current_index = index_to_play;
56
+        }
57
+      }
58
+    }
59
+    else
60
+    {
61
+      this.nothingToPlay();
62
+    }
63
+  }
64
+  
65
+  this.stopAndClearAllPlayers = function()
66
+  {
67
+    players = window.players_manager.getAll();
68
+    for (var i in players)
69
+    {
70
+      players[i].stopAndDestroy();
71
+      window.players_manager.remove(i);
72
+    }
73
+  }
74
+  
75
+  var loadAndDisplayInfos = function(element_id)
76
+  {
77
+    $('#autoplay_element_loader').show();
78
+    JQueryJson(url_element_dom_get_one_autoplay+'/'+element_id, {}, function(response){
79
+      if (response.status == 'success')
80
+      {
81
+        $('li#autoplay_element_container').html(response.data);
82
+        $('#autoplay_element_loader').hide();
83
+      }
84
+    });
85
+  }
86
+  
87
+  var createPlayer = function(play_data, finish_callback)
88
+  {
89
+    $('#autoplay_loader').show();
90
+    if ((player = window.dynamic_player.play(
91
+      $('#autoplay_player'),
92
+      play_data.element_type,
93
+      play_data.element_ref_id,
94
+      play_data.element_id,
95
+      true,
96
+      finish_callback
97
+    )))
98
+    {
99
+      $('#autoplay_loader').hide();
100
+      window.players_manager.add(player, 'autoplay_'+play_data.element_id);
101
+      return true;
102
+    }
103
+    else
104
+    {
105
+      return false;
106
+    }
107
+  }
108
+  
109
+  this.playNext = function()
110
+  {
111
+    window.autoplay.play(_current_index+1);
112
+  }
113
+  
114
+  this.playPrevious = function()
115
+  {
116
+    if (array_key_exists(_current_index-1, _playlist))
117
+    {
118
+      window.autoplay.play(_current_index-1);
119
+    }
120
+    return false;
121
+  }
122
+  
123
+  this.nothingToPlay = function()
124
+  {
125
+    this.stopAndClearAllPlayers();
126
+    $('#autoplay_noelements_text').show();
127
+    $('div#autoplay_player_container').html('<div id="autoplay_player"></div>');
128
+    $('li#autoplay_element_container').html('');
129
+    $('#autoplay iframe').hide();
130
+  }
131
+  
132
+}
133
+
134
+$(document).ready(function() {
135
+  
136
+  window.autoplay = new Autoplay();
137
+  
138
+  $('a#autoplay_launch').click(function(){
139
+    window.autoplay.start();
140
+    return false;
141
+  });
142
+  
143
+  $('a#autoplay_previous').click(function(){window.autoplay.playPrevious()});
144
+  
145
+  $('a#autoplay_next').click(function(){window.autoplay.playNext()});
146
+  
147
+  $('a#autoplay_close').click(function(){
148
+    // Fond gris
149
+    $('#fade').fadeOut(1000, function(){$('#fade').remove();});
150
+    // On cache le lecteur
151
+    $('#autoplay').hide();
152
+    window.autoplay.stopAndClearAllPlayers();
153
+  });
154
+  
155
+});

+ 4 - 3
src/Muzich/CoreBundle/Resources/public/js/muzich.js Näytä tiedosto

@@ -400,7 +400,8 @@ $(document).ready(function(){
400 400
       li.find('div.element_embed'),
401 401
       li.data('type'),
402 402
       li.data('refid'),
403
-      li.data('elementid')
403
+      li.data('elementid'),
404
+      false
404 405
     )))
405 406
     {
406 407
       window.players_manager.add(player, li.attr('id'));
@@ -431,7 +432,7 @@ $(document).ready(function(){
431 432
      li.find('a.element_embed_open_link_text').show();
432 433
      $(this).hide();
433 434
      
434
-     window.players_manager.get(li.attr('id')).stop();
435
+     window.players_manager.get(li.attr('id')).close();
435 436
      
436 437
      return false;
437 438
   });
@@ -710,7 +711,7 @@ $(document).ready(function(){
710 711
 
711 712
       ajax_query_timestamp = null;
712 713
       
713
-      $("#tags_prompt_list_"+response.form_name).tagBox(options);
714
+      //$("#tags_prompt_list_"+response.form_name).tagBox(options);
714 715
       
715 716
       // On rend ce formulaire ajaxFormable
716 717
       $('form[name="'+response.form_name+'"] input[type="submit"]').live('click', function(){

File diff suppressed because it is too large
+ 662 - 655
src/Muzich/CoreBundle/Resources/public/js/play.js


+ 24 - 7
src/Muzich/CoreBundle/Resources/public/js/play2.js Näytä tiedosto

@@ -1,9 +1,11 @@
1 1
 function DynamicPlayer()
2 2
 {
3 3
   
4
-  this.play = function(object_for_player, player_type, ref_id, element_id)
4
+  this.play = function(object_for_player, player_type, ref_id, element_id, autoplay, finish_callback)
5 5
   {
6
-    if ((player = getPlayerObjectForElementType(object_for_player, player_type, ref_id, element_id)))
6
+    autoplay = typeof autoplay !== 'undefined' ? autoplay : false;
7
+    finish_callback = typeof finish_callback !== 'undefined' ? finish_callback : $.noop;
8
+    if ((player = getPlayerObjectForElementType(object_for_player, player_type, ref_id, element_id, autoplay, finish_callback)))
7 9
     {
8 10
       player.play();
9 11
       return player;
@@ -12,22 +14,27 @@ function DynamicPlayer()
12 14
     return false;
13 15
   }
14 16
   
15
-  var getPlayerObjectForElementType = function(object_for_player, player_type, ref_id, element_id)
17
+  var getPlayerObjectForElementType = function(object_for_player, player_type, ref_id, element_id, autoplay, finish_callback)
16 18
   {
17 19
     if (player_type == 'youtube.com' || player_type == 'youtu.be')
18 20
     {
19
-      return new YoutubePlayer(ref_id, object_for_player);
21
+      return new YoutubePlayer(ref_id, object_for_player, finish_callback);
20 22
     }
21 23
     if (player_type == 'soundcloud.com')
22 24
     {
23
-      return new SoundCloudPlayer(ref_id, object_for_player);
25
+      return new SoundCloudPlayer(ref_id, object_for_player, finish_callback, autoplay);
24 26
     }
25 27
     if (player_type == 'jamendo.com')
26 28
     {
27
-      return new JamendoPlayer(element_id, object_for_player);
29
+      return new JamendoPlayer(element_id, object_for_player, finish_callback);
28 30
     }
29 31
     
30
-    return new GenericPlayer(element_id, object_for_player);
32
+    if (autoplay)
33
+    {
34
+      return new GenericPlayer(element_id, object_for_player);
35
+    }
36
+    
37
+    return false;
31 38
   }
32 39
   
33 40
 }
@@ -45,6 +52,16 @@ function PlayersManager()
45 52
   {
46 53
     return _players[key];
47 54
   }
55
+  
56
+  this.remove = function(key)
57
+  {
58
+    delete _players[key];
59
+  }
60
+  
61
+  this.getAll = function()
62
+  {
63
+    return _players;
64
+  }
48 65
 }
49 66
 
50 67
 $(document).ready(function() {

+ 5 - 0
src/Muzich/CoreBundle/Resources/public/js/player/GenericPlayer.js Näytä tiedosto

@@ -17,4 +17,9 @@ function GenericPlayer(ref_id, object_for_player)
17 17
   {
18 18
     _object_for_player.html('');
19 19
   }
20
+  
21
+  this.close = function()
22
+  {
23
+    this.stop();
24
+  }
20 25
 }

+ 45 - 30
src/Muzich/CoreBundle/Resources/public/js/player/GenericStreamingPlayer.js Näytä tiedosto

@@ -9,6 +9,7 @@ function GenericStreamingPlayer(ref_id, object_for_player,
9 9
   var _object_for_player = object_for_player;
10 10
   var _playlist = new Array();
11 11
   var _player = null;
12
+  var _player_dom = null;
12 13
   
13 14
   var _callback_event_play = callback_event_play;
14 15
   var _callback_event_end = callback_event_end;
@@ -32,37 +33,46 @@ function GenericStreamingPlayer(ref_id, object_for_player,
32 33
     JQueryJson(url_element_get_stream_data+'/'+ref_id, {}, function(response){
33 34
       if (response.status == 'success')
34 35
       {
35
-        
36
-        for(var i = 0; i < response.data.length; i++)
36
+        if (response.data)
37 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,
38
+          for(var i = 0; i < response.data.length; i++)
49 39
           {
50
-            playlistOptions:
40
+            var song = new GenericSong(response.data[i].name, response.data[i].url);
41
+            _playlist[i] = song;
42
+          }
43
+          
44
+          _player = new jPlayerPlaylist
45
+          (
51 46
             {
52
-              autoPlay: true,
53
-              enableRemoveControls: true
47
+              jPlayer: '#jplayer_player_element_'+ref_id,
48
+              cssSelectorAncestor: '#jplayer_content_element_'+ref_id
54 49
             },
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
-        
50
+            _playlist,
51
+            {
52
+              playlistOptions:
53
+              {
54
+                autoPlay: true,
55
+                enableRemoveControls: true
56
+              },
57
+              swfPath: "/jplayer/js",
58
+              supplied: "mp3",
59
+              wmode: "window"
60
+            }
61
+          );
62
+          
63
+          var _player_dom = $('#jplayer_player_element_'+ref_id);
64
+          _player_dom.bind($.jPlayer.event.play, event_play);
65
+          _player_dom.bind($.jPlayer.event.ended, event_end);
66
+          _player_dom.bind($.jPlayer.event.error, event_error);
67
+        }
68
+        else
69
+        {
70
+          _callback_event_finish_playlist();
71
+        }
72
+      }
73
+      else
74
+      {
75
+        _callback_event_finish_playlist();
66 76
       }
67 77
     });
68 78
   }
@@ -95,17 +105,22 @@ function GenericStreamingPlayer(ref_id, object_for_player,
95 105
   
96 106
   this.play = function()
97 107
   {
98
-    _player.jPlayer("play");
108
+    _player_dom.jPlayer("play");
99 109
   }
100 110
   
101 111
   this.stop = function()
102 112
   {
103
-    _player.jPlayer("stop");
113
+    //_player_dom.jPlayer("stop");
104 114
   }
105 115
   
106 116
   this.pause = function()
107 117
   {
108
-    _player.jPlayer("pause");
118
+    _player_dom.jPlayer("pause");
119
+  }
120
+  
121
+  this.destroy = function()
122
+  {
123
+    _object_for_player.html('');
109 124
   }
110 125
 }
111 126
 

+ 19 - 3
src/Muzich/CoreBundle/Resources/public/js/player/JamendoPlayer.js Näytä tiedosto

@@ -1,8 +1,9 @@
1
-function JamendoPlayer(ref_id, object_for_player)
1
+function JamendoPlayer(ref_id, object_for_player, finish_callback)
2 2
 {
3 3
   var _ref_id = ref_id;
4 4
   var _object_for_player = object_for_player;
5 5
   var _player = null;
6
+  var _finish_callback = finish_callback;
6 7
   
7 8
   this.play = function()
8 9
   {
@@ -26,12 +27,12 @@ function JamendoPlayer(ref_id, object_for_player)
26 27
   
27 28
   var event_error = function()
28 29
   {
29
-    
30
+    _finish_callback();
30 31
   }
31 32
   
32 33
   var event_finish_playlist = function()
33 34
   {
34
-    
35
+    _finish_callback();
35 36
   }
36 37
   
37 38
   this.stop = function()
@@ -44,4 +45,19 @@ function JamendoPlayer(ref_id, object_for_player)
44 45
     _player.pause();
45 46
   }
46 47
   
48
+  this.destroy = function()
49
+  {
50
+     _player.destroy();
51
+  }
52
+  
53
+  this.stopAndDestroy = function()
54
+  {
55
+    this.stop();
56
+    this.destroy();
57
+  }
58
+  
59
+  this.close = function()
60
+  {
61
+    this.stopAndDestroy();
62
+  }
47 63
 }

+ 89 - 44
src/Muzich/CoreBundle/Resources/public/js/player/SoundCloudPlayer.js Näytä tiedosto

@@ -1,71 +1,116 @@
1
-function SoundCloudPlayer(ref_id, object_for_player)
1
+function SoundCloudPlayer(ref_id, object_for_player, finish_callback, autoplay)
2 2
 {
3
+  autoplay = typeof autoplay !== 'undefined' ? autoplay : false;
4
+  var _autoplay = autoplay;
5
+  var _iframe_id = '';
3 6
   var _ref_id = ref_id;
4 7
   var _object_for_player = object_for_player;
5 8
   var _player = null;
6 9
   var _sounds_count = 0;
7 10
   var _current_sound_index = 0;
11
+  var _finish_callback = finish_callback;
8 12
   
9 13
   this.play = function()
10 14
   {
11
-    if (!_player)
12
-    {
13
-      createPlayer();
14
-    }
15
+    createPlayer(
16
+      event_ready,
17
+      event_play,
18
+      event_finish
19
+    );
15 20
   }
16 21
   
17
-  var createPlayer = function()
22
+  var createPlayer = function(callback_ready, callback_play, callback_finish)
18 23
   {
19
-    var div_for_iframe = $('<div>').attr('id', _object_for_player.attr('id')+'_iframe');
20
-    _object_for_player.append(div_for_iframe);
24
+    _iframe_id = 'soundcloud_player_'+new Date().getTime();
25
+    if (!_autoplay)
26
+    {
27
+      _object_for_player.html('<iframe id="'+_iframe_id+'" src="http://w.soundcloud.com/player/?url='
28
+            +_ref_id+'&show_artwork=false&auto_play=true" width="100%" '
29
+            +'height="350" scrolling="no" frameborder="no"></iframe>');
30
+    }
31
+    else
32
+    {
33
+      // On gère la lecture auto difframment: rappel: si on supprime une iframe l'api SC ne la trouve plus et bug
34
+      $('#autoplay').append('<iframe id="'+_iframe_id+'" src="http://w.soundcloud.com/player/?url='
35
+        +_ref_id+'&show_artwork=false&auto_play=true" width="100%" '
36
+        +'height="350" scrolling="no" frameborder="no"></iframe>');
37
+    }
21 38
     
22 39
     SC.initialize({
23 40
       client_id: '39946ea18e3d78d64c0ac95a025794e1'
24 41
     });
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()
42
+    SC.get(_ref_id, function(track, error)
38 43
     {
39
-      console.log('sc ready');
40
-      _player.play();
41
-      _player.getSounds(function(value){
42
-        _sounds_count = value.length;
43
-      });
44
-    }
44
+      if (!error)
45
+      {
46
+        _player = SC.Widget(document.getElementById(_iframe_id));
47
+        _player.bind(SC.Widget.Events.READY, callback_ready);
48
+        _player.bind(SC.Widget.Events.PLAY, callback_play);
49
+        _player.bind(SC.Widget.Events.FINISH, callback_finish);
50
+      }
51
+      else
52
+      {
53
+        _finish_callback();
54
+      }
55
+    });
45 56
     
46
-    var event_play = function()
57
+  }
58
+  
59
+  var event_ready = function()
60
+  {
61
+    _player.getSounds(function(value){
62
+      _sounds_count = value.length;
63
+    });
64
+  }
65
+  
66
+  var event_play = function()
67
+  {
68
+    _player.getSounds(function(value){
69
+      _sounds_count = value.length;
70
+    });
71
+    _player.getCurrentSoundIndex(function(value){
72
+      _current_sound_index = value;
73
+    });
74
+  }
75
+  
76
+  var event_finish = function()
77
+  {
78
+    if (_sounds_count == _current_sound_index+1)
47 79
     {
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
-      });
80
+      event_finish_playlist();
55 81
     }
82
+  }
83
+  
84
+  var event_finish_playlist = function()
85
+  {
86
+    _finish_callback();
87
+  }
88
+  
89
+  this.stop = function()
90
+  {
56 91
     
57
-    var event_finish = function()
92
+  }
93
+  
94
+  this.destroy = function(force)
95
+  {
96
+    if (_player)
58 97
     {
59
-      if (_sounds_count == _current_sound_index+1)
60
-      {
61
-        event_finish_playlist();
62
-      }
98
+      _player.pause();
63 99
     }
64
-    
65
-    var event_finish_playlist = function()
100
+    if (_autoplay || force)
66 101
     {
67
-      // Fin de lecture
102
+      $('#'+_iframe_id).hide();
68 103
     }
69
-    
104
+  }
105
+  
106
+  this.stopAndDestroy = function()
107
+  {
108
+    //this.stop();
109
+    this.destroy(false);
110
+  }
111
+  
112
+  this.close = function()
113
+  {
114
+    this.destroy(true);
70 115
   }
71 116
 }

+ 40 - 8
src/Muzich/CoreBundle/Resources/public/js/player/YoutubePlayer.js Näytä tiedosto

@@ -1,8 +1,9 @@
1
-function YoutubePlayer(ref_id, object_for_player)
1
+function YoutubePlayer(ref_id, object_for_player, finish_callback)
2 2
 {
3 3
   var _ref_id = ref_id;
4 4
   var _object_for_player = object_for_player;
5 5
   var _yt_player;
6
+  var _finish_callback = finish_callback;
6 7
   
7 8
   this.play = function()
8 9
   { 
@@ -16,15 +17,14 @@ function YoutubePlayer(ref_id, object_for_player)
16 17
     
17 18
     _yt_player = new YT.Player(_object_for_player.attr('id')+'_iframe', {
18 19
       height  : config_player_youtube_height,
19
-      width   : config_player_youtube_width,
20
+      width   : '100%',
20 21
       videoId : _ref_id,
21 22
       events  : {
22 23
         'onReady': onPlayerReady,
23
-        'onStateChange': onPlayerStateChange
24
+        'onStateChange': onPlayerStateChange,
25
+        'onError': onError
24 26
       }
25 27
     });
26
-    
27
-    
28 28
   }
29 29
   
30 30
   var onPlayerReady = function(event)
@@ -32,6 +32,11 @@ function YoutubePlayer(ref_id, object_for_player)
32 32
     _yt_player.playVideo();
33 33
   }
34 34
   
35
+  var onError = function(event)
36
+  {
37
+    _finish_callback();
38
+  }
39
+  
35 40
   var onPlayerStateChange = function(event)
36 41
   {
37 42
     if (event.data == YT.PlayerState.PLAYING)
@@ -40,7 +45,7 @@ function YoutubePlayer(ref_id, object_for_player)
40 45
     }
41 46
     if (event.data == YT.PlayerState.ENDED)
42 47
     {
43
-      
48
+      _finish_callback();
44 49
     }
45 50
     if (event.data == YT.PlayerState.PAUSED)
46 51
     {
@@ -58,12 +63,39 @@ function YoutubePlayer(ref_id, object_for_player)
58 63
   
59 64
   this.pause = function()
60 65
   {
61
-    _yt_player.pauseVideo();
66
+    if (_yt_player)
67
+    {
68
+      if(typeof(_yt_player.pauseVideo)!=='undefined')
69
+      {
70
+        _yt_player.pauseVideo();
71
+      }
72
+    }
62 73
   }
63 74
   
64 75
   this.stop = function()
65 76
   {
66
-    _yt_player.stopVideo();
77
+    if (_yt_player)
78
+    {
79
+      if(typeof(_yt_player.stopVideo)!=='undefined')
80
+      {
81
+        _yt_player.stopVideo();
82
+      }
83
+    }
84
+  }
85
+  
86
+  this.destroy = function()
87
+  {
67 88
     _object_for_player.html('');
68 89
   }
90
+  
91
+  this.stopAndDestroy = function()
92
+  {
93
+    this.stop();
94
+    this.destroy();
95
+  }
96
+  
97
+  this.close = function()
98
+  {
99
+    this.stopAndDestroy();
100
+  }
69 101
 }

+ 2 - 2
src/Muzich/CoreBundle/Resources/views/Layout/head_js.html.twig Näytä tiedosto

@@ -9,9 +9,9 @@
9 9
   'js/jquery.form-2.14.js'
10 10
   'js/jConfirmAction/jconfirmaction.jquery.js'
11 11
   '@MuzichCoreBundle/Resources/public/js/TagPrompt.js'
12
-  '@MuzichCoreBundle/Resources/public/js/play.js'
13
-  '@MuzichCoreBundle/Resources/public/js/play2.js'
14 12
   '@MuzichCoreBundle/Resources/public/js/player/*'
13
+  '@MuzichCoreBundle/Resources/public/js/play2.js'
14
+  '@MuzichCoreBundle/Resources/public/js/autoplay.js'
15 15
   '@MuzichCoreBundle/Resources/public/js/muzich.js' %}{# filter='yui_js' %}#}
16 16
   <script src="{{ asset_url }}"></script>
17 17
 {% endjavascripts %}

+ 1 - 2
src/Muzich/CoreBundle/lib/AutoplayManager.php Näytä tiedosto

@@ -40,7 +40,7 @@ class AutoplayManager
40 40
     {
41 41
       if (
42 42
         // On doit connaitre l'id externe
43
-        ($ref_id = $element->getData(Element::DATA_REF_ID)) && 
43
+        ($ref_id = $element->getRefId(true)) && 
44 44
         // Et le site doit être pris en charge pour le autoplay
45 45
         in_array(
46 46
           ($element_type = $element->getType()), 
@@ -54,7 +54,6 @@ class AutoplayManager
54 54
         'element_id'       => $element->getId(),
55 55
         'element_name'     => $element->getName(),
56 56
         'element_url'      => $element->getUrl(),
57
-        'element_normalized_url' => $element->getData(Element::DATA_NORMALIZED_URL)
58 57
       );
59 58
     }
60 59
     

+ 5 - 0
web/css/main.css Näytä tiedosto

@@ -1635,4 +1635,9 @@ div.display_more_elements
1635 1635
 {
1636 1636
   padding: 10px;
1637 1637
   text-align: center;
1638
+}
1639
+
1640
+div.element_embed div.jp-playlist ul
1641
+{
1642
+  text-align: left;
1638 1643
 }