From 5eb9a3b481c12d9866e348366e40e481d06f6ff1 Mon Sep 17 00:00:00 2001 From: e3matheus Date: Wed, 28 Mar 2012 14:54:47 -0600 Subject: [PATCH 1/3] Extracted the star length into a module variable Now you can change the star sprite with a size different than 25 --- app/helpers/rating_engine/ratings_helper.rb | 9 +++++++-- app/views/rating_engine/ratings/_star_rating.html.erb | 4 ++-- lib/rating_engine.rb | 5 ++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/helpers/rating_engine/ratings_helper.rb b/app/helpers/rating_engine/ratings_helper.rb index 853c817..4abb469 100644 --- a/app/helpers/rating_engine/ratings_helper.rb +++ b/app/helpers/rating_engine/ratings_helper.rb @@ -10,7 +10,8 @@ def star_rating_for(rateable, params={}) end def score_in_pixels(current_score) - ((current_score * 125.0)/RatingEngine.max_score).round + max_length = RatingEngine.star_length * RatingEngine.max_score + ((current_score * max_length)/RatingEngine.max_score).round end def rating_url(rateable) @@ -20,5 +21,9 @@ def rating_url(rateable) eval("#{rateable.class.to_s.downcase}_ratings_path(#{rateable.id})") end end + + def star_left_padding(score) + score_in_pixels(score) - RatingEngine.star_length + end end -end \ No newline at end of file +end diff --git a/app/views/rating_engine/ratings/_star_rating.html.erb b/app/views/rating_engine/ratings/_star_rating.html.erb index 81666b0..814d18d 100644 --- a/app/views/rating_engine/ratings/_star_rating.html.erb +++ b/app/views/rating_engine/ratings/_star_rating.html.erb @@ -5,11 +5,11 @@ <% if enabled %> <% (RatingEngine.min_score..RatingEngine.max_score).each do |score| %>
  • - + <%= score %>
  • <% end %> <% end %> - \ No newline at end of file + diff --git a/lib/rating_engine.rb b/lib/rating_engine.rb index d3adf12..b9ce605 100644 --- a/lib/rating_engine.rb +++ b/lib/rating_engine.rb @@ -12,6 +12,9 @@ module RatingEngine mattr_accessor :min_score @@min_score = 1 + mattr_accessor :star_length + @@star_length = 25 + def self.setup yield self end @@ -22,4 +25,4 @@ def self.setup require 'rating_engine/engine' end -end \ No newline at end of file +end From 4323312b82eeae856d6720e5d2f81f541e345b14 Mon Sep 17 00:00:00 2001 From: e3matheus Date: Wed, 28 Mar 2012 15:24:44 -0600 Subject: [PATCH 2/3] Refactored the score_in_pixels method. No need to calculate the maxscore --- app/helpers/rating_engine/ratings_helper.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/helpers/rating_engine/ratings_helper.rb b/app/helpers/rating_engine/ratings_helper.rb index 4abb469..0e4f86e 100644 --- a/app/helpers/rating_engine/ratings_helper.rb +++ b/app/helpers/rating_engine/ratings_helper.rb @@ -10,8 +10,7 @@ def star_rating_for(rateable, params={}) end def score_in_pixels(current_score) - max_length = RatingEngine.star_length * RatingEngine.max_score - ((current_score * max_length)/RatingEngine.max_score).round + (current_score * RatingEngine.star_length).round end def rating_url(rateable) From 0f3eeaa324a5027382b73245a87187a427552883 Mon Sep 17 00:00:00 2001 From: e3matheus Date: Tue, 1 May 2012 20:12:17 -0500 Subject: [PATCH 3/3] Return an empty url if no user is signed in --- app/helpers/rating_engine/ratings_helper.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/helpers/rating_engine/ratings_helper.rb b/app/helpers/rating_engine/ratings_helper.rb index 0e4f86e..9a2da5b 100644 --- a/app/helpers/rating_engine/ratings_helper.rb +++ b/app/helpers/rating_engine/ratings_helper.rb @@ -1,7 +1,8 @@ module RatingEngine module RatingsHelper def star_rating_for(rateable, params={}) - enabled, show_score = params[:enabled].nil? ? true : params[:enabled], (params[:show_score] || true) + enabled = params[:enabled].nil? ? true : params[:enabled] + show_score = params[:show_score] || true current_score = show_score ? score_in_pixels(rateable.average_rating) : 0 render :partial => 'rating_engine/ratings/star_rating', @@ -14,7 +15,9 @@ def score_in_pixels(current_score) end def rating_url(rateable) - if rateable.rated_by?(controller.current_user) + if current_user.nil? + "" + elsif rateable.rated_by?(controller.current_user) eval("#{rateable.class.to_s.downcase}_rating_path(#{rateable.id})") else eval("#{rateable.class.to_s.downcase}_ratings_path(#{rateable.id})")