Commit 3520fc1a6b506579c485f8f2ad27103b1ba07bc4

Authored by Victor Costa
1 parent 4cb40a31

Score for a community where an article is created

Showing 1 changed file with 18 additions and 2 deletions   Show diff stats
lib/merit/point_rules.rb
@@ -17,7 +17,16 @@ module Merit @@ -17,7 +17,16 @@ module Merit
17 :to => :author, 17 :to => :author,
18 :value => 1, 18 :value => 1,
19 :description => _('Point weight for article author'), 19 :description => _('Point weight for article author'),
20 - :default_weight => 50 20 + :default_weight => 500
  21 + },
  22 + :article_community => {
  23 + :action => 'article#create',
  24 + :undo_action => 'article#destroy',
  25 + :to => :profile,
  26 + :value => 1,
  27 + :description => _('Point weight for article community'),
  28 + :default_weight => 500,
  29 + :condition => lambda {|target| target.profile.community? }
21 }, 30 },
22 :vote_voteable_author => { 31 :vote_voteable_author => {
23 :action => 'vote#create', 32 :action => 'vote#create',
@@ -50,13 +59,20 @@ module Merit @@ -50,13 +59,20 @@ module Merit
50 weight(category) * value 59 weight(category) * value
51 end 60 end
52 61
  62 + def condition(setting, target)
  63 + condition = setting[:condition]
  64 + condition.present? ? condition.call(target) : true
  65 + end
  66 +
53 def initialize(environment=nil) 67 def initialize(environment=nil)
54 return if environment.nil? 68 return if environment.nil?
55 @environment = environment 69 @environment = environment
56 70
57 AVAILABLE_RULES.each do |category, setting| 71 AVAILABLE_RULES.each do |category, setting|
58 [setting[:action], setting[:undo_action]].compact.zip([1, -1]).each do |action, signal| 72 [setting[:action], setting[:undo_action]].compact.zip([1, -1]).each do |action, signal|
59 - score lambda {|target| signal * calculate_score(target, category, setting[:value])}, :on => action, :to => setting[:to], :category => category 73 + score lambda {|target| signal * calculate_score(target, category, setting[:value])}, :on => action, :to => setting[:to], :category => category do |target|
  74 + condition(setting, target)
  75 + end
60 end 76 end
61 end 77 end
62 end 78 end