diff --git a/app/views/workflows/_form.html.erb b/app/views/workflows/_form.html.erb index d565a02a2e..2b62721c93 100644 --- a/app/views/workflows/_form.html.erb +++ b/app/views/workflows/_form.html.erb @@ -1,7 +1,7 @@ - - + - - + + <% for new_status in @statuses %> -
+
<%= link_to_function('', "toggleCheckboxesBySelector('table.transitions-#{name} input[type=checkbox]:not(:disabled)')", :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}", :class => 'no-tooltip icon-only icon-checked') %> @@ -9,8 +9,8 @@ <%=l(:label_new_statuses_allowed)%>
<%= link_to_function('', "toggleCheckboxesBySelector('table.transitions-#{name} input[type=checkbox]:not(:disabled).new-status-#{new_status.id}')", @@ -26,7 +26,7 @@ <% for old_status in [nil] + @statuses %> <% next if old_status.nil? && name != 'always' %>
+ <%= link_to_function('', "toggleCheckboxesBySelector('table.transitions-#{name} input[type=checkbox]:not(:disabled).old-status-#{old_status.try(:id) || 0}')", :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}", :class => 'no-tooltip icon-only icon-checked') %> diff --git a/app/views/workflows/edit.html.erb b/app/views/workflows/edit.html.erb index df4507be2e..49fd117945 100644 --- a/app/views/workflows/edit.html.erb +++ b/app/views/workflows/edit.html.erb @@ -33,28 +33,28 @@ <% if @trackers && @roles && @statuses.any? %> <%= form_tag workflows_path, method: :patch, 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 %> -
+
+ <%= @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 %> <%= render :partial => 'form', :locals => {:name => 'always', :workflows => @workflows['always']} %> - -
- <%= l(:label_additional_workflow_transitions_for_author) %> -
- <%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %> -
-
- <%= javascript_tag "hideFieldset($('#author_workflows'))" unless @workflows['author'].present? %> - -
- <%= l(:label_additional_workflow_transitions_for_assignee) %> -
- <%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %> -
-
- <%= javascript_tag "hideFieldset($('#assignee_workflows'))" unless @workflows['assignee'].present? %>
+ +
+ <%= l(:label_additional_workflow_transitions_for_author) %> +
+ <%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %> +
+
+ <%= javascript_tag "hideFieldset($('#author_workflows'))" unless @workflows['author'].present? %> + +
+ <%= l(:label_additional_workflow_transitions_for_assignee) %> +
+ <%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %> +
+
+ <%= javascript_tag "hideFieldset($('#assignee_workflows'))" unless @workflows['assignee'].present? %> <%= submit_tag l(:button_save) %> <% end %> <% end %> \ No newline at end of file diff --git a/app/views/workflows/permissions.html.erb b/app/views/workflows/permissions.html.erb index 806d557dc1..ebab2855c7 100644 --- a/app/views/workflows/permissions.html.erb +++ b/app/views/workflows/permissions.html.erb @@ -34,16 +34,17 @@ <%= @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 %> -
+
- - + - + - - + + <% for status in @statuses %> - - + + <% @fields.each do |field, name| %> - <% for status in @statuses -%> @@ -72,15 +74,16 @@ <% end %> <% if @custom_fields.any? %> - - + + <% @custom_fields.each do |field| %> - <% for status in @statuses -%> diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index e117bc1d0d..6ef58ef9e9 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -733,6 +733,75 @@ ul.properties li span {font-style:italic;} #workflow_copy_form select { width: 200px; } table.transitions td.enabled {background: #bfb;} +@media screen { + table.fields_permissions td { + min-width: 100px; + } + table.transitions td { + min-width: 50px; + } + .sticky-table-wrapper { + max-height: 500px; + } +} + +.sticky-table-wrapper { + table-layout: fixed; + overflow-x: auto; + margin-bottom: 1.2em; + position: relative; +} + +.sticky-table-wrapper table { + overflow-y: scroll; + overflow-x: scroll; +} +.sticky-table-wrapper table tr.fixed-row td, .sticky-table-wrapper table tr.fixed-row th { + position: -webkit-sticky; + position: sticky; + top: 0px; + z-index: 10; +} +.sticky-table-wrapper table td.fixed-column, .sticky-table-wrapper table th.fixed-column { + position: -webkit-sticky; + position: sticky; + left: 0px; + z-index: 9; + border-right: 1px solid #dfe8f1; +} +.sticky-table-wrapper table.workflows tr.fixed-row.status td { + top: 23px; + background-color: #fff; +} +.sticky-table-wrapper table.fields_permissions tr.fixed-row.group td { + top: 40px; + background-color: #fff; + border-top: 1px solid #dfe8f1; +} +.sticky-table-wrapper table.transitions tr.fixed-row.status td:not(.fixed-column) { + border-bottom: 1px solid #dfe8f1; +} +.sticky-table-wrapper table.workflows thead tr td.fixed-column, .sticky-table-wrapper table.workflows thead tr th.fixed-column { + z-index: 11; + white-space: nowrap; +} +.sticky-table-wrapper table.fields_permissions tr.fixed-row.group td.fixed-column { + z-index: 11; + white-space: nowrap; + border-right: none; + background-color: #fff; +} +.sticky-table-wrapper table tbody td.fixed-column, .sticky-table-wrapper table tbody th.fixed-column { + background-color: #fff; +} +.sticky-table-wrapper table.workflows tr:nth-child(odd) td.fixed-column { + background-color: #f6f7f8; +} +/* Only Safari */ +_::-webkit-full-page-media, _:future, :root .sticky-table-wrapper table.fields_permissions tr.fixed-row.group td { + top: 0px; +} + #workflow_form table select {font-size:90%; max-width:100px;} table.fields_permissions td.readonly {background:#ddd;} table.fields_permissions td.required {background:#d88;} @@ -1775,6 +1844,7 @@ img.filecontent.image {background-image: url(../images/transparent.png);} #wiki_add_attachment { display:none; } .hide-when-print, .pagination ul.pages, .pagination .per-page { display: none !important; } .autoscroll {overflow-x: visible;} + .sticky-table-wrapper table { overflow-x: visible; overflow-y: visible; } table.list {margin-top:0.5em;} table.list th, table.list td {border: 1px solid #aaa;} }
+
+ <%=l(:label_issue_status)%> <%=l(:label_issue_status)%>
<%= status.name %> @@ -52,15 +53,16 @@
+
  <%= l(:field_core_fields) %>
+ <%= name %> <%= content_tag('span', '*', :class => 'required') if field_required?(field) %>
+
  <%= l(:label_custom_field_plural) %>
+ <%= field.name %> <%= content_tag('span', '*', :class => 'required') if field_required?(field) %>