]> git.0d.be Git - panikweb.git/blobdiff - panikweb_templates/static/js/audioPlayer.js
player: mark sound as stopped when removed from playlist
[panikweb.git] / panikweb_templates / static / js / audioPlayer.js
index d2869d941a8232926aaed414dd0ad1b7d65e7d22..3f039c33a93dfd4e3a835e290039d3cd130b10c2 100644 (file)
@@ -86,7 +86,6 @@
                        var sound = {
                                source :{},
                                title: audio.attr('title'),
-                               id:audio.attr('id'),
                                sound_id:audio.data('sound-id'),
                                url:audio.attr('data-url'),
                                focus:audio.attr('data-player-focus')
                },
                // Transform JSON sound object to HTML container for playlist.
                _htmlifyJsonSound: function(sound) {
-                       var container = $('<li>').attr('data-origin',sound.id);
+                       var container = $('<li>');
                        var audio = $('<audio>',this.options.html5audioOptions)
                                .attr('title',sound.title).hide()
                                .attr('data-sound-id', sound.sound_id)
                                var source = $('<source>',{src:v,type:k});
                                audio.append(source);
                        });
-                       audio.on('play',function(){
+                       audio.on('play',function(e){
+                               if (e.originalEvent === undefined) {
+                                       return;
+                               }
                                if (typeof (_paq) == 'object') {
                                        _paq.push(['trackEvent', 'Audio', 'Play', audio_str]);
                                }
                                playpause.addClass('icon-pause').removeClass('icon-play');
                                thePlaylist.controlButtons['playpause'].removeClass('icon-play').addClass('icon-pause');
                                thePlaylist.afterPlay();
-                       }).on('pause',function(){
+                               var sound_id = $(e.target).data('sound-id');
+                               $(document).trigger('panik:play', {'sound_id': sound_id});
+                       }).on('pause',function(e){
                                $(this).removeClass('playing');
                                playpause.addClass('icon-play').removeClass('icon-pause');
+                               var sound_id = $(e.target).data('sound-id');
+                               $(document).trigger('panik:pause', {'sound_id': sound_id});
                                thePlaylist.controlButtons['playpause'].removeClass('icon-pause').addClass('icon-play');
-                       }).on('stop',function(){
+                       }).on('stop',function(event){
                                $(this).trigger('pause');
                                if($(this)[0].currentTime){$(this)[0].currentTime = 0;}
-                       }).on("ended", function(){
+                       }).on("ended", function(e){
                                if (typeof (_paq) == 'object') {
                                        _paq.push(['trackEvent', 'Audio', 'End', audio_str]);
                                }
                        });
                        var controls = $('<span>',{'class':'soundControls controls'});
                        var link = $('<a>',{href:sound.url,'class':'button icon-external-link'});
-                       var html5 = $('<button>',{title:"Display HTML5 audio",'class':'icon-html5',click:function(){
-                               audio.toggle();
-                       }}).hide();
                        var remove = $('<button>',{title:"Remove from list",'class':'icon-remove',click:function(){
+                               audio.trigger('stop');
                                container.remove();
                                thePlaylist._update();
                        }});
                                        audio.trigger('beforePlay').trigger('play');
                                }
                        }});
-                       controls.append(playpause).append(stop).append(remove).append(html5);
+                       controls.append(playpause).append(stop).append(remove);
                        var title = $('<a>',{title:"More information",href:sound.url,'class':"button title",html:sound.title});
                        container.append(controls).append(title).append(audio);
                        if(sound.focus){thePlaylist.setFocus(container);}
                // Play next sound
                bindControl: function(control,audio,element,options) {
                        element.addClass('loading');
-                       audioID = audio.attr('id');                     
+                       audioID = audio.data('souce-id');
                        //TODO for controls in page content
                },
                // Play next sound