testmycode/tmc-server

View on GitHub
app/views/courses/manage_deadlines.html.erb

Summary

Maintainability
Test Coverage
<script type="text/javascript">
  $(document).ready(function() {
    if (<%= @course.contains_unlock_deadlines? %>) {
      $(".unlock-deadline-field").show();
    }
  });
</script>

<h1 class="float-left">Edit deadlines</h1>
<a id="toggle-advanced-deadline-options" class="btn btn-sm btn-link float-right" href="javascript:void(0);">Toggle advanced options</a>
<div class="float-clear"></div>

<div class="alert alert-primary" role="alert">
  <p>Soft deadlines can be exceeded. Exercises can be submitted after the soft deadline has passed, but the students can receive only 75% of the exercise points.</p>
  <p>Hard deadlines can not be exceeded. Students can't submit exercises after the hard deadline has passed.</p>
</div>

<%= form_tag save_deadlines_organization_course_url(@organization, @course), method: :post do %>
  <table class="exercise-list table">
    <thead>
    <tr>
      <th>Exercise group</th>
      <th>Exercise</th>
      <th>Soft deadlines</th>
      <th>Hard deadlines</th>
      <th></th>
    </tr>
    </thead>

    <% @course.exercise_groups.each do |group| %>
      <%
         group_display_name = group.name.empty? ? '(default)' : group.name
         param_name = group.name.empty? ? 'empty_group' : "group[#{group.name}]"
         exercises = group.exercises(false).natsort_by(&:name)
         uniform = group.uniform_group_deadlines?
      %>
      <tbody id="group_<%= group.name %>">
      <tr>
        <td><%= group_display_name %></td>
        <td>
          <%= render partial: 'exercises/list_single',
            collection: exercises,
            as: :exercise,
            layout: 'exercises/simple_list_layout',
            locals: {
              unlocks: @unlocks
            }
          %>
        </td>
        <td>
          <%=
              render partial: 'deadline_fields',
                     locals:
                       {
                         group: group,
                         deadline: group.soft_group_deadline,
                         deadline_type: 'soft',
                         param_name: param_name,
                         disabled: !uniform,
                         uniform: uniform
                       }
          %>
        </td>
        <td>
          <%=
              render partial: 'deadline_fields',
                     locals:
                       {
                         group: group,
                         deadline: group.hard_group_deadline,
                         deadline_type: 'hard',
                         param_name: param_name,
                         disabled: !uniform,
                         uniform: uniform
                       }
          %>
        </td>
        <td class="deadline-toggle-buttons">
          <a class="toggle-groups-exercises btn btn-sm btn-link" id="toggle1_<%= group.name %>" href="javascript:void(0);">Show single exercises</a>
        </td>
      </tr>
      </tbody>

      <tbody id="exercises_<%= group.name %>" class="single-exercise-deadlines">
      <% exercises.each do |ex| %>
        <tr>
          <td><%= group_display_name %></td>
          <td><%= ex.name %></td>
          <td>
            <%=
                render partial: 'deadline_fields',
                       locals:
                         {
                           group: group,
                           deadline: ex.soft_deadline_spec_obj,
                           deadline_type: 'soft',
                           param_name: "exercise[#{ex.name}]",
                           disabled: true, # initially hidden and disabled, javascript will enable when shown
                           uniform: true
                         }
            %>
          </td>
          <td>
            <%=
                render partial: 'deadline_fields',
                       locals:
                         {
                           group: group,
                           deadline: ex.deadline_spec_obj,
                           deadline_type: 'hard',
                           param_name: "exercise[#{ex.name}]",
                           disabled: true,
                           uniform: true
                         }
            %>
          </td>
          <td class="deadline-toggle-buttons">
            <% if ex == exercises.first %>
              <a class="reset-group-deadlines btn btn-sm btn-warning" id="reset_<%=group.name %>" href="javascript:void(0);">Clear single deadlines</a><br/>
              <a class="toggle-groups-exercises btn btn-sm btn-link" id="toggle2_<%= group.name %>" href="javascript:void(0);">Show the whole group</a><br/>
            <% end %>
          </td>
        </tr>
      <% end %>
      </tbody>

    <% end %>
  </table>
  <%= submit_tag 'Save changes', class: "btn btn-info" %>
<% end %>