Commit 3520fc1a6b506579c485f8f2ad27103b1ba07bc4
1 parent
4cb40a31
Exists in
master
and in
1 other branch
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 |