##// END OF EJS Templates
Restyles user search fields and ajax indicator....
Jean-Philippe Lang -
r8754:bd2581e7c958
parent child
Show More
@@ -1,53 +1,55
1 <div class="splitcontentleft">
1 <div class="splitcontentleft">
2 <% if @group.users.any? %>
2 <% if @group.users.any? %>
3 <table class="list users">
3 <table class="list users">
4 <thead><tr>
4 <thead><tr>
5 <th><%= l(:label_user) %></th>
5 <th><%= l(:label_user) %></th>
6 <th style="width:15%"></th>
6 <th style="width:15%"></th>
7 </tr></thead>
7 </tr></thead>
8 <tbody>
8 <tbody>
9 <% @group.users.sort.each do |user| %>
9 <% @group.users.sort.each do |user| %>
10 <tr id="user-<%= user.id %>" class="<%= cycle 'odd', 'even' %>">
10 <tr id="user-<%= user.id %>" class="<%= cycle 'odd', 'even' %>">
11 <td class="user"><%= link_to_user user %></td>
11 <td class="user"><%= link_to_user user %></td>
12 <td class="buttons">
12 <td class="buttons">
13 <%= link_to_remote(
13 <%= link_to_remote(
14 l(:button_delete),
14 l(:button_delete),
15 { :url => group_user_path(@group, :user_id => user),
15 { :url => group_user_path(@group, :user_id => user),
16 :method => :delete },
16 :method => :delete },
17 :class => 'icon icon-del'
17 :class => 'icon icon-del'
18 ) %>
18 ) %>
19 </td>
19 </td>
20 </tr>
20 </tr>
21 <% end %>
21 <% end %>
22 </tbody>
22 </tbody>
23 </table>
23 </table>
24 <% else %>
24 <% else %>
25 <p class="nodata"><%= l(:label_no_data) %></p>
25 <p class="nodata"><%= l(:label_no_data) %></p>
26 <% end %>
26 <% end %>
27 </div>
27 </div>
28
28
29 <div class="splitcontentright">
29 <div class="splitcontentright">
30 <% users = User.active.not_in_group(@group).all(:limit => 100) %>
30 <% users = User.active.not_in_group(@group).all(:limit => 100) %>
31 <% if users.any? %>
31 <% if users.any? %>
32 <% remote_form_for(@group, :url => group_users_path(@group), :html => {:method => :post}) do |f| %>
32 <% remote_form_for(@group, :url => group_users_path(@group), :html => {:method => :post}) do |f| %>
33 <fieldset><legend><%=l(:label_user_new)%></legend>
33 <fieldset><legend><%=l(:label_user_new)%></legend>
34
34
35 <p><%= label_tag "user_search", l(:label_user_search) %><%= text_field_tag 'user_search', nil %></p>
35 <p><%= label_tag "user_search", l(:label_user_search) %><%= text_field_tag 'user_search', nil %></p>
36 <%= observe_field(:user_search,
36 <%= observe_field(:user_search,
37 :frequency => 0.5,
37 :frequency => 0.5,
38 :update => :users,
38 :update => :users,
39 :url => autocomplete_for_user_group_path(@group),
39 :url => autocomplete_for_user_group_path(@group),
40 :method => :get,
40 :method => :get,
41 :before => '$("user_search").addClassName("ajax-loading")',
42 :complete => '$("user_search").removeClassName("ajax-loading")',
41 :with => 'q')
43 :with => 'q')
42 %>
44 %>
43
45
44 <div id="users">
46 <div id="users">
45 <%= principals_check_box_tags 'user_ids[]', users %>
47 <%= principals_check_box_tags 'user_ids[]', users %>
46 </div>
48 </div>
47
49
48 <p><%= submit_tag l(:button_add) %></p>
50 <p><%= submit_tag l(:button_add) %></p>
49 </fieldset>
51 </fieldset>
50 <% end %>
52 <% end %>
51 <% end %>
53 <% end %>
52
54
53 </div>
55 </div>
@@ -1,89 +1,91
1 <%= error_messages_for 'member' %>
1 <%= error_messages_for 'member' %>
2 <% roles = Role.find_all_givable
2 <% roles = Role.find_all_givable
3 members = @project.member_principals.find(:all, :include => [:roles, :principal]).sort %>
3 members = @project.member_principals.find(:all, :include => [:roles, :principal]).sort %>
4
4
5 <div class="splitcontentleft">
5 <div class="splitcontentleft">
6 <% if members.any? %>
6 <% if members.any? %>
7 <table class="list members">
7 <table class="list members">
8 <thead><tr>
8 <thead><tr>
9 <th><%= l(:label_user) %> / <%= l(:label_group) %></th>
9 <th><%= l(:label_user) %> / <%= l(:label_group) %></th>
10 <th><%= l(:label_role_plural) %></th>
10 <th><%= l(:label_role_plural) %></th>
11 <th style="width:15%"></th>
11 <th style="width:15%"></th>
12 <%= call_hook(:view_projects_settings_members_table_header, :project => @project) %>
12 <%= call_hook(:view_projects_settings_members_table_header, :project => @project) %>
13 </tr></thead>
13 </tr></thead>
14 <tbody>
14 <tbody>
15 <% members.each do |member| %>
15 <% members.each do |member| %>
16 <% next if member.new_record? %>
16 <% next if member.new_record? %>
17 <tr id="member-<%= member.id %>" class="<%= cycle 'odd', 'even' %> member">
17 <tr id="member-<%= member.id %>" class="<%= cycle 'odd', 'even' %> member">
18 <td class="<%= member.principal.class.name.downcase %>"><%= link_to_user member.principal %></td>
18 <td class="<%= member.principal.class.name.downcase %>"><%= link_to_user member.principal %></td>
19 <td class="roles">
19 <td class="roles">
20 <span id="member-<%= member.id %>-roles"><%=h member.roles.sort.collect(&:to_s).join(', ') %></span>
20 <span id="member-<%= member.id %>-roles"><%=h member.roles.sort.collect(&:to_s).join(', ') %></span>
21 <% remote_form_for(:membership, member, :url => membership_path(member),
21 <% remote_form_for(:membership, member, :url => membership_path(member),
22 :method => :put,
22 :method => :put,
23 :html => { :id => "member-#{member.id}-roles-form", :class => 'hol' }) do |f| %>
23 :html => { :id => "member-#{member.id}-roles-form", :class => 'hol' }) do |f| %>
24 <p><% roles.each do |role| %>
24 <p><% roles.each do |role| %>
25 <label><%= check_box_tag 'membership[role_ids][]', role.id, member.roles.include?(role),
25 <label><%= check_box_tag 'membership[role_ids][]', role.id, member.roles.include?(role),
26 :disabled => member.member_roles.detect {|mr| mr.role_id == role.id && !mr.inherited_from.nil?} %> <%=h role %></label><br />
26 :disabled => member.member_roles.detect {|mr| mr.role_id == role.id && !mr.inherited_from.nil?} %> <%=h role %></label><br />
27 <% end %></p>
27 <% end %></p>
28 <%= hidden_field_tag 'membership[role_ids][]', '' %>
28 <%= hidden_field_tag 'membership[role_ids][]', '' %>
29 <p><%= submit_tag l(:button_change), :class => "small" %>
29 <p><%= submit_tag l(:button_change), :class => "small" %>
30 <%= link_to_function l(:button_cancel),
30 <%= link_to_function l(:button_cancel),
31 "$('member-#{member.id}-roles').show(); $('member-#{member.id}-roles-form').hide(); return false;"
31 "$('member-#{member.id}-roles').show(); $('member-#{member.id}-roles-form').hide(); return false;"
32 %></p>
32 %></p>
33 <% end %>
33 <% end %>
34 </td>
34 </td>
35 <td class="buttons">
35 <td class="buttons">
36 <%= link_to_function l(:button_edit),
36 <%= link_to_function l(:button_edit),
37 "$('member-#{member.id}-roles').hide(); $('member-#{member.id}-roles-form').show(); return false;",
37 "$('member-#{member.id}-roles').hide(); $('member-#{member.id}-roles-form').show(); return false;",
38 :class => 'icon icon-edit' %>
38 :class => 'icon icon-edit' %>
39 <%= link_to_remote(
39 <%= link_to_remote(
40 l(:button_delete),
40 l(:button_delete),
41 { :url => membership_path(member),
41 { :url => membership_path(member),
42 :method => :delete,
42 :method => :delete,
43 :confirm => (!User.current.admin? && member.include?(User.current) ? l(:text_own_membership_delete_confirmation) : nil) },
43 :confirm => (!User.current.admin? && member.include?(User.current) ? l(:text_own_membership_delete_confirmation) : nil) },
44 :title => l(:button_delete),
44 :title => l(:button_delete),
45 :class => 'icon icon-del'
45 :class => 'icon icon-del'
46 ) if member.deletable? %>
46 ) if member.deletable? %>
47 </td>
47 </td>
48 <%= call_hook(:view_projects_settings_members_table_row, { :project => @project, :member => member}) %>
48 <%= call_hook(:view_projects_settings_members_table_row, { :project => @project, :member => member}) %>
49 </tr>
49 </tr>
50 <% end; reset_cycle %>
50 <% end; reset_cycle %>
51 </tbody>
51 </tbody>
52 </table>
52 </table>
53 <% else %>
53 <% else %>
54 <p class="nodata"><%= l(:label_no_data) %></p>
54 <p class="nodata"><%= l(:label_no_data) %></p>
55 <% end %>
55 <% end %>
56 </div>
56 </div>
57
57
58 <% principals = Principal.active.find(:all, :limit => 100, :order => 'type, login, lastname ASC') - @project.principals %>
58 <% principals = Principal.active.find(:all, :limit => 100, :order => 'type, login, lastname ASC') - @project.principals %>
59
59
60 <div class="splitcontentright">
60 <div class="splitcontentright">
61 <% if roles.any? && principals.any? %>
61 <% if roles.any? && principals.any? %>
62 <% remote_form_for(:membership, @member, :url => project_memberships_path(@project), :method => :post,
62 <% remote_form_for(:membership, @member, :url => project_memberships_path(@project), :method => :post,
63 :loading => '$(\'member-add-submit\').disable();',
63 :loading => '$(\'member-add-submit\').disable();',
64 :complete => 'if($(\'member-add-submit\')) $(\'member-add-submit\').enable();') do |f| %>
64 :complete => 'if($(\'member-add-submit\')) $(\'member-add-submit\').enable();') do |f| %>
65 <fieldset><legend><%=l(:label_member_new)%></legend>
65 <fieldset><legend><%=l(:label_member_new)%></legend>
66
66
67 <p><%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %></p>
67 <p><%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %></p>
68 <%= observe_field(:principal_search,
68 <%= observe_field(:principal_search,
69 :frequency => 0.5,
69 :frequency => 0.5,
70 :update => :principals,
70 :update => :principals,
71 :url => autocomplete_project_memberships_path(@project),
71 :url => autocomplete_project_memberships_path(@project),
72 :method => :get,
72 :method => :get,
73 :before => '$("principal_search").addClassName("ajax-loading")',
74 :complete => '$("principal_search").removeClassName("ajax-loading")',
73 :with => 'q')
75 :with => 'q')
74 %>
76 %>
75
77
76 <div id="principals">
78 <div id="principals">
77 <%= principals_check_box_tags 'membership[user_ids][]', principals %>
79 <%= principals_check_box_tags 'membership[user_ids][]', principals %>
78 </div>
80 </div>
79
81
80 <p><%= l(:label_role_plural) %>:
82 <p><%= l(:label_role_plural) %>:
81 <% roles.each do |role| %>
83 <% roles.each do |role| %>
82 <label><%= check_box_tag 'membership[role_ids][]', role.id %> <%=h role %></label>
84 <label><%= check_box_tag 'membership[role_ids][]', role.id %> <%=h role %></label>
83 <% end %></p>
85 <% end %></p>
84
86
85 <p><%= submit_tag l(:button_add), :id => 'member-add-submit' %></p>
87 <p><%= submit_tag l(:button_add), :id => 'member-add-submit' %></p>
86 </fieldset>
88 </fieldset>
87 <% end %>
89 <% end %>
88 <% end %>
90 <% end %>
89 </div>
91 </div>
@@ -1,30 +1,32
1 <h3 class="title"><%= l(:permission_add_issue_watchers) %></h3>
1 <h3 class="title"><%= l(:permission_add_issue_watchers) %></h3>
2
2
3 <% form_remote_tag :url => {:controller => 'watchers',
3 <% form_remote_tag :url => {:controller => 'watchers',
4 :action => 'create',
4 :action => 'create',
5 :object_type => watched.class.name.underscore,
5 :object_type => watched.class.name.underscore,
6 :object_id => watched},
6 :object_id => watched},
7 :method => :post,
7 :method => :post,
8 :html => {:id => 'new-watcher-form'} do %>
8 :html => {:id => 'new-watcher-form'} do %>
9
9
10 <p><%= label_tag 'user_search', l(:label_user_search) %><%= text_field_tag 'user_search', nil %></p>
10 <p><%= label_tag 'user_search', l(:label_user_search) %><%= text_field_tag 'user_search', nil %></p>
11 <%= observe_field(:user_search,
11 <%= observe_field(:user_search,
12 :frequency => 0.5,
12 :frequency => 0.5,
13 :update => :users_for_watcher,
13 :update => :users_for_watcher,
14 :method => :get,
14 :method => :get,
15 :before => '$("user_search").addClassName("ajax-loading")',
16 :complete => '$("user_search").removeClassName("ajax-loading")',
15 :url => {
17 :url => {
16 :controller => 'watchers',
18 :controller => 'watchers',
17 :action => 'autocomplete_for_user',
19 :action => 'autocomplete_for_user',
18 :object_type => watched.class.name.underscore,
20 :object_type => watched.class.name.underscore,
19 :object_id => watched},
21 :object_id => watched},
20 :with => 'q') %>
22 :with => 'q') %>
21
23
22 <div id="users_for_watcher">
24 <div id="users_for_watcher">
23 <%= principals_check_box_tags 'watcher[user_ids][]', watched.addable_watcher_users %>
25 <%= principals_check_box_tags 'watcher[user_ids][]', watched.addable_watcher_users %>
24 </div>
26 </div>
25
27
26 <p class="buttons">
28 <p class="buttons">
27 <%= submit_tag l(:button_add), :name => nil, :onclick => "hideModal(this);" %>
29 <%= submit_tag l(:button_add), :name => nil, :onclick => "hideModal(this);" %>
28 <%= submit_tag l(:button_cancel), :name => nil, :onclick => "hideModal(this);", :type => 'button' %>
30 <%= submit_tag l(:button_cancel), :name => nil, :onclick => "hideModal(this);", :type => 'button' %>
29 </p>
31 </p>
30 <% end %>
32 <% end %>
@@ -1,523 +1,523
1 /* Redmine - project management software
1 /* Redmine - project management software
2 Copyright (C) 2006-2012 Jean-Philippe Lang */
2 Copyright (C) 2006-2012 Jean-Philippe Lang */
3
3
4 function checkAll (id, checked) {
4 function checkAll (id, checked) {
5 var els = Element.descendants(id);
5 var els = Element.descendants(id);
6 for (var i = 0; i < els.length; i++) {
6 for (var i = 0; i < els.length; i++) {
7 if (els[i].disabled==false) {
7 if (els[i].disabled==false) {
8 els[i].checked = checked;
8 els[i].checked = checked;
9 }
9 }
10 }
10 }
11 }
11 }
12
12
13 function toggleCheckboxesBySelector(selector) {
13 function toggleCheckboxesBySelector(selector) {
14 boxes = $$(selector);
14 boxes = $$(selector);
15 var all_checked = true;
15 var all_checked = true;
16 for (i = 0; i < boxes.length; i++) { if (boxes[i].checked == false) { all_checked = false; } }
16 for (i = 0; i < boxes.length; i++) { if (boxes[i].checked == false) { all_checked = false; } }
17 for (i = 0; i < boxes.length; i++) { boxes[i].checked = !all_checked; }
17 for (i = 0; i < boxes.length; i++) { boxes[i].checked = !all_checked; }
18 }
18 }
19
19
20 function setCheckboxesBySelector(checked, selector) {
20 function setCheckboxesBySelector(checked, selector) {
21 var boxes = $$(selector);
21 var boxes = $$(selector);
22 boxes.each(function(ele) {
22 boxes.each(function(ele) {
23 ele.checked = checked;
23 ele.checked = checked;
24 });
24 });
25 }
25 }
26
26
27 function showAndScrollTo(id, focus) {
27 function showAndScrollTo(id, focus) {
28 Element.show(id);
28 Element.show(id);
29 if (focus!=null) { Form.Element.focus(focus); }
29 if (focus!=null) { Form.Element.focus(focus); }
30 Element.scrollTo(id);
30 Element.scrollTo(id);
31 }
31 }
32
32
33 function toggleRowGroup(el) {
33 function toggleRowGroup(el) {
34 var tr = Element.up(el, 'tr');
34 var tr = Element.up(el, 'tr');
35 var n = Element.next(tr);
35 var n = Element.next(tr);
36 tr.toggleClassName('open');
36 tr.toggleClassName('open');
37 while (n != undefined && !n.hasClassName('group')) {
37 while (n != undefined && !n.hasClassName('group')) {
38 Element.toggle(n);
38 Element.toggle(n);
39 n = Element.next(n);
39 n = Element.next(n);
40 }
40 }
41 }
41 }
42
42
43 function collapseAllRowGroups(el) {
43 function collapseAllRowGroups(el) {
44 var tbody = Element.up(el, 'tbody');
44 var tbody = Element.up(el, 'tbody');
45 tbody.childElements('tr').each(function(tr) {
45 tbody.childElements('tr').each(function(tr) {
46 if (tr.hasClassName('group')) {
46 if (tr.hasClassName('group')) {
47 tr.removeClassName('open');
47 tr.removeClassName('open');
48 } else {
48 } else {
49 tr.hide();
49 tr.hide();
50 }
50 }
51 })
51 })
52 }
52 }
53
53
54 function expandAllRowGroups(el) {
54 function expandAllRowGroups(el) {
55 var tbody = Element.up(el, 'tbody');
55 var tbody = Element.up(el, 'tbody');
56 tbody.childElements('tr').each(function(tr) {
56 tbody.childElements('tr').each(function(tr) {
57 if (tr.hasClassName('group')) {
57 if (tr.hasClassName('group')) {
58 tr.addClassName('open');
58 tr.addClassName('open');
59 } else {
59 } else {
60 tr.show();
60 tr.show();
61 }
61 }
62 })
62 })
63 }
63 }
64
64
65 function toggleAllRowGroups(el) {
65 function toggleAllRowGroups(el) {
66 var tr = Element.up(el, 'tr');
66 var tr = Element.up(el, 'tr');
67 if (tr.hasClassName('open')) {
67 if (tr.hasClassName('open')) {
68 collapseAllRowGroups(el);
68 collapseAllRowGroups(el);
69 } else {
69 } else {
70 expandAllRowGroups(el);
70 expandAllRowGroups(el);
71 }
71 }
72 }
72 }
73
73
74 function toggleFieldset(el) {
74 function toggleFieldset(el) {
75 var fieldset = Element.up(el, 'fieldset');
75 var fieldset = Element.up(el, 'fieldset');
76 fieldset.toggleClassName('collapsed');
76 fieldset.toggleClassName('collapsed');
77 Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2});
77 Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2});
78 }
78 }
79
79
80 function hideFieldset(el) {
80 function hideFieldset(el) {
81 var fieldset = Element.up(el, 'fieldset');
81 var fieldset = Element.up(el, 'fieldset');
82 fieldset.toggleClassName('collapsed');
82 fieldset.toggleClassName('collapsed');
83 fieldset.down('div').hide();
83 fieldset.down('div').hide();
84 }
84 }
85
85
86 function add_filter() {
86 function add_filter() {
87 select = $('add_filter_select');
87 select = $('add_filter_select');
88 field = select.value
88 field = select.value
89 Element.show('tr_' + field);
89 Element.show('tr_' + field);
90 check_box = $('cb_' + field);
90 check_box = $('cb_' + field);
91 check_box.checked = true;
91 check_box.checked = true;
92 toggle_filter(field);
92 toggle_filter(field);
93 select.selectedIndex = 0;
93 select.selectedIndex = 0;
94
94
95 for (i=0; i<select.options.length; i++) {
95 for (i=0; i<select.options.length; i++) {
96 if (select.options[i].value == field) {
96 if (select.options[i].value == field) {
97 select.options[i].disabled = true;
97 select.options[i].disabled = true;
98 }
98 }
99 }
99 }
100 }
100 }
101
101
102 function toggle_filter(field) {
102 function toggle_filter(field) {
103 check_box = $('cb_' + field);
103 check_box = $('cb_' + field);
104 if (check_box.checked) {
104 if (check_box.checked) {
105 Element.show("operators_" + field);
105 Element.show("operators_" + field);
106 Form.Element.enable("operators_" + field);
106 Form.Element.enable("operators_" + field);
107 toggle_operator(field);
107 toggle_operator(field);
108 } else {
108 } else {
109 Element.hide("operators_" + field);
109 Element.hide("operators_" + field);
110 Form.Element.disable("operators_" + field);
110 Form.Element.disable("operators_" + field);
111 enableValues(field, []);
111 enableValues(field, []);
112 }
112 }
113 }
113 }
114
114
115 function enableValues(field, indexes) {
115 function enableValues(field, indexes) {
116 var f = $$(".values_" + field);
116 var f = $$(".values_" + field);
117 for(var i=0;i<f.length;i++) {
117 for(var i=0;i<f.length;i++) {
118 if (indexes.include(i)) {
118 if (indexes.include(i)) {
119 Form.Element.enable(f[i]);
119 Form.Element.enable(f[i]);
120 f[i].up('span').show();
120 f[i].up('span').show();
121 } else {
121 } else {
122 f[i].value = '';
122 f[i].value = '';
123 Form.Element.disable(f[i]);
123 Form.Element.disable(f[i]);
124 f[i].up('span').hide();
124 f[i].up('span').hide();
125 }
125 }
126 }
126 }
127 if (indexes.length > 0) {
127 if (indexes.length > 0) {
128 Element.show("div_values_" + field);
128 Element.show("div_values_" + field);
129 } else {
129 } else {
130 Element.hide("div_values_" + field);
130 Element.hide("div_values_" + field);
131 }
131 }
132 }
132 }
133
133
134 function toggle_operator(field) {
134 function toggle_operator(field) {
135 operator = $("operators_" + field);
135 operator = $("operators_" + field);
136 switch (operator.value) {
136 switch (operator.value) {
137 case "!*":
137 case "!*":
138 case "*":
138 case "*":
139 case "t":
139 case "t":
140 case "w":
140 case "w":
141 case "o":
141 case "o":
142 case "c":
142 case "c":
143 enableValues(field, []);
143 enableValues(field, []);
144 break;
144 break;
145 case "><":
145 case "><":
146 enableValues(field, [0,1]);
146 enableValues(field, [0,1]);
147 break;
147 break;
148 case "<t+":
148 case "<t+":
149 case ">t+":
149 case ">t+":
150 case "t+":
150 case "t+":
151 case ">t-":
151 case ">t-":
152 case "<t-":
152 case "<t-":
153 case "t-":
153 case "t-":
154 enableValues(field, [2]);
154 enableValues(field, [2]);
155 break;
155 break;
156 default:
156 default:
157 enableValues(field, [0]);
157 enableValues(field, [0]);
158 break;
158 break;
159 }
159 }
160 }
160 }
161
161
162 function toggle_multi_select(el) {
162 function toggle_multi_select(el) {
163 var select = $(el);
163 var select = $(el);
164 if (select.multiple == true) {
164 if (select.multiple == true) {
165 select.multiple = false;
165 select.multiple = false;
166 } else {
166 } else {
167 select.multiple = true;
167 select.multiple = true;
168 }
168 }
169 }
169 }
170
170
171 function submit_query_form(id) {
171 function submit_query_form(id) {
172 selectAllOptions("selected_columns");
172 selectAllOptions("selected_columns");
173 $(id).submit();
173 $(id).submit();
174 }
174 }
175
175
176 function apply_filters_observer() {
176 function apply_filters_observer() {
177 $$("#query_form input[type=text]").invoke("observe", "keypress", function(e){
177 $$("#query_form input[type=text]").invoke("observe", "keypress", function(e){
178 if(e.keyCode == Event.KEY_RETURN) {
178 if(e.keyCode == Event.KEY_RETURN) {
179 submit_query_form("query_form");
179 submit_query_form("query_form");
180 }
180 }
181 });
181 });
182 }
182 }
183
183
184 var fileFieldCount = 1;
184 var fileFieldCount = 1;
185
185
186 function addFileField() {
186 function addFileField() {
187 var fields = $('attachments_fields');
187 var fields = $('attachments_fields');
188 if (fields.childElements().length >= 10) return false;
188 if (fields.childElements().length >= 10) return false;
189 fileFieldCount++;
189 fileFieldCount++;
190 var s = new Element('span');
190 var s = new Element('span');
191 s.update(fields.down('span').innerHTML);
191 s.update(fields.down('span').innerHTML);
192 s.down('input.file').name = "attachments[" + fileFieldCount + "][file]";
192 s.down('input.file').name = "attachments[" + fileFieldCount + "][file]";
193 s.down('input.description').name = "attachments[" + fileFieldCount + "][description]";
193 s.down('input.description').name = "attachments[" + fileFieldCount + "][description]";
194 fields.appendChild(s);
194 fields.appendChild(s);
195 }
195 }
196
196
197 function removeFileField(el) {
197 function removeFileField(el) {
198 var fields = $('attachments_fields');
198 var fields = $('attachments_fields');
199 var s = Element.up(el, 'span');
199 var s = Element.up(el, 'span');
200 if (fields.childElements().length > 1) {
200 if (fields.childElements().length > 1) {
201 s.remove();
201 s.remove();
202 } else {
202 } else {
203 s.update(s.innerHTML);
203 s.update(s.innerHTML);
204 }
204 }
205 }
205 }
206
206
207 function checkFileSize(el, maxSize, message) {
207 function checkFileSize(el, maxSize, message) {
208 var files = el.files;
208 var files = el.files;
209 if (files) {
209 if (files) {
210 for (var i=0; i<files.length; i++) {
210 for (var i=0; i<files.length; i++) {
211 if (files[i].size > maxSize) {
211 if (files[i].size > maxSize) {
212 alert(message);
212 alert(message);
213 el.value = "";
213 el.value = "";
214 }
214 }
215 }
215 }
216 }
216 }
217 }
217 }
218
218
219 function showTab(name) {
219 function showTab(name) {
220 var f = $$('div#content .tab-content');
220 var f = $$('div#content .tab-content');
221 for(var i=0; i<f.length; i++){
221 for(var i=0; i<f.length; i++){
222 Element.hide(f[i]);
222 Element.hide(f[i]);
223 }
223 }
224 var f = $$('div.tabs a');
224 var f = $$('div.tabs a');
225 for(var i=0; i<f.length; i++){
225 for(var i=0; i<f.length; i++){
226 Element.removeClassName(f[i], "selected");
226 Element.removeClassName(f[i], "selected");
227 }
227 }
228 Element.show('tab-content-' + name);
228 Element.show('tab-content-' + name);
229 Element.addClassName('tab-' + name, "selected");
229 Element.addClassName('tab-' + name, "selected");
230 return false;
230 return false;
231 }
231 }
232
232
233 function moveTabRight(el) {
233 function moveTabRight(el) {
234 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
234 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
235 var tabsWidth = 0;
235 var tabsWidth = 0;
236 var i;
236 var i;
237 for (i=0; i<lis.length; i++) {
237 for (i=0; i<lis.length; i++) {
238 if (lis[i].visible()) {
238 if (lis[i].visible()) {
239 tabsWidth += lis[i].getWidth() + 6;
239 tabsWidth += lis[i].getWidth() + 6;
240 }
240 }
241 }
241 }
242 if (tabsWidth < Element.up(el, 'div.tabs').getWidth() - 60) {
242 if (tabsWidth < Element.up(el, 'div.tabs').getWidth() - 60) {
243 return;
243 return;
244 }
244 }
245 i=0;
245 i=0;
246 while (i<lis.length && !lis[i].visible()) {
246 while (i<lis.length && !lis[i].visible()) {
247 i++;
247 i++;
248 }
248 }
249 lis[i].hide();
249 lis[i].hide();
250 }
250 }
251
251
252 function moveTabLeft(el) {
252 function moveTabLeft(el) {
253 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
253 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
254 var i = 0;
254 var i = 0;
255 while (i<lis.length && !lis[i].visible()) {
255 while (i<lis.length && !lis[i].visible()) {
256 i++;
256 i++;
257 }
257 }
258 if (i>0) {
258 if (i>0) {
259 lis[i-1].show();
259 lis[i-1].show();
260 }
260 }
261 }
261 }
262
262
263 function displayTabsButtons() {
263 function displayTabsButtons() {
264 var lis;
264 var lis;
265 var tabsWidth = 0;
265 var tabsWidth = 0;
266 var i;
266 var i;
267 $$('div.tabs').each(function(el) {
267 $$('div.tabs').each(function(el) {
268 lis = el.down('ul').childElements();
268 lis = el.down('ul').childElements();
269 for (i=0; i<lis.length; i++) {
269 for (i=0; i<lis.length; i++) {
270 if (lis[i].visible()) {
270 if (lis[i].visible()) {
271 tabsWidth += lis[i].getWidth() + 6;
271 tabsWidth += lis[i].getWidth() + 6;
272 }
272 }
273 }
273 }
274 if ((tabsWidth < el.getWidth() - 60) && (lis[0].visible())) {
274 if ((tabsWidth < el.getWidth() - 60) && (lis[0].visible())) {
275 el.down('div.tabs-buttons').hide();
275 el.down('div.tabs-buttons').hide();
276 } else {
276 } else {
277 el.down('div.tabs-buttons').show();
277 el.down('div.tabs-buttons').show();
278 }
278 }
279 });
279 });
280 }
280 }
281
281
282 function setPredecessorFieldsVisibility() {
282 function setPredecessorFieldsVisibility() {
283 relationType = $('relation_relation_type');
283 relationType = $('relation_relation_type');
284 if (relationType && (relationType.value == "precedes" || relationType.value == "follows")) {
284 if (relationType && (relationType.value == "precedes" || relationType.value == "follows")) {
285 Element.show('predecessor_fields');
285 Element.show('predecessor_fields');
286 } else {
286 } else {
287 Element.hide('predecessor_fields');
287 Element.hide('predecessor_fields');
288 }
288 }
289 }
289 }
290
290
291 function promptToRemote(text, param, url) {
291 function promptToRemote(text, param, url) {
292 value = prompt(text + ':');
292 value = prompt(text + ':');
293 if (value) {
293 if (value) {
294 new Ajax.Request(url + '?' + param + '=' + encodeURIComponent(value), {asynchronous:true, evalScripts:true});
294 new Ajax.Request(url + '?' + param + '=' + encodeURIComponent(value), {asynchronous:true, evalScripts:true});
295 return false;
295 return false;
296 }
296 }
297 }
297 }
298
298
299 function showModal(id, width) {
299 function showModal(id, width) {
300 el = $(id);
300 el = $(id);
301 if (el == undefined || el.visible()) {return;}
301 if (el == undefined || el.visible()) {return;}
302 var h = $$('body')[0].getHeight();
302 var h = $$('body')[0].getHeight();
303 var d = document.createElement("div");
303 var d = document.createElement("div");
304 d.id = 'modalbg';
304 d.id = 'modalbg';
305 $('main').appendChild(d);
305 $('main').appendChild(d);
306 $('modalbg').setStyle({ width: '100%', height: h + 'px' });
306 $('modalbg').setStyle({ width: '100%', height: h + 'px' });
307 $('modalbg').show();
307 $('modalbg').show();
308
308
309 var pageWidth = document.viewport.getWidth();
309 var pageWidth = document.viewport.getWidth();
310 if (width) {
310 if (width) {
311 el.setStyle({'width': width});
311 el.setStyle({'width': width});
312 }
312 }
313 el.setStyle({'left': (((pageWidth - el.getWidth())/2 *100) / pageWidth) + '%'});
313 el.setStyle({'left': (((pageWidth - el.getWidth())/2 *100) / pageWidth) + '%'});
314 el.addClassName('modal');
314 el.addClassName('modal');
315 el.show();
315 el.show();
316
316
317 if (el.down("input[type=text]")) {
317 if (el.down("input[type=text]")) {
318 el.down("input[type=text]").focus();
318 el.down("input[type=text]").focus();
319 } else if (el.down("input[type=submit]")) {
319 } else if (el.down("input[type=submit]")) {
320 el.down("input[type=submit]").focus();
320 el.down("input[type=submit]").focus();
321 }
321 }
322 }
322 }
323
323
324 function hideModal(el) {
324 function hideModal(el) {
325 var modal;
325 var modal;
326 if (el) {
326 if (el) {
327 modal = Element.up(el, 'div.modal');
327 modal = Element.up(el, 'div.modal');
328 } else {
328 } else {
329 modal = $('ajax-modal');
329 modal = $('ajax-modal');
330 }
330 }
331 if (modal) {
331 if (modal) {
332 modal.hide();
332 modal.hide();
333 }
333 }
334 var bg = $('modalbg');
334 var bg = $('modalbg');
335 if (bg) {
335 if (bg) {
336 bg.remove();
336 bg.remove();
337 }
337 }
338 }
338 }
339
339
340 function collapseScmEntry(id) {
340 function collapseScmEntry(id) {
341 var els = document.getElementsByClassName(id, 'browser');
341 var els = document.getElementsByClassName(id, 'browser');
342 for (var i = 0; i < els.length; i++) {
342 for (var i = 0; i < els.length; i++) {
343 if (els[i].hasClassName('open')) {
343 if (els[i].hasClassName('open')) {
344 collapseScmEntry(els[i].id);
344 collapseScmEntry(els[i].id);
345 }
345 }
346 Element.hide(els[i]);
346 Element.hide(els[i]);
347 }
347 }
348 $(id).removeClassName('open');
348 $(id).removeClassName('open');
349 }
349 }
350
350
351 function expandScmEntry(id) {
351 function expandScmEntry(id) {
352 var els = document.getElementsByClassName(id, 'browser');
352 var els = document.getElementsByClassName(id, 'browser');
353 for (var i = 0; i < els.length; i++) {
353 for (var i = 0; i < els.length; i++) {
354 Element.show(els[i]);
354 Element.show(els[i]);
355 if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) {
355 if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) {
356 expandScmEntry(els[i].id);
356 expandScmEntry(els[i].id);
357 }
357 }
358 }
358 }
359 $(id).addClassName('open');
359 $(id).addClassName('open');
360 }
360 }
361
361
362 function scmEntryClick(id) {
362 function scmEntryClick(id) {
363 el = $(id);
363 el = $(id);
364 if (el.hasClassName('open')) {
364 if (el.hasClassName('open')) {
365 collapseScmEntry(id);
365 collapseScmEntry(id);
366 el.addClassName('collapsed');
366 el.addClassName('collapsed');
367 return false;
367 return false;
368 } else if (el.hasClassName('loaded')) {
368 } else if (el.hasClassName('loaded')) {
369 expandScmEntry(id);
369 expandScmEntry(id);
370 el.removeClassName('collapsed');
370 el.removeClassName('collapsed');
371 return false;
371 return false;
372 }
372 }
373 if (el.hasClassName('loading')) {
373 if (el.hasClassName('loading')) {
374 return false;
374 return false;
375 }
375 }
376 el.addClassName('loading');
376 el.addClassName('loading');
377 return true;
377 return true;
378 }
378 }
379
379
380 function scmEntryLoaded(id) {
380 function scmEntryLoaded(id) {
381 Element.addClassName(id, 'open');
381 Element.addClassName(id, 'open');
382 Element.addClassName(id, 'loaded');
382 Element.addClassName(id, 'loaded');
383 Element.removeClassName(id, 'loading');
383 Element.removeClassName(id, 'loading');
384 }
384 }
385
385
386 function randomKey(size) {
386 function randomKey(size) {
387 var chars = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
387 var chars = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
388 var key = '';
388 var key = '';
389 for (i = 0; i < size; i++) {
389 for (i = 0; i < size; i++) {
390 key += chars[Math.floor(Math.random() * chars.length)];
390 key += chars[Math.floor(Math.random() * chars.length)];
391 }
391 }
392 return key;
392 return key;
393 }
393 }
394
394
395 function observeParentIssueField(url) {
395 function observeParentIssueField(url) {
396 new Ajax.Autocompleter('issue_parent_issue_id',
396 new Ajax.Autocompleter('issue_parent_issue_id',
397 'parent_issue_candidates',
397 'parent_issue_candidates',
398 url,
398 url,
399 { minChars: 3,
399 { minChars: 3,
400 frequency: 0.5,
400 frequency: 0.5,
401 paramName: 'q',
401 paramName: 'q',
402 method: 'get',
402 method: 'get',
403 updateElement: function(value) {
403 updateElement: function(value) {
404 document.getElementById('issue_parent_issue_id').value = value.id;
404 document.getElementById('issue_parent_issue_id').value = value.id;
405 }});
405 }});
406 }
406 }
407
407
408 function observeRelatedIssueField(url) {
408 function observeRelatedIssueField(url) {
409 new Ajax.Autocompleter('relation_issue_to_id',
409 new Ajax.Autocompleter('relation_issue_to_id',
410 'related_issue_candidates',
410 'related_issue_candidates',
411 url,
411 url,
412 { minChars: 3,
412 { minChars: 3,
413 frequency: 0.5,
413 frequency: 0.5,
414 paramName: 'q',
414 paramName: 'q',
415 method: 'get',
415 method: 'get',
416 updateElement: function(value) {
416 updateElement: function(value) {
417 document.getElementById('relation_issue_to_id').value = value.id;
417 document.getElementById('relation_issue_to_id').value = value.id;
418 },
418 },
419 parameters: 'scope=all'
419 parameters: 'scope=all'
420 });
420 });
421 }
421 }
422
422
423 function setVisible(id, visible) {
423 function setVisible(id, visible) {
424 var el = $(id);
424 var el = $(id);
425 if (el) {if (visible) {el.show();} else {el.hide();}}
425 if (el) {if (visible) {el.show();} else {el.hide();}}
426 }
426 }
427
427
428 function observeProjectModules() {
428 function observeProjectModules() {
429 var f = function() {
429 var f = function() {
430 /* Hides trackers and issues custom fields on the new project form when issue_tracking module is disabled */
430 /* Hides trackers and issues custom fields on the new project form when issue_tracking module is disabled */
431 var c = ($('project_enabled_module_names_issue_tracking').checked == true);
431 var c = ($('project_enabled_module_names_issue_tracking').checked == true);
432 setVisible('project_trackers', c);
432 setVisible('project_trackers', c);
433 setVisible('project_issue_custom_fields', c);
433 setVisible('project_issue_custom_fields', c);
434 };
434 };
435
435
436 Event.observe(window, 'load', f);
436 Event.observe(window, 'load', f);
437 Event.observe('project_enabled_module_names_issue_tracking', 'change', f);
437 Event.observe('project_enabled_module_names_issue_tracking', 'change', f);
438 }
438 }
439
439
440 /*
440 /*
441 * Class used to warn user when leaving a page with unsaved textarea
441 * Class used to warn user when leaving a page with unsaved textarea
442 * Author: mathias.fischer@berlinonline.de
442 * Author: mathias.fischer@berlinonline.de
443 */
443 */
444
444
445 var WarnLeavingUnsaved = Class.create({
445 var WarnLeavingUnsaved = Class.create({
446 observedForms: false,
446 observedForms: false,
447 observedElements: false,
447 observedElements: false,
448 changedForms: false,
448 changedForms: false,
449 message: null,
449 message: null,
450
450
451 initialize: function(message){
451 initialize: function(message){
452 this.observedForms = $$('form');
452 this.observedForms = $$('form');
453 this.observedElements = $$('textarea');
453 this.observedElements = $$('textarea');
454 this.message = message;
454 this.message = message;
455
455
456 this.observedElements.each(this.observeChange.bind(this));
456 this.observedElements.each(this.observeChange.bind(this));
457 this.observedForms.each(this.submitAction.bind(this));
457 this.observedForms.each(this.submitAction.bind(this));
458
458
459 window.onbeforeunload = this.unload.bind(this);
459 window.onbeforeunload = this.unload.bind(this);
460 },
460 },
461
461
462 unload: function(){
462 unload: function(){
463 this.observedElements.each(function(el) {el.blur();})
463 this.observedElements.each(function(el) {el.blur();})
464 if(this.changedForms)
464 if(this.changedForms)
465 return this.message;
465 return this.message;
466 },
466 },
467
467
468 setChanged: function(){
468 setChanged: function(){
469 this.changedForms = true;
469 this.changedForms = true;
470 },
470 },
471
471
472 setUnchanged: function(){
472 setUnchanged: function(){
473 this.changedForms = false;
473 this.changedForms = false;
474 },
474 },
475
475
476 observeChange: function(element){
476 observeChange: function(element){
477 element.observe('change',this.setChanged.bindAsEventListener(this));
477 element.observe('change',this.setChanged.bindAsEventListener(this));
478 },
478 },
479
479
480 submitAction: function(element){
480 submitAction: function(element){
481 element.observe('submit',this.setUnchanged.bindAsEventListener(this));
481 element.observe('submit',this.setUnchanged.bindAsEventListener(this));
482 }
482 }
483 });
483 });
484
484
485 /*
485 /*
486 * 1 - registers a callback which copies the csrf token into the
486 * 1 - registers a callback which copies the csrf token into the
487 * X-CSRF-Token header with each ajax request. Necessary to
487 * X-CSRF-Token header with each ajax request. Necessary to
488 * work with rails applications which have fixed
488 * work with rails applications which have fixed
489 * CVE-2011-0447
489 * CVE-2011-0447
490 * 2 - shows and hides ajax indicator
490 * 2 - shows and hides ajax indicator
491 */
491 */
492 Ajax.Responders.register({
492 Ajax.Responders.register({
493 onCreate: function(request){
493 onCreate: function(request){
494 var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
494 var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
495
495
496 if (csrf_meta_tag) {
496 if (csrf_meta_tag) {
497 var header = 'X-CSRF-Token',
497 var header = 'X-CSRF-Token',
498 token = csrf_meta_tag.readAttribute('content');
498 token = csrf_meta_tag.readAttribute('content');
499
499
500 if (!request.options.requestHeaders) {
500 if (!request.options.requestHeaders) {
501 request.options.requestHeaders = {};
501 request.options.requestHeaders = {};
502 }
502 }
503 request.options.requestHeaders[header] = token;
503 request.options.requestHeaders[header] = token;
504 }
504 }
505
505
506 if ($('ajax-indicator') && Ajax.activeRequestCount > 0) {
506 if ($('ajax-indicator') && Ajax.activeRequestCount > 0 && $$('input.ajax-loading').size() == 0) {
507 Element.show('ajax-indicator');
507 Element.show('ajax-indicator');
508 }
508 }
509 },
509 },
510 onComplete: function(){
510 onComplete: function(){
511 if ($('ajax-indicator') && Ajax.activeRequestCount == 0) {
511 if ($('ajax-indicator') && Ajax.activeRequestCount == 0) {
512 Element.hide('ajax-indicator');
512 Element.hide('ajax-indicator');
513 }
513 }
514 }
514 }
515 });
515 });
516
516
517 function hideOnLoad() {
517 function hideOnLoad() {
518 $$('.hol').each(function(el) {
518 $$('.hol').each(function(el) {
519 el.hide();
519 el.hide();
520 });
520 });
521 }
521 }
522
522
523 Event.observe(window, 'load', hideOnLoad);
523 Event.observe(window, 'load', hideOnLoad);
@@ -1,1056 +1,1063
1 html {overflow-y:scroll;}
1 html {overflow-y:scroll;}
2 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
2 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
3
3
4 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
4 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
5 h1 {margin:0; padding:0; font-size: 24px;}
5 h1 {margin:0; padding:0; font-size: 24px;}
6 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
7 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
7 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
8 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
8 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
9
9
10 /***** Layout *****/
10 /***** Layout *****/
11 #wrapper {background: white;}
11 #wrapper {background: white;}
12
12
13 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
13 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
14 #top-menu ul {margin: 0; padding: 0;}
14 #top-menu ul {margin: 0; padding: 0;}
15 #top-menu li {
15 #top-menu li {
16 float:left;
16 float:left;
17 list-style-type:none;
17 list-style-type:none;
18 margin: 0px 0px 0px 0px;
18 margin: 0px 0px 0px 0px;
19 padding: 0px 0px 0px 0px;
19 padding: 0px 0px 0px 0px;
20 white-space:nowrap;
20 white-space:nowrap;
21 }
21 }
22 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
22 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
23 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
23 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
24
24
25 #account {float:right;}
25 #account {float:right;}
26
26
27 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
27 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
28 #header a {color:#f8f8f8;}
28 #header a {color:#f8f8f8;}
29 #header h1 a.ancestor { font-size: 80%; }
29 #header h1 a.ancestor { font-size: 80%; }
30 #quick-search {float:right;}
30 #quick-search {float:right;}
31
31
32 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
32 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
33 #main-menu ul {margin: 0; padding: 0;}
33 #main-menu ul {margin: 0; padding: 0;}
34 #main-menu li {
34 #main-menu li {
35 float:left;
35 float:left;
36 list-style-type:none;
36 list-style-type:none;
37 margin: 0px 2px 0px 0px;
37 margin: 0px 2px 0px 0px;
38 padding: 0px 0px 0px 0px;
38 padding: 0px 0px 0px 0px;
39 white-space:nowrap;
39 white-space:nowrap;
40 }
40 }
41 #main-menu li a {
41 #main-menu li a {
42 display: block;
42 display: block;
43 color: #fff;
43 color: #fff;
44 text-decoration: none;
44 text-decoration: none;
45 font-weight: bold;
45 font-weight: bold;
46 margin: 0;
46 margin: 0;
47 padding: 4px 10px 4px 10px;
47 padding: 4px 10px 4px 10px;
48 }
48 }
49 #main-menu li a:hover {background:#759FCF; color:#fff;}
49 #main-menu li a:hover {background:#759FCF; color:#fff;}
50 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
50 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
51
51
52 #admin-menu ul {margin: 0; padding: 0;}
52 #admin-menu ul {margin: 0; padding: 0;}
53 #admin-menu li {margin: 0; padding: 0 0 6px 0; list-style-type:none;}
53 #admin-menu li {margin: 0; padding: 0 0 6px 0; list-style-type:none;}
54
54
55 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
55 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
56 #admin-menu a.projects { background-image: url(../images/projects.png); }
56 #admin-menu a.projects { background-image: url(../images/projects.png); }
57 #admin-menu a.users { background-image: url(../images/user.png); }
57 #admin-menu a.users { background-image: url(../images/user.png); }
58 #admin-menu a.groups { background-image: url(../images/group.png); }
58 #admin-menu a.groups { background-image: url(../images/group.png); }
59 #admin-menu a.roles { background-image: url(../images/database_key.png); }
59 #admin-menu a.roles { background-image: url(../images/database_key.png); }
60 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
60 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
61 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
61 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
62 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
62 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
63 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
63 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
64 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
64 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
65 #admin-menu a.settings { background-image: url(../images/changeset.png); }
65 #admin-menu a.settings { background-image: url(../images/changeset.png); }
66 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
66 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
67 #admin-menu a.info { background-image: url(../images/help.png); }
67 #admin-menu a.info { background-image: url(../images/help.png); }
68 #admin-menu a.server_authentication { background-image: url(../images/server_key.png); }
68 #admin-menu a.server_authentication { background-image: url(../images/server_key.png); }
69
69
70 #main {background-color:#EEEEEE;}
70 #main {background-color:#EEEEEE;}
71
71
72 #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;}
72 #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;}
73 * html #sidebar{ width: 22%; }
73 * html #sidebar{ width: 22%; }
74 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
74 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
75 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
75 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
76 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
76 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
77 #sidebar .contextual { margin-right: 1em; }
77 #sidebar .contextual { margin-right: 1em; }
78
78
79 #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
79 #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
80 * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
80 * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
81 html>body #content { min-height: 600px; }
81 html>body #content { min-height: 600px; }
82 * html body #content { height: 600px; } /* IE */
82 * html body #content { height: 600px; } /* IE */
83
83
84 #main.nosidebar #sidebar{ display: none; }
84 #main.nosidebar #sidebar{ display: none; }
85 #main.nosidebar #content{ width: auto; border-right: 0; }
85 #main.nosidebar #content{ width: auto; border-right: 0; }
86
86
87 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
87 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
88
88
89 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
89 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
90 #login-form table td {padding: 6px;}
90 #login-form table td {padding: 6px;}
91 #login-form label {font-weight: bold;}
91 #login-form label {font-weight: bold;}
92 #login-form input#username, #login-form input#password { width: 300px; }
92 #login-form input#username, #login-form input#password { width: 300px; }
93
93
94 #modalbg {position:absolute; top:0; left:0; width:100%; height:100%; background:#ccc; z-index:49; opacity:0.5;}
94 #modalbg {position:absolute; top:0; left:0; width:100%; height:100%; background:#ccc; z-index:49; opacity:0.5;}
95 html>body #modalbg {position:fixed;}
95 html>body #modalbg {position:fixed;}
96 div.modal { border-radius:5px; position:absolute; top:25%; background:#fff; border:2px solid #759FCF; z-index:50; padding:0px; padding:8px; box-shadow: 1px 1px 8px #888; }
96 div.modal { border-radius:5px; position:absolute; top:25%; background:#fff; border:2px solid #759FCF; z-index:50; padding:0px; padding:8px; box-shadow: 1px 1px 8px #888; }
97 div.modal h3.title {background:#759FCF; color:#fff; border:0; padding-left:8px; margin:-8px; margin-bottom: 1em; border-top-left-radius:2px;border-top-right-radius:2px;}
97 div.modal h3.title {background:#759FCF; color:#fff; border:0; padding-left:8px; margin:-8px; margin-bottom: 1em; border-top-left-radius:2px;border-top-right-radius:2px;}
98 div.modal p.buttons {text-align:right; margin-bottom:0;}
98 div.modal p.buttons {text-align:right; margin-bottom:0;}
99 html>body div.modal {position:fixed;}
99 html>body div.modal {position:fixed;}
100
100
101 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
101 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
102
102
103 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
103 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
104
104
105 /***** Links *****/
105 /***** Links *****/
106 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
106 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
107 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
107 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
108 a img{ border: 0; }
108 a img{ border: 0; }
109
109
110 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
110 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
111
111
112 #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px; -moz-border-radius:2px;}
112 #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px; -moz-border-radius:2px;}
113 #sidebar a.selected:hover {text-decoration:none;}
113 #sidebar a.selected:hover {text-decoration:none;}
114 #admin-menu a {line-height:1.7em;}
114 #admin-menu a {line-height:1.7em;}
115 #admin-menu a.selected {padding-left: 20px !important; background-position: 2px 40%;}
115 #admin-menu a.selected {padding-left: 20px !important; background-position: 2px 40%;}
116
116
117 a.collapsible {padding-left: 12px; background: url(../images/arrow_expanded.png) no-repeat -3px 40%;}
117 a.collapsible {padding-left: 12px; background: url(../images/arrow_expanded.png) no-repeat -3px 40%;}
118 a.collapsible.collapsed {background: url(../images/arrow_collapsed.png) no-repeat -5px 40%;}
118 a.collapsible.collapsed {background: url(../images/arrow_collapsed.png) no-repeat -5px 40%;}
119
119
120 a#toggle-completed-versions {color:#999;}
120 a#toggle-completed-versions {color:#999;}
121 /***** Tables *****/
121 /***** Tables *****/
122 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
122 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
123 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
123 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
124 table.list td { vertical-align: top; }
124 table.list td { vertical-align: top; }
125 table.list td.id { width: 2%; text-align: center;}
125 table.list td.id { width: 2%; text-align: center;}
126 table.list td.checkbox { width: 15px; padding: 2px 0 0 0; }
126 table.list td.checkbox { width: 15px; padding: 2px 0 0 0; }
127 table.list td.checkbox input {padding:0px;}
127 table.list td.checkbox input {padding:0px;}
128 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
128 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
129 table.list td.buttons a { padding-right: 0.6em; }
129 table.list td.buttons a { padding-right: 0.6em; }
130 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
130 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
131
131
132 tr.project td.name a { white-space:nowrap; }
132 tr.project td.name a { white-space:nowrap; }
133
133
134 tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
134 tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
135 tr.project.idnt-1 td.name {padding-left: 0.5em;}
135 tr.project.idnt-1 td.name {padding-left: 0.5em;}
136 tr.project.idnt-2 td.name {padding-left: 2em;}
136 tr.project.idnt-2 td.name {padding-left: 2em;}
137 tr.project.idnt-3 td.name {padding-left: 3.5em;}
137 tr.project.idnt-3 td.name {padding-left: 3.5em;}
138 tr.project.idnt-4 td.name {padding-left: 5em;}
138 tr.project.idnt-4 td.name {padding-left: 5em;}
139 tr.project.idnt-5 td.name {padding-left: 6.5em;}
139 tr.project.idnt-5 td.name {padding-left: 6.5em;}
140 tr.project.idnt-6 td.name {padding-left: 8em;}
140 tr.project.idnt-6 td.name {padding-left: 8em;}
141 tr.project.idnt-7 td.name {padding-left: 9.5em;}
141 tr.project.idnt-7 td.name {padding-left: 9.5em;}
142 tr.project.idnt-8 td.name {padding-left: 11em;}
142 tr.project.idnt-8 td.name {padding-left: 11em;}
143 tr.project.idnt-9 td.name {padding-left: 12.5em;}
143 tr.project.idnt-9 td.name {padding-left: 12.5em;}
144
144
145 tr.issue { text-align: center; white-space: nowrap; }
145 tr.issue { text-align: center; white-space: nowrap; }
146 tr.issue td.subject, tr.issue td.category, td.assigned_to, tr.issue td.string, tr.issue td.text { white-space: normal; }
146 tr.issue td.subject, tr.issue td.category, td.assigned_to, tr.issue td.string, tr.issue td.text { white-space: normal; }
147 tr.issue td.subject { text-align: left; }
147 tr.issue td.subject { text-align: left; }
148 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
148 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
149
149
150 tr.issue.idnt td.subject a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
150 tr.issue.idnt td.subject a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
151 tr.issue.idnt-1 td.subject {padding-left: 0.5em;}
151 tr.issue.idnt-1 td.subject {padding-left: 0.5em;}
152 tr.issue.idnt-2 td.subject {padding-left: 2em;}
152 tr.issue.idnt-2 td.subject {padding-left: 2em;}
153 tr.issue.idnt-3 td.subject {padding-left: 3.5em;}
153 tr.issue.idnt-3 td.subject {padding-left: 3.5em;}
154 tr.issue.idnt-4 td.subject {padding-left: 5em;}
154 tr.issue.idnt-4 td.subject {padding-left: 5em;}
155 tr.issue.idnt-5 td.subject {padding-left: 6.5em;}
155 tr.issue.idnt-5 td.subject {padding-left: 6.5em;}
156 tr.issue.idnt-6 td.subject {padding-left: 8em;}
156 tr.issue.idnt-6 td.subject {padding-left: 8em;}
157 tr.issue.idnt-7 td.subject {padding-left: 9.5em;}
157 tr.issue.idnt-7 td.subject {padding-left: 9.5em;}
158 tr.issue.idnt-8 td.subject {padding-left: 11em;}
158 tr.issue.idnt-8 td.subject {padding-left: 11em;}
159 tr.issue.idnt-9 td.subject {padding-left: 12.5em;}
159 tr.issue.idnt-9 td.subject {padding-left: 12.5em;}
160
160
161 tr.entry { border: 1px solid #f8f8f8; }
161 tr.entry { border: 1px solid #f8f8f8; }
162 tr.entry td { white-space: nowrap; }
162 tr.entry td { white-space: nowrap; }
163 tr.entry td.filename { width: 30%; }
163 tr.entry td.filename { width: 30%; }
164 tr.entry td.filename_no_report { width: 70%; }
164 tr.entry td.filename_no_report { width: 70%; }
165 tr.entry td.size { text-align: right; font-size: 90%; }
165 tr.entry td.size { text-align: right; font-size: 90%; }
166 tr.entry td.revision, tr.entry td.author { text-align: center; }
166 tr.entry td.revision, tr.entry td.author { text-align: center; }
167 tr.entry td.age { text-align: right; }
167 tr.entry td.age { text-align: right; }
168 tr.entry.file td.filename a { margin-left: 16px; }
168 tr.entry.file td.filename a { margin-left: 16px; }
169 tr.entry.file td.filename_no_report a { margin-left: 16px; }
169 tr.entry.file td.filename_no_report a { margin-left: 16px; }
170
170
171 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
171 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
172 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
172 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
173
173
174 tr.changeset { height: 20px }
174 tr.changeset { height: 20px }
175 tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; }
175 tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; }
176 tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; }
176 tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; }
177 tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;}
177 tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;}
178 tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;}
178 tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;}
179
179
180 table.files tr.file td { text-align: center; }
180 table.files tr.file td { text-align: center; }
181 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
181 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
182 table.files tr.file td.digest { font-size: 80%; }
182 table.files tr.file td.digest { font-size: 80%; }
183
183
184 table.members td.roles, table.memberships td.roles { width: 45%; }
184 table.members td.roles, table.memberships td.roles { width: 45%; }
185
185
186 tr.message { height: 2.6em; }
186 tr.message { height: 2.6em; }
187 tr.message td.subject { padding-left: 20px; }
187 tr.message td.subject { padding-left: 20px; }
188 tr.message td.created_on { white-space: nowrap; }
188 tr.message td.created_on { white-space: nowrap; }
189 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
189 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
190 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
190 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
191 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
191 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
192
192
193 tr.version.closed, tr.version.closed a { color: #999; }
193 tr.version.closed, tr.version.closed a { color: #999; }
194 tr.version td.name { padding-left: 20px; }
194 tr.version td.name { padding-left: 20px; }
195 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
195 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
196 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; }
196 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; }
197
197
198 tr.user td { width:13%; }
198 tr.user td { width:13%; }
199 tr.user td.email { width:18%; }
199 tr.user td.email { width:18%; }
200 tr.user td { white-space: nowrap; }
200 tr.user td { white-space: nowrap; }
201 tr.user.locked, tr.user.registered { color: #aaa; }
201 tr.user.locked, tr.user.registered { color: #aaa; }
202 tr.user.locked a, tr.user.registered a { color: #aaa; }
202 tr.user.locked a, tr.user.registered a { color: #aaa; }
203
203
204 table.permissions td.role {color:#999;font-size:90%;font-weight:normal !important;text-align:center;vertical-align:bottom;}
204 table.permissions td.role {color:#999;font-size:90%;font-weight:normal !important;text-align:center;vertical-align:bottom;}
205
205
206 tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;}
206 tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;}
207
207
208 tr.time-entry { text-align: center; white-space: nowrap; }
208 tr.time-entry { text-align: center; white-space: nowrap; }
209 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
209 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
210 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
210 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
211 td.hours .hours-dec { font-size: 0.9em; }
211 td.hours .hours-dec { font-size: 0.9em; }
212
212
213 table.plugins td { vertical-align: middle; }
213 table.plugins td { vertical-align: middle; }
214 table.plugins td.configure { text-align: right; padding-right: 1em; }
214 table.plugins td.configure { text-align: right; padding-right: 1em; }
215 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
215 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
216 table.plugins span.description { display: block; font-size: 0.9em; }
216 table.plugins span.description { display: block; font-size: 0.9em; }
217 table.plugins span.url { display: block; font-size: 0.9em; }
217 table.plugins span.url { display: block; font-size: 0.9em; }
218
218
219 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
219 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
220 table.list tbody tr.group span.count { color: #aaa; font-size: 80%; }
220 table.list tbody tr.group span.count { color: #aaa; font-size: 80%; }
221 tr.group a.toggle-all { color: #aaa; font-size: 80%; font-weight: normal; display:none;}
221 tr.group a.toggle-all { color: #aaa; font-size: 80%; font-weight: normal; display:none;}
222 tr.group:hover a.toggle-all { display:inline;}
222 tr.group:hover a.toggle-all { display:inline;}
223 a.toggle-all:hover {text-decoration:none;}
223 a.toggle-all:hover {text-decoration:none;}
224
224
225 table.list tbody tr:hover { background-color:#ffffdd; }
225 table.list tbody tr:hover { background-color:#ffffdd; }
226 table.list tbody tr.group:hover { background-color:inherit; }
226 table.list tbody tr.group:hover { background-color:inherit; }
227 table td {padding:2px;}
227 table td {padding:2px;}
228 table p {margin:0;}
228 table p {margin:0;}
229 .odd {background-color:#f6f7f8;}
229 .odd {background-color:#f6f7f8;}
230 .even {background-color: #fff;}
230 .even {background-color: #fff;}
231
231
232 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
232 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
233 a.sort.asc { background-image: url(../images/sort_asc.png); }
233 a.sort.asc { background-image: url(../images/sort_asc.png); }
234 a.sort.desc { background-image: url(../images/sort_desc.png); }
234 a.sort.desc { background-image: url(../images/sort_desc.png); }
235
235
236 table.attributes { width: 100% }
236 table.attributes { width: 100% }
237 table.attributes th { vertical-align: top; text-align: left; }
237 table.attributes th { vertical-align: top; text-align: left; }
238 table.attributes td { vertical-align: top; }
238 table.attributes td { vertical-align: top; }
239
239
240 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
240 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
241
241
242 td.center {text-align:center;}
242 td.center {text-align:center;}
243
243
244 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
244 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
245
245
246 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
246 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
247 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
247 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
248 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
248 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
249 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
249 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
250
250
251 #watchers ul {margin: 0; padding: 0;}
251 #watchers ul {margin: 0; padding: 0;}
252 #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
252 #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
253 #watchers select {width: 95%; display: block;}
253 #watchers select {width: 95%; display: block;}
254 #watchers a.delete {opacity: 0.4;}
254 #watchers a.delete {opacity: 0.4;}
255 #watchers a.delete:hover {opacity: 1;}
255 #watchers a.delete:hover {opacity: 1;}
256 #watchers img.gravatar {margin: 0 4px 2px 0;}
256 #watchers img.gravatar {margin: 0 4px 2px 0;}
257
257
258 .highlight { background-color: #FCFD8D;}
258 .highlight { background-color: #FCFD8D;}
259 .highlight.token-1 { background-color: #faa;}
259 .highlight.token-1 { background-color: #faa;}
260 .highlight.token-2 { background-color: #afa;}
260 .highlight.token-2 { background-color: #afa;}
261 .highlight.token-3 { background-color: #aaf;}
261 .highlight.token-3 { background-color: #aaf;}
262
262
263 .box{
263 .box{
264 padding:6px;
264 padding:6px;
265 margin-bottom: 10px;
265 margin-bottom: 10px;
266 background-color:#f6f6f6;
266 background-color:#f6f6f6;
267 color:#505050;
267 color:#505050;
268 line-height:1.5em;
268 line-height:1.5em;
269 border: 1px solid #e4e4e4;
269 border: 1px solid #e4e4e4;
270 }
270 }
271
271
272 div.square {
272 div.square {
273 border: 1px solid #999;
273 border: 1px solid #999;
274 float: left;
274 float: left;
275 margin: .3em .4em 0 .4em;
275 margin: .3em .4em 0 .4em;
276 overflow: hidden;
276 overflow: hidden;
277 width: .6em; height: .6em;
277 width: .6em; height: .6em;
278 }
278 }
279 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
279 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
280 .contextual input, .contextual select {font-size:0.9em;}
280 .contextual input, .contextual select {font-size:0.9em;}
281 .message .contextual { margin-top: 0; }
281 .message .contextual { margin-top: 0; }
282
282
283 .splitcontent {overflow:auto;}
283 .splitcontent {overflow:auto;}
284 .splitcontentleft{float:left; width:49%;}
284 .splitcontentleft{float:left; width:49%;}
285 .splitcontentright{float:right; width:49%;}
285 .splitcontentright{float:right; width:49%;}
286 form {display: inline;}
286 form {display: inline;}
287 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
287 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
288 fieldset {border: 1px solid #e4e4e4; margin:0;}
288 fieldset {border: 1px solid #e4e4e4; margin:0;}
289 legend {color: #484848;}
289 legend {color: #484848;}
290 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
290 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
291 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
291 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
292 blockquote blockquote { margin-left: 0;}
292 blockquote blockquote { margin-left: 0;}
293 acronym { border-bottom: 1px dotted; cursor: help; }
293 acronym { border-bottom: 1px dotted; cursor: help; }
294 textarea.wiki-edit { width: 99%; }
294 textarea.wiki-edit { width: 99%; }
295 li p {margin-top: 0;}
295 li p {margin-top: 0;}
296 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
296 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
297 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
297 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
298 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
298 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
299 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
299 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
300
300
301 div.issue div.subject div div { padding-left: 16px; }
301 div.issue div.subject div div { padding-left: 16px; }
302 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
302 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
303 div.issue div.subject>div>p { margin-top: 0.5em; }
303 div.issue div.subject>div>p { margin-top: 0.5em; }
304 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
304 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
305 div.issue span.private { position:relative; bottom: 2px; text-transform: uppercase; background: #d22; color: #fff; font-weight:bold; padding: 0px 2px 0px 2px; font-size: 60%; margin-right: 2px; border-radius: 2px; -moz-border-radius: 2px;}
305 div.issue span.private { position:relative; bottom: 2px; text-transform: uppercase; background: #d22; color: #fff; font-weight:bold; padding: 0px 2px 0px 2px; font-size: 60%; margin-right: 2px; border-radius: 2px; -moz-border-radius: 2px;}
306 div.issue .next-prev-links {color:#999;}
306 div.issue .next-prev-links {color:#999;}
307 div.issue table.attributes th {width:22%;}
307 div.issue table.attributes th {width:22%;}
308 div.issue table.attributes td {width:28%;}
308 div.issue table.attributes td {width:28%;}
309
309
310 #issue_tree table.issues, #relations table.issues { border: 0; }
310 #issue_tree table.issues, #relations table.issues { border: 0; }
311 #issue_tree td.checkbox, #relations td.checkbox {display:none;}
311 #issue_tree td.checkbox, #relations td.checkbox {display:none;}
312 #relations td.buttons {padding:0;}
312 #relations td.buttons {padding:0;}
313
313
314 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
314 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
315 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
315 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
316 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
316 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
317
317
318 fieldset#date-range p { margin: 2px 0 2px 0; }
318 fieldset#date-range p { margin: 2px 0 2px 0; }
319 fieldset#filters table { border-collapse: collapse; }
319 fieldset#filters table { border-collapse: collapse; }
320 fieldset#filters table td { padding: 0; vertical-align: middle; }
320 fieldset#filters table td { padding: 0; vertical-align: middle; }
321 fieldset#filters tr.filter { height: 2em; }
321 fieldset#filters tr.filter { height: 2em; }
322 fieldset#filters td.field { width:200px; }
322 fieldset#filters td.field { width:200px; }
323 fieldset#filters td.operator { width:170px; }
323 fieldset#filters td.operator { width:170px; }
324 fieldset#filters td.values { white-space:nowrap; }
324 fieldset#filters td.values { white-space:nowrap; }
325 fieldset#filters td.values select {min-width:130px;}
325 fieldset#filters td.values select {min-width:130px;}
326 fieldset#filters td.values img { vertical-align: middle; margin-left:1px; }
326 fieldset#filters td.values img { vertical-align: middle; margin-left:1px; }
327 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
327 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
328 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
328 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
329
329
330 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
330 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
331 div#issue-changesets div.changeset { padding: 4px;}
331 div#issue-changesets div.changeset { padding: 4px;}
332 div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
332 div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
333 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
333 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
334
334
335 div#activity dl, #search-results { margin-left: 2em; }
335 div#activity dl, #search-results { margin-left: 2em; }
336 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
336 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
337 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
337 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
338 div#activity dt.me .time { border-bottom: 1px solid #999; }
338 div#activity dt.me .time { border-bottom: 1px solid #999; }
339 div#activity dt .time { color: #777; font-size: 80%; }
339 div#activity dt .time { color: #777; font-size: 80%; }
340 div#activity dd .description, #search-results dd .description { font-style: italic; }
340 div#activity dd .description, #search-results dd .description { font-style: italic; }
341 div#activity span.project:after, #search-results span.project:after { content: " -"; }
341 div#activity span.project:after, #search-results span.project:after { content: " -"; }
342 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
342 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
343
343
344 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
344 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
345
345
346 div#search-results-counts {float:right;}
346 div#search-results-counts {float:right;}
347 div#search-results-counts ul { margin-top: 0.5em; }
347 div#search-results-counts ul { margin-top: 0.5em; }
348 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
348 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
349
349
350 dt.issue { background-image: url(../images/ticket.png); }
350 dt.issue { background-image: url(../images/ticket.png); }
351 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
351 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
352 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
352 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
353 dt.issue-note { background-image: url(../images/ticket_note.png); }
353 dt.issue-note { background-image: url(../images/ticket_note.png); }
354 dt.changeset { background-image: url(../images/changeset.png); }
354 dt.changeset { background-image: url(../images/changeset.png); }
355 dt.news { background-image: url(../images/news.png); }
355 dt.news { background-image: url(../images/news.png); }
356 dt.message { background-image: url(../images/message.png); }
356 dt.message { background-image: url(../images/message.png); }
357 dt.reply { background-image: url(../images/comments.png); }
357 dt.reply { background-image: url(../images/comments.png); }
358 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
358 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
359 dt.attachment { background-image: url(../images/attachment.png); }
359 dt.attachment { background-image: url(../images/attachment.png); }
360 dt.document { background-image: url(../images/document.png); }
360 dt.document { background-image: url(../images/document.png); }
361 dt.project { background-image: url(../images/projects.png); }
361 dt.project { background-image: url(../images/projects.png); }
362 dt.time-entry { background-image: url(../images/time.png); }
362 dt.time-entry { background-image: url(../images/time.png); }
363
363
364 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
364 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
365
365
366 div#roadmap .related-issues { margin-bottom: 1em; }
366 div#roadmap .related-issues { margin-bottom: 1em; }
367 div#roadmap .related-issues td.checkbox { display: none; }
367 div#roadmap .related-issues td.checkbox { display: none; }
368 div#roadmap .wiki h1:first-child { display: none; }
368 div#roadmap .wiki h1:first-child { display: none; }
369 div#roadmap .wiki h1 { font-size: 120%; }
369 div#roadmap .wiki h1 { font-size: 120%; }
370 div#roadmap .wiki h2 { font-size: 110%; }
370 div#roadmap .wiki h2 { font-size: 110%; }
371 body.controller-versions.action-show div#roadmap .related-issues {width:70%;}
371 body.controller-versions.action-show div#roadmap .related-issues {width:70%;}
372
372
373 div#version-summary { float:right; width:28%; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
373 div#version-summary { float:right; width:28%; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
374 div#version-summary fieldset { margin-bottom: 1em; }
374 div#version-summary fieldset { margin-bottom: 1em; }
375 div#version-summary fieldset.time-tracking table { width:100%; }
375 div#version-summary fieldset.time-tracking table { width:100%; }
376 div#version-summary th, div#version-summary td.total-hours { text-align: right; }
376 div#version-summary th, div#version-summary td.total-hours { text-align: right; }
377
377
378 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
378 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
379 table#time-report tbody tr.subtotal { font-style: italic; color:#777;}
379 table#time-report tbody tr.subtotal { font-style: italic; color:#777;}
380 table#time-report tbody tr.subtotal td.hours { color:#b0b0b0; }
380 table#time-report tbody tr.subtotal td.hours { color:#b0b0b0; }
381 table#time-report tbody tr.total { font-weight: bold; background-color:#EEEEEE; border-top:1px solid #e4e4e4;}
381 table#time-report tbody tr.total { font-weight: bold; background-color:#EEEEEE; border-top:1px solid #e4e4e4;}
382 table#time-report .hours-dec { font-size: 0.9em; }
382 table#time-report .hours-dec { font-size: 0.9em; }
383
383
384 div.wiki-page .contextual a {opacity: 0.4}
384 div.wiki-page .contextual a {opacity: 0.4}
385 div.wiki-page .contextual a:hover {opacity: 1}
385 div.wiki-page .contextual a:hover {opacity: 1}
386
386
387 form .attributes select { width: 60%; }
387 form .attributes select { width: 60%; }
388 input#issue_subject { width: 99%; }
388 input#issue_subject { width: 99%; }
389 select#issue_done_ratio { width: 95px; }
389 select#issue_done_ratio { width: 95px; }
390
390
391 ul.projects { margin: 0; padding-left: 1em; }
391 ul.projects { margin: 0; padding-left: 1em; }
392 ul.projects.root { margin: 0; padding: 0; }
392 ul.projects.root { margin: 0; padding: 0; }
393 ul.projects ul.projects { border-left: 3px solid #e0e0e0; }
393 ul.projects ul.projects { border-left: 3px solid #e0e0e0; }
394 ul.projects li.root { list-style-type:none; margin-bottom: 1em; }
394 ul.projects li.root { list-style-type:none; margin-bottom: 1em; }
395 ul.projects li.child { list-style-type:none; margin-top: 1em;}
395 ul.projects li.child { list-style-type:none; margin-top: 1em;}
396 ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
396 ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
397 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
397 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
398
398
399 #tracker_project_ids ul { margin: 0; padding-left: 1em; }
399 #tracker_project_ids ul { margin: 0; padding-left: 1em; }
400 #tracker_project_ids li { list-style-type:none; }
400 #tracker_project_ids li { list-style-type:none; }
401
401
402 #related-issues li img {vertical-align:middle;}
402 #related-issues li img {vertical-align:middle;}
403
403
404 ul.properties {padding:0; font-size: 0.9em; color: #777;}
404 ul.properties {padding:0; font-size: 0.9em; color: #777;}
405 ul.properties li {list-style-type:none;}
405 ul.properties li {list-style-type:none;}
406 ul.properties li span {font-style:italic;}
406 ul.properties li span {font-style:italic;}
407
407
408 .total-hours { font-size: 110%; font-weight: bold; }
408 .total-hours { font-size: 110%; font-weight: bold; }
409 .total-hours span.hours-int { font-size: 120%; }
409 .total-hours span.hours-int { font-size: 120%; }
410
410
411 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
411 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
412 #user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select, #user_identity_url { width: 90%; }
412 #user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select, #user_identity_url { width: 90%; }
413
413
414 #workflow_copy_form select { width: 200px; }
414 #workflow_copy_form select { width: 200px; }
415
415
416 textarea#custom_field_possible_values {width: 99%}
416 textarea#custom_field_possible_values {width: 99%}
417 input#content_comments {width: 99%}
417 input#content_comments {width: 99%}
418
418
419 .pagination {font-size: 90%}
419 .pagination {font-size: 90%}
420 p.pagination {margin-top:8px;}
420 p.pagination {margin-top:8px;}
421
421
422 /***** Tabular forms ******/
422 /***** Tabular forms ******/
423 .tabular p{
423 .tabular p{
424 margin: 0;
424 margin: 0;
425 padding: 3px 0 3px 0;
425 padding: 3px 0 3px 0;
426 padding-left: 180px; /* width of left column containing the label elements */
426 padding-left: 180px; /* width of left column containing the label elements */
427 min-height: 1.8em;
427 min-height: 1.8em;
428 clear:left;
428 clear:left;
429 }
429 }
430
430
431 html>body .tabular p {overflow:hidden;}
431 html>body .tabular p {overflow:hidden;}
432
432
433 .tabular label{
433 .tabular label{
434 font-weight: bold;
434 font-weight: bold;
435 float: left;
435 float: left;
436 text-align: right;
436 text-align: right;
437 /* width of left column */
437 /* width of left column */
438 margin-left: -180px;
438 margin-left: -180px;
439 /* width of labels. Should be smaller than left column to create some right margin */
439 /* width of labels. Should be smaller than left column to create some right margin */
440 width: 175px;
440 width: 175px;
441 }
441 }
442
442
443 .tabular label.floating{
443 .tabular label.floating{
444 font-weight: normal;
444 font-weight: normal;
445 margin-left: 0px;
445 margin-left: 0px;
446 text-align: left;
446 text-align: left;
447 width: 270px;
447 width: 270px;
448 }
448 }
449
449
450 .tabular label.block{
450 .tabular label.block{
451 font-weight: normal;
451 font-weight: normal;
452 margin-left: 0px !important;
452 margin-left: 0px !important;
453 text-align: left;
453 text-align: left;
454 float: none;
454 float: none;
455 display: block;
455 display: block;
456 width: auto;
456 width: auto;
457 }
457 }
458
458
459 .tabular label.inline{
459 .tabular label.inline{
460 float:none;
460 float:none;
461 margin-left: 5px !important;
461 margin-left: 5px !important;
462 width: auto;
462 width: auto;
463 }
463 }
464
464
465 label.no-css {
465 label.no-css {
466 font-weight: inherit;
466 font-weight: inherit;
467 float:none;
467 float:none;
468 text-align:left;
468 text-align:left;
469 margin-left:0px;
469 margin-left:0px;
470 width:auto;
470 width:auto;
471 }
471 }
472 input#time_entry_comments { width: 90%;}
472 input#time_entry_comments { width: 90%;}
473
473
474 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
474 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
475
475
476 .tabular.settings p{ padding-left: 300px; }
476 .tabular.settings p{ padding-left: 300px; }
477 .tabular.settings label{ margin-left: -300px; width: 295px; }
477 .tabular.settings label{ margin-left: -300px; width: 295px; }
478 .tabular.settings textarea { width: 99%; }
478 .tabular.settings textarea { width: 99%; }
479
479
480 .settings.enabled_scm table {width:100%}
480 .settings.enabled_scm table {width:100%}
481 .settings.enabled_scm td.scm_name{ font-weight: bold; }
481 .settings.enabled_scm td.scm_name{ font-weight: bold; }
482
482
483 fieldset.settings label { display: block; }
483 fieldset.settings label { display: block; }
484 fieldset#notified_events .parent { padding-left: 20px; }
484 fieldset#notified_events .parent { padding-left: 20px; }
485
485
486 .required {color: #bb0000;}
486 .required {color: #bb0000;}
487 .summary {font-style: italic;}
487 .summary {font-style: italic;}
488
488
489 #attachments_fields input.description {margin-left: 8px; width:340px;}
489 #attachments_fields input.description {margin-left: 8px; width:340px;}
490 #attachments_fields span {display:block; white-space:nowrap;}
490 #attachments_fields span {display:block; white-space:nowrap;}
491 #attachments_fields img {vertical-align: middle;}
491 #attachments_fields img {vertical-align: middle;}
492
492
493 div.attachments { margin-top: 12px; }
493 div.attachments { margin-top: 12px; }
494 div.attachments p { margin:4px 0 2px 0; }
494 div.attachments p { margin:4px 0 2px 0; }
495 div.attachments img { vertical-align: middle; }
495 div.attachments img { vertical-align: middle; }
496 div.attachments span.author { font-size: 0.9em; color: #888; }
496 div.attachments span.author { font-size: 0.9em; color: #888; }
497
497
498 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
498 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
499 .other-formats span + span:before { content: "| "; }
499 .other-formats span + span:before { content: "| "; }
500
500
501 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
501 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
502
502
503 em.info {font-style:normal;font-size:90%;color:#888;display:block;}
503 em.info {font-style:normal;font-size:90%;color:#888;display:block;}
504 em.info.error {padding-left:20px; background:url(../images/exclamation.png) no-repeat 0 50%;}
504 em.info.error {padding-left:20px; background:url(../images/exclamation.png) no-repeat 0 50%;}
505
505
506 /* Project members tab */
506 /* Project members tab */
507 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
507 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
508 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
508 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
509 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
509 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
510 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
510 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
511 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
511 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
512 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
512 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
513
513
514 #users_for_watcher {height: 200px; overflow:auto;}
514 #users_for_watcher {height: 200px; overflow:auto;}
515 #users_for_watcher label {display: block;}
515 #users_for_watcher label {display: block;}
516
516
517 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
517 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
518
518
519 input#principal_search, input#user_search {width:100%}
519 input#principal_search, input#user_search {width:100%}
520 input#principal_search, input#user_search {
521 background: url(../images/magnifier.png) no-repeat 2px 50%; padding-left:20px;
522 border:1px solid #9EB1C2; border-radius:3px; height:1.5em; width:95%;
523 }
524 input#principal_search.ajax-loading, input#user_search.ajax-loading {
525 background-image: url(../images/loading.gif);
526 }
520
527
521 * html div#tab-content-members fieldset div { height: 450px; }
528 * html div#tab-content-members fieldset div { height: 450px; }
522
529
523 /***** Flash & error messages ****/
530 /***** Flash & error messages ****/
524 #errorExplanation, div.flash, .nodata, .warning, .conflict {
531 #errorExplanation, div.flash, .nodata, .warning, .conflict {
525 padding: 4px 4px 4px 30px;
532 padding: 4px 4px 4px 30px;
526 margin-bottom: 12px;
533 margin-bottom: 12px;
527 font-size: 1.1em;
534 font-size: 1.1em;
528 border: 2px solid;
535 border: 2px solid;
529 }
536 }
530
537
531 div.flash {margin-top: 8px;}
538 div.flash {margin-top: 8px;}
532
539
533 div.flash.error, #errorExplanation {
540 div.flash.error, #errorExplanation {
534 background: url(../images/exclamation.png) 8px 50% no-repeat;
541 background: url(../images/exclamation.png) 8px 50% no-repeat;
535 background-color: #ffe3e3;
542 background-color: #ffe3e3;
536 border-color: #dd0000;
543 border-color: #dd0000;
537 color: #880000;
544 color: #880000;
538 }
545 }
539
546
540 div.flash.notice {
547 div.flash.notice {
541 background: url(../images/true.png) 8px 5px no-repeat;
548 background: url(../images/true.png) 8px 5px no-repeat;
542 background-color: #dfffdf;
549 background-color: #dfffdf;
543 border-color: #9fcf9f;
550 border-color: #9fcf9f;
544 color: #005f00;
551 color: #005f00;
545 }
552 }
546
553
547 div.flash.warning, .conflict {
554 div.flash.warning, .conflict {
548 background: url(../images/warning.png) 8px 5px no-repeat;
555 background: url(../images/warning.png) 8px 5px no-repeat;
549 background-color: #FFEBC1;
556 background-color: #FFEBC1;
550 border-color: #FDBF3B;
557 border-color: #FDBF3B;
551 color: #A6750C;
558 color: #A6750C;
552 text-align: left;
559 text-align: left;
553 }
560 }
554
561
555 .nodata, .warning {
562 .nodata, .warning {
556 text-align: center;
563 text-align: center;
557 background-color: #FFEBC1;
564 background-color: #FFEBC1;
558 border-color: #FDBF3B;
565 border-color: #FDBF3B;
559 color: #A6750C;
566 color: #A6750C;
560 }
567 }
561
568
562 #errorExplanation ul { font-size: 0.9em;}
569 #errorExplanation ul { font-size: 0.9em;}
563 #errorExplanation h2, #errorExplanation p { display: none; }
570 #errorExplanation h2, #errorExplanation p { display: none; }
564
571
565 .conflict-details {font-size:80%;}
572 .conflict-details {font-size:80%;}
566
573
567 /***** Ajax indicator ******/
574 /***** Ajax indicator ******/
568 #ajax-indicator {
575 #ajax-indicator {
569 position: absolute; /* fixed not supported by IE */
576 position: absolute; /* fixed not supported by IE */
570 background-color:#eee;
577 background-color:#eee;
571 border: 1px solid #bbb;
578 border: 1px solid #bbb;
572 top:35%;
579 top:35%;
573 left:40%;
580 left:40%;
574 width:20%;
581 width:20%;
575 font-weight:bold;
582 font-weight:bold;
576 text-align:center;
583 text-align:center;
577 padding:0.6em;
584 padding:0.6em;
578 z-index:100;
585 z-index:100;
579 opacity: 0.5;
586 opacity: 0.5;
580 }
587 }
581
588
582 html>body #ajax-indicator { position: fixed; }
589 html>body #ajax-indicator { position: fixed; }
583
590
584 #ajax-indicator span {
591 #ajax-indicator span {
585 background-position: 0% 40%;
592 background-position: 0% 40%;
586 background-repeat: no-repeat;
593 background-repeat: no-repeat;
587 background-image: url(../images/loading.gif);
594 background-image: url(../images/loading.gif);
588 padding-left: 26px;
595 padding-left: 26px;
589 vertical-align: bottom;
596 vertical-align: bottom;
590 }
597 }
591
598
592 /***** Calendar *****/
599 /***** Calendar *****/
593 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
600 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
594 table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
601 table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
595 table.cal thead th.week-number {width: auto;}
602 table.cal thead th.week-number {width: auto;}
596 table.cal tbody tr {height: 100px;}
603 table.cal tbody tr {height: 100px;}
597 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
604 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
598 table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
605 table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
599 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
606 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
600 table.cal td.odd p.day-num {color: #bbb;}
607 table.cal td.odd p.day-num {color: #bbb;}
601 table.cal td.today {background:#ffffdd;}
608 table.cal td.today {background:#ffffdd;}
602 table.cal td.today p.day-num {font-weight: bold;}
609 table.cal td.today p.day-num {font-weight: bold;}
603 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
610 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
604 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
611 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
605 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
612 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
606 p.cal.legend span {display:block;}
613 p.cal.legend span {display:block;}
607
614
608 /***** Tooltips ******/
615 /***** Tooltips ******/
609 .tooltip{position:relative;z-index:24;}
616 .tooltip{position:relative;z-index:24;}
610 .tooltip:hover{z-index:25;color:#000;}
617 .tooltip:hover{z-index:25;color:#000;}
611 .tooltip span.tip{display: none; text-align:left;}
618 .tooltip span.tip{display: none; text-align:left;}
612
619
613 div.tooltip:hover span.tip{
620 div.tooltip:hover span.tip{
614 display:block;
621 display:block;
615 position:absolute;
622 position:absolute;
616 top:12px; left:24px; width:270px;
623 top:12px; left:24px; width:270px;
617 border:1px solid #555;
624 border:1px solid #555;
618 background-color:#fff;
625 background-color:#fff;
619 padding: 4px;
626 padding: 4px;
620 font-size: 0.8em;
627 font-size: 0.8em;
621 color:#505050;
628 color:#505050;
622 }
629 }
623
630
624 /***** Progress bar *****/
631 /***** Progress bar *****/
625 table.progress {
632 table.progress {
626 border-collapse: collapse;
633 border-collapse: collapse;
627 border-spacing: 0pt;
634 border-spacing: 0pt;
628 empty-cells: show;
635 empty-cells: show;
629 text-align: center;
636 text-align: center;
630 float:left;
637 float:left;
631 margin: 1px 6px 1px 0px;
638 margin: 1px 6px 1px 0px;
632 }
639 }
633
640
634 table.progress td { height: 1em; }
641 table.progress td { height: 1em; }
635 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
642 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
636 table.progress td.done { background: #D3EDD3 none repeat scroll 0%; }
643 table.progress td.done { background: #D3EDD3 none repeat scroll 0%; }
637 table.progress td.todo { background: #eee none repeat scroll 0%; }
644 table.progress td.todo { background: #eee none repeat scroll 0%; }
638 p.pourcent {font-size: 80%;}
645 p.pourcent {font-size: 80%;}
639 p.progress-info {clear: left; font-size: 80%; margin-top:-4px; color:#777;}
646 p.progress-info {clear: left; font-size: 80%; margin-top:-4px; color:#777;}
640
647
641 #roadmap table.progress td { height: 1.2em; }
648 #roadmap table.progress td { height: 1.2em; }
642 /***** Tabs *****/
649 /***** Tabs *****/
643 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
650 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
644 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
651 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
645 #content .tabs ul li {
652 #content .tabs ul li {
646 float:left;
653 float:left;
647 list-style-type:none;
654 list-style-type:none;
648 white-space:nowrap;
655 white-space:nowrap;
649 margin-right:4px;
656 margin-right:4px;
650 background:#fff;
657 background:#fff;
651 position:relative;
658 position:relative;
652 margin-bottom:-1px;
659 margin-bottom:-1px;
653 }
660 }
654 #content .tabs ul li a{
661 #content .tabs ul li a{
655 display:block;
662 display:block;
656 font-size: 0.9em;
663 font-size: 0.9em;
657 text-decoration:none;
664 text-decoration:none;
658 line-height:1.3em;
665 line-height:1.3em;
659 padding:4px 6px 4px 6px;
666 padding:4px 6px 4px 6px;
660 border: 1px solid #ccc;
667 border: 1px solid #ccc;
661 border-bottom: 1px solid #bbbbbb;
668 border-bottom: 1px solid #bbbbbb;
662 background-color: #f6f6f6;
669 background-color: #f6f6f6;
663 color:#999;
670 color:#999;
664 font-weight:bold;
671 font-weight:bold;
665 border-top-left-radius:3px;
672 border-top-left-radius:3px;
666 border-top-right-radius:3px;
673 border-top-right-radius:3px;
667 }
674 }
668
675
669 #content .tabs ul li a:hover {
676 #content .tabs ul li a:hover {
670 background-color: #ffffdd;
677 background-color: #ffffdd;
671 text-decoration:none;
678 text-decoration:none;
672 }
679 }
673
680
674 #content .tabs ul li a.selected {
681 #content .tabs ul li a.selected {
675 background-color: #fff;
682 background-color: #fff;
676 border: 1px solid #bbbbbb;
683 border: 1px solid #bbbbbb;
677 border-bottom: 1px solid #fff;
684 border-bottom: 1px solid #fff;
678 color:#444;
685 color:#444;
679 }
686 }
680
687
681 #content .tabs ul li a.selected:hover {
688 #content .tabs ul li a.selected:hover {
682 background-color: #fff;
689 background-color: #fff;
683 }
690 }
684
691
685 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
692 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
686
693
687 button.tab-left, button.tab-right {
694 button.tab-left, button.tab-right {
688 font-size: 0.9em;
695 font-size: 0.9em;
689 cursor: pointer;
696 cursor: pointer;
690 height:24px;
697 height:24px;
691 border: 1px solid #ccc;
698 border: 1px solid #ccc;
692 border-bottom: 1px solid #bbbbbb;
699 border-bottom: 1px solid #bbbbbb;
693 position:absolute;
700 position:absolute;
694 padding:4px;
701 padding:4px;
695 width: 20px;
702 width: 20px;
696 bottom: -1px;
703 bottom: -1px;
697 }
704 }
698
705
699 button.tab-left {
706 button.tab-left {
700 right: 20px;
707 right: 20px;
701 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
708 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
702 border-top-left-radius:3px;
709 border-top-left-radius:3px;
703 }
710 }
704
711
705 button.tab-right {
712 button.tab-right {
706 right: 0;
713 right: 0;
707 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
714 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
708 border-top-right-radius:3px;
715 border-top-right-radius:3px;
709 }
716 }
710
717
711 /***** Auto-complete *****/
718 /***** Auto-complete *****/
712 div.autocomplete {
719 div.autocomplete {
713 position:absolute;
720 position:absolute;
714 width:400px;
721 width:400px;
715 margin:0;
722 margin:0;
716 padding:0;
723 padding:0;
717 }
724 }
718 div.autocomplete ul {
725 div.autocomplete ul {
719 list-style-type:none;
726 list-style-type:none;
720 margin:0;
727 margin:0;
721 padding:0;
728 padding:0;
722 }
729 }
723 div.autocomplete ul li {
730 div.autocomplete ul li {
724 list-style-type:none;
731 list-style-type:none;
725 display:block;
732 display:block;
726 margin:-1px 0 0 0;
733 margin:-1px 0 0 0;
727 padding:2px;
734 padding:2px;
728 cursor:pointer;
735 cursor:pointer;
729 font-size: 90%;
736 font-size: 90%;
730 border: 1px solid #ccc;
737 border: 1px solid #ccc;
731 border-left: 1px solid #ccc;
738 border-left: 1px solid #ccc;
732 border-right: 1px solid #ccc;
739 border-right: 1px solid #ccc;
733 background-color:white;
740 background-color:white;
734 }
741 }
735 div.autocomplete ul li.selected { background-color: #ffb;}
742 div.autocomplete ul li.selected { background-color: #ffb;}
736 div.autocomplete ul li span.informal {
743 div.autocomplete ul li span.informal {
737 font-size: 80%;
744 font-size: 80%;
738 color: #aaa;
745 color: #aaa;
739 }
746 }
740
747
741 #parent_issue_candidates ul li {width: 500px;}
748 #parent_issue_candidates ul li {width: 500px;}
742 #related_issue_candidates ul li {width: 500px;}
749 #related_issue_candidates ul li {width: 500px;}
743
750
744 /***** Diff *****/
751 /***** Diff *****/
745 .diff_out { background: #fcc; }
752 .diff_out { background: #fcc; }
746 .diff_out span { background: #faa; }
753 .diff_out span { background: #faa; }
747 .diff_in { background: #cfc; }
754 .diff_in { background: #cfc; }
748 .diff_in span { background: #afa; }
755 .diff_in span { background: #afa; }
749
756
750 .text-diff {
757 .text-diff {
751 padding: 1em;
758 padding: 1em;
752 background-color:#f6f6f6;
759 background-color:#f6f6f6;
753 color:#505050;
760 color:#505050;
754 border: 1px solid #e4e4e4;
761 border: 1px solid #e4e4e4;
755 }
762 }
756
763
757 /***** Wiki *****/
764 /***** Wiki *****/
758 div.wiki table {
765 div.wiki table {
759 border-collapse: collapse;
766 border-collapse: collapse;
760 margin-bottom: 1em;
767 margin-bottom: 1em;
761 }
768 }
762
769
763 div.wiki table, div.wiki td, div.wiki th {
770 div.wiki table, div.wiki td, div.wiki th {
764 border: 1px solid #bbb;
771 border: 1px solid #bbb;
765 padding: 4px;
772 padding: 4px;
766 }
773 }
767
774
768 div.wiki .noborder, div.wiki .noborder td, div.wiki .noborder th {border:0;}
775 div.wiki .noborder, div.wiki .noborder td, div.wiki .noborder th {border:0;}
769
776
770 div.wiki .external {
777 div.wiki .external {
771 background-position: 0% 60%;
778 background-position: 0% 60%;
772 background-repeat: no-repeat;
779 background-repeat: no-repeat;
773 padding-left: 12px;
780 padding-left: 12px;
774 background-image: url(../images/external.png);
781 background-image: url(../images/external.png);
775 }
782 }
776
783
777 div.wiki a.new {
784 div.wiki a.new {
778 color: #b73535;
785 color: #b73535;
779 }
786 }
780
787
781 div.wiki ul, div.wiki ol {margin-bottom:1em;}
788 div.wiki ul, div.wiki ol {margin-bottom:1em;}
782
789
783 div.wiki pre {
790 div.wiki pre {
784 margin: 1em 1em 1em 1.6em;
791 margin: 1em 1em 1em 1.6em;
785 padding: 2px 2px 2px 0;
792 padding: 2px 2px 2px 0;
786 background-color: #fafafa;
793 background-color: #fafafa;
787 border: 1px solid #dadada;
794 border: 1px solid #dadada;
788 width:auto;
795 width:auto;
789 overflow-x: auto;
796 overflow-x: auto;
790 overflow-y: hidden;
797 overflow-y: hidden;
791 }
798 }
792
799
793 div.wiki ul.toc {
800 div.wiki ul.toc {
794 background-color: #ffffdd;
801 background-color: #ffffdd;
795 border: 1px solid #e4e4e4;
802 border: 1px solid #e4e4e4;
796 padding: 4px;
803 padding: 4px;
797 line-height: 1.2em;
804 line-height: 1.2em;
798 margin-bottom: 12px;
805 margin-bottom: 12px;
799 margin-right: 12px;
806 margin-right: 12px;
800 margin-left: 0;
807 margin-left: 0;
801 display: table
808 display: table
802 }
809 }
803 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
810 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
804
811
805 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
812 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
806 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
813 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
807 div.wiki ul.toc ul { margin: 0; padding: 0; }
814 div.wiki ul.toc ul { margin: 0; padding: 0; }
808 div.wiki ul.toc li { list-style-type:none; margin: 0;}
815 div.wiki ul.toc li { list-style-type:none; margin: 0;}
809 div.wiki ul.toc li li { margin-left: 1.5em; }
816 div.wiki ul.toc li li { margin-left: 1.5em; }
810 div.wiki ul.toc li li li { font-size: 0.8em; }
817 div.wiki ul.toc li li li { font-size: 0.8em; }
811
818
812 div.wiki ul.toc a {
819 div.wiki ul.toc a {
813 font-size: 0.9em;
820 font-size: 0.9em;
814 font-weight: normal;
821 font-weight: normal;
815 text-decoration: none;
822 text-decoration: none;
816 color: #606060;
823 color: #606060;
817 }
824 }
818 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
825 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
819
826
820 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
827 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
821 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
828 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
822 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
829 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
823
830
824 div.wiki img { vertical-align: middle; }
831 div.wiki img { vertical-align: middle; }
825
832
826 /***** My page layout *****/
833 /***** My page layout *****/
827 .block-receiver {
834 .block-receiver {
828 border:1px dashed #c0c0c0;
835 border:1px dashed #c0c0c0;
829 margin-bottom: 20px;
836 margin-bottom: 20px;
830 padding: 15px 0 15px 0;
837 padding: 15px 0 15px 0;
831 }
838 }
832
839
833 .mypage-box {
840 .mypage-box {
834 margin:0 0 20px 0;
841 margin:0 0 20px 0;
835 color:#505050;
842 color:#505050;
836 line-height:1.5em;
843 line-height:1.5em;
837 }
844 }
838
845
839 .handle {
846 .handle {
840 cursor: move;
847 cursor: move;
841 }
848 }
842
849
843 a.close-icon {
850 a.close-icon {
844 display:block;
851 display:block;
845 margin-top:3px;
852 margin-top:3px;
846 overflow:hidden;
853 overflow:hidden;
847 width:12px;
854 width:12px;
848 height:12px;
855 height:12px;
849 background-repeat: no-repeat;
856 background-repeat: no-repeat;
850 cursor:pointer;
857 cursor:pointer;
851 background-image:url('../images/close.png');
858 background-image:url('../images/close.png');
852 }
859 }
853
860
854 a.close-icon:hover {
861 a.close-icon:hover {
855 background-image:url('../images/close_hl.png');
862 background-image:url('../images/close_hl.png');
856 }
863 }
857
864
858 /***** Gantt chart *****/
865 /***** Gantt chart *****/
859 .gantt_hdr {
866 .gantt_hdr {
860 position:absolute;
867 position:absolute;
861 top:0;
868 top:0;
862 height:16px;
869 height:16px;
863 border-top: 1px solid #c0c0c0;
870 border-top: 1px solid #c0c0c0;
864 border-bottom: 1px solid #c0c0c0;
871 border-bottom: 1px solid #c0c0c0;
865 border-right: 1px solid #c0c0c0;
872 border-right: 1px solid #c0c0c0;
866 text-align: center;
873 text-align: center;
867 overflow: hidden;
874 overflow: hidden;
868 }
875 }
869
876
870 .gantt_subjects { font-size: 0.8em; }
877 .gantt_subjects { font-size: 0.8em; }
871 .gantt_subjects div { line-height:16px;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; }
878 .gantt_subjects div { line-height:16px;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; }
872
879
873 .task {
880 .task {
874 position: absolute;
881 position: absolute;
875 height:8px;
882 height:8px;
876 font-size:0.8em;
883 font-size:0.8em;
877 color:#888;
884 color:#888;
878 padding:0;
885 padding:0;
879 margin:0;
886 margin:0;
880 line-height:16px;
887 line-height:16px;
881 white-space:nowrap;
888 white-space:nowrap;
882 }
889 }
883
890
884 .task.label {width:100%;}
891 .task.label {width:100%;}
885 .task.label.project, .task.label.version { font-weight: bold; }
892 .task.label.project, .task.label.version { font-weight: bold; }
886
893
887 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
894 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
888 .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
895 .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
889 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
896 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
890
897
891 .task_todo.parent { background: #888; border: 1px solid #888; height: 3px;}
898 .task_todo.parent { background: #888; border: 1px solid #888; height: 3px;}
892 .task_late.parent, .task_done.parent { height: 3px;}
899 .task_late.parent, .task_done.parent { height: 3px;}
893 .task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;}
900 .task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;}
894 .task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;}
901 .task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;}
895
902
896 .version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
903 .version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
897 .version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
904 .version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
898 .version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
905 .version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
899 .version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
906 .version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
900
907
901 .project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
908 .project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
902 .project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
909 .project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
903 .project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
910 .project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
904 .project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
911 .project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
905
912
906 .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
913 .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
907 .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
914 .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
908
915
909 /***** Icons *****/
916 /***** Icons *****/
910 .icon {
917 .icon {
911 background-position: 0% 50%;
918 background-position: 0% 50%;
912 background-repeat: no-repeat;
919 background-repeat: no-repeat;
913 padding-left: 20px;
920 padding-left: 20px;
914 padding-top: 2px;
921 padding-top: 2px;
915 padding-bottom: 3px;
922 padding-bottom: 3px;
916 }
923 }
917
924
918 .icon-add { background-image: url(../images/add.png); }
925 .icon-add { background-image: url(../images/add.png); }
919 .icon-edit { background-image: url(../images/edit.png); }
926 .icon-edit { background-image: url(../images/edit.png); }
920 .icon-copy { background-image: url(../images/copy.png); }
927 .icon-copy { background-image: url(../images/copy.png); }
921 .icon-duplicate { background-image: url(../images/duplicate.png); }
928 .icon-duplicate { background-image: url(../images/duplicate.png); }
922 .icon-del { background-image: url(../images/delete.png); }
929 .icon-del { background-image: url(../images/delete.png); }
923 .icon-move { background-image: url(../images/move.png); }
930 .icon-move { background-image: url(../images/move.png); }
924 .icon-save { background-image: url(../images/save.png); }
931 .icon-save { background-image: url(../images/save.png); }
925 .icon-cancel { background-image: url(../images/cancel.png); }
932 .icon-cancel { background-image: url(../images/cancel.png); }
926 .icon-multiple { background-image: url(../images/table_multiple.png); }
933 .icon-multiple { background-image: url(../images/table_multiple.png); }
927 .icon-folder { background-image: url(../images/folder.png); }
934 .icon-folder { background-image: url(../images/folder.png); }
928 .open .icon-folder { background-image: url(../images/folder_open.png); }
935 .open .icon-folder { background-image: url(../images/folder_open.png); }
929 .icon-package { background-image: url(../images/package.png); }
936 .icon-package { background-image: url(../images/package.png); }
930 .icon-user { background-image: url(../images/user.png); }
937 .icon-user { background-image: url(../images/user.png); }
931 .icon-projects { background-image: url(../images/projects.png); }
938 .icon-projects { background-image: url(../images/projects.png); }
932 .icon-help { background-image: url(../images/help.png); }
939 .icon-help { background-image: url(../images/help.png); }
933 .icon-attachment { background-image: url(../images/attachment.png); }
940 .icon-attachment { background-image: url(../images/attachment.png); }
934 .icon-history { background-image: url(../images/history.png); }
941 .icon-history { background-image: url(../images/history.png); }
935 .icon-time { background-image: url(../images/time.png); }
942 .icon-time { background-image: url(../images/time.png); }
936 .icon-time-add { background-image: url(../images/time_add.png); }
943 .icon-time-add { background-image: url(../images/time_add.png); }
937 .icon-stats { background-image: url(../images/stats.png); }
944 .icon-stats { background-image: url(../images/stats.png); }
938 .icon-warning { background-image: url(../images/warning.png); }
945 .icon-warning { background-image: url(../images/warning.png); }
939 .icon-fav { background-image: url(../images/fav.png); }
946 .icon-fav { background-image: url(../images/fav.png); }
940 .icon-fav-off { background-image: url(../images/fav_off.png); }
947 .icon-fav-off { background-image: url(../images/fav_off.png); }
941 .icon-reload { background-image: url(../images/reload.png); }
948 .icon-reload { background-image: url(../images/reload.png); }
942 .icon-lock { background-image: url(../images/locked.png); }
949 .icon-lock { background-image: url(../images/locked.png); }
943 .icon-unlock { background-image: url(../images/unlock.png); }
950 .icon-unlock { background-image: url(../images/unlock.png); }
944 .icon-checked { background-image: url(../images/true.png); }
951 .icon-checked { background-image: url(../images/true.png); }
945 .icon-details { background-image: url(../images/zoom_in.png); }
952 .icon-details { background-image: url(../images/zoom_in.png); }
946 .icon-report { background-image: url(../images/report.png); }
953 .icon-report { background-image: url(../images/report.png); }
947 .icon-comment { background-image: url(../images/comment.png); }
954 .icon-comment { background-image: url(../images/comment.png); }
948 .icon-summary { background-image: url(../images/lightning.png); }
955 .icon-summary { background-image: url(../images/lightning.png); }
949 .icon-server-authentication { background-image: url(../images/server_key.png); }
956 .icon-server-authentication { background-image: url(../images/server_key.png); }
950 .icon-issue { background-image: url(../images/ticket.png); }
957 .icon-issue { background-image: url(../images/ticket.png); }
951 .icon-zoom-in { background-image: url(../images/zoom_in.png); }
958 .icon-zoom-in { background-image: url(../images/zoom_in.png); }
952 .icon-zoom-out { background-image: url(../images/zoom_out.png); }
959 .icon-zoom-out { background-image: url(../images/zoom_out.png); }
953 .icon-passwd { background-image: url(../images/textfield_key.png); }
960 .icon-passwd { background-image: url(../images/textfield_key.png); }
954
961
955 .icon-file { background-image: url(../images/files/default.png); }
962 .icon-file { background-image: url(../images/files/default.png); }
956 .icon-file.text-plain { background-image: url(../images/files/text.png); }
963 .icon-file.text-plain { background-image: url(../images/files/text.png); }
957 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
964 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
958 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
965 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
959 .icon-file.text-x-java { background-image: url(../images/files/java.png); }
966 .icon-file.text-x-java { background-image: url(../images/files/java.png); }
960 .icon-file.text-x-javascript { background-image: url(../images/files/js.png); }
967 .icon-file.text-x-javascript { background-image: url(../images/files/js.png); }
961 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
968 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
962 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
969 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
963 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
970 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
964 .icon-file.text-css { background-image: url(../images/files/css.png); }
971 .icon-file.text-css { background-image: url(../images/files/css.png); }
965 .icon-file.text-html { background-image: url(../images/files/html.png); }
972 .icon-file.text-html { background-image: url(../images/files/html.png); }
966 .icon-file.image-gif { background-image: url(../images/files/image.png); }
973 .icon-file.image-gif { background-image: url(../images/files/image.png); }
967 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
974 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
968 .icon-file.image-png { background-image: url(../images/files/image.png); }
975 .icon-file.image-png { background-image: url(../images/files/image.png); }
969 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
976 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
970 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
977 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
971 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
978 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
972 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
979 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
973
980
974 img.gravatar {
981 img.gravatar {
975 padding: 2px;
982 padding: 2px;
976 border: solid 1px #d5d5d5;
983 border: solid 1px #d5d5d5;
977 background: #fff;
984 background: #fff;
978 vertical-align: middle;
985 vertical-align: middle;
979 }
986 }
980
987
981 div.issue img.gravatar {
988 div.issue img.gravatar {
982 float: left;
989 float: left;
983 margin: 0 6px 0 0;
990 margin: 0 6px 0 0;
984 padding: 5px;
991 padding: 5px;
985 }
992 }
986
993
987 div.issue table img.gravatar {
994 div.issue table img.gravatar {
988 height: 14px;
995 height: 14px;
989 width: 14px;
996 width: 14px;
990 padding: 2px;
997 padding: 2px;
991 float: left;
998 float: left;
992 margin: 0 0.5em 0 0;
999 margin: 0 0.5em 0 0;
993 }
1000 }
994
1001
995 h2 img.gravatar {
1002 h2 img.gravatar {
996 margin: -2px 4px -4px 0;
1003 margin: -2px 4px -4px 0;
997 }
1004 }
998
1005
999 h3 img.gravatar {
1006 h3 img.gravatar {
1000 margin: -4px 4px -4px 0;
1007 margin: -4px 4px -4px 0;
1001 }
1008 }
1002
1009
1003 h4 img.gravatar {
1010 h4 img.gravatar {
1004 margin: -6px 4px -4px 0;
1011 margin: -6px 4px -4px 0;
1005 }
1012 }
1006
1013
1007 td.username img.gravatar {
1014 td.username img.gravatar {
1008 margin: 0 0.5em 0 0;
1015 margin: 0 0.5em 0 0;
1009 vertical-align: top;
1016 vertical-align: top;
1010 }
1017 }
1011
1018
1012 #activity dt img.gravatar {
1019 #activity dt img.gravatar {
1013 float: left;
1020 float: left;
1014 margin: 0 1em 1em 0;
1021 margin: 0 1em 1em 0;
1015 }
1022 }
1016
1023
1017 /* Used on 12px Gravatar img tags without the icon background */
1024 /* Used on 12px Gravatar img tags without the icon background */
1018 .icon-gravatar {
1025 .icon-gravatar {
1019 float: left;
1026 float: left;
1020 margin-right: 4px;
1027 margin-right: 4px;
1021 }
1028 }
1022
1029
1023 #activity dt,
1030 #activity dt,
1024 .journal {
1031 .journal {
1025 clear: left;
1032 clear: left;
1026 }
1033 }
1027
1034
1028 .journal-link {
1035 .journal-link {
1029 float: right;
1036 float: right;
1030 }
1037 }
1031
1038
1032 h2 img { vertical-align:middle; }
1039 h2 img { vertical-align:middle; }
1033
1040
1034 .hascontextmenu { cursor: context-menu; }
1041 .hascontextmenu { cursor: context-menu; }
1035
1042
1036 /***** Media print specific styles *****/
1043 /***** Media print specific styles *****/
1037 @media print {
1044 @media print {
1038 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
1045 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
1039 #main { background: #fff; }
1046 #main { background: #fff; }
1040 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
1047 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
1041 #wiki_add_attachment { display:none; }
1048 #wiki_add_attachment { display:none; }
1042 .hide-when-print { display: none; }
1049 .hide-when-print { display: none; }
1043 .autoscroll {overflow-x: visible;}
1050 .autoscroll {overflow-x: visible;}
1044 table.list {margin-top:0.5em;}
1051 table.list {margin-top:0.5em;}
1045 table.list th, table.list td {border: 1px solid #aaa;}
1052 table.list th, table.list td {border: 1px solid #aaa;}
1046 }
1053 }
1047
1054
1048 /* Accessibility specific styles */
1055 /* Accessibility specific styles */
1049 .hidden-for-sighted {
1056 .hidden-for-sighted {
1050 position:absolute;
1057 position:absolute;
1051 left:-10000px;
1058 left:-10000px;
1052 top:auto;
1059 top:auto;
1053 width:1px;
1060 width:1px;
1054 height:1px;
1061 height:1px;
1055 overflow:hidden;
1062 overflow:hidden;
1056 }
1063 }
General Comments 0
You need to be logged in to leave comments. Login now