Parcourir la source

Ajout de la gestion de la lecture soundcloud et js pour play2.

Sevajol Bastien il y a 12 ans
Parent
révision
626b662abb

+ 6 - 1
src/Muzich/CoreBundle/Entity/Element.php Voir le fichier

@@ -951,8 +951,13 @@ class Element
951 951
     return array();
952 952
   }
953 953
   
954
-  public function getRefId()
954
+  public function getRefId($api_context = false)
955 955
   {
956
+    if ($api_context && $this->getType() == 'soundcloud.com')
957
+    {
958
+      return $this->getData(self::DATA_NORMALIZED_URL);
959
+    }
960
+    
956 961
     return $this->getData(self::DATA_REF_ID);
957 962
   }
958 963
   

+ 76 - 0
src/Muzich/CoreBundle/Resources/public/js/play2.js Voir le fichier

@@ -19,6 +19,10 @@ function DynamicPlayer()
19 19
     {
20 20
       return new YoutubePlayer(ref_id, object_for_player);
21 21
     }
22
+    if (player_type == 'soundcloud.com')
23
+    {
24
+      return new SoundCloudPlayer(ref_id, object_for_player);
25
+    }
22 26
     return new GenericPlayer(element_id, object_for_player);
23 27
   }
24 28
   
@@ -115,6 +119,78 @@ function GenericPlayer(ref_id, object_for_player)
115 119
   }
116 120
 }
117 121
 
122
+function SoundCloudPlayer(ref_id, object_for_player)
123
+{
124
+  var _ref_id = ref_id;
125
+  var _object_for_player = object_for_player;
126
+  var _player = null;
127
+  var _sounds_count = 0;
128
+  var _current_sound_index = 0;
129
+  
130
+  this.play = function()
131
+  {
132
+    if (!_player)
133
+    {
134
+      createPlayer();
135
+    }
136
+  }
137
+  
138
+  var createPlayer = function()
139
+  {
140
+    var div_for_iframe = $('<div>').attr('id', _object_for_player.attr('id')+'_iframe');
141
+    _object_for_player.append(div_for_iframe);
142
+    
143
+    SC.initialize({
144
+      client_id: '39946ea18e3d78d64c0ac95a025794e1'
145
+    });
146
+    
147
+    SC.oEmbed(_ref_id, {
148
+      show_artwork: false
149
+    }, function(oembed){
150
+      _object_for_player.html(oembed.html)
151
+      var iframe = _object_for_player.find('iframe')[0];
152
+      _player = SC.Widget(iframe);
153
+      _player.bind(SC.Widget.Events.READY, event_ready);
154
+      _player.bind(SC.Widget.Events.PLAY, event_play);
155
+      _player.bind(SC.Widget.Events.FINISH, event_finish);
156
+    });
157
+    
158
+    var event_ready = function()
159
+    {
160
+      console.log('sc ready');
161
+      _player.play();
162
+      _player.getSounds(function(value){
163
+        _sounds_count = value.length;
164
+      });
165
+    }
166
+    
167
+    var event_play = function()
168
+    {
169
+      console.log('sc play');
170
+      _player.getSounds(function(value){
171
+        _sounds_count = value.length;
172
+      });
173
+      _player.getCurrentSoundIndex(function(value){
174
+        _current_sound_index = value;
175
+      });
176
+    }
177
+    
178
+    var event_finish = function()
179
+    {
180
+      if (_sounds_count == _current_sound_index+1)
181
+      {
182
+        event_finish_playlist();
183
+      }
184
+    }
185
+    
186
+    var event_finish_playlist = function()
187
+    {
188
+      // Fin de lecture
189
+    }
190
+    
191
+  }
192
+}
193
+
118 194
 function PlayersManager()
119 195
 {
120 196
   var _players = new Array();

+ 1 - 1
src/Muzich/CoreBundle/Resources/views/SearchElement/li.element.html.twig Voir le fichier

@@ -5,7 +5,7 @@
5 5
   class="element {{ class_color }}"
6 6
   id="element_{{ element.id }}"
7 7
   data-type="{{ element.type }}"
8
-  data-refid="{{ element.refId }}"
8
+  data-refid="{{ element.refId(true) }}"
9 9
   data-elementid="{{ element.id }}"
10 10
 >
11 11