permissions.html.erb 4.66 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
<%= render :partial => 'action_menu' %>

<%= title l(:label_workflow) %>

<div class="tabs">
  <ul>
    <li><%= link_to l(:label_status_transitions), workflows_edit_path(:role_id => @roles, :tracker_id => @trackers) %></li>
    <li><%= link_to l(:label_fields_permissions), workflows_permissions_path(:role_id => @roles, :tracker_id => @trackers), :class => 'selected' %></li>
  </ul>
</div>

<p><%=l(:text_workflow_edit)%>:</p>

<%= form_tag({}, :method => 'get') do %>
<p>
  <label><%=l(:label_role)%>:
  <%= options_for_workflow_select 'role_id[]', Role.sorted.select(&:consider_workflow?), @roles, :id => 'role_id', :class => 'expandable' %>
  </label>
  <a href="#" data-expands="#role_id"><span class="toggle-multiselect icon-only icon-toggle-plus"></span></a>

  <label><%=l(:label_tracker)%>:
  <%= options_for_workflow_select 'tracker_id[]', Tracker.sorted, @trackers, :id => 'tracker_id', :class => 'expandable' %>
  </label>
  <a href="#" data-expands="#tracker_id"><span class="toggle-multiselect icon-only icon-toggle-plus"></span></a>

  <%= submit_tag l(:button_edit), :name => nil %>

  <%= hidden_field_tag 'used_statuses_only', '0', :id => nil %>
  <label><%= check_box_tag 'used_statuses_only', '1', @used_statuses_only %> <%= l(:label_display_used_statuses_only) %></label>
</p>
<% end %>

<% if @trackers && @roles && @statuses.any? %>
  <%= form_tag({}, :id => 'workflow_form' ) do %>
    <%= @trackers.map {|tracker| hidden_field_tag 'tracker_id[]', tracker.id, :id => nil}.join.html_safe %>
    <%= @roles.map {|role| hidden_field_tag 'role_id[]', role.id, :id => nil}.join.html_safe %>
    <%= hidden_field_tag 'used_statuses_only', params[:used_statuses_only], :id => nil %>
    <div class="autoscroll">
    <table class="list workflows fields_permissions">
    <thead>
      <tr>
        <th>
        </th>
        <th colspan="<%= @statuses.length %>"><%=l(:label_issue_status)%></th>
      </tr>
      <tr>
        <td></td>
        <% for status in @statuses %>
        <td style="width:<%= 75 / @statuses.size %>%;">
          <%= status.name %>
        </td>
        <% end %>
      </tr>
    </thead>
    <tbody>
      <tr class="group open">
        <td colspan="<%= @statuses.size + 1 %>">
          <span class="expander icon icon-expended" onclick="toggleRowGroup(this);">&nbsp;</span>
          <%= l(:field_core_fields) %>
        </td>
      </tr>
      <% @fields.each do |field, name| %>
      <tr>
        <td class="name">
          <%= name %> <%= content_tag('span', '*', :class => 'required') if field_required?(field) %>
        </td>
        <% for status in @statuses -%>
        <td class="<%= @permissions[status.id][field].try(:join, ' ') %>" title="<%= name %> (<%= status.name %>)">
          <%= field_permission_tag(@permissions, status, field, @roles) %>
          <% unless status == @statuses.last %><a href="#" class="repeat-value">&#187;</a><% end %>
        </td>
        <% end -%>
      </tr>
      <% end %>
      <% if @custom_fields.any? %>
        <tr class="group open">
          <td colspan="<%= @statuses.size + 1 %>">
            <span class="expander icon icon-expended" onclick="toggleRowGroup(this);">&nbsp;</span>
            <%= l(:label_custom_field_plural) %>
          </td>
        </tr>
        <% @custom_fields.each do |field| %>
        <tr>
          <td class="name">
            <%= field.name %> <%= content_tag('span', '*', :class => 'required') if field_required?(field) %>
          </td>
          <% for status in @statuses -%>
          <td class="<%= @permissions[status.id][field.id.to_s].try(:join, ' ') %>" title="<%= field.name %> (<%= status.name %>)">
            <%= field_permission_tag(@permissions, status, field, @roles) %>
            <% unless status == @statuses.last %><a href="#" class="repeat-value">&#187;</a><% end %>
          </td>
          <% end -%>
        </tr>
        <% end %>
      <% end %>
    </tbody>
    </table>
    </div>
    <%= submit_tag l(:button_save) %>
  <% end %>
<% end %>

<%= javascript_tag do %>
$("a.repeat-value").click(function(e){
  e.preventDefault();
  var td = $(this).closest('td');
  var selected = td.find("select").find(":selected").val();
  td.nextAll('td').find("select").val(selected);
});

$("a[data-expands]").click(function(e){
  e.preventDefault();
  var target = $($(this).attr("data-expands"));
  if (target.attr("multiple")) {
    $(this).find('span').switchClass('icon-toggle-minus', 'icon-toggle-plus');
    target.attr("multiple", false);
    target.find("option[value=all]").show();
  } else {
    $(this).find('span').switchClass('icon-toggle-plus', 'icon-toggle-minus');
    target.attr("multiple", true);
    target.find("option[value=all]").attr("selected", false).hide();
  }
});

<% end %>