unepwcmc/SAPI

View on GitHub
app/views/admin/documents/_form.html.erb

Summary

Maintainability
Test Coverage
<%= nested_form_for @document, as: :document,
  url: (@event ? admin_event_document_path(@event, @document) : admin_document_path(@document)),
  multipart: true,
  html: { class: 'form-horizontal' } do |f| %>

  <%= error_messages_for(@document) %>
  
  <% unless @document.event && @document.event.designation %>
    <div class="control-group">
      <%= f.label :designation_id, class: 'control-label' %>
      <div class="controls">
        <%= f.select :designation_id,
          options_for_select(
            @designations.map { |l| [l.name, l.id] },
            @document.designation_id
          ), include_blank: true
        %>
      </div>
    </div>
  <% end %>

  <div class="control-group">
    <%= f.label :event_id, class: 'control-label' %>
    <div class="controls">
      <%= f.select :event_id,
        options_for_select(
          @events.map { |l| [l.name, l.id] },
          @document.event_id
        ), include_blank: true
      %>
      <% if @document.event %>
        <p>
          <%= link_to "Reorder #{@document.event.name} documents", show_order_admin_event_documents_path(@document.event) %>
        </p>
      <% end %>
    </div>
  </div>

  <div class="control-group">
    <%= f.label :title, class: 'control-label' %>
    <div class="controls">
      <%= f.text_field :title %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :language_id, class: 'control-label' %>
    <div class="controls">
      <%= f.select :language_id,
        options_for_select(
          @languages.map { |l| [l.name, l.id] },
          @document.language_id
        )
      %>
    </div>
  </div>

  <div class="control-group">
    <%= f.label :primary_language_document_id, class: 'control-label' %>
    <div class="controls">
      <%= f.hidden_field :primary_language_document_id, {
        :class => 'primary-language-document',
        :'data-init-selection' => {id: f.object.primary_language_document.try(:id), text: f.object.primary_language_document.try(:title)}.to_json,
      } %>
    </div>
  </div>

  <div class="control-group">
    <%= f.label :date, class: 'control-label' %>
    <div class="controls">
      <%= f.text_field :date, :class => "datepicker", :value => @document.date_formatted %>
    </div>
  </div>

  <div class="control-group">
    <%= f.label :is_public, class: 'control-label' %>
    <div class="controls">
      <%= f.check_box :is_public %>
    </div>
  </div>

  <% if @document.is_a?(Document::ReviewOfSignificantTrade) %>
    <%= f.fields_for :review_details do |ff| %>
      <div class="control-group">
        <%= ff.label :review_phase_id, class: 'control-label' %>
        <div class="controls">
          <%= ff.select :review_phase_id,
            options_for_select(DocumentTag::ReviewPhase.all.map { |rp| [rp.name, rp.id] },
              @document.review_details.review_phase_id),
            { :class => 'phases', :style => 'width: 220px' }
          %>
        </div>
      </div>
      <div class="control-group">
        <%= ff.label :process_stage_id, class: 'control-label' %>
        <div class="controls">
          <%= ff.select :process_stage_id,
            options_for_select(DocumentTag::ProcessStage.all.map { |ps| [ps.name, ps.id] },
              @document.review_details.process_stage_id),
            { :class => 'phases', :style => 'width: 220px' }
          %>
        </div>
      </div>
      <div class="control-group">
        <%= ff.label :recommended_category, class: 'control-label' %>
        <div class="controls">
          <%= ff.text_area :recommended_category, :rows => 3, :value => @document.review_details.recommended_category %>
        </div>
      </div>
    <% end %>
  <% elsif @document.is_a?(Document::Proposal) %>
    <%= f.fields_for :proposal_details do |ff| %>
      <div class="control-group">
        <%= ff.label :proposal_number, class: 'control-label' %>
        <div class="controls">
          <%= ff.text_field :proposal_number, :value => @document.proposal_details.proposal_number %>
        </div>
      </div>

      <div class="control-group">
        <%= ff.label :proposal_nature, class: 'control-label' %>
        <div class="controls">
          <%= ff.text_field :proposal_nature %>
        </div>
      </div>

      <div class="control-group">
        <%= ff.label :proposal_outcome_id, class: 'control-label' %>
        <div class="controls">
          <%= ff.select :proposal_outcome_id,
            options_for_select(
              DocumentTag::ProposalOutcome.all.map { |po| [po.name, po.id] },
              @document.proposal_details.proposal_outcome_id
            ),
            {
              include_blank: true,
              class: 'phases',
              style: 'width: 220px'
            }
          %>
        </div>
      </div>

      <div class="control-group">
        <%= ff.label :representation, class: 'control-label' %>
        <div class="controls">
          <%= ff.text_field :representation %>
        </div>
      </div>

    <% end %>
  <% end %>

  <div class="control-group">
    <%= f.label :discussion_id, class: 'control-label' %>
    <div class="controls">
      <%= f.select :discussion_id,
        options_for_select(DocumentTag::Discussion.order(:name).map { |d| [d.name, d.id] },
          @document.discussion_id),
          {include_blank: true, style: 'width: 220px'}
      %>
    </div>
  </div>

  <div class="control-group">
    <%= f.label :discussion_sort_index, class: 'control-label' %>
    <div class="controls">
      <%= f.text_field :discussion_sort_index %>
    </div>
  </div>

  <div class="control-group">
    <%= f.label :citations, class: 'control-label' %>
    <div class="controls">
      <%= f.fields_for :citations do |ff| %>

        <%= f.label :taxon_concept_ids %>
        <%= ff.hidden_field :stringy_taxon_concept_ids, {
          :class => 'citation-taxon-concept',
          :'data-taxonomy-id' => @taxonomy.id,
          :'data-name-status-filter' => ['A', 'N'].to_json,
          :'data-init-selection' => ff.object.taxon_concepts.map{ |tc| {id: tc.id, text: tc.full_name} }.to_json,
        } %>
        <%= f.label :geo_entity_ids %>
        <%= ff.select :geo_entity_ids,
          options_from_collection_for_select(
            @geo_entities,
            :id,
            :name_en,
            ff.object.geo_entities.pluck(:id)
          ), { },
          { :multiple => true, :class => 'citation-geo-entity', :style => 'width: 220px' }
        %>

        <%= ff.link_to_remove 'Remove citation' %>
      <% end %>
      <p><%= f.link_to_add 'Add another citation', :citations %></p>
    </div>
  </div>

  <div class="control-group">
    <%= f.label :filename, class: 'control-label' %>
    <div class="controls">
      <%= @document.filename %>
      <%= f.file_field :filename %>
    </div>
  </div>

  <div class="control-group">
    <div class="controls">
      <%= f.submit 'Save' %>
    </div>
  </div>

<% end %>