UNC-Libraries/hy-c

View on GitHub
app/views/hyrax/base/_form_progress.html.erb

Summary

Maintainability
Test Coverage
<%# [hyc-override] https://github.com/samvera/hyrax/tree/hyrax-v4.0.0/app/views/hyrax/base/_form_progress.html.erb %>
<%# [hyc-override] Switch ordering of form completion requirements. Change agreement checkbox %>
<aside id="form-progress" class="form-progress card">
  <div class="card-header">
    <h3 class="card-title"><%= t("hyrax.works.progress.header") %></h3>
  </div>
  <div class="list-group">
    <div class="list-group-item">
      <fieldset>
        <legend class="legend-save-work"><%= t('.requirements') %></legend>
        <ul class="requirements">
          <%# [hyc-override] Make file completion first in the list %>
          <% if Hyrax.config.work_requires_files? %>
            <li class="incomplete" id="required-files"><%= t('.required_files') %></li>
          <% end %>
          <li class="incomplete" id="required-metadata"><%= t('.required_descriptions') %></li>
          <% if Flipflop.show_deposit_agreement? && Flipflop.active_deposit_agreement_acceptance? %>
            <li class="incomplete" id="required-agreement"><%= t('.required_agreement') %></li>
          <% end %>
        </ul>
      </fieldset>
    </div>

    <div class="set-access-controls list-group-item">
      <%= render 'form_visibility_component', f: f, save_work: true %>
    </div>
    <% if Flipflop.proxy_deposit? && current_user.can_make_deposits_for.any? %>
      <div class="list-group-item">
        <%= f.input :on_behalf_of, label: t(".proxy_depositors"), collection: current_user.can_make_deposits_for, prompt: t(".yourself"), value_method: :user_key %>
      </div>
    <% end %>

    <% form_progress_sections_for(form: f.object).each do |section| %>
      <%= render "form_progress_#{section}", f: f %>
    <% end %>
  </div>
  <div class="card-footer text-center">
    <% if ::Flipflop.show_deposit_agreement? %>
      <% if ::Flipflop.active_deposit_agreement_acceptance? %>
        <% if !current_user.admin? || (current_user.admin? && params[:action] == 'new') %>
          <label>
            <%# [hyc-override] Changing agreement button to submit the onyen of the depositor %>
            <%= f.input :agreement,
                        as: :boolean,
                        label: t('hyrax.active_consent_to_agreement'),
                        checked: f.object.agreement_accepted,
                        input_html: { id: 'agreement' },
                        checked_value: current_user.name,
                        unchecked_value: '0' %>
            <%= link_to t('hyrax.pages.tabs.agreement_page'),
                        hyrax.agreement_path,
                        target: '_blank' %>
          </label>
        <% else %>
          <label class="d-none">
            <%# [hyc-override] Changing agreement button to submit the onyen of the depositor %>
            <%= f.input :agreement,
                        as: :boolean,
                        checked: f.object.agreement_accepted,
                        input_html: { id: 'agreement', class: 'admin-editor', checked: true },
                        checked_value: current_user.name,
                        unchecked_value: current_user.name %>
          </label>
        <% end %>
      <% end %>
    <% end %>
    <br />
    <%# TODO: If we start using ActionCable, we could listen for object updates and
              alert the user that the object has changed by someone else %>
    <%= f.input Hyrax::Actors::OptimisticLockValidator.version_field, as: :hidden if f.object.persisted? %>
    <%= f.submit class: 'btn btn-primary', onclick: "confirmation_needed = false;", id: "with_files_submit", name: "save_with_files" %>
  </div>

  <%# Provide immediate feedback after the form is submitted while the subsequent page is loading %>
  <div class="card-footer save-progress" hidden>
    <div class="progress">
      <div class="progress-bar progress-bar-striped progress-bar-complete progress-bar-animated">
        <span id="form-feedback" aria-live="assertive"><%= t(".saving_your_work") %></span>
      </div>
    </div>
  </div>
</aside>