Commit e647c029db9165f0abf0e86d6360a87a2416138f
1 parent
696c40b4
Exists in
master
and in
1 other branch
Adjust rules for generic pontuation
Showing
2 changed files
with
20 additions
and
19 deletions
Show diff stats
lib/merit/badge_rules.rb
@@ -14,7 +14,7 @@ module Merit | @@ -14,7 +14,7 @@ module Merit | ||
14 | action: 'comment#create', | 14 | action: 'comment#create', |
15 | default_threshold: 5, | 15 | default_threshold: 5, |
16 | to: :author, | 16 | to: :author, |
17 | - value: lambda { |comment, author| author.present? ? author.conference_comments.count : 0 } | 17 | + value: lambda { |comment, author| author.present? ? author.comments.count : 0 } |
18 | } | 18 | } |
19 | ], | 19 | ], |
20 | comment_received: [ | 20 | comment_received: [ |
@@ -22,7 +22,7 @@ module Merit | @@ -22,7 +22,7 @@ module Merit | ||
22 | action: 'comment#create', | 22 | action: 'comment#create', |
23 | default_threshold: 5, | 23 | default_threshold: 5, |
24 | to: lambda {|comment| comment.source.author}, | 24 | to: lambda {|comment| comment.source.author}, |
25 | - value: lambda { |comment, author| author.present? ? Comment.where(source_id: Article.conference_articles.where(author_id: author.id)).count : 0 } | 25 | + value: lambda { |comment, author| author.present? ? Comment.where(source_id: Article.where(author_id: author.id)).count : 0 } |
26 | } | 26 | } |
27 | ], | 27 | ], |
28 | article_author: [ | 28 | article_author: [ |
@@ -30,7 +30,7 @@ module Merit | @@ -30,7 +30,7 @@ module Merit | ||
30 | action: 'article#create', | 30 | action: 'article#create', |
31 | default_threshold: 5, | 31 | default_threshold: 5, |
32 | to: :author, | 32 | to: :author, |
33 | - value: lambda { |article, author| author.present? ? TextArticle.conference_articles.comments.where(author_id: author.id).count : 0 } | 33 | + value: lambda { |article, author| author.present? ? TextArticle.where(author_id: author.id).count : 0 } |
34 | }, | 34 | }, |
35 | ], | 35 | ], |
36 | positive_votes_received: [ | 36 | positive_votes_received: [ |
lib/merit/point_rules.rb
@@ -10,7 +10,7 @@ module Merit | @@ -10,7 +10,7 @@ module Merit | ||
10 | value: 1, | 10 | value: 1, |
11 | description: _('Comment author'), | 11 | description: _('Comment author'), |
12 | default_weight: 40, | 12 | default_weight: 40, |
13 | - condition: lambda {|comment, profile| comment.source.profile == profile}, | 13 | + condition: lambda {|comment, profile| profile.nil? or comment.source.profile == profile}, |
14 | }, | 14 | }, |
15 | comment_article_author: { | 15 | comment_article_author: { |
16 | action: 'comment#create', | 16 | action: 'comment#create', |
@@ -19,7 +19,7 @@ module Merit | @@ -19,7 +19,7 @@ module Merit | ||
19 | value: 1, | 19 | value: 1, |
20 | description: _('Article author of a comment'), | 20 | description: _('Article author of a comment'), |
21 | default_weight: 50, | 21 | default_weight: 50, |
22 | - condition: lambda {|comment, profile| comment.source.profile == profile}, | 22 | + condition: lambda {|comment, profile| profile.nil? or comment.source.profile == profile}, |
23 | }, | 23 | }, |
24 | comment_article: { | 24 | comment_article: { |
25 | action: 'comment#create', | 25 | action: 'comment#create', |
@@ -28,7 +28,7 @@ module Merit | @@ -28,7 +28,7 @@ module Merit | ||
28 | value: 1, | 28 | value: 1, |
29 | description: _('Source article of a comment'), | 29 | description: _('Source article of a comment'), |
30 | default_weight: 50, | 30 | default_weight: 50, |
31 | - condition: lambda {|comment, profile| comment.source.profile == profile}, | 31 | + condition: lambda {|comment, profile| profile.nil? or comment.source.profile == profile}, |
32 | }, | 32 | }, |
33 | comment_community: { | 33 | comment_community: { |
34 | action: 'comment#create', | 34 | action: 'comment#create', |
@@ -37,7 +37,7 @@ module Merit | @@ -37,7 +37,7 @@ module Merit | ||
37 | value: 1, | 37 | value: 1, |
38 | description: _('Article community of a comment'), | 38 | description: _('Article community of a comment'), |
39 | default_weight: 50, | 39 | default_weight: 50, |
40 | - condition: lambda {|comment, profile| comment.profile.community? and comment.profile == profile } | 40 | + condition: lambda {|comment, profile| profile.nil? or (comment.profile.community? and comment.profile == profile) } |
41 | }, | 41 | }, |
42 | article_author: { | 42 | article_author: { |
43 | action: 'article#create', | 43 | action: 'article#create', |
@@ -45,8 +45,8 @@ module Merit | @@ -45,8 +45,8 @@ module Merit | ||
45 | to: :author, | 45 | to: :author, |
46 | value: 1, | 46 | value: 1, |
47 | description: _('Article author'), | 47 | description: _('Article author'), |
48 | - default_weight: 10, | ||
49 | - condition: lambda {|article, profile| article.profile == profile}, | 48 | + default_weight: 50, |
49 | + condition: lambda {|article, profile| profile.nil? or article.profile == profile}, | ||
50 | }, | 50 | }, |
51 | article_community: { | 51 | article_community: { |
52 | action: 'article#create', | 52 | action: 'article#create', |
@@ -55,7 +55,7 @@ module Merit | @@ -55,7 +55,7 @@ module Merit | ||
55 | value: 1, | 55 | value: 1, |
56 | description: _('Article community'), | 56 | description: _('Article community'), |
57 | default_weight: 10, | 57 | default_weight: 10, |
58 | - condition: lambda {|article, profile| article.profile.present? and article.profile.community? and article.profile == profile } | 58 | + condition: lambda {|article, profile| profile.nil? or (article.profile.present? and article.profile.community? and article.profile == profile) } |
59 | }, | 59 | }, |
60 | vote_voteable_author: { | 60 | vote_voteable_author: { |
61 | action: 'vote#create', | 61 | action: 'vote#create', |
@@ -65,7 +65,7 @@ module Merit | @@ -65,7 +65,7 @@ module Merit | ||
65 | value: lambda {|vote| vote.vote}, | 65 | value: lambda {|vote| vote.vote}, |
66 | description: _('Author of a voted content'), | 66 | description: _('Author of a voted content'), |
67 | default_weight: 20, | 67 | default_weight: 20, |
68 | - condition: lambda {|vote, profile| vote.voteable.profile == profile } | 68 | + condition: lambda {|vote, profile| profile.nil? or vote.voteable.profile == profile } |
69 | }, | 69 | }, |
70 | vote_voteable: { | 70 | vote_voteable: { |
71 | action: 'vote#create', | 71 | action: 'vote#create', |
@@ -75,7 +75,7 @@ module Merit | @@ -75,7 +75,7 @@ module Merit | ||
75 | value: lambda {|vote| vote.vote}, | 75 | value: lambda {|vote| vote.vote}, |
76 | description: _('Voted content'), | 76 | description: _('Voted content'), |
77 | default_weight: 30, | 77 | default_weight: 30, |
78 | - condition: lambda {|vote, profile| vote.voteable.profile == profile } | 78 | + condition: lambda {|vote, profile| profile.nil? or vote.voteable.profile == profile } |
79 | }, | 79 | }, |
80 | vote_voter: { | 80 | vote_voter: { |
81 | action: 'vote#create', | 81 | action: 'vote#create', |
@@ -84,7 +84,7 @@ module Merit | @@ -84,7 +84,7 @@ module Merit | ||
84 | value: lambda {|vote| 1}, | 84 | value: lambda {|vote| 1}, |
85 | description: _('Voter'), | 85 | description: _('Voter'), |
86 | default_weight: 10, | 86 | default_weight: 10, |
87 | - condition: lambda {|vote, profile| vote.voteable.profile == profile } | 87 | + condition: lambda {|vote, profile| profile.nil? or vote.voteable.profile == profile } |
88 | }, | 88 | }, |
89 | friends: { | 89 | friends: { |
90 | action: 'friendship#create', | 90 | action: 'friendship#create', |
@@ -113,7 +113,7 @@ module Merit | @@ -113,7 +113,7 @@ module Merit | ||
113 | value: 1, | 113 | value: 1, |
114 | description: _('Follower'), | 114 | description: _('Follower'), |
115 | default_weight: 10, | 115 | default_weight: 10, |
116 | - condition: lambda {|follow, profile| follow.source.profile == profile }, | 116 | + condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, |
117 | profile_action: true | 117 | profile_action: true |
118 | }, | 118 | }, |
119 | followed_article_author: { | 119 | followed_article_author: { |
@@ -123,7 +123,7 @@ module Merit | @@ -123,7 +123,7 @@ module Merit | ||
123 | value: 1, | 123 | value: 1, |
124 | description: _('Followed'), | 124 | description: _('Followed'), |
125 | default_weight: 20, | 125 | default_weight: 20, |
126 | - condition: lambda {|follow, profile| follow.source.profile == profile }, | 126 | + condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, |
127 | profile_action: true | 127 | profile_action: true |
128 | }, | 128 | }, |
129 | #mobilizer: { | 129 | #mobilizer: { |
@@ -133,7 +133,7 @@ module Merit | @@ -133,7 +133,7 @@ module Merit | ||
133 | #value: 1, | 133 | #value: 1, |
134 | #description: _('Mobilized Article Author'), | 134 | #description: _('Mobilized Article Author'), |
135 | #default_weight: 60, | 135 | #default_weight: 60, |
136 | - #condition: lambda {|target, profile| target.source.profile == profile }, | 136 | + #condition: lambda {|target, profile| profile.nil? or target.source.profile == profile }, |
137 | #profile_action: true | 137 | #profile_action: true |
138 | #}, | 138 | #}, |
139 | #mobilized_article_author: { | 139 | #mobilized_article_author: { |
@@ -143,7 +143,7 @@ module Merit | @@ -143,7 +143,7 @@ module Merit | ||
143 | #value: 1, | 143 | #value: 1, |
144 | #description: _('Mobilized Article Author'), | 144 | #description: _('Mobilized Article Author'), |
145 | #default_weight: 70, | 145 | #default_weight: 70, |
146 | - #condition: lambda {|follow, profile| follow.source.profile == profile }, | 146 | + #condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, |
147 | #profile_action: true | 147 | #profile_action: true |
148 | #}, | 148 | #}, |
149 | #mobilized_article: { | 149 | #mobilized_article: { |
@@ -153,7 +153,7 @@ module Merit | @@ -153,7 +153,7 @@ module Merit | ||
153 | #value: 1, | 153 | #value: 1, |
154 | #description: _('Mobilized Article Author'), | 154 | #description: _('Mobilized Article Author'), |
155 | #default_weight: 70, | 155 | #default_weight: 70, |
156 | - #condition: lambda {|follow, profile| follow.source.profile == profile }, | 156 | + #condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, |
157 | #profile_action: true | 157 | #profile_action: true |
158 | #} | 158 | #} |
159 | } | 159 | } |
@@ -183,7 +183,8 @@ module Merit | @@ -183,7 +183,8 @@ module Merit | ||
183 | AVAILABLE_RULES.each do |point_type, setting| | 183 | AVAILABLE_RULES.each do |point_type, setting| |
184 | GamificationPlugin::PointsCategorization.for_type(point_type).includes(:profile).each do |categorization| | 184 | GamificationPlugin::PointsCategorization.for_type(point_type).includes(:profile).each do |categorization| |
185 | [setting[:action], setting[:undo_action]].compact.zip([1, -1]).each do |action, signal| | 185 | [setting[:action], setting[:undo_action]].compact.zip([1, -1]).each do |action, signal| |
186 | - score lambda {|target| signal * calculate_score(target, categorization.weight, setting[:value])}, on: action, to: setting[:to], category: categorization.id.to_s do |target| | 186 | + block = lambda {|target| signal * calculate_score(target, categorization.weight, setting[:value])} |
187 | + score block, on: action, to: setting[:to], category: categorization.id.to_s do |target| | ||
187 | condition(setting, target, categorization.profile) | 188 | condition(setting, target, categorization.profile) |
188 | end | 189 | end |
189 | end | 190 | end |