diff options
Diffstat (limited to 'apps/media/js')
-rw-r--r-- | apps/media/js/collection.js | 157 | ||||
-rw-r--r-- | apps/media/js/loader.js | 9 | ||||
-rw-r--r-- | apps/media/js/music.js | 3 | ||||
-rw-r--r-- | apps/media/js/player.js | 38 | ||||
-rw-r--r-- | apps/media/js/playlist.js | 3 |
5 files changed, 128 insertions, 82 deletions
diff --git a/apps/media/js/collection.js b/apps/media/js/collection.js index 7eb027348ce..29ba45919cf 100644 --- a/apps/media/js/collection.js +++ b/apps/media/js/collection.js @@ -50,6 +50,10 @@ Collection={ } } + Collection.artists.sort(function(a,b){ + return a.name.localeCompare(b.name); + }); + Collection.loaded=true; Collection.loading=false; for(var i=0;i<Collection.loadedListeners.length;i++){ @@ -79,8 +83,13 @@ Collection={ $.each(Collection.artists,function(i,artist){ if(artist.name && artist.songs.length>0){ var tr=template.clone().removeClass('template'); - tr.find('td.title a').text(artist.songs.length+' '+t('media','songs')); - tr.find('td.album a').text(artist.albums.length+' '+t('media','albums')); + if(artist.songs.length>1){ + tr.find('td.title a').text(artist.songs.length+' '+t('media','songs')); + tr.find('td.album a').text(artist.albums.length+' '+t('media','albums')); + }else{ + tr.find('td.title a').text(artist.songs[0].name); + tr.find('td.album a').text(artist.albums[0].name); + } tr.find('td.artist a').text(artist.name); tr.data('artistData',artist); tr.find('td.artist a').click(function(event){ @@ -90,18 +99,20 @@ Collection={ Collection.parent.find('tr').removeClass('active'); $('tr[data-artist="'+artist.name+'"]').addClass('active'); }); - var expander=$('<a class="expander">></a>'); - expander.data('expanded',false); - expander.click(function(event){ - var tr=$(this).parent().parent(); - if(expander.data('expanded')){ - Collection.hideArtist(tr.data('artist')); - }else{ - Collection.showArtist(tr.data('artist')); - } - }); - tr.find('td.artist').addClass('buttons'); - Collection.addButtons(tr,artist); + if(artist.songs.length>1){ + var expander=$('<a class="expander">></a>'); + expander.data('expanded',false); + expander.click(function(event){ + var tr=$(this).parent().parent(); + if(expander.data('expanded')){ + Collection.hideArtist(tr.data('artist')); + }else{ + Collection.showArtist(tr.data('artist')); + } + }); + } + tr.find('td.artist').addClass('buttons'); + Collection.addButtons(tr,artist); tr.children('td.artist').append(expander); tr.attr('data-artist',artist.name); Collection.parent.find('tbody').append(tr); @@ -115,14 +126,16 @@ Collection={ var nextRow=tr.next(); var artist=tr.data('artistData'); var first=true; - $.each(artist.albums,function(foo,album){ + $.each(artist.albums,function(j,album){ $.each(album.songs,function(i,song){ if(first){ newRow=tr; }else{ var newRow=tr.clone(); + newRow.find('td.artist').text(''); + newRow.find('.expander').remove(); } - newRow.find('.expander').remove(); + newRow.find('td.album .expander').remove(); if(i==0){ newRow.find('td.album a').text(album.name); newRow.find('td.album a').click(function(event){ @@ -132,21 +145,23 @@ Collection={ Collection.parent.find('tr').removeClass('active'); $('tr[data-album="'+album.name+'"]').addClass('active'); }); - var expander=$('<a class="expander">v </a>'); - expander.data('expanded',true); - expander.click(function(event){ - var tr=$(this).parent().parent(); - if(expander.data('expanded')) { - Collection.hideAlbum(tr.data('artist'),tr.data('album')); - } else { - Collection.showAlbum(tr.data('artist'),tr.data('album')); - } - }); - newRow.children('td.artist').append(expander); - Collection.addButtons(newRow,album); + if(album.songs.length>1){ + var expander=$('<a class="expander">v </a>'); + expander.data('expanded',true); + expander.click(function(event){ + var tr=$(this).parent().parent(); + if(expander.data('expanded')) { + Collection.hideAlbum(tr.data('artist'),tr.data('album')); + } else { + Collection.showAlbum(tr.data('artist'),tr.data('album')); + } + }); + newRow.children('td.album').append(expander); + } + Collection.addButtons(newRow,album); } else { newRow.find('td.album a').text(''); - Collection.addButtons(newRow,song); + Collection.addButtons(newRow,song); } newRow.find('td.title a').text(song.name); newRow.find('td.title a').click(function(event){ @@ -159,6 +174,7 @@ Collection={ newRow.attr('data-album',album.name); newRow.attr('data-title',song.name); newRow.attr('data-artist',artist.name); + newRow.data('albumData',album); if(!first){ nextRow.before(newRow); } @@ -166,43 +182,62 @@ Collection={ }); }); tr.removeClass('collapsed'); - tr.find('a.expander').data('expanded',true); - tr.find('a.expander').addClass('expanded'); - tr.find('a.expander').text('v'); + tr.find('td.artist a.expander').data('expanded',true); + tr.find('td.artist a.expander').addClass('expanded'); + tr.find('td.artist a.expander').text('v'); }, hideArtist:function(artist){ var tr=Collection.parent.find('tr[data-artist="'+artist+'"]'); - if(tr.length>1){ - var artist=tr.first().data('artistData'); - tr.first().find('td.album a').text(artist.albums.length+' '+t('media','albums')); - tr.first().find('td.title a').text(artist.songs.length+' '+t('media','songs')); - tr.first().find('td.album a').unbind('click'); - tr.first().find('td.title a').unbind('click'); - tr.each(function(i,row){ - if(i>0){ - $(row).remove(); - } - }); - tr.find('a.expander').data('expanded',false); - tr.find('a.expander').removeClass('expanded'); - tr.find('a.expander').text('>'); - Collection.addButtons(tr,artist); - } + var artist=tr.first().data('artistData'); + tr.first().find('td.album a').first().text(artist.albums.length+' '+t('media','albums')); + tr.first().find('td.album a.expander').remove(); + tr.first().find('td.title a').text(artist.songs.length+' '+t('media','songs')); + tr.first().find('td.album a').unbind('click'); + tr.first().find('td.title a').unbind('click'); + tr.each(function(i,row){ + if(i>0){ + $(row).remove(); + } + }); + tr.find('td.artist a.expander').data('expanded',false); + tr.find('td.artist a.expander').removeClass('expanded'); + tr.find('td.artist a.expander').text('>'); + Collection.addButtons(tr,artist); }, showAlbum:function(artist,album){ - var tr = Collection.parent.find('tr[data-artist="'+artist+'"][data-album="'+album+'"]'); - tr.find('a.expander').data('expanded',true); - tr.find('a.expander').addClass('expanded'); - tr.find('a.expander').text('v '); - tr.show(); + var tr = Collection.parent.find('tr[data-artist="'+artist+'"][data-album="'+album+'"]'); + var albumData=tr.data('albumData'); + tr.find('td.album a.expander').data('expanded',true); + tr.find('td.album a.expander').addClass('expanded'); + tr.find('td.album a.expander').text('v'); + var nextRow=tr.next(); + $.each(albumData.songs,function(i,song){ + if(i>0){ + var newRow=tr.clone(); + newRow.find('a.expander').remove(); + newRow.find('td.album a').text(''); + newRow.find('td.artist a').text(''); + }else{ + var newRow=tr; + } + newRow.find('td.title a').text(song.name); + if(i>0){ + nextRow.before(newRow); + } + }); }, hideAlbum:function(artist,album){ var tr = Collection.parent.find('tr[data-artist="'+artist+'"][data-album="'+album+'"]'); - tr.find('a.expander').data('expanded',false); - tr.find('a.expander').removeClass('expanded'); - tr.find('a.expander').text('> '); - tr.hide(); - tr.first().show(); + var albumData=tr.data('albumData'); + tr.first().find('td.title a').text(albumData.songs.length+' '+t('media','songs')); + tr.find('td.album a.expander').data('expanded',false); + tr.find('td.album a.expander').removeClass('expanded'); + tr.find('td.album a.expander').text('> '); + tr.each(function(i,row){ + if(i>0){ + $(row).remove(); + } + }); }, parent:null, hide:function(){ @@ -239,7 +274,7 @@ Collection={ }, findArtist:function(name){ for(var i=0;i<Collection.artists.length;i++){ - if(Collection.artists[i].artist_name==name){ + if(Collection.artists[i].name==name){ return Collection.artists[i]; } } @@ -248,7 +283,7 @@ Collection={ var artist=Collection.findArtist(artistName); if(artist){ for(var i=0;i<artist.albums.length;i++){ - if(artist.albums[i].album_name==albumName){ + if(artist.albums[i].name==albumName){ return artist.albums[i]; } } @@ -258,7 +293,7 @@ Collection={ var album=Collection.findAlbum(artistName,albumName); if(album){ for(var i=0;i<album.songs.length;i++){ - if(album.songs[i].song_name==songName){ + if(album.songs[i].name==songName){ return album.songs[i]; } } diff --git a/apps/media/js/loader.js b/apps/media/js/loader.js index c6c834d3a31..dff4163897f 100644 --- a/apps/media/js/loader.js +++ b/apps/media/js/loader.js @@ -22,16 +22,17 @@ function addAudio(filename){ function loadPlayer(type,ready){ if(!loadPlayer.done){ + loadPlayer.done=true; + OC.addStyle('media','player'); OC.addScript('media','jquery.jplayer.min',function(){ OC.addScript('media','player',function(){ - $('body').append($('<div id="playerPlaceholder"/>')) - $('#playerPlaceholder').append($('<div/>')).load(OC.filePath('media','templates','player.php'),function(){ - loadPlayer.done=true; + var navItem=$('#apps a[href="'+OC.linkTo('media','index.php')+'"]'); + navItem.height(navItem.height()); + navItem.load(OC.filePath('media','templates','player.php'),function(){ PlayList.init(type,ready); }); }); }); - OC.addStyle('media','player'); }else{ ready(); } diff --git a/apps/media/js/music.js b/apps/media/js/music.js index c04c579d1ca..bf082207829 100644 --- a/apps/media/js/music.js +++ b/apps/media/js/music.js @@ -15,7 +15,7 @@ $(document).ready(function(){ PlayList.play(oldSize); PlayList.render(); }); - var button=$('<input type="button" title="'+t('media','Add to playlist')+'" class="add"></input>'); + var button=$('<input type="button" title="'+t('media','Add album to playlist')+'" class="add"></input>'); button.css('background-image','url('+OC.imagePath('core','actions/play-add')+')') button.click(function(event){ event.stopPropagation(); @@ -23,6 +23,7 @@ $(document).ready(function(){ PlayList.render(); }); row.find('div.name').append(button); + button.tipsy({gravity:'n', fade:true, delayIn: 400, live:true}); } Collection.display(); }); diff --git a/apps/media/js/player.js b/apps/media/js/player.js index f696b87bbde..3c022e9f8c4 100644 --- a/apps/media/js/player.js +++ b/apps/media/js/player.js @@ -28,17 +28,19 @@ var PlayList={ if(index==null){ index=PlayList.current; } + PlayList.save(); if(index>-1 && index<items.length){ PlayList.current=index; if(PlayList.player){ if(PlayList.player.data('jPlayer').options.supplied!=items[index].type){//the the audio type changes we need to reinitialize jplayer PlayList.player.jPlayer("play",time); - localStorage.setItem(oc_current_user+'oc_playlist_time',time); + localStorage.setItem(oc_current_user+'oc_playlist_time',time); PlayList.player.jPlayer("destroy"); - PlayList.save(); // so that the init don't lose the playlist +// PlayList.save(); // so that the init don't lose the playlist PlayList.init(items[index].type,null); // init calls load that calls play }else{ PlayList.player.jPlayer("setMedia", items[PlayList.current]); + $(".jp-current-song").text(items[PlayList.current].name); items[index].playcount++; PlayList.player.jPlayer("play",time); if(index>0){ @@ -56,6 +58,7 @@ var PlayList={ if (typeof Collection !== 'undefined') { Collection.registerPlay(); } + PlayList.render(); if(ready){ ready(); } @@ -63,10 +66,12 @@ var PlayList={ }else{ localStorage.setItem(oc_current_user+'oc_playlist_time',time); localStorage.setItem(oc_current_user+'oc_playlist_playing','true'); - PlayList.save(); // so that the init don't lose the playlist +// PlayList.save(); // so that the init don't lose the playlist PlayList.init(items[index].type,null); // init calls load that calls play } } + $(".song").removeClass("collection_playing"); + $(".jp-playlist-" + index).addClass("collection_playing"); }, init:function(type,ready){ if(!PlayList.player){ @@ -82,7 +87,7 @@ var PlayList={ PlayList.render(); return false; }); - PlayList.player=$('#controls div.player'); + PlayList.player=$('#jp-player'); } $(PlayList.player).jPlayer({ ended:PlayList.next, @@ -100,7 +105,7 @@ var PlayList={ } }, volume:PlayList.volume, - cssSelectorAncestor:'#controls', + cssSelectorAncestor:'.player-controls', swfPath:OC.linkTo('media','js'), }); }, @@ -127,7 +132,7 @@ var PlayList={ var type=musicTypeFromFile(song.path); var item={name:song.name,type:type,artist:song.artist,album:song.album,length:song.length,playcount:song.playCount}; item[type]=PlayList.urlBase+encodeURIComponent(song.path); - PlayList.items.push(item); + PlayList.items.push(item); } }, addFile:function(path){ @@ -157,17 +162,15 @@ var PlayList={ if(typeof localStorage !== 'undefined' && localStorage){ localStorage.setItem(oc_current_user+'oc_playlist_items',JSON.stringify(PlayList.items)); localStorage.setItem(oc_current_user+'oc_playlist_current',PlayList.current); - if(PlayList.player) { - if(PlayList.player.data('jPlayer')) { - var time=Math.round(PlayList.player.data('jPlayer').status.currentTime); - localStorage.setItem(oc_current_user+'oc_playlist_time',time); - var volume=PlayList.player.data('jPlayer').options.volume*100; - localStorage.setItem(oc_current_user+'oc_playlist_volume',volume); - } - } - if(PlayList.active){ - localStorage.setItem(oc_current_user+'oc_playlist_active','false'); + if(PlayList.player) { + if(PlayList.player.data('jPlayer')) { + var time=Math.round(PlayList.player.data('jPlayer').status.currentTime); + localStorage.setItem(oc_current_user+'oc_playlist_time',time); + var volume=PlayList.player.data('jPlayer').options.volume*100; + localStorage.setItem(oc_current_user+'oc_playlist_volume',volume); + } } + localStorage.setItem(oc_current_user+'oc_playlist_active','true'); } }, load:function(){ @@ -204,6 +207,9 @@ var PlayList={ $(document).ready(function(){ $(window).bind('beforeunload', function (){ PlayList.save(); + if(PlayList.active){ + localStorage.setItem(oc_current_user+'oc_playlist_active','false'); + } }); $('jp-previous').tipsy({gravity:'n', fade:true, live:true}); diff --git a/apps/media/js/playlist.js b/apps/media/js/playlist.js index cb7f24522a4..57180b3be7b 100644 --- a/apps/media/js/playlist.js +++ b/apps/media/js/playlist.js @@ -5,6 +5,7 @@ PlayList.render=function(){ var item=PlayList.items[i]; var li=$('<li/>'); li.append(item.name); + li.attr('class', 'jp-playlist-' + i); var img=$('<img class="remove svg action" src="'+OC.imagePath('core','actions/delete')+'"/>'); img.click(function(event){ event.stopPropagation(); @@ -18,6 +19,7 @@ PlayList.render=function(){ li.addClass('song'); PlayList.parent.append(li); } + $(".jp-playlist-" + PlayList.current).addClass("collection_playing"); } PlayList.getSelected=function(){ return $('tbody td.name input:checkbox:checked').parent().parent(); @@ -28,6 +30,7 @@ PlayList.hide=function(){ $(document).ready(function(){ PlayList.parent=$('#leftcontent'); + PlayList.init(); $('#selectAll').click(function(){ if($(this).attr('checked')){ // Check all |