aboutsummaryrefslogtreecommitdiffstats
path: root/apps/media/js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/media/js')
-rw-r--r--apps/media/js/collection.js157
-rw-r--r--apps/media/js/loader.js9
-rw-r--r--apps/media/js/music.js3
-rw-r--r--apps/media/js/player.js38
-rw-r--r--apps/media/js/playlist.js3
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">&gt;</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">&gt;</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