Commit a4abbe84fc2c118417035ce1f7f415768fdc1801
1 parent
8268e552
Exists in
master
and in
1 other branch
Adapt badge edition form for composed actions
Showing
3 changed files
with
35 additions
and
7 deletions
Show diff stats
lib/gamification_plugin.rb
... | ... | @@ -50,7 +50,7 @@ class GamificationPlugin < Noosfero::Plugin |
50 | 50 | end |
51 | 51 | |
52 | 52 | def js_files |
53 | - ['jquery.noty.packaged.min.js', 'jquery.easypiechart.min.js', 'main.js'] | |
53 | + ['jquery.noty.packaged.min.js', 'jquery.easypiechart.min.js', 'main.js', 'admin.js'] | |
54 | 54 | end |
55 | 55 | |
56 | 56 | ... | ... |
public/admin.js
... | ... | @@ -4,5 +4,20 @@ var gamificationPluginAdmin = { |
4 | 4 | var template = $('.gamification-plugin-rank-rules .template-level > div').clone(); |
5 | 5 | template.find('.level-value').text($('.gamification-plugin-rank-rules .rank-rules .items .level').length + 1); |
6 | 6 | $('.gamification-plugin-rank-rules .rank-rules .items').append(template); |
7 | + }, | |
8 | + | |
9 | + selectCustomFieldsOnNameChange: function() { | |
10 | + jQuery('.controller-actions').find('input').attr('disabled', 'disabled'); | |
11 | + jQuery('.controller-actions').hide(); | |
12 | + console.log('.name_'+jQuery('#gamification-plugin-form-badge-name').val()); | |
13 | + var name = jQuery('#gamification-plugin-form-badge-name').find('option:selected').text(); | |
14 | + jQuery('.name_'+name).show(); | |
15 | + jQuery('.name_'+name).find('input').removeAttr('disabled'); | |
7 | 16 | } |
17 | + | |
8 | 18 | } |
19 | + | |
20 | +jQuery(function() { | |
21 | + $('#gamification-plugin-form-badge-name').on('change', gamificationPluginAdmin.selectCustomFieldsOnNameChange); | |
22 | + gamificationPluginAdmin.selectCustomFieldsOnNameChange(); | |
23 | +}); | ... | ... |
views/gamification_plugin_badges/_form.html.erb
... | ... | @@ -11,9 +11,11 @@ |
11 | 11 | </div> |
12 | 12 | <% end %> |
13 | 13 | |
14 | - <div class="field"> | |
14 | + <% rules = Merit::BadgeRules::AVAILABLE_RULES %> | |
15 | + <% rules.merge! Merit::BadgeRules::CONFERENCE_RULES %> | |
16 | + <div class="field" id="gamification-plugin-form-badge-name"> | |
15 | 17 | <%= f.label :name %><br /> |
16 | - <%= f.select :name, Merit::BadgeRules::AVAILABLE_RULES.map{ |key, rule| key } %> | |
18 | + <%= f.select :name, rules.map{ |key, rule| key } %> | |
17 | 19 | </div> |
18 | 20 | <div class="field"> |
19 | 21 | <%= f.label :title %><br /> |
... | ... | @@ -27,11 +29,22 @@ |
27 | 29 | <%= f.label :level %><br /> |
28 | 30 | <%= f.text_field :level %> |
29 | 31 | </div> |
32 | + <h4><%= _('Actions') %></h4> | |
30 | 33 | <%= f.fields_for :custom_fields do |c| %> |
31 | - <div class="field"> | |
32 | - <%= c.label :threshold %><br /> | |
33 | - <%= c.text_field :threshold %> | |
34 | - </div> | |
34 | + <% rules.each do |name, settings| %> | |
35 | + <div class='controller-actions <%= "name_#{name}" %>'> | |
36 | + <% settings.each do |setting| %> | |
37 | + <%= c.label _(setting[:action]) %> | |
38 | + <%= c.fields_for setting[:action] do |d| %> | |
39 | + <% action = (@gamification_plugin_badge.custom_fields || {}).fetch(setting[:action], {}) %> | |
40 | + <div class="field"> | |
41 | + <%= d.label :threshold %><br /> | |
42 | + <%= d.text_field :threshold, {value: action.fetch('threshold', "")} %> | |
43 | + </div> | |
44 | + <% end %> | |
45 | + <% end %> | |
46 | + </div> | |
47 | + <% end %> | |
35 | 48 | <% end %> |
36 | 49 | <div class="actions"> |
37 | 50 | <%= f.submit %> | ... | ... |