_form.html.erb 1.89 KB
<%= form_for(@gamification_plugin_badge, :url => {:action => @gamification_plugin_badge.new_record? ? :create : :update, :id => @gamification_plugin_badge.id }) do |f| %>
  <% if @gamification_plugin_badge.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@gamification_plugin_badge.errors.count, "error") %> prohibited this gamification_plugin_badge from being saved:</h2>

      <ul>
      <% @gamification_plugin_badge.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <% rules =  Merit::BadgeRules::AVAILABLE_RULES %>
  <% rules.merge! Merit::BadgeRules::CONFERENCE_RULES if defined? Merit::BadgeRules::CONFERENCE_RULES %>
  <div class="field" id="gamification-plugin-form-badge-name">
    <%= f.label :name %><br />
    <%= f.select :name, rules.map{ |key, rule| key } %>
  </div>
  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :description %><br />
    <%= f.text_field :description %>
  </div>
  <div class="field">
    <%= f.label :level %><br />
    <%= f.text_field :level %>
  </div>
  <h4><%= _('Actions') %></h4>
  <%= f.fields_for :custom_fields do |c| %>
    <% rules.each do |name, settings| %>
      <div class='controller-actions <%= "name_#{name}" %>'>
        <% settings.each do |setting| %>
          <%= c.label _(setting[:action]) %>
          <%= c.fields_for setting[:action]  do |d| %>
            <% action = (@gamification_plugin_badge.custom_fields || {}).fetch(setting[:action], {}) %>
            <div class="field">
              <%= d.label :threshold %><br />
              <%= d.text_field :threshold, {value: action.fetch('threshold', "")} %>
            </div>
            <br>
          <% end %>
        <% end %>
      </div>
    <% end %>
  <% end %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>