From f9b3901ca3b33d42563b615aef96c16e4269ffc2 Mon Sep 17 00:00:00 2001 From: Ezequiel Date: Tue, 2 Nov 2010 17:26:42 -0300 Subject: [PATCH 1/4] Add Favorite option --- app/controllers/log_entries_controller.rb | 7 ++++++- app/controllers/welcome_controller.rb | 2 +- app/models/log_entry.rb | 7 +++++++ app/views/log_entries/_log_entry.erb | 3 +++ app/views/log_entries/favorite.js.erb | 2 ++ config/routes.rb | 1 + db/migrate/20101101194339_create_log_entries.rb | 1 + public/stylesheets/base.css | 2 ++ 8 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 app/views/log_entries/favorite.js.erb diff --git a/app/controllers/log_entries_controller.rb b/app/controllers/log_entries_controller.rb index 4c069a0..a04f979 100644 --- a/app/controllers/log_entries_controller.rb +++ b/app/controllers/log_entries_controller.rb @@ -4,7 +4,7 @@ class LogEntriesController < ApplicationController def create @log_entry = current_user.log_entries.build(params[:log_entry]) if @success = @log_entry.save - @log_entries = current_user.log_entries.most_recent.pending + @log_entries = current_user.log_entries.most_recent.pending.common end end @@ -17,5 +17,10 @@ def complete @log_entry = current_user.log_entries.find(params[:id]) @log_entry.complete! end + + def favorite + @log_entry = current_user.log_entries.find(params[:id]) + @log_entry.favorite! + end end diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index e22c587..0fd64f7 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -2,7 +2,7 @@ class WelcomeController < ApplicationController def index if user_signed_in? @log_entry = current_user.log_entries.build - @log_entries = current_user.log_entries.most_recent.pending + @log_entries = current_user.log_entries.most_recent.pending.common end end end diff --git a/app/models/log_entry.rb b/app/models/log_entry.rb index 3c1f2a6..b2a74fa 100644 --- a/app/models/log_entry.rb +++ b/app/models/log_entry.rb @@ -5,10 +5,17 @@ class LogEntry < ActiveRecord::Base scope :most_recent, :order => 'created_at DESC' scope :pending, where(:completed => false) + scope :common, where(:starred => false) def complete! self.completed = true save! end + + def favorite! + self.starred = true + save! + end + end diff --git a/app/views/log_entries/_log_entry.erb b/app/views/log_entries/_log_entry.erb index 050ec32..086361f 100644 --- a/app/views/log_entries/_log_entry.erb +++ b/app/views/log_entries/_log_entry.erb @@ -9,6 +9,9 @@
<%= link_to 'Complete', [:complete, log_entry], :method => :put, :confirm => "Are you sure?", :remote => true %> + | + <%= link_to 'Favorite', [:favorite, log_entry], :method => :put, + :remote => true %> | <%= link_to 'Remove', log_entry, :method => :delete, :confirm => "Are you sure?", :remote => true %> diff --git a/app/views/log_entries/favorite.js.erb b/app/views/log_entries/favorite.js.erb new file mode 100644 index 0000000..6c70ad4 --- /dev/null +++ b/app/views/log_entries/favorite.js.erb @@ -0,0 +1,2 @@ +$("#item-<%= @log_entry.id %>").addClass('highlight'); + diff --git a/config/routes.rb b/config/routes.rb index 817076b..f20f987 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -4,6 +4,7 @@ resources :log_entries do member do put :complete + put :favorite end end diff --git a/db/migrate/20101101194339_create_log_entries.rb b/db/migrate/20101101194339_create_log_entries.rb index b1a028e..7730a42 100644 --- a/db/migrate/20101101194339_create_log_entries.rb +++ b/db/migrate/20101101194339_create_log_entries.rb @@ -5,6 +5,7 @@ def self.up t.text :description t.boolean :obsolete t.boolean :completed + t.boolean :starred, :default => false t.timestamps end diff --git a/public/stylesheets/base.css b/public/stylesheets/base.css index 3065fea..7477c49 100644 --- a/public/stylesheets/base.css +++ b/public/stylesheets/base.css @@ -12,6 +12,8 @@ body { .session { text-align: right; } .footer { color: #666666; margin-top: 20px; } +.highlight { background-color: #f3e03f; } + a { color: #666666; } a:hover { color: #7AB1F8; } From fcfccb7f83675ee857ea2c094422715c14264d95 Mon Sep 17 00:00:00 2001 From: Ezequiel Date: Tue, 2 Nov 2010 18:38:34 -0300 Subject: [PATCH 2/4] fix css border --- public/stylesheets/base.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/stylesheets/base.css b/public/stylesheets/base.css index 7477c49..2249d2a 100644 --- a/public/stylesheets/base.css +++ b/public/stylesheets/base.css @@ -13,6 +13,12 @@ body { .footer { color: #666666; margin-top: 20px; } .highlight { background-color: #f3e03f; } +.blank { background-color: #ffffff; } + +.item { margin-left: 0px; } +.columns { width: 290px; text-align: center; } + +.span-1 { width:30px; } a { color: #666666; } a:hover { color: #7AB1F8; } From 64cb10383f0c06b47f088e5645c5fb371fe83579 Mon Sep 17 00:00:00 2001 From: Ezequiel Date: Wed, 3 Nov 2010 20:43:14 -0300 Subject: [PATCH 3/4] Add unfavorite --- app/controllers/log_entries_controller.rb | 5 +++++ app/controllers/welcome_controller.rb | 2 +- app/models/log_entry.rb | 5 +++++ app/views/log_entries/_log_entry.erb | 7 ++++++- app/views/log_entries/favorite.js.erb | 3 +-- config/routes.rb | 1 + 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/controllers/log_entries_controller.rb b/app/controllers/log_entries_controller.rb index a04f979..f6cd452 100644 --- a/app/controllers/log_entries_controller.rb +++ b/app/controllers/log_entries_controller.rb @@ -22,5 +22,10 @@ def favorite @log_entry = current_user.log_entries.find(params[:id]) @log_entry.favorite! end + + def clean_favorite + @log_entry = current_user.log_entries.find(params[:id]) + @log_entry.clean_favorite! + end end diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index 0fd64f7..e22c587 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -2,7 +2,7 @@ class WelcomeController < ApplicationController def index if user_signed_in? @log_entry = current_user.log_entries.build - @log_entries = current_user.log_entries.most_recent.pending.common + @log_entries = current_user.log_entries.most_recent.pending end end end diff --git a/app/models/log_entry.rb b/app/models/log_entry.rb index b2a74fa..ded87c9 100644 --- a/app/models/log_entry.rb +++ b/app/models/log_entry.rb @@ -16,6 +16,11 @@ def favorite! self.starred = true save! end + + def clean_favorite! + self.starred = false + save! + end end diff --git a/app/views/log_entries/_log_entry.erb b/app/views/log_entries/_log_entry.erb index 086361f..025ae8e 100644 --- a/app/views/log_entries/_log_entry.erb +++ b/app/views/log_entries/_log_entry.erb @@ -1,5 +1,5 @@ <% unless log_entry.new_record? -%> -
  • +
  • <%= log_entry.created_at.strftime("%B %d, %Y") %>
    @@ -10,8 +10,13 @@ <%= link_to 'Complete', [:complete, log_entry], :method => :put, :confirm => "Are you sure?", :remote => true %> | + <% if log_entry.starred %> + <%= link_to 'Unfavorite', [:clean_favorite, log_entry], :method => :put, + :remote => true %> + <% else %> <%= link_to 'Favorite', [:favorite, log_entry], :method => :put, :remote => true %> + <% end %> | <%= link_to 'Remove', log_entry, :method => :delete, :confirm => "Are you sure?", :remote => true %> diff --git a/app/views/log_entries/favorite.js.erb b/app/views/log_entries/favorite.js.erb index 6c70ad4..7652bc9 100644 --- a/app/views/log_entries/favorite.js.erb +++ b/app/views/log_entries/favorite.js.erb @@ -1,2 +1 @@ -$("#item-<%= @log_entry.id %>").addClass('highlight'); - +$("#item-<%= @log_entry.id %>").replaceWith("<%= escape_javascript(render(:partial => 'log_entry', :object => @log_entry)) %>"); diff --git a/config/routes.rb b/config/routes.rb index f20f987..aacc1ae 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,6 +5,7 @@ member do put :complete put :favorite + put :clean_favorite end end From 06a27dc0336cffcc3d1f44db47128c23a3b4491a Mon Sep 17 00:00:00 2001 From: Ezequiel Date: Wed, 3 Nov 2010 22:07:48 -0300 Subject: [PATCH 4/4] clean Favorite --- app/views/log_entries/clean_favorite.js.erb | 1 + 1 file changed, 1 insertion(+) create mode 100644 app/views/log_entries/clean_favorite.js.erb diff --git a/app/views/log_entries/clean_favorite.js.erb b/app/views/log_entries/clean_favorite.js.erb new file mode 100644 index 0000000..7652bc9 --- /dev/null +++ b/app/views/log_entries/clean_favorite.js.erb @@ -0,0 +1 @@ +$("#item-<%= @log_entry.id %>").replaceWith("<%= escape_javascript(render(:partial => 'log_entry', :object => @log_entry)) %>");