Feature #14508 » feature-14508.patch
app/views/workflows/_form.html.erb | ||
---|---|---|
1 | 1 |
<table class="list workflows transitions transitions-<%= name %>"> |
2 | 2 |
<thead> |
3 |
<tr> |
|
4 |
<th> |
|
3 |
<tr class='fixed-row'>
|
|
4 |
<th class='fixed-column'>
|
|
5 | 5 |
<%= link_to_function('', "toggleCheckboxesBySelector('table.transitions-#{name} input[type=checkbox]:not(:disabled)')", |
6 | 6 |
:title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}", |
7 | 7 |
:class => 'no-tooltip icon-only icon-checked') %> |
... | ... | |
9 | 9 |
</th> |
10 | 10 |
<th colspan="<%= @statuses.length %>"><%=l(:label_new_statuses_allowed)%></th> |
11 | 11 |
</tr> |
12 |
<tr> |
|
13 |
<td></td> |
|
12 |
<tr class='fixed-row status'>
|
|
13 |
<td class='fixed-column'></td>
|
|
14 | 14 |
<% for new_status in @statuses %> |
15 | 15 |
<td style="width:<%= 75 / @statuses.size %>%;"> |
16 | 16 |
<%= link_to_function('', "toggleCheckboxesBySelector('table.transitions-#{name} input[type=checkbox]:not(:disabled).new-status-#{new_status.id}')", |
... | ... | |
26 | 26 |
<% for old_status in [nil] + @statuses %> |
27 | 27 |
<% next if old_status.nil? && name != 'always' %> |
28 | 28 |
<tr> |
29 |
<td class="name"> |
|
29 |
<td class="name fixed-column">
|
|
30 | 30 |
<%= link_to_function('', "toggleCheckboxesBySelector('table.transitions-#{name} input[type=checkbox]:not(:disabled).old-status-#{old_status.try(:id) || 0}')", |
31 | 31 |
:title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}", |
32 | 32 |
:class => 'no-tooltip icon-only icon-checked') %> |
app/views/workflows/edit.html.erb | ||
---|---|---|
33 | 33 | |
34 | 34 |
<% if @trackers && @roles && @statuses.any? %> |
35 | 35 |
<%= form_tag workflows_path, method: :patch, id: 'workflow_form' do %> |
36 |
<%= @trackers.map {|tracker| hidden_field_tag 'tracker_id[]', tracker.id, :id => nil}.join.html_safe %>
|
|
37 |
<%= @roles.map {|role| hidden_field_tag 'role_id[]', role.id, :id => nil}.join.html_safe %>
|
|
38 |
<%= hidden_field_tag 'used_statuses_only', params[:used_statuses_only], :id => nil %>
|
|
39 |
<div class="autoscroll">
|
|
36 |
<div class="sticky-table-wrapper">
|
|
37 |
<%= @trackers.map {|tracker| hidden_field_tag 'tracker_id[]', tracker.id, :id => nil}.join.html_safe %>
|
|
38 |
<%= @roles.map {|role| hidden_field_tag 'role_id[]', role.id, :id => nil}.join.html_safe %>
|
|
39 |
<%= hidden_field_tag 'used_statuses_only', params[:used_statuses_only], :id => nil %>
|
|
40 | 40 |
<%= render :partial => 'form', :locals => {:name => 'always', :workflows => @workflows['always']} %> |
41 | ||
42 |
<fieldset class="collapsible" style="padding: 0; margin-top: 0.5em;"> |
|
43 |
<legend onclick="toggleFieldset(this);" class="icon icon-collapsed"><%= l(:label_additional_workflow_transitions_for_author) %></legend> |
|
44 |
<div id="author_workflows" style="margin: 0.5em 0 0.5em 0;"> |
|
45 |
<%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %> |
|
46 |
</div> |
|
47 |
</fieldset> |
|
48 |
<%= javascript_tag "hideFieldset($('#author_workflows'))" unless @workflows['author'].present? %> |
|
49 | ||
50 |
<fieldset class="collapsible" style="padding: 0;"> |
|
51 |
<legend onclick="toggleFieldset(this);" class="icon icon-collapsed"><%= l(:label_additional_workflow_transitions_for_assignee) %></legend> |
|
52 |
<div id="assignee_workflows" style="margin: 0.5em 0 0.5em 0;"> |
|
53 |
<%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %> |
|
54 |
</div> |
|
55 |
</fieldset> |
|
56 |
<%= javascript_tag "hideFieldset($('#assignee_workflows'))" unless @workflows['assignee'].present? %> |
|
57 | 41 |
</div> |
42 | ||
43 |
<fieldset class="collapsible" style="padding: 0; margin-top: 0.5em;"> |
|
44 |
<legend onclick="toggleFieldset(this);" class="icon icon-collapsed"><%= l(:label_additional_workflow_transitions_for_author) %></legend> |
|
45 |
<div id="author_workflows" class="sticky-table-wrapper" style="margin: 0.5em 0 0.5em 0;"> |
|
46 |
<%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %> |
|
47 |
</div> |
|
48 |
</fieldset> |
|
49 |
<%= javascript_tag "hideFieldset($('#author_workflows'))" unless @workflows['author'].present? %> |
|
50 | ||
51 |
<fieldset class="collapsible" style="padding: 0;"> |
|
52 |
<legend onclick="toggleFieldset(this);" class="icon icon-collapsed"><%= l(:label_additional_workflow_transitions_for_assignee) %></legend> |
|
53 |
<div id="assignee_workflows" class="sticky-table-wrapper" style="margin: 0.5em 0 0.5em 0;"> |
|
54 |
<%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %> |
|
55 |
</div> |
|
56 |
</fieldset> |
|
57 |
<%= javascript_tag "hideFieldset($('#assignee_workflows'))" unless @workflows['assignee'].present? %> |
|
58 | 58 |
<%= submit_tag l(:button_save) %> |
59 | 59 |
<% end %> |
60 | 60 |
<% end %> |
app/views/workflows/permissions.html.erb | ||
---|---|---|
34 | 34 |
<%= @trackers.map {|tracker| hidden_field_tag 'tracker_id[]', tracker.id, :id => nil}.join.html_safe %> |
35 | 35 |
<%= @roles.map {|role| hidden_field_tag 'role_id[]', role.id, :id => nil}.join.html_safe %> |
36 | 36 |
<%= hidden_field_tag 'used_statuses_only', params[:used_statuses_only], :id => nil %> |
37 |
<div class="autoscroll">
|
|
37 |
<div class="sticky-table-wrapper">
|
|
38 | 38 |
<table class="list workflows fields_permissions"> |
39 | 39 |
<thead> |
40 |
<tr> |
|
41 |
<th> |
|
40 |
<tr class='fixed-row'> |
|
41 |
<th class='fixed-column'> |
|
42 |
<%=l(:label_issue_status)%> |
|
42 | 43 |
</th> |
43 |
<th colspan="<%= @statuses.length %>"><%=l(:label_issue_status)%></th>
|
|
44 |
<th colspan="<%= @statuses.length %>"></th> |
|
44 | 45 |
</tr> |
45 |
<tr> |
|
46 |
<td></td> |
|
46 |
<tr class='fixed-row status'>
|
|
47 |
<td class='fixed-column'></td>
|
|
47 | 48 |
<% for status in @statuses %> |
48 | 49 |
<td style="width:<%= 75 / @statuses.size %>%;"> |
49 | 50 |
<%= status.name %> |
... | ... | |
52 | 53 |
</tr> |
53 | 54 |
</thead> |
54 | 55 |
<tbody> |
55 |
<tr class="group open"> |
|
56 |
<td colspan="<%= @statuses.size + 1 %>">
|
|
56 |
<tr class="group open fixed-row">
|
|
57 |
<td class='fixed-column'>
|
|
57 | 58 |
<span class="expander icon icon-expended" onclick="toggleRowGroup(this);"> </span> |
58 | 59 |
<%= l(:field_core_fields) %> |
59 | 60 |
</td> |
61 |
<td colspan="<%= @statuses.size %>"></td> |
|
60 | 62 |
</tr> |
61 | 63 |
<% @fields.each do |field, name| %> |
62 | 64 |
<tr> |
63 |
<td class="name"> |
|
65 |
<td class="name fixed-column">
|
|
64 | 66 |
<%= name %> <%= content_tag('span', '*', :class => 'required') if field_required?(field) %> |
65 | 67 |
</td> |
66 | 68 |
<% for status in @statuses -%> |
... | ... | |
72 | 74 |
</tr> |
73 | 75 |
<% end %> |
74 | 76 |
<% if @custom_fields.any? %> |
75 |
<tr class="group open"> |
|
76 |
<td colspan="<%= @statuses.size + 1 %>">
|
|
77 |
<tr class="group open fixed-row">
|
|
78 |
<td class='fixed-column'>
|
|
77 | 79 |
<span class="expander icon icon-expended" onclick="toggleRowGroup(this);"> </span> |
78 | 80 |
<%= l(:label_custom_field_plural) %> |
79 | 81 |
</td> |
82 |
<td colspan="<%= @statuses.size %>"></td> |
|
80 | 83 |
</tr> |
81 | 84 |
<% @custom_fields.each do |field| %> |
82 | 85 |
<tr> |
83 |
<td class="name"> |
|
86 |
<td class="name fixed-column">
|
|
84 | 87 |
<%= field.name %> <%= content_tag('span', '*', :class => 'required') if field_required?(field) %> |
85 | 88 |
</td> |
86 | 89 |
<% for status in @statuses -%> |
public/stylesheets/application.css | ||
---|---|---|
733 | 733 | |
734 | 734 |
#workflow_copy_form select { width: 200px; } |
735 | 735 |
table.transitions td.enabled {background: #bfb;} |
736 |
@media screen { |
|
737 |
table.fields_permissions td { |
|
738 |
min-width: 100px; |
|
739 |
} |
|
740 |
table.transitions td { |
|
741 |
min-width: 50px; |
|
742 |
} |
|
743 |
.sticky-table-wrapper { |
|
744 |
max-height: 500px; |
|
745 |
} |
|
746 |
} |
|
747 | ||
748 |
.sticky-table-wrapper { |
|
749 |
table-layout: fixed; |
|
750 |
overflow-x: auto; |
|
751 |
margin-bottom: 1.2em; |
|
752 |
position: relative; |
|
753 |
} |
|
754 | ||
755 |
.sticky-table-wrapper table { |
|
756 |
overflow-y: scroll; |
|
757 |
overflow-x: scroll; |
|
758 |
} |
|
759 |
.sticky-table-wrapper table tr.fixed-row td, .sticky-table-wrapper table tr.fixed-row th { |
|
760 |
position: -webkit-sticky; |
|
761 |
position: sticky; |
|
762 |
top: 0px; |
|
763 |
z-index: 10; |
|
764 |
} |
|
765 |
.sticky-table-wrapper table td.fixed-column, .sticky-table-wrapper table th.fixed-column { |
|
766 |
position: -webkit-sticky; |
|
767 |
position: sticky; |
|
768 |
left: 0px; |
|
769 |
z-index: 9; |
|
770 |
border-right: 1px solid #dfe8f1; |
|
771 |
} |
|
772 |
.sticky-table-wrapper table.workflows tr.fixed-row.status td { |
|
773 |
top: 23px; |
|
774 |
background-color: #fff; |
|
775 |
} |
|
776 |
.sticky-table-wrapper table.fields_permissions tr.fixed-row.group td { |
|
777 |
top: 40px; |
|
778 |
background-color: #fff; |
|
779 |
border-top: 1px solid #dfe8f1; |
|
780 |
} |
|
781 |
.sticky-table-wrapper table.transitions tr.fixed-row.status td:not(.fixed-column) { |
|
782 |
border-bottom: 1px solid #dfe8f1; |
|
783 |
} |
|
784 |
.sticky-table-wrapper table.workflows thead tr td.fixed-column, .sticky-table-wrapper table.workflows thead tr th.fixed-column { |
|
785 |
z-index: 11; |
|
786 |
white-space: nowrap; |
|
787 |
} |
|
788 |
.sticky-table-wrapper table.fields_permissions tr.fixed-row.group td.fixed-column { |
|
789 |
z-index: 11; |
|
790 |
white-space: nowrap; |
|
791 |
border-right: none; |
|
792 |
background-color: #fff; |
|
793 |
} |
|
794 |
.sticky-table-wrapper table tbody td.fixed-column, .sticky-table-wrapper table tbody th.fixed-column { |
|
795 |
background-color: #fff; |
|
796 |
} |
|
797 |
.sticky-table-wrapper table.workflows tr:nth-child(odd) td.fixed-column { |
|
798 |
background-color: #f6f7f8; |
|
799 |
} |
|
800 |
/* Only Safari */ |
|
801 |
_::-webkit-full-page-media, _:future, :root .sticky-table-wrapper table.fields_permissions tr.fixed-row.group td { |
|
802 |
top: 0px; |
|
803 |
} |
|
804 | ||
736 | 805 |
#workflow_form table select {font-size:90%; max-width:100px;} |
737 | 806 |
table.fields_permissions td.readonly {background:#ddd;} |
738 | 807 |
table.fields_permissions td.required {background:#d88;} |
... | ... | |
1775 | 1844 |
#wiki_add_attachment { display:none; } |
1776 | 1845 |
.hide-when-print, .pagination ul.pages, .pagination .per-page { display: none !important; } |
1777 | 1846 |
.autoscroll {overflow-x: visible;} |
1847 |
.sticky-table-wrapper table { overflow-x: visible; overflow-y: visible; } |
|
1778 | 1848 |
table.list {margin-top:0.5em;} |
1779 | 1849 |
table.list th, table.list td {border: 1px solid #aaa;} |
1780 | 1850 |
} |
- « Previous
- 1
- 2
- 3
- 4
- Next »