merit 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/lib/merit/controller_extensions.rb +4 -4
- data/merit.gemspec +1 -1
- data/test/dummy/app/controllers/admin/users_controller.rb +9 -0
- data/test/dummy/app/models/merit/badge_rules.rb +3 -0
- data/test/dummy/app/views/admin/users/index.html.erb +26 -0
- data/test/dummy/config/initializers/merit.rb +4 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/integration/navigation_test.rb +8 -1
- metadata +3 -1
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Merit
|
2
2
|
# Sets up an app-wide after_filter, and inserts merit_action entries if
|
3
3
|
# there are defined rules (for badges or points) for current
|
4
|
-
# '
|
4
|
+
# 'controller_path#action_name'
|
5
5
|
module ControllerExtensions
|
6
6
|
def self.included(base)
|
7
7
|
base.after_filter do |controller|
|
@@ -12,7 +12,7 @@ module Merit
|
|
12
12
|
:action_method => action_name,
|
13
13
|
:action_value => params[:value],
|
14
14
|
:had_errors => had_errors?,
|
15
|
-
:target_model =>
|
15
|
+
:target_model => controller_path,
|
16
16
|
:target_id => target_id
|
17
17
|
).id
|
18
18
|
|
@@ -25,7 +25,7 @@ module Merit
|
|
25
25
|
private
|
26
26
|
|
27
27
|
def rules_defined?
|
28
|
-
action = "#{
|
28
|
+
action = "#{controller_path}\##{action_name}"
|
29
29
|
AppBadgeRules[action].present? || AppPointRules[action].present?
|
30
30
|
end
|
31
31
|
|
@@ -36,7 +36,7 @@ module Merit
|
|
36
36
|
def target_object
|
37
37
|
target_obj = instance_variable_get(:"@#{controller_name.singularize}")
|
38
38
|
if target_obj.nil?
|
39
|
-
Rails.logger.warn("[merit] No object found, maybe you need a '@#{controller_name.singularize}' variable in '#{
|
39
|
+
Rails.logger.warn("[merit] No object found, maybe you need a '@#{controller_name.singularize}' variable in '#{controller_path}_controller'?")
|
40
40
|
end
|
41
41
|
target_obj
|
42
42
|
end
|
data/merit.gemspec
CHANGED
@@ -4,7 +4,7 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.description = "Manage badges, points and rankings (reputation) of resources in a Rails application."
|
5
5
|
s.homepage = "http://github.com/tute/merit"
|
6
6
|
s.files = `git ls-files`.split("\n").reject{|f| f =~ /^\./ }
|
7
|
-
s.version = '1.2.
|
7
|
+
s.version = '1.2.1'
|
8
8
|
s.authors = ["Tute Costa"]
|
9
9
|
s.email = 'tutecosta@gmail.com'
|
10
10
|
s.add_dependency 'ambry', '~> 0.3.0'
|
@@ -29,6 +29,9 @@ module Merit
|
|
29
29
|
# Example rule for multiple badge granting
|
30
30
|
grant_on 'users#index', :badge => 'gossip', :multiple => true
|
31
31
|
|
32
|
+
# Example rule for badge granting in namespaced controllers
|
33
|
+
grant_on 'admin/users#index', :badge => 'visited_admin'
|
34
|
+
|
32
35
|
# If it has 10 comments, grant commenter-10 badge
|
33
36
|
grant_on 'comments#create', :badge => 'commenter', :level => 10 do |comment|
|
34
37
|
comment.user.comments.count >= 10
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<h1>Listing users from Admin</h1>
|
2
|
+
|
3
|
+
<table>
|
4
|
+
<tr>
|
5
|
+
<th>Name</th>
|
6
|
+
<th>#Comments</th>
|
7
|
+
<th>Badges</th>
|
8
|
+
<th>Points</th>
|
9
|
+
</tr>
|
10
|
+
|
11
|
+
<% @users.each do |user| %>
|
12
|
+
<tr>
|
13
|
+
<td><%= user.name %></td>
|
14
|
+
<td><%= user.comments.count %></td>
|
15
|
+
<td><%= user.show_badges %></td>
|
16
|
+
<td><%= user.points %></td>
|
17
|
+
<td><%= link_to 'Show', user %>
|
18
|
+
- <%= link_to 'Edit', edit_user_path(user) %>
|
19
|
+
- <%= link_to 'Destroy', user, :confirm => 'Are you sure?', :method => :delete %></td>
|
20
|
+
</tr>
|
21
|
+
<% end %>
|
22
|
+
</table>
|
23
|
+
|
24
|
+
<br />
|
25
|
+
|
26
|
+
<%= link_to 'New User', new_user_path %>
|
@@ -18,6 +18,10 @@ badge_id = 0
|
|
18
18
|
:id => (badge_id = badge_id+1),
|
19
19
|
:name => 'commenter',
|
20
20
|
:description => 'You\'ve participated great in our boards!'
|
21
|
+
}, {
|
22
|
+
:id => (badge_id = badge_id+1),
|
23
|
+
:name => 'visited_admin',
|
24
|
+
:description => 'You sneaked in!'
|
21
25
|
}, {
|
22
26
|
:id => (badge_id = badge_id+1),
|
23
27
|
:name => 'has_commenter_friend',
|
data/test/dummy/config/routes.rb
CHANGED
@@ -35,8 +35,15 @@ class NavigationTest < ActiveSupport::IntegrationCase
|
|
35
35
|
visit '/users'
|
36
36
|
visit '/users'
|
37
37
|
visit '/users'
|
38
|
-
|
38
|
+
gossip = Badge.by_name('gossip').first
|
39
|
+
assert_equal 3, User.first.badges.count
|
40
|
+
assert_equal [gossip, gossip, gossip], User.first.badges
|
41
|
+
|
42
|
+
# Testing with namespaced controllers
|
43
|
+
visit '/admin/users'
|
44
|
+
visited_admin = Badge.by_name('visited_admin').first
|
39
45
|
assert_equal 4, User.first.badges.count
|
46
|
+
assert User.first.badges.include?(visited_admin)
|
40
47
|
end
|
41
48
|
|
42
49
|
test 'user workflow should grant some badges at some times' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -238,6 +238,7 @@ files:
|
|
238
238
|
- test/dummy-mongoid/public/stylesheets/scaffold.css
|
239
239
|
- test/dummy-mongoid/script/rails
|
240
240
|
- test/dummy/Rakefile
|
241
|
+
- test/dummy/app/controllers/admin/users_controller.rb
|
241
242
|
- test/dummy/app/controllers/application_controller.rb
|
242
243
|
- test/dummy/app/controllers/comments_controller.rb
|
243
244
|
- test/dummy/app/controllers/registrations_controller.rb
|
@@ -248,6 +249,7 @@ files:
|
|
248
249
|
- test/dummy/app/models/merit/point_rules.rb
|
249
250
|
- test/dummy/app/models/merit/rank_rules.rb
|
250
251
|
- test/dummy/app/models/user.rb
|
252
|
+
- test/dummy/app/views/admin/users/index.html.erb
|
251
253
|
- test/dummy/app/views/comments/_form.html.erb
|
252
254
|
- test/dummy/app/views/comments/edit.html.erb
|
253
255
|
- test/dummy/app/views/comments/index.html.erb
|