Commit 3bd7c4a3a3a9b8d5f080b4a561ffe7454ab5de38
1 parent
2c72ee65
Exists in
master
and in
1 other branch
Add manual badge type
Showing
5 changed files
with
31 additions
and
18 deletions
Show diff stats
lib/gamification_plugin/dashboard_helper.rb
| @@ -51,8 +51,7 @@ module GamificationPlugin::DashboardHelper | @@ -51,8 +51,7 @@ module GamificationPlugin::DashboardHelper | ||
| 51 | 51 | ||
| 52 | def grouped_badges | 52 | def grouped_badges |
| 53 | environment.gamification_plugin_badges.all.group_by(&:owner).sort do |a, b| | 53 | environment.gamification_plugin_badges.all.group_by(&:owner).sort do |a, b| |
| 54 | - return -1 if a.first.kind_of?(Environment) | ||
| 55 | - a.first.name <=> b.first.name | 54 | + a.first.kind_of?(Environment) ? -1 : a.first.name <=> b.first.name |
| 56 | end | 55 | end |
| 57 | end | 56 | end |
| 58 | 57 |
lib/merit/badge_rules.rb
| @@ -71,6 +71,7 @@ module Merit | @@ -71,6 +71,7 @@ module Merit | ||
| 71 | value: lambda { |friendship, person| person.friends.count } | 71 | value: lambda { |friendship, person| person.friends.count } |
| 72 | } | 72 | } |
| 73 | ], | 73 | ], |
| 74 | + manual: [], | ||
| 74 | 75 | ||
| 75 | #FIXME review the name of the badges and see a way to make it generic | 76 | #FIXME review the name of the badges and see a way to make it generic |
| 76 | creative: [ | 77 | creative: [ |
public/admin.js
| @@ -13,6 +13,11 @@ var gamificationPluginAdmin = { | @@ -13,6 +13,11 @@ var gamificationPluginAdmin = { | ||
| 13 | var name = jQuery('#gamification-plugin-form-badge-name').find('option:selected').text(); | 13 | var name = jQuery('#gamification-plugin-form-badge-name').find('option:selected').text(); |
| 14 | jQuery('.name_'+name).show(); | 14 | jQuery('.name_'+name).show(); |
| 15 | jQuery('.name_'+name).find('input').removeAttr('disabled'); | 15 | jQuery('.name_'+name).find('input').removeAttr('disabled'); |
| 16 | + if(jQuery('.name_'+name).children().length>0) { | ||
| 17 | + jQuery('.action-fields').show(); | ||
| 18 | + } else { | ||
| 19 | + jQuery('.action-fields').hide(); | ||
| 20 | + } | ||
| 16 | } | 21 | } |
| 17 | 22 | ||
| 18 | } | 23 | } |
test/unit/badge_test.rb
| @@ -44,4 +44,10 @@ class BadgeTest < ActiveSupport::TestCase | @@ -44,4 +44,10 @@ class BadgeTest < ActiveSupport::TestCase | ||
| 44 | assert_equal [badge], person.badges | 44 | assert_equal [badge], person.badges |
| 45 | end | 45 | end |
| 46 | 46 | ||
| 47 | + should 'add a manual badge to person' do | ||
| 48 | + badge = GamificationPlugin::Badge.create!(:name => :manual, :owner => environment) | ||
| 49 | + person.add_badge(badge.id) | ||
| 50 | + assert_equal [badge], person.badges | ||
| 51 | + end | ||
| 52 | + | ||
| 47 | end | 53 | end |
views/gamification_plugin_badges/_form.html.erb
| @@ -34,24 +34,26 @@ | @@ -34,24 +34,26 @@ | ||
| 34 | <% tokenized_owner = @gamification_plugin_badge.owner.present? && @gamification_plugin_badge.owner.kind_of?(Organization) ? prepare_to_token_input([@gamification_plugin_badge.owner]) : nil %> | 34 | <% tokenized_owner = @gamification_plugin_badge.owner.present? && @gamification_plugin_badge.owner.kind_of?(Organization) ? prepare_to_token_input([@gamification_plugin_badge.owner]) : nil %> |
| 35 | <%= token_input_field_tag('gamification_plugin_badge[owner_id]', 'badge-owner', {:action => 'search_owners'}, {:focus => false, :hint_text => _('Choose a profile or leave it blank for a global badge'), :token_limit => 1, :pre_populate => tokenized_owner}) %> | 35 | <%= token_input_field_tag('gamification_plugin_badge[owner_id]', 'badge-owner', {:action => 'search_owners'}, {:focus => false, :hint_text => _('Choose a profile or leave it blank for a global badge'), :token_limit => 1, :pre_populate => tokenized_owner}) %> |
| 36 | </div> | 36 | </div> |
| 37 | - <h4><%= _('Actions') %></h4> | ||
| 38 | - <%= f.fields_for :custom_fields do |c| %> | ||
| 39 | - <% rules.each do |name, settings| %> | ||
| 40 | - <div class='controller-actions <%= "name_#{name}" %>'> | ||
| 41 | - <% settings.each do |setting| %> | ||
| 42 | - <%= c.label _(setting[:action]) %> | ||
| 43 | - <%= c.fields_for setting[:action] do |d| %> | ||
| 44 | - <% action = (@gamification_plugin_badge.custom_fields || {}).fetch(setting[:action], {}) %> | ||
| 45 | - <div class="field"> | ||
| 46 | - <%= d.label :threshold %><br /> | ||
| 47 | - <%= d.text_field :threshold, {value: action.fetch('threshold', "")} %> | ||
| 48 | - </div> | ||
| 49 | - <br> | 37 | + <div class="action-fields"> |
| 38 | + <h4><%= _('Actions') %></h4> | ||
| 39 | + <%= f.fields_for :custom_fields do |c| %> | ||
| 40 | + <% rules.each do |name, settings| %> | ||
| 41 | + <div class='controller-actions <%= "name_#{name}" %>'> | ||
| 42 | + <% settings.select {|s| s[:action].present?}.each do |setting| %> | ||
| 43 | + <%= c.label _(setting[:action]) %> | ||
| 44 | + <%= c.fields_for setting[:action] do |d| %> | ||
| 45 | + <% action = (@gamification_plugin_badge.custom_fields || {}).fetch(setting[:action], {}) %> | ||
| 46 | + <div class="field"> | ||
| 47 | + <%= d.label :threshold %><br /> | ||
| 48 | + <%= d.text_field :threshold, {value: action.fetch('threshold', "")} %> | ||
| 49 | + </div> | ||
| 50 | + <br> | ||
| 51 | + <% end %> | ||
| 50 | <% end %> | 52 | <% end %> |
| 51 | - <% end %> | ||
| 52 | - </div> | 53 | + </div> |
| 54 | + <% end %> | ||
| 53 | <% end %> | 55 | <% end %> |
| 54 | - <% end %> | 56 | + </div> |
| 55 | <div class="actions"> | 57 | <div class="actions"> |
| 56 | <%= f.submit %> | 58 | <%= f.submit %> |
| 57 | </div> | 59 | </div> |