From b62e22fcfe649a04226d054809babbcfe2323fab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Bucho=CC=88ster?= Date: Thu, 12 May 2011 01:12:07 +0200 Subject: [PATCH] outsourced tracklists to partial + finally fixed autoloading 'lib' path --- app/controllers/tracks_controller.rb | 5 +++ app/helpers/tracks_helper.rb | 2 + app/views/home/index.html.haml | 10 ++--- app/views/search/index.html.haml | 28 +++--------- app/views/tracks/_list.html.haml | 10 +++++ config/routes.rb | 2 + public/javascripts/application.js | 55 ++++++++++------------- public/stylesheets/layout.css | 22 ++++----- test/functional/tracks_controller_test.rb | 9 ++++ test/unit/helpers/tracks_helper_test.rb | 4 ++ 10 files changed, 76 insertions(+), 71 deletions(-) create mode 100644 app/controllers/tracks_controller.rb create mode 100644 app/helpers/tracks_helper.rb create mode 100644 app/views/tracks/_list.html.haml create mode 100644 test/functional/tracks_controller_test.rb create mode 100644 test/unit/helpers/tracks_helper_test.rb diff --git a/app/controllers/tracks_controller.rb b/app/controllers/tracks_controller.rb new file mode 100644 index 0000000..9240225 --- /dev/null +++ b/app/controllers/tracks_controller.rb @@ -0,0 +1,5 @@ +class TracksController < ApplicationController + def index + end + +end diff --git a/app/helpers/tracks_helper.rb b/app/helpers/tracks_helper.rb new file mode 100644 index 0000000..4769c0f --- /dev/null +++ b/app/helpers/tracks_helper.rb @@ -0,0 +1,2 @@ +module TracksHelper +end diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml index 83b6733..f30f233 100644 --- a/app/views/home/index.html.haml +++ b/app/views/home/index.html.haml @@ -10,17 +10,15 @@ .navigate %a.left %a.right - %ul.songs.short{:count=>"5"} + %ul.tracks.short{:count=>"5"} - @tracks.track.each_with_index do |track, i| - id = @youtube_client.videos_by(:query => "#{track.name} #{track.artist.name} official", :page => 1, :per_page => 1, :order_by => "relevance") %li = image_tag "ico/play.png", :class=>"play", :videoid=>id.videos.first.unique_id = image_tag "ico/add.png", :class=>"add" %span - %span= (i+1).to_s+"." = track.name - =raw " by " - = link_to trimString(track.artist.name, 50), :controller=>"artists",:action=>"show",:id=>CGI.escape(track.artist.name) + = link_to trimString(track.artist.name, 50), artist_path(CGI.escape(track.artist.name)) .right %h2.headline.small %span.left Top Artists @@ -30,12 +28,12 @@ %ul.artists.big{:count=>"2"} - @artists.artist.each do |artist| %li - = link_to :controller=>:artists,:action=>:show,:id=>CGI.escape(artist.name) do + = link_to artist_path(CGI.escape(artist.name)) do = image_tag validate_img_url(artist.image, "artist", :extralarge) %p = trimString(artist.name, 30) %br>< - =raw "#{artist.listeners} Listeners, #{artist.playcount} Plays" + %span= "#{artist.listeners} Listeners, #{artist.playcount} Plays" %br.clean .bottom %hr diff --git a/app/views/search/index.html.haml b/app/views/search/index.html.haml index 915fc05..fce8aeb 100644 --- a/app/views/search/index.html.haml +++ b/app/views/search/index.html.haml @@ -21,18 +21,9 @@ =raw "#{artist.listeners} Listeners" %br.clean %br - #search_all_songs + #search_all_tracks -#%h2.headline.small Songs - %ul.songs.short - - @tracks.track.each_with_index do |track, i| - - break if i == 13 - - id = @youtube_client.videos_by(:query => "#{track.name} #{track.artist} official", :page => 1, :per_page => 1, :order_by => "relevance") - %li - = image_tag "ico/play.png", :class=>"play", :videoid=>id.videos.first.unique_id - = image_tag "ico/add.png", :class=>"add" - %span= track.name - =raw " by " - = link_to trimString(track.artist, 50), :controller=>"artists",:action=>"show",:id=>CGI.escape(track.artist) + = render :partial => "tracks/list", :locals => { :tracks => @tracks, :additional_class => "short", :count => 13 } #search_all_albums -#%h2.headline.small Albums %ul.albums.wide @@ -49,7 +40,7 @@ - @artists.artist.each_with_index do |artist, i| - break if i >= 8 %li - = link_to :controller=>:artists,:action=>:show,:id=>CGI.escape(artist.name) do + = link_to artist_path(CGI.escape(artist.name)) do = image_tag validate_img_url(artist.image, "artist", :extralarge) %p = trimString(artist.name, 26) @@ -74,17 +65,8 @@ %br.clean = link_to "NACHLADEN", :class => "more" do = image_tag "ico/more.png" - #search_songs - %ul.songs.tab - - @tracks.track.each_with_index do |track, i| - - break if i == 18 - - id = @youtube_client.videos_by(:query => "#{track.name} #{track.artist} official", :page => 1, :per_page => 1, :order_by => "relevance") - %li - = image_tag "ico/play.png", :class=>"play", :videoid=>id.videos.first.unique_id - = image_tag "ico/add.png", :class=>"add" - %span= track.name - =raw " by " - = link_to trimString(track.artist, 50), :controller=>"artists",:action=>"show",:id=>CGI.escape(track.artist) + #search_tracks + = render :partial => "tracks/list", :locals => { :tracks => @tracks, :additional_class => "tab", :count => 26 } %br.clean %br = link_to "NACHLADEN", :class => "more" do diff --git a/app/views/tracks/_list.html.haml b/app/views/tracks/_list.html.haml new file mode 100644 index 0000000..53e4f55 --- /dev/null +++ b/app/views/tracks/_list.html.haml @@ -0,0 +1,10 @@ +- count = "" if !local_assigns.has_key? :count + +%ul.tracks{ :class => additional_class, :count => count } + - tracks.track.each_with_index do |track, i| + - id = @youtube_client.videos_by(:query => "#{track.name} #{track.artist} official", :page => 1, :per_page => 1, :order_by => "relevance") + %li + = image_tag "ico/play.png", :class=>"play", :videoid=>id.videos.first.unique_id + = image_tag "ico/add.png", :class=>"add" + %span= track.name + = link_to trimString(track.artist, 50), artist_path(CGI.escape(track.artist)) \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 5f85ada..7c9c26e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,7 @@ Nineminutes::Application.routes.draw do + get "tracks/index" + resources :artists, :constraints => { :id => /.*/ } resources :search resources :home diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 025ad81..3c0fd52 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -12,14 +12,14 @@ $(document).ready(function(){ initArtistDescription(); initPlaylist(); - makeSongsAddable(); // bind click-event to "add" button (for each song) + makeTracksAddable(); // bind click-event to "add" button (for each track) - initTopMusic(); + initTrackAndArtistLists(); navigateTopMusic(); initPlayer(); - playSong(); + playTrack(); fitImages(".artists.big img"); // resize and resposition images (artists, album) fitImages(".artists.small img"); @@ -34,12 +34,12 @@ $(window).load(function() { }); -function playSong(){ - $('.songs .play').live('click',function(){ +function playTrack(){ + $('.tracks .play').live('click',function(){ $id = $(this).attr("videoid"); loadVideo($id); - $('#song .artist').text($(this).parents('li').children('a').text()); - $('#song .song').text($(this).parents('li').children('span').text()); + $('#track .artist').text($(this).parents('li').children('a').text()); + $('#track .track').text($(this).parents('li').children('span').text()); }); } @@ -78,29 +78,26 @@ function initPlaylist() { } function savePlaylist() { - var songs = []; + var tracks = []; $('ul#playlist li').each(function(i) { - songs[i] = { + tracks[i] = { title : $(this).children('span').text(), artist : $(this).children('a').text(), videoid : $(this).attr('videoid') } }); - //console.log(songs); - $.store.set("9minutesPlaylist", songs); + //console.log(tracks); + $.store.set("9minutesPlaylist", tracks); //console.log("playlist saved ;)"); } -function makeSongsAddable() { - $('.songs li .add').live("click", onAddSongToPlaylist); +function makeTracksAddable() { + $('.tracks li .add').live("click", onAddTrackToPlaylist); } -function onAddSongToPlaylist(event) { +function onAddTrackToPlaylist(event) { // if already in playlist - - - $listElement = $(event.target).parents('li').clone(); $vuid = $listElement.children('.play').attr('videoid'); @@ -121,12 +118,9 @@ function onAddSongToPlaylist(event) { $(this).slideDown(500); }); savePlaylist(); - - // TODO: prevent double entries - // TODO: get video-id from youtube } -function onRemoveSongFromPlaylist(event) { +function onRemoveTrackFromPlaylist(event) { $listElement = $(event.target).parent(); $listElement.fadeTo(300, 0.1, function() { $(this).hide("blind", function() { @@ -202,12 +196,14 @@ function getTimeFromInt(number) { return ((m >= 10) ? '' : '0') + m + ":" + ((s >= 10) ? '' : '0') + s; } -function initTopMusic(){ - $('#home .songs li').each(function(){ - if($(this).parent().children().index(this)>=5) $(this).hide(); +function initTrackAndArtistLists(){ + $('.tracks li').each(function() { + $count = parseInt($(this).parent().attr("count")); + if($(this).parent().children().index(this)>=$count) $(this).hide(); }); - $('#home .artists li').each(function(){ - if($(this).parent().children().index(this)>=2) $(this).hide(); + $('#home .artists li').each(function() { + $count = parseInt($(this).parent().attr("count")); + if($(this).parent().children().index(this)>=$count) $(this).hide(); }); } @@ -218,7 +214,7 @@ function navigateTopMusic(){ $start = $id.parent().children().index($id); $count = parseInt($selector.attr("count")); $size = $selector.children().size(); - + if($(this).hasClass("left")) { $start -= $count; if($start < 0) return; @@ -242,7 +238,6 @@ function ajj(){ } - function initArtistDescription(){ $("#artist .description .text a").each(function(){ $text = $(this).html(); @@ -251,8 +246,6 @@ function initArtistDescription(){ } - - function fitImages(selector) { switch(selector) { @@ -337,7 +330,7 @@ function fixLists() { $(".artists.small li:nth-child(4n)").css("marginRight", 0); $(".artists.ultrasmall li:nth-child(3n)").css("marginRight", 0); - $(".songs.tab li:nth-child(2n)").css("marginRight", 0); + $(".tracks.tab li:nth-child(2n)").css("marginRight", 0); $("#artist .gallery a:nth-child(6n)").css("marginRight", 0); $("#home .artists li:nth-child(2n)").css("marginRight", 0); } diff --git a/public/stylesheets/layout.css b/public/stylesheets/layout.css index 4204714..35f67c1 100644 --- a/public/stylesheets/layout.css +++ b/public/stylesheets/layout.css @@ -290,30 +290,30 @@ a { text-decoration: none; color: #7d8791; } overflow: hidden; } -.songs li +.tracks li { height: 32px; line-height: 32px; border-bottom: 1px dotted #dce2e6; font-size: 12px; width: 465px; } -.songs.short li { width: 395px; } -.songs.long li { width: 530px; } -.songs.tab { overflow: hidden; } -.songs.tab li { float: left; margin-right: 20px; } -.songs li span +.tracks.short li { width: 395px; } +.tracks.long li { width: 530px; } +.tracks.tab { overflow: hidden; } +.tracks.tab li { float: left; margin-right: 20px; } +.tracks li span { color: #2d3135; margin-left: 10px; } -.songs.long li span { color: #027bbf; } -.songs li img { vertical-align: middle; } -.songs a:hover, .albums a:hover { color: #505861;} -.songs .play, .songs .add { cursor: pointer; } +.tracks.long li span { color: #027bbf; } +.tracks li img { vertical-align: middle; } +.tracks a:hover, .albums a:hover { color: #505861;} +.tracks .play, .tracks .add { cursor: pointer; } #search_all_artists { float: left; } -#search_all_songs { float: right; } +#search_all_tracks { float: right; } #search_all_albums { float: left; width: 514px; } .albums li diff --git a/test/functional/tracks_controller_test.rb b/test/functional/tracks_controller_test.rb new file mode 100644 index 0000000..2b5a736 --- /dev/null +++ b/test/functional/tracks_controller_test.rb @@ -0,0 +1,9 @@ +require 'test_helper' + +class TracksControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + +end diff --git a/test/unit/helpers/tracks_helper_test.rb b/test/unit/helpers/tracks_helper_test.rb new file mode 100644 index 0000000..b7bd3c8 --- /dev/null +++ b/test/unit/helpers/tracks_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class TracksHelperTest < ActionView::TestCase +end