merit 3.0.3 → 4.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -9
- data/NEWS.md +25 -0
- data/README.md +29 -10
- data/app/models/merit/badge.rb +1 -9
- data/lib/merit/{rules_badge_methods.rb → badge_rules_methods.rb} +0 -0
- data/lib/merit/base_target_finder.rb +1 -6
- data/lib/merit/{model_additions.rb → class_methods.rb} +0 -11
- data/lib/merit/controller_extensions.rb +4 -22
- data/lib/{generators → merit/generators}/active_record/install_generator.rb +8 -8
- data/lib/{generators → merit/generators}/active_record/merit_generator.rb +4 -4
- data/lib/{generators → merit/generators}/active_record/remove_generator.rb +5 -5
- data/lib/{generators/active_record/templates/add_merit_fields_to_model.rb → merit/generators/active_record/templates/add_merit_fields_to_model.erb} +0 -0
- data/lib/{generators/active_record/templates/create_badges_sashes.rb → merit/generators/active_record/templates/create_badges_sashes.erb} +0 -0
- data/lib/{generators/active_record/templates/create_merit_actions.rb → merit/generators/active_record/templates/create_merit_actions.erb} +2 -0
- data/lib/{generators/active_record/templates/create_merit_activity_logs.rb → merit/generators/active_record/templates/create_merit_activity_logs.erb} +0 -0
- data/lib/{generators/active_record/templates/create_sashes.rb → merit/generators/active_record/templates/create_sashes.erb} +0 -0
- data/lib/{generators/active_record/templates/create_scores_and_points.rb → merit/generators/active_record/templates/create_scores_and_points.erb} +1 -1
- data/lib/{generators/active_record/templates/remove_merit_fields_from_model.rb → merit/generators/active_record/templates/remove_merit_fields_from_model.erb} +0 -0
- data/lib/{generators/active_record/templates/remove_merit_tables.rb → merit/generators/active_record/templates/remove_merit_tables.erb} +0 -0
- data/lib/merit/generators/install_generator.rb +21 -0
- data/lib/{generators/merit → merit/generators}/merit_generator.rb +7 -2
- data/lib/{generators/merit → merit/generators}/remove_generator.rb +7 -2
- data/lib/{generators/merit/templates/merit.rb → merit/generators/templates/merit.erb} +13 -14
- data/lib/{generators/merit/templates/merit_badge_rules.rb → merit/generators/templates/merit_badge_rules.erb} +0 -0
- data/lib/{generators/merit/templates/merit_point_rules.rb → merit/generators/templates/merit_point_rules.erb} +0 -0
- data/lib/{generators/merit/templates/merit_rank_rules.rb → merit/generators/templates/merit_rank_rules.erb} +0 -0
- data/lib/merit/judge.rb +6 -5
- data/{app/models/merit/action.rb → lib/merit/models/action_concern.rb} +12 -10
- data/lib/merit/models/active_record/{merit/action.rb → action.rb} +5 -1
- data/lib/merit/models/active_record/{merit/activity_log.rb → activity_log.rb} +3 -1
- data/lib/merit/models/active_record/{merit/badges_sash.rb → badges_sash.rb} +4 -2
- data/lib/merit/models/active_record/{merit/sash.rb → sash.rb} +5 -2
- data/lib/merit/models/active_record/{merit/score.rb → score.rb} +4 -1
- data/lib/merit/models/badges_sash_concern.rb +13 -0
- data/lib/merit/models/base/badges_sash.rb +1 -1
- data/lib/merit/models/base/sash.rb +1 -1
- data/lib/merit/models/sash_concern.rb +53 -0
- data/lib/merit/{rules_points_methods.rb → point_rules_methods.rb} +0 -0
- data/lib/merit/{rules_rank_methods.rb → rank_rules_methods.rb} +3 -18
- data/lib/merit.rb +29 -56
- data/merit.gemspec +5 -2
- data/test/dummy/app/models/address.rb +1 -12
- data/test/dummy/app/models/comment.rb +3 -21
- data/test/dummy/app/models/user.rb +1 -14
- data/test/dummy/config/application.rb +5 -1
- data/test/dummy/config/application_api_only.rb +1 -1
- data/test/dummy/db/migrate/20130329224406_create_merit_actions.rb +2 -0
- data/test/dummy/db/schema.rb +4 -8
- data/test/integration/navigation_test.rb +3 -3
- data/test/test_helper.rb +0 -2
- data/test/unit/base_target_finder_test.rb +7 -26
- data/test/unit/merit_unit_test.rb +6 -8
- data/test/unit/rule_unit_test.rb +8 -8
- data/test/unit/rules_matcher_test.rb +9 -6
- data/test/unit/sash_finder_test.rb +5 -5
- data/test/unit/sash_test.rb +16 -0
- data/test/unit/score_test.rb +1 -1
- data/test/unit/target_finder_test.rb +13 -13
- metadata +64 -62
- data/UPGRADING.md +0 -256
- data/lib/generators/active_record/templates/add_target_data_to_merit_actions.rb +0 -5
- data/lib/generators/active_record/upgrade_generator.rb +0 -40
- data/lib/generators/merit/install_generator.rb +0 -16
- data/lib/generators/merit/upgrade_generator.rb +0 -7
- data/lib/merit/models/mongoid/merit/action.rb +0 -18
- data/lib/merit/models/mongoid/merit/activity_log.rb +0 -11
- data/lib/merit/models/mongoid/merit/badges_sash.rb +0 -20
- data/lib/merit/models/mongoid/merit/sash.rb +0 -30
- data/lib/merit/models/mongoid/merit/score.rb +0 -45
- data/test/dummy/db/migrate/20140906225844_create_players.rb +0 -8
- data/test/dummy/public/javascripts/application.js +0 -2
- data/test/dummy/public/javascripts/controls.js +0 -965
- data/test/dummy/public/javascripts/dragdrop.js +0 -974
- data/test/dummy/public/javascripts/effects.js +0 -1123
- data/test/dummy/public/javascripts/prototype.js +0 -6001
- data/test/dummy/public/javascripts/rails.js +0 -191
- data/test/orm_models/active_record.rb +0 -11
- data/test/orm_models/mongoid.rb +0 -15
@@ -1,30 +0,0 @@
|
|
1
|
-
module Merit
|
2
|
-
# Sash is a container for reputation data for meritable models. It's an
|
3
|
-
# indirection between meritable models and badges and scores (one to one
|
4
|
-
# relationship).
|
5
|
-
#
|
6
|
-
# It's existence make join models like badges_users and scores_users
|
7
|
-
# unnecessary. It should be transparent at the application.
|
8
|
-
class Sash
|
9
|
-
include Mongoid::Document
|
10
|
-
include Mongoid::Timestamps
|
11
|
-
include Base::Sash
|
12
|
-
|
13
|
-
has_many :badges_sashes, class_name: 'Merit::BadgesSash', dependent: :destroy
|
14
|
-
has_many :scores, class_name: 'Merit::Score', dependent: :destroy
|
15
|
-
|
16
|
-
after_create :create_scores
|
17
|
-
|
18
|
-
# Retrieve all points from a category or none if category doesn't exist
|
19
|
-
# By default retrieve all Points
|
20
|
-
# @param category [String] The category
|
21
|
-
# @return [ActiveRecord::Relation] containing the points
|
22
|
-
def score_points(options = {})
|
23
|
-
scope = scores
|
24
|
-
if (category = options[:category])
|
25
|
-
scope = scope.where(category: category)
|
26
|
-
end
|
27
|
-
Merit::Score::Point.where(:score_id.in => scope.map(&:_id))
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module Merit
|
2
|
-
class Score
|
3
|
-
include Mongoid::Document
|
4
|
-
include Mongoid::Timestamps
|
5
|
-
|
6
|
-
field :category, type: String, default: 'default'
|
7
|
-
|
8
|
-
belongs_to :sash, class_name: 'Merit::Sash'
|
9
|
-
has_many :score_points, class_name: 'Merit::Score::Point', dependent: :destroy
|
10
|
-
|
11
|
-
# Meant to display a leaderboard. Accepts options :table_name (users by
|
12
|
-
# default), :since_date (1.month.ago by default) and :limit (10 by
|
13
|
-
# default).
|
14
|
-
#
|
15
|
-
# It lists top 10 scored objects in the last month, unless you change
|
16
|
-
# query parameters.
|
17
|
-
def self.top_scored(options = {})
|
18
|
-
options[:since_date] ||= 1.month.ago
|
19
|
-
options[:limit] ||= 10
|
20
|
-
Score.where(created_at: (options[:since_date]..Time.now))
|
21
|
-
.desc(:points)
|
22
|
-
.limit(options[:limit])
|
23
|
-
.flatten.map { |score| score.sash.user }
|
24
|
-
end
|
25
|
-
|
26
|
-
def points
|
27
|
-
score_points.sum(:num_points) || 0
|
28
|
-
end
|
29
|
-
|
30
|
-
class Point
|
31
|
-
include Mongoid::Document
|
32
|
-
include Mongoid::Timestamps
|
33
|
-
|
34
|
-
field :num_points, type: Integer, default: 0
|
35
|
-
field :log, type: String
|
36
|
-
|
37
|
-
belongs_to :score, class_name: 'Merit::Score'
|
38
|
-
has_many :activity_logs, class_name: 'Merit::ActivityLog', as: :related_change
|
39
|
-
|
40
|
-
def sash_id
|
41
|
-
score.sash_id
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|