diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/media/appinfo/app.php | 30 | ||||
-rw-r--r-- | apps/media/css/music.css | 5 | ||||
-rw-r--r-- | apps/media/js/collection.js | 152 | ||||
-rw-r--r-- | apps/media/js/music.js | 20 | ||||
-rw-r--r-- | apps/media/js/playlist.js | 10 | ||||
-rw-r--r-- | apps/media/templates/collection.php | 25 | ||||
-rw-r--r-- | apps/media/templates/music.php | 2 | ||||
-rw-r--r-- | apps/media/templates/player.php | 1 | ||||
-rw-r--r-- | apps/media/templates/playlist.php | 6 |
9 files changed, 110 insertions, 141 deletions
diff --git a/apps/media/appinfo/app.php b/apps/media/appinfo/app.php index 4cdb36d4504..bc80536a969 100644 --- a/apps/media/appinfo/app.php +++ b/apps/media/appinfo/app.php @@ -27,34 +27,4 @@ OC_Util::addScript('media','loader'); OC_App::register( array( 'order' => 3, 'id' => 'media', 'name' => 'Media' )); OC_App::addNavigationEntry( array( 'id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo( 'media', 'index.php' ), 'icon' => OC_Helper::imagePath( 'media', 'media.png' ), 'name' => 'Music' )); - -// add subnavigations -$entry = array( - 'id' => "media_playlist", - 'order'=>1, - 'href' => '#playlist', - 'name' => 'Playlist' -); -OC_App::addNavigationSubEntry( "media_index", $entry); -$entry = array( - 'id' => "media_collection", - 'order'=>1, - 'href' => '#collection', - 'name' => 'Collection' -); -OC_App::addNavigationSubEntry( "media_index", $entry); -// $entry = array( -// 'id' => "media_recent", -// 'order'=>1, -// 'href' => '#recent', -// 'name' => 'Most Recent' -// ); -// OC_App::addNavigationSubEntry( "media_index", $entry); -// $entry = array( -// 'id' => "media_mostplayer", -// 'order'=>1, -// 'href' => '#mostplayed', -// 'name' => 'Most Played' -// ); -// OC_App::addNavigationSubEntry( "media_index", $entry); ?> diff --git a/apps/media/css/music.css b/apps/media/css/music.css index 3637234ab13..b8c695f74d5 100644 --- a/apps/media/css/music.css +++ b/apps/media/css/music.css @@ -3,7 +3,7 @@ li button.right.prettybutton{font-size:1em;} #collection{padding-top:1em;position:relative;width:70ex;float:left;} #collection li.album,#collection li.song{margin-left:3ex;} -#playlist{width:100%;border-spacing:0;} +#playlist{border-spacing:0;} #playlist th{background-color:#ccc; text-align:left; font-size:1.2em; padding:0.2em} #playlist tr.selected{background-color:#eee;} #playlist tr.current{background-color:#ccc;} @@ -12,7 +12,8 @@ li button.right.prettybutton{font-size:1em;} #collection li,#playlist li{list-style-type:none;} .template{display:none} -#collection{display:none}/*hide the collection initially*/ #collection li{padding-right:10px;} img.remove{float:right;} #searchresults input.play, #searchresults input.add{float:right; height:16px; width:16px;} +#collection tr.collapsed td.album, #collection tr.collapsed td.title{color:#ddd} +a.expander{float:right;display:block}
\ No newline at end of file diff --git a/apps/media/js/collection.js b/apps/media/js/collection.js index 520ce7d1129..df7b79e332d 100644 --- a/apps/media/js/collection.js +++ b/apps/media/js/collection.js @@ -49,68 +49,106 @@ Collection={ Collection.load(Collection.display) }else{ if(Collection.parent){ - Collection.parent.children('li.artist').remove(); - var template=Collection.parent.children('li.template'); - for(var i=0;i<Collection.artists.length;i++){ - var artist=Collection.artists[i]; - var li=template.clone(); - li.data('artist',artist); - li.removeClass('template'); - li.addClass('artist'); - li.data('type','artist'); - li.children('span').text(artist.artist_name); - Collection.addButtons(li); - Collection.parent.append(li); - } + Collection.parent.find('tr:not(.template)').remove(); + var template=Collection.parent.find('tr.template'); + var lastArtist=''; + var lastAlbum=''; + $.each(Collection.artists,function(index,artist){ + $.each(artist.albums,function(index,album){ + $.each(album.songs,function(index,song){ + var tr=template.clone().removeClass('template'); + tr.find('td.title a').text(song.song_name); + tr.find('td.title a').click(function(event){ + event.preventDefault(); + PlayList.add(song); + PlayList.render(); + }); + if(artist.artist_name!=lastArtist){ + tr.find('td.artist a').click(function(event){ + event.preventDefault(); + PlayList.add(artist); + PlayList.render(); + }); + tr.find('td.artist a').text(artist.artist_name); + if(artist.albums.length>1){ + var expander=$('<a class="expander">></a>'); + expander.data('expanded',true); + 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.children('td.artist').append(expander); + } + } + if(album.album_name!=lastAlbum){ + tr.find('td.album a').click(function(event){ + event.preventDefault(); + PlayList.add(album); + PlayList.render(); + }); + tr.find('td.album a').text(album.album_name); + if(album.songs.length>1){ + var expander=$('<a class="expander">></a>'); + expander.data('expanded',true); + expander.click(function(event){ + var tr=$(this).parent().parent(); + if(expander.data('expanded')){ + Collection.hideAlbum(tr.data('album')); + }else{ + Collection.showAlbum(tr.data('album')); + } + }); + tr.children('td.album').append(expander); + } + } + tr.attr('data-artist',artist.artist_name); + tr.attr('data-album',album.album_name); + lastArtist=artist.artist_name; + lastAlbum=album.album_name; + + Collection.parent.find('tbody').append(tr); + }); + Collection.hideAlbum(artist.artist_name,album.album_name); + }); + Collection.hideArtist(artist.artist_name); + }); } } }, + showArtist:function(artist){ + Collection.parent.find('tr[data-artist="'+artist+'"]').show(); + Collection.parent.find('tr[data-artist="'+artist+'"]').first().removeClass('collapsed'); + Collection.parent.find('tr[data-artist="'+artist+'"] a.expander').data('expanded',true); + Collection.parent.find('tr[data-artist="'+artist+'"] a.expander').addClass('expanded'); + Collection.parent.find('tr[data-artist="'+artist+'"] a.expander').text('v'); + }, + hideArtist:function(artist){ + if(Collection.parent.find('tr[data-artist="'+artist+'"]').length>1){ + Collection.parent.find('tr[data-artist="'+artist+'"]').hide(); + Collection.parent.find('tr[data-artist="'+artist+'"]').first().show(); + Collection.parent.find('tr[data-artist="'+artist+'"]').first().addClass('collapsed'); + Collection.parent.find('tr[data-artist="'+artist+'"] a.expander').data('expanded',false); + Collection.parent.find('tr[data-artist="'+artist+'"] a.expander').removeClass('expanded'); + Collection.parent.find('tr[data-artist="'+artist+'"] a.expander').text('>'); + } + }, + showAlbum:function(artist,album){ + Collection.parent.find('tr[data-artist="'+artist+'"][data-album="'+album+'"]').show(); + }, + hideAlbum:function(artist,album){ + Collection.parent.find('tr[data-artist="'+artist+'"][data-album="'+album+'"]').hide(); + Collection.parent.find('tr[data-artist="'+artist+'"][data-album="'+album+'"]').last().show(); + }, parent:null, hide:function(){ if(Collection.parent){ Collection.parent.hide(); } }, - showAlbums:function(artistLi){ - $('ul.albums').parent().removeClass('active'); - $('ul.albums').remove(); - var artist=artistLi.data('artist'); - if(artist){ - var template=Collection.parent.children('li.template'); - var ul=$('<ul class="albums"></ul>'); - for(var i=0;i<artist.albums.length;i++){ - var li=template.clone(); - var album=artist.albums[i]; - li.removeClass('template'); - li.addClass('album'); - li.data('album',album); - li.data('type','album'); - li.children('span').text(album.album_name); - Collection.addButtons(li); - ul.append(li); - } - artistLi.append(ul); - } - }, - showSongs:function(albumLi){ - $('ul.songs').parent().removeClass('active'); - $('ul.songs').remove(); - var album=albumLi.data('album'); - var template=Collection.parent.children('li.template'); - var ul=$('<ul class="songs"></ul>'); - for(var i=0;i<album.songs.length;i++){ - var li=template.clone(); - var song=album.songs[i]; - li.removeClass('template'); - li.addClass('song'); - li.data('song',song); - li.data('type','song'); - li.children('span').text(song.song_name); - Collection.addButtons(li); - ul.append(li); - } - albumLi.append(ul); - }, registerPlay:function(){ var item=PlayList.items[PlayList.current]; var song=Collection.findSong(item.artist,item.album,item.name); @@ -198,14 +236,6 @@ Collection={ $(document).ready(function(){ Collection.parent=$('#collection'); Collection.load(); - $('#collection li.artist>span').live('click',function(){ - $(this).parent().toggleClass('active'); - Collection.showAlbums($(this).parent()); - }); - $('#collection li.album>span').live('click',function(){ - $(this).parent().toggleClass('active'); - Collection.showSongs($(this).parent()); - }); Collection.parent.hide(); $('#scan input.start').click(function(){ $('#scan input.start').hide(); diff --git a/apps/media/js/music.js b/apps/media/js/music.js index 4e11b2951be..7034824cad8 100644 --- a/apps/media/js/music.js +++ b/apps/media/js/music.js @@ -1,23 +1,4 @@ $(document).ready(function(){ - //load the collection - $('#navigation a[href="#collection"]').click(function(){ - $('#navigation li.subentry a.active').removeClass('active'); - $(this).addClass('active'); - PlayList.hide(); - Collection.display(); - }); - $('#navigation a[href="#playlist"]').click(function(){ - $('#navigation li.subentry a.active').removeClass('active'); - $(this).addClass('active'); - PlayList.render(); - Collection.hide(); - }); - var tab=window.location.href.slice(window.location.href.indexOf('#') + 1); - PlayList.init('mp3',function(){ - if(tab=='collection'){ - $('#navigation a[href="#collection"]').trigger('click'); - } - }); OC.search.customResults.Music=function(row,item){ var parts=item.link.substr(item.link.indexOf('#')+1).split('&'); var data={}; @@ -43,6 +24,7 @@ $(document).ready(function(){ }); row.find('div.name').append(button); } + Collection.display(); }); diff --git a/apps/media/js/playlist.js b/apps/media/js/playlist.js index a15c34f93f9..636ae29c555 100644 --- a/apps/media/js/playlist.js +++ b/apps/media/js/playlist.js @@ -10,19 +10,9 @@ PlayList.render=function(){ tr.removeClass('template'); tr.data('name',item.name); tr.data('artist',item.artist); - tr.data('album',item.album); - tr.data('time',item.length); - tr.data('plays',item.playcount); tr.children('td.name').children('span').text(item.name); tr.children('td.artist').text(item.artist); tr.children('td.album').text(item.album); - var secconds=(item.length%60); - if(secconds<10){ - secconds='0'+secconds; - } - var length=Math.floor(item.length/60)+':'+secconds; - tr.children('td.time').text(length); - tr.children('td.plays').text(item.playcount); tr.data('index',i); tr.click(function(){ PlayList.play($(this).data('index')); diff --git a/apps/media/templates/collection.php b/apps/media/templates/collection.php index f47cba24868..8fd437f769b 100644 --- a/apps/media/templates/collection.php +++ b/apps/media/templates/collection.php @@ -4,14 +4,17 @@ <input type='button' class='start' value='Recan Collection'></input> <input type='button' class='stop' style='display:none' value='Pause'></input> </div> -<ul id='collection'> - <li class='artist'> - <img src="<?php echo image_path('files','loading.gif') ?>" alt='loading'/>Loading Collection... - </li> - <li class='template'> - <span></span> - <button class='add'>Add</button> - <button class='play'>Play</button> - </li> -</ul> - +<table id='collection'> + <thead> + <th>Artist</th> + <th>Album</th> + <th>Title</th> + </thead> + <tbody> + <tr class='template'> + <td class='artist'><a/></td> + <td class='album'><a/></td> + <td class='title'><a/></td> + </tr> + </tbody> +</table> diff --git a/apps/media/templates/music.php b/apps/media/templates/music.php index 7a61d59c9ba..dd393535bb9 100644 --- a/apps/media/templates/music.php +++ b/apps/media/templates/music.php @@ -1,3 +1,3 @@ <?php echo $_['player'];?> -<?php echo $_['collection'];?> <?php echo $_['playlist'];?> +<?php echo $_['collection'];?> diff --git a/apps/media/templates/player.php b/apps/media/templates/player.php index 31b06e097bc..9d6ead458f9 100644 --- a/apps/media/templates/player.php +++ b/apps/media/templates/player.php @@ -2,7 +2,6 @@ <ul class="jp-controls"> <li><a href="#" class="jp-play" tabindex="1">play</a></li> <li><a href="#" class="jp-pause" tabindex="1">pause</a></li> - <li><a href="#" class="jp-stop" tabindex="1">stop</a></li> <li><a href="#" class="jp-mute" tabindex="1">mute</a></li> <li><a href="#" class="jp-unmute" tabindex="1">unmute</a></li> <li><a href="#" class="jp-previous" tabindex="1">previous</a></li> diff --git a/apps/media/templates/playlist.php b/apps/media/templates/playlist.php index bdc6ef59bb0..f99e8a0608d 100644 --- a/apps/media/templates/playlist.php +++ b/apps/media/templates/playlist.php @@ -3,9 +3,6 @@ <tr> <th class='name'><input id='selectAll' type='checkbox'>Name</th> <th class='artist'>Artist</th> - <th class='album'>Album</th> - <th class='time'>Time</th> - <th class='plays'>Plays</th> </tr> </thead> <tbody> @@ -22,9 +19,6 @@ <span></span> </td> <td class='artist'></td> - <td class='album'></td> - <td class='time'></td> - <td class='plays'></td> </tr> </tfoot> </table>
\ No newline at end of file |