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 | 51 | |
| 52 | 52 | def grouped_badges |
| 53 | 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 | 55 | end |
| 57 | 56 | end |
| 58 | 57 | ... | ... |
lib/merit/badge_rules.rb
public/admin.js
| ... | ... | @@ -13,6 +13,11 @@ var gamificationPluginAdmin = { |
| 13 | 13 | var name = jQuery('#gamification-plugin-form-badge-name').find('option:selected').text(); |
| 14 | 14 | jQuery('.name_'+name).show(); |
| 15 | 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 | 44 | assert_equal [badge], person.badges |
| 45 | 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 | 53 | end | ... | ... |
views/gamification_plugin_badges/_form.html.erb
| ... | ... | @@ -34,24 +34,26 @@ |
| 34 | 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 | 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 | 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 | 52 | <% end %> |
| 51 | - <% end %> | |
| 52 | - </div> | |
| 53 | + </div> | |
| 54 | + <% end %> | |
| 53 | 55 | <% end %> |
| 54 | - <% end %> | |
| 56 | + </div> | |
| 55 | 57 | <div class="actions"> |
| 56 | 58 | <%= f.submit %> |
| 57 | 59 | </div> | ... | ... |