From e647c029db9165f0abf0e86d6360a87a2416138f Mon Sep 17 00:00:00 2001 From: Hugo Melo Date: Sun, 11 Oct 2015 11:55:42 -0300 Subject: [PATCH] Adjust rules for generic pontuation --- lib/merit/badge_rules.rb | 6 +++--- lib/merit/point_rules.rb | 33 +++++++++++++++++---------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/merit/badge_rules.rb b/lib/merit/badge_rules.rb index 66ef047..cb731ca 100644 --- a/lib/merit/badge_rules.rb +++ b/lib/merit/badge_rules.rb @@ -14,7 +14,7 @@ module Merit action: 'comment#create', default_threshold: 5, to: :author, - value: lambda { |comment, author| author.present? ? author.conference_comments.count : 0 } + value: lambda { |comment, author| author.present? ? author.comments.count : 0 } } ], comment_received: [ @@ -22,7 +22,7 @@ module Merit action: 'comment#create', default_threshold: 5, to: lambda {|comment| comment.source.author}, - value: lambda { |comment, author| author.present? ? Comment.where(source_id: Article.conference_articles.where(author_id: author.id)).count : 0 } + value: lambda { |comment, author| author.present? ? Comment.where(source_id: Article.where(author_id: author.id)).count : 0 } } ], article_author: [ @@ -30,7 +30,7 @@ module Merit action: 'article#create', default_threshold: 5, to: :author, - value: lambda { |article, author| author.present? ? TextArticle.conference_articles.comments.where(author_id: author.id).count : 0 } + value: lambda { |article, author| author.present? ? TextArticle.where(author_id: author.id).count : 0 } }, ], positive_votes_received: [ diff --git a/lib/merit/point_rules.rb b/lib/merit/point_rules.rb index e454380..bf9fc69 100644 --- a/lib/merit/point_rules.rb +++ b/lib/merit/point_rules.rb @@ -10,7 +10,7 @@ module Merit value: 1, description: _('Comment author'), default_weight: 40, - condition: lambda {|comment, profile| comment.source.profile == profile}, + condition: lambda {|comment, profile| profile.nil? or comment.source.profile == profile}, }, comment_article_author: { action: 'comment#create', @@ -19,7 +19,7 @@ module Merit value: 1, description: _('Article author of a comment'), default_weight: 50, - condition: lambda {|comment, profile| comment.source.profile == profile}, + condition: lambda {|comment, profile| profile.nil? or comment.source.profile == profile}, }, comment_article: { action: 'comment#create', @@ -28,7 +28,7 @@ module Merit value: 1, description: _('Source article of a comment'), default_weight: 50, - condition: lambda {|comment, profile| comment.source.profile == profile}, + condition: lambda {|comment, profile| profile.nil? or comment.source.profile == profile}, }, comment_community: { action: 'comment#create', @@ -37,7 +37,7 @@ module Merit value: 1, description: _('Article community of a comment'), default_weight: 50, - condition: lambda {|comment, profile| comment.profile.community? and comment.profile == profile } + condition: lambda {|comment, profile| profile.nil? or (comment.profile.community? and comment.profile == profile) } }, article_author: { action: 'article#create', @@ -45,8 +45,8 @@ module Merit to: :author, value: 1, description: _('Article author'), - default_weight: 10, - condition: lambda {|article, profile| article.profile == profile}, + default_weight: 50, + condition: lambda {|article, profile| profile.nil? or article.profile == profile}, }, article_community: { action: 'article#create', @@ -55,7 +55,7 @@ module Merit value: 1, description: _('Article community'), default_weight: 10, - condition: lambda {|article, profile| article.profile.present? and article.profile.community? and article.profile == profile } + condition: lambda {|article, profile| profile.nil? or (article.profile.present? and article.profile.community? and article.profile == profile) } }, vote_voteable_author: { action: 'vote#create', @@ -65,7 +65,7 @@ module Merit value: lambda {|vote| vote.vote}, description: _('Author of a voted content'), default_weight: 20, - condition: lambda {|vote, profile| vote.voteable.profile == profile } + condition: lambda {|vote, profile| profile.nil? or vote.voteable.profile == profile } }, vote_voteable: { action: 'vote#create', @@ -75,7 +75,7 @@ module Merit value: lambda {|vote| vote.vote}, description: _('Voted content'), default_weight: 30, - condition: lambda {|vote, profile| vote.voteable.profile == profile } + condition: lambda {|vote, profile| profile.nil? or vote.voteable.profile == profile } }, vote_voter: { action: 'vote#create', @@ -84,7 +84,7 @@ module Merit value: lambda {|vote| 1}, description: _('Voter'), default_weight: 10, - condition: lambda {|vote, profile| vote.voteable.profile == profile } + condition: lambda {|vote, profile| profile.nil? or vote.voteable.profile == profile } }, friends: { action: 'friendship#create', @@ -113,7 +113,7 @@ module Merit value: 1, description: _('Follower'), default_weight: 10, - condition: lambda {|follow, profile| follow.source.profile == profile }, + condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, profile_action: true }, followed_article_author: { @@ -123,7 +123,7 @@ module Merit value: 1, description: _('Followed'), default_weight: 20, - condition: lambda {|follow, profile| follow.source.profile == profile }, + condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, profile_action: true }, #mobilizer: { @@ -133,7 +133,7 @@ module Merit #value: 1, #description: _('Mobilized Article Author'), #default_weight: 60, - #condition: lambda {|target, profile| target.source.profile == profile }, + #condition: lambda {|target, profile| profile.nil? or target.source.profile == profile }, #profile_action: true #}, #mobilized_article_author: { @@ -143,7 +143,7 @@ module Merit #value: 1, #description: _('Mobilized Article Author'), #default_weight: 70, - #condition: lambda {|follow, profile| follow.source.profile == profile }, + #condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, #profile_action: true #}, #mobilized_article: { @@ -153,7 +153,7 @@ module Merit #value: 1, #description: _('Mobilized Article Author'), #default_weight: 70, - #condition: lambda {|follow, profile| follow.source.profile == profile }, + #condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, #profile_action: true #} } @@ -183,7 +183,8 @@ module Merit AVAILABLE_RULES.each do |point_type, setting| GamificationPlugin::PointsCategorization.for_type(point_type).includes(:profile).each do |categorization| [setting[:action], setting[:undo_action]].compact.zip([1, -1]).each do |action, signal| - score lambda {|target| signal * calculate_score(target, categorization.weight, setting[:value])}, on: action, to: setting[:to], category: categorization.id.to_s do |target| + block = lambda {|target| signal * calculate_score(target, categorization.weight, setting[:value])} + score block, on: action, to: setting[:to], category: categorization.id.to_s do |target| condition(setting, target, categorization.profile) end end -- libgit2 0.21.2