##// END OF EJS Templates
Slight UI changes to the subtasks tree....
Jean-Philippe Lang -
r3463:508df4a33acb
parent child
Show More
@@ -1,221 +1,221
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006 Jean-Philippe Lang
2 # Copyright (C) 2006 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 module IssuesHelper
18 module IssuesHelper
19 include ApplicationHelper
19 include ApplicationHelper
20
20
21 def render_issue_tooltip(issue)
21 def render_issue_tooltip(issue)
22 @cached_label_start_date ||= l(:field_start_date)
22 @cached_label_start_date ||= l(:field_start_date)
23 @cached_label_due_date ||= l(:field_due_date)
23 @cached_label_due_date ||= l(:field_due_date)
24 @cached_label_assigned_to ||= l(:field_assigned_to)
24 @cached_label_assigned_to ||= l(:field_assigned_to)
25 @cached_label_priority ||= l(:field_priority)
25 @cached_label_priority ||= l(:field_priority)
26
26
27 link_to_issue(issue) + "<br /><br />" +
27 link_to_issue(issue) + "<br /><br />" +
28 "<strong>#{@cached_label_start_date}</strong>: #{format_date(issue.start_date)}<br />" +
28 "<strong>#{@cached_label_start_date}</strong>: #{format_date(issue.start_date)}<br />" +
29 "<strong>#{@cached_label_due_date}</strong>: #{format_date(issue.due_date)}<br />" +
29 "<strong>#{@cached_label_due_date}</strong>: #{format_date(issue.due_date)}<br />" +
30 "<strong>#{@cached_label_assigned_to}</strong>: #{issue.assigned_to}<br />" +
30 "<strong>#{@cached_label_assigned_to}</strong>: #{issue.assigned_to}<br />" +
31 "<strong>#{@cached_label_priority}</strong>: #{issue.priority.name}"
31 "<strong>#{@cached_label_priority}</strong>: #{issue.priority.name}"
32 end
32 end
33
33
34 def render_issue_subject_with_tree(issue)
34 def render_issue_subject_with_tree(issue)
35 s = ''
35 s = ''
36 issue.ancestors.each do |ancestor|
36 issue.ancestors.each do |ancestor|
37 s << '<div>' + content_tag('p', link_to_issue(ancestor))
37 s << '<div>' + content_tag('p', link_to_issue(ancestor))
38 end
38 end
39 s << '<div>' + content_tag('h3', h(issue.subject))
39 s << '<div>' + content_tag('h3', h(issue.subject))
40 s << '</div>' * (issue.ancestors.size + 1)
40 s << '</div>' * (issue.ancestors.size + 1)
41 s
41 s
42 end
42 end
43
43
44 def render_descendants_tree(issue)
44 def render_descendants_tree(issue)
45 s = '<form><table class="list issues">'
45 s = '<form><table class="list issues">'
46 ancestors = []
46 ancestors = []
47 issue.descendants.sort_by(&:lft).each do |child|
47 issue.descendants.sort_by(&:lft).each do |child|
48 level = child.level - issue.level - 1
48 level = child.level - issue.level - 1
49 s << content_tag('tr',
49 s << content_tag('tr',
50 content_tag('td', check_box_tag("ids[]", child.id, false, :id => nil)) +
50 content_tag('td', check_box_tag("ids[]", child.id, false, :id => nil), :class => 'checkbox') +
51 content_tag('td', link_to_issue(child), :class => 'subject',
51 content_tag('td', link_to_issue(child, :truncate => 60), :class => 'subject',
52 :style => "padding-left: #{level * 20}px") +
52 :style => "padding-left: #{level * 20}px") +
53 content_tag('td', h(child.status)) +
53 content_tag('td', h(child.status)) +
54 content_tag('td', link_to_user(child.assigned_to)) +
54 content_tag('td', link_to_user(child.assigned_to)) +
55 content_tag('td', progress_bar(child.done_ratio, :width => '80px')),
55 content_tag('td', progress_bar(child.done_ratio, :width => '80px')),
56 :class => "issue-#{child.id} hascontextmenu")
56 :class => "issue-#{child.id} hascontextmenu")
57 end
57 end
58 s << '</form></table>'
58 s << '</form></table>'
59 s
59 s
60 end
60 end
61
61
62 def render_custom_fields_rows(issue)
62 def render_custom_fields_rows(issue)
63 return if issue.custom_field_values.empty?
63 return if issue.custom_field_values.empty?
64 ordered_values = []
64 ordered_values = []
65 half = (issue.custom_field_values.size / 2.0).ceil
65 half = (issue.custom_field_values.size / 2.0).ceil
66 half.times do |i|
66 half.times do |i|
67 ordered_values << issue.custom_field_values[i]
67 ordered_values << issue.custom_field_values[i]
68 ordered_values << issue.custom_field_values[i + half]
68 ordered_values << issue.custom_field_values[i + half]
69 end
69 end
70 s = "<tr>\n"
70 s = "<tr>\n"
71 n = 0
71 n = 0
72 ordered_values.compact.each do |value|
72 ordered_values.compact.each do |value|
73 s << "</tr>\n<tr>\n" if n > 0 && (n % 2) == 0
73 s << "</tr>\n<tr>\n" if n > 0 && (n % 2) == 0
74 s << "\t<th>#{ h(value.custom_field.name) }:</th><td>#{ simple_format_without_paragraph(h(show_value(value))) }</td>\n"
74 s << "\t<th>#{ h(value.custom_field.name) }:</th><td>#{ simple_format_without_paragraph(h(show_value(value))) }</td>\n"
75 n += 1
75 n += 1
76 end
76 end
77 s << "</tr>\n"
77 s << "</tr>\n"
78 s
78 s
79 end
79 end
80
80
81 def sidebar_queries
81 def sidebar_queries
82 unless @sidebar_queries
82 unless @sidebar_queries
83 # User can see public queries and his own queries
83 # User can see public queries and his own queries
84 visible = ARCondition.new(["is_public = ? OR user_id = ?", true, (User.current.logged? ? User.current.id : 0)])
84 visible = ARCondition.new(["is_public = ? OR user_id = ?", true, (User.current.logged? ? User.current.id : 0)])
85 # Project specific queries and global queries
85 # Project specific queries and global queries
86 visible << (@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id])
86 visible << (@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id])
87 @sidebar_queries = Query.find(:all,
87 @sidebar_queries = Query.find(:all,
88 :select => 'id, name',
88 :select => 'id, name',
89 :order => "name ASC",
89 :order => "name ASC",
90 :conditions => visible.conditions)
90 :conditions => visible.conditions)
91 end
91 end
92 @sidebar_queries
92 @sidebar_queries
93 end
93 end
94
94
95 def show_detail(detail, no_html=false)
95 def show_detail(detail, no_html=false)
96 case detail.property
96 case detail.property
97 when 'attr'
97 when 'attr'
98 field = detail.prop_key.to_s.gsub(/\_id$/, "")
98 field = detail.prop_key.to_s.gsub(/\_id$/, "")
99 label = l(("field_" + field).to_sym)
99 label = l(("field_" + field).to_sym)
100 case
100 case
101 when ['due_date', 'start_date'].include?(detail.prop_key)
101 when ['due_date', 'start_date'].include?(detail.prop_key)
102 value = format_date(detail.value.to_date) if detail.value
102 value = format_date(detail.value.to_date) if detail.value
103 old_value = format_date(detail.old_value.to_date) if detail.old_value
103 old_value = format_date(detail.old_value.to_date) if detail.old_value
104
104
105 when ['project_id', 'status_id', 'tracker_id', 'assigned_to_id', 'priority_id', 'category_id', 'fixed_version_id'].include?(detail.prop_key)
105 when ['project_id', 'status_id', 'tracker_id', 'assigned_to_id', 'priority_id', 'category_id', 'fixed_version_id'].include?(detail.prop_key)
106 value = find_name_by_reflection(field, detail.value)
106 value = find_name_by_reflection(field, detail.value)
107 old_value = find_name_by_reflection(field, detail.old_value)
107 old_value = find_name_by_reflection(field, detail.old_value)
108
108
109 when detail.prop_key == 'estimated_hours'
109 when detail.prop_key == 'estimated_hours'
110 value = "%0.02f" % detail.value.to_f unless detail.value.blank?
110 value = "%0.02f" % detail.value.to_f unless detail.value.blank?
111 old_value = "%0.02f" % detail.old_value.to_f unless detail.old_value.blank?
111 old_value = "%0.02f" % detail.old_value.to_f unless detail.old_value.blank?
112 end
112 end
113 when 'cf'
113 when 'cf'
114 custom_field = CustomField.find_by_id(detail.prop_key)
114 custom_field = CustomField.find_by_id(detail.prop_key)
115 if custom_field
115 if custom_field
116 label = custom_field.name
116 label = custom_field.name
117 value = format_value(detail.value, custom_field.field_format) if detail.value
117 value = format_value(detail.value, custom_field.field_format) if detail.value
118 old_value = format_value(detail.old_value, custom_field.field_format) if detail.old_value
118 old_value = format_value(detail.old_value, custom_field.field_format) if detail.old_value
119 end
119 end
120 when 'attachment'
120 when 'attachment'
121 label = l(:label_attachment)
121 label = l(:label_attachment)
122 end
122 end
123 call_hook(:helper_issues_show_detail_after_setting, {:detail => detail, :label => label, :value => value, :old_value => old_value })
123 call_hook(:helper_issues_show_detail_after_setting, {:detail => detail, :label => label, :value => value, :old_value => old_value })
124
124
125 label ||= detail.prop_key
125 label ||= detail.prop_key
126 value ||= detail.value
126 value ||= detail.value
127 old_value ||= detail.old_value
127 old_value ||= detail.old_value
128
128
129 unless no_html
129 unless no_html
130 label = content_tag('strong', label)
130 label = content_tag('strong', label)
131 old_value = content_tag("i", h(old_value)) if detail.old_value
131 old_value = content_tag("i", h(old_value)) if detail.old_value
132 old_value = content_tag("strike", old_value) if detail.old_value and (!detail.value or detail.value.empty?)
132 old_value = content_tag("strike", old_value) if detail.old_value and (!detail.value or detail.value.empty?)
133 if detail.property == 'attachment' && !value.blank? && a = Attachment.find_by_id(detail.prop_key)
133 if detail.property == 'attachment' && !value.blank? && a = Attachment.find_by_id(detail.prop_key)
134 # Link to the attachment if it has not been removed
134 # Link to the attachment if it has not been removed
135 value = link_to_attachment(a)
135 value = link_to_attachment(a)
136 else
136 else
137 value = content_tag("i", h(value)) if value
137 value = content_tag("i", h(value)) if value
138 end
138 end
139 end
139 end
140
140
141 if !detail.value.blank?
141 if !detail.value.blank?
142 case detail.property
142 case detail.property
143 when 'attr', 'cf'
143 when 'attr', 'cf'
144 if !detail.old_value.blank?
144 if !detail.old_value.blank?
145 l(:text_journal_changed, :label => label, :old => old_value, :new => value)
145 l(:text_journal_changed, :label => label, :old => old_value, :new => value)
146 else
146 else
147 l(:text_journal_set_to, :label => label, :value => value)
147 l(:text_journal_set_to, :label => label, :value => value)
148 end
148 end
149 when 'attachment'
149 when 'attachment'
150 l(:text_journal_added, :label => label, :value => value)
150 l(:text_journal_added, :label => label, :value => value)
151 end
151 end
152 else
152 else
153 l(:text_journal_deleted, :label => label, :old => old_value)
153 l(:text_journal_deleted, :label => label, :old => old_value)
154 end
154 end
155 end
155 end
156
156
157 # Find the name of an associated record stored in the field attribute
157 # Find the name of an associated record stored in the field attribute
158 def find_name_by_reflection(field, id)
158 def find_name_by_reflection(field, id)
159 association = Issue.reflect_on_association(field.to_sym)
159 association = Issue.reflect_on_association(field.to_sym)
160 if association
160 if association
161 record = association.class_name.constantize.find_by_id(id)
161 record = association.class_name.constantize.find_by_id(id)
162 return record.name if record
162 return record.name if record
163 end
163 end
164 end
164 end
165
165
166 def issues_to_csv(issues, project = nil)
166 def issues_to_csv(issues, project = nil)
167 ic = Iconv.new(l(:general_csv_encoding), 'UTF-8')
167 ic = Iconv.new(l(:general_csv_encoding), 'UTF-8')
168 decimal_separator = l(:general_csv_decimal_separator)
168 decimal_separator = l(:general_csv_decimal_separator)
169 export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
169 export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
170 # csv header fields
170 # csv header fields
171 headers = [ "#",
171 headers = [ "#",
172 l(:field_status),
172 l(:field_status),
173 l(:field_project),
173 l(:field_project),
174 l(:field_tracker),
174 l(:field_tracker),
175 l(:field_priority),
175 l(:field_priority),
176 l(:field_subject),
176 l(:field_subject),
177 l(:field_assigned_to),
177 l(:field_assigned_to),
178 l(:field_category),
178 l(:field_category),
179 l(:field_fixed_version),
179 l(:field_fixed_version),
180 l(:field_author),
180 l(:field_author),
181 l(:field_start_date),
181 l(:field_start_date),
182 l(:field_due_date),
182 l(:field_due_date),
183 l(:field_done_ratio),
183 l(:field_done_ratio),
184 l(:field_estimated_hours),
184 l(:field_estimated_hours),
185 l(:field_created_on),
185 l(:field_created_on),
186 l(:field_updated_on)
186 l(:field_updated_on)
187 ]
187 ]
188 # Export project custom fields if project is given
188 # Export project custom fields if project is given
189 # otherwise export custom fields marked as "For all projects"
189 # otherwise export custom fields marked as "For all projects"
190 custom_fields = project.nil? ? IssueCustomField.for_all : project.all_issue_custom_fields
190 custom_fields = project.nil? ? IssueCustomField.for_all : project.all_issue_custom_fields
191 custom_fields.each {|f| headers << f.name}
191 custom_fields.each {|f| headers << f.name}
192 # Description in the last column
192 # Description in the last column
193 headers << l(:field_description)
193 headers << l(:field_description)
194 csv << headers.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
194 csv << headers.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
195 # csv lines
195 # csv lines
196 issues.each do |issue|
196 issues.each do |issue|
197 fields = [issue.id,
197 fields = [issue.id,
198 issue.status.name,
198 issue.status.name,
199 issue.project.name,
199 issue.project.name,
200 issue.tracker.name,
200 issue.tracker.name,
201 issue.priority.name,
201 issue.priority.name,
202 issue.subject,
202 issue.subject,
203 issue.assigned_to,
203 issue.assigned_to,
204 issue.category,
204 issue.category,
205 issue.fixed_version,
205 issue.fixed_version,
206 issue.author.name,
206 issue.author.name,
207 format_date(issue.start_date),
207 format_date(issue.start_date),
208 format_date(issue.due_date),
208 format_date(issue.due_date),
209 issue.done_ratio,
209 issue.done_ratio,
210 issue.estimated_hours.to_s.gsub('.', decimal_separator),
210 issue.estimated_hours.to_s.gsub('.', decimal_separator),
211 format_time(issue.created_on),
211 format_time(issue.created_on),
212 format_time(issue.updated_on)
212 format_time(issue.updated_on)
213 ]
213 ]
214 custom_fields.each {|f| fields << show_value(issue.custom_value_for(f)) }
214 custom_fields.each {|f| fields << show_value(issue.custom_value_for(f)) }
215 fields << issue.description
215 fields << issue.description
216 csv << fields.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
216 csv << fields.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
217 end
217 end
218 end
218 end
219 export
219 export
220 end
220 end
221 end
221 end
@@ -1,33 +1,33
1 <div class="contextual">
1 <div class="contextual">
2 <% if authorize_for('issue_relations', 'new') %>
2 <% if authorize_for('issue_relations', 'new') %>
3 <%= toggle_link l(:button_add), 'new-relation-form'%>
3 <%= toggle_link l(:button_add), 'new-relation-form'%>
4 <% end %>
4 <% end %>
5 </div>
5 </div>
6
6
7 <p><strong><%=l(:label_related_issues)%></strong></p>
7 <p><strong><%=l(:label_related_issues)%></strong></p>
8
8
9 <% if @issue.relations.any? %>
9 <% if @issue.relations.any? %>
10 <table style="width:100%">
10 <table style="width:100%">
11 <% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %>
11 <% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %>
12 <tr>
12 <tr>
13 <td><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %>
13 <td><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %>
14 <%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %>
14 <%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %>
15 <%= link_to_issue relation.other_issue(@issue) %>
15 <%= link_to_issue(relation.other_issue(@issue), :truncate => 60) %>
16 </td>
16 </td>
17 <td><%= relation.other_issue(@issue).status.name %></td>
17 <td><%= relation.other_issue(@issue).status.name %></td>
18 <td><%= format_date(relation.other_issue(@issue).start_date) %></td>
18 <td><%= format_date(relation.other_issue(@issue).start_date) %></td>
19 <td><%= format_date(relation.other_issue(@issue).due_date) %></td>
19 <td><%= format_date(relation.other_issue(@issue).due_date) %></td>
20 <td><%= link_to_remote(image_tag('delete.png'), { :url => {:controller => 'issue_relations', :action => 'destroy', :issue_id => @issue, :id => relation},
20 <td><%= link_to_remote(image_tag('delete.png'), { :url => {:controller => 'issue_relations', :action => 'destroy', :issue_id => @issue, :id => relation},
21 :method => :post
21 :method => :post
22 }, :title => l(:label_relation_delete)) if authorize_for('issue_relations', 'destroy') %></td>
22 }, :title => l(:label_relation_delete)) if authorize_for('issue_relations', 'destroy') %></td>
23 </tr>
23 </tr>
24 <% end %>
24 <% end %>
25 </table>
25 </table>
26 <% end %>
26 <% end %>
27
27
28 <% remote_form_for(:relation, @relation,
28 <% remote_form_for(:relation, @relation,
29 :url => {:controller => 'issue_relations', :action => 'new', :issue_id => @issue},
29 :url => {:controller => 'issue_relations', :action => 'new', :issue_id => @issue},
30 :method => :post,
30 :method => :post,
31 :html => {:id => 'new-relation-form', :style => (@relation ? '' : 'display: none;')}) do |f| %>
31 :html => {:id => 'new-relation-form', :style => (@relation ? '' : 'display: none;')}) do |f| %>
32 <%= render :partial => 'issue_relations/form', :locals => {:f => f}%>
32 <%= render :partial => 'issue_relations/form', :locals => {:f => f}%>
33 <% end %>
33 <% end %>
@@ -1,134 +1,134
1 <%= render :partial => 'action_menu' %>
1 <%= render :partial => 'action_menu' %>
2
2
3 <h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
3 <h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
4
4
5 <div class="<%= @issue.css_classes %> details">
5 <div class="<%= @issue.css_classes %> details">
6 <%= avatar(@issue.author, :size => "50") %>
6 <%= avatar(@issue.author, :size => "50") %>
7
7
8 <div class="subject">
8 <div class="subject">
9 <%= render_issue_subject_with_tree(@issue) %>
9 <%= render_issue_subject_with_tree(@issue) %>
10 </div>
10 </div>
11 <p class="author">
11 <p class="author">
12 <%= authoring @issue.created_on, @issue.author %>.
12 <%= authoring @issue.created_on, @issue.author %>.
13 <% if @issue.created_on != @issue.updated_on %>
13 <% if @issue.created_on != @issue.updated_on %>
14 <%= l(:label_updated_time, time_tag(@issue.updated_on)) %>.
14 <%= l(:label_updated_time, time_tag(@issue.updated_on)) %>.
15 <% end %>
15 <% end %>
16 </p>
16 </p>
17
17
18 <table class="attributes">
18 <table class="attributes">
19 <tr>
19 <tr>
20 <th class="status"><%=l(:field_status)%>:</th><td class="status"><%= @issue.status.name %></td>
20 <th class="status"><%=l(:field_status)%>:</th><td class="status"><%= @issue.status.name %></td>
21 <th class="start-date"><%=l(:field_start_date)%>:</th><td class="start-date"><%= format_date(@issue.start_date) %></td>
21 <th class="start-date"><%=l(:field_start_date)%>:</th><td class="start-date"><%= format_date(@issue.start_date) %></td>
22 </tr>
22 </tr>
23 <tr>
23 <tr>
24 <th class="priority"><%=l(:field_priority)%>:</th><td class="priority"><%= @issue.priority.name %></td>
24 <th class="priority"><%=l(:field_priority)%>:</th><td class="priority"><%= @issue.priority.name %></td>
25 <th class="due-date"><%=l(:field_due_date)%>:</th><td class="due-date"><%= format_date(@issue.due_date) %></td>
25 <th class="due-date"><%=l(:field_due_date)%>:</th><td class="due-date"><%= format_date(@issue.due_date) %></td>
26 </tr>
26 </tr>
27 <tr>
27 <tr>
28 <th class="assigned-to"><%=l(:field_assigned_to)%>:</th><td class="assigned-to"><%= avatar(@issue.assigned_to, :size => "14") %><%= @issue.assigned_to ? link_to_user(@issue.assigned_to) : "-" %></td>
28 <th class="assigned-to"><%=l(:field_assigned_to)%>:</th><td class="assigned-to"><%= avatar(@issue.assigned_to, :size => "14") %><%= @issue.assigned_to ? link_to_user(@issue.assigned_to) : "-" %></td>
29 <th class="progress"><%=l(:field_done_ratio)%>:</th><td class="progress"><%= progress_bar @issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%" %></td>
29 <th class="progress"><%=l(:field_done_ratio)%>:</th><td class="progress"><%= progress_bar @issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%" %></td>
30 </tr>
30 </tr>
31 <tr>
31 <tr>
32 <th class="category"><%=l(:field_category)%>:</th><td class="category"><%=h @issue.category ? @issue.category.name : "-" %></td>
32 <th class="category"><%=l(:field_category)%>:</th><td class="category"><%=h @issue.category ? @issue.category.name : "-" %></td>
33 <% if User.current.allowed_to?(:view_time_entries, @project) %>
33 <% if User.current.allowed_to?(:view_time_entries, @project) %>
34 <th class="spent-time"><%=l(:label_spent_time)%>:</th>
34 <th class="spent-time"><%=l(:label_spent_time)%>:</th>
35 <td class="spent-time"><%= @issue.spent_hours > 0 ? (link_to l_hours(@issue.spent_hours), {:controller => 'timelog', :action => 'details', :project_id => @project, :issue_id => @issue}) : "-" %></td>
35 <td class="spent-time"><%= @issue.spent_hours > 0 ? (link_to l_hours(@issue.spent_hours), {:controller => 'timelog', :action => 'details', :project_id => @project, :issue_id => @issue}) : "-" %></td>
36 <% end %>
36 <% end %>
37 </tr>
37 </tr>
38 <tr>
38 <tr>
39 <th class="fixed-version"><%=l(:field_fixed_version)%>:</th><td class="fixed-version"><%= @issue.fixed_version ? link_to_version(@issue.fixed_version) : "-" %></td>
39 <th class="fixed-version"><%=l(:field_fixed_version)%>:</th><td class="fixed-version"><%= @issue.fixed_version ? link_to_version(@issue.fixed_version) : "-" %></td>
40 <% if @issue.estimated_hours %>
40 <% if @issue.estimated_hours %>
41 <th class="estimated-hours"><%=l(:field_estimated_hours)%>:</th><td class="estimated-hours"><%= l_hours(@issue.estimated_hours) %></td>
41 <th class="estimated-hours"><%=l(:field_estimated_hours)%>:</th><td class="estimated-hours"><%= l_hours(@issue.estimated_hours) %></td>
42 <% end %>
42 <% end %>
43 </tr>
43 </tr>
44 <%= render_custom_fields_rows(@issue) %>
44 <%= render_custom_fields_rows(@issue) %>
45 <%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
45 <%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
46 </table>
46 </table>
47 <hr />
47 <hr />
48
48
49 <div class="contextual">
49 <div class="contextual">
50 <%= link_to_remote_if_authorized(l(:button_quote), { :url => {:action => 'reply', :id => @issue} }, :class => 'icon icon-comment') unless @issue.description.blank? %>
50 <%= link_to_remote_if_authorized(l(:button_quote), { :url => {:action => 'reply', :id => @issue} }, :class => 'icon icon-comment') unless @issue.description.blank? %>
51 </div>
51 </div>
52
52
53 <p><strong><%=l(:field_description)%></strong></p>
53 <p><strong><%=l(:field_description)%></strong></p>
54 <div class="wiki">
54 <div class="wiki">
55 <%= textilizable @issue, :description, :attachments => @issue.attachments %>
55 <%= textilizable @issue, :description, :attachments => @issue.attachments %>
56 </div>
56 </div>
57
57
58 <%= link_to_attachments @issue %>
58 <%= link_to_attachments @issue %>
59
59
60 <%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
60 <%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
61
61
62 <% if !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
62 <% if !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
63 <hr />
63 <hr />
64 <div id="issue_tree">
64 <div id="issue_tree">
65 <div class="contextual">
65 <div class="contextual">
66 <%= link_to(l(:button_add), {:controller => 'issues', :action => 'new', :project_id => @project, :issue => {:parent_issue_id => @issue}}) if User.current.allowed_to?(:manage_subtasks, @project) %>
66 <%= link_to(l(:button_add), {:controller => 'issues', :action => 'new', :project_id => @project, :issue => {:parent_issue_id => @issue}}) if User.current.allowed_to?(:manage_subtasks, @project) %>
67 </div>
67 </div>
68 <p><strong><%=l(:label_subtask_pural)%></strong></p>
68 <p><strong><%=l(:label_subtask_plural)%></strong></p>
69 <%= render_descendants_tree(@issue) unless @issue.leaf? %>
69 <%= render_descendants_tree(@issue) unless @issue.leaf? %>
70 </div>
70 </div>
71 <% end %>
71 <% end %>
72
72
73 <% if authorize_for('issue_relations', 'new') || @issue.relations.any? %>
73 <% if authorize_for('issue_relations', 'new') || @issue.relations.any? %>
74 <hr />
74 <hr />
75 <div id="relations">
75 <div id="relations">
76 <%= render :partial => 'relations' %>
76 <%= render :partial => 'relations' %>
77 </div>
77 </div>
78 <% end %>
78 <% end %>
79
79
80 <% if User.current.allowed_to?(:add_issue_watchers, @project) ||
80 <% if User.current.allowed_to?(:add_issue_watchers, @project) ||
81 (@issue.watchers.any? && User.current.allowed_to?(:view_issue_watchers, @project)) %>
81 (@issue.watchers.any? && User.current.allowed_to?(:view_issue_watchers, @project)) %>
82 <hr />
82 <hr />
83 <div id="watchers">
83 <div id="watchers">
84 <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %>
84 <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %>
85 </div>
85 </div>
86 <% end %>
86 <% end %>
87
87
88 </div>
88 </div>
89
89
90 <% if @changesets.any? %>
90 <% if @changesets.any? %>
91 <div id="issue-changesets">
91 <div id="issue-changesets">
92 <h3><%=l(:label_associated_revisions)%></h3>
92 <h3><%=l(:label_associated_revisions)%></h3>
93 <%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
93 <%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
94 </div>
94 </div>
95 <% end %>
95 <% end %>
96
96
97 <% if @journals.any? %>
97 <% if @journals.any? %>
98 <div id="history">
98 <div id="history">
99 <h3><%=l(:label_history)%></h3>
99 <h3><%=l(:label_history)%></h3>
100 <%= render :partial => 'history', :locals => { :journals => @journals } %>
100 <%= render :partial => 'history', :locals => { :journals => @journals } %>
101 </div>
101 </div>
102 <% end %>
102 <% end %>
103
103
104
104
105 <div style="clear: both;"></div>
105 <div style="clear: both;"></div>
106 <%= render :partial => 'action_menu', :locals => {:replace_watcher => 'watcher2' } %>
106 <%= render :partial => 'action_menu', :locals => {:replace_watcher => 'watcher2' } %>
107
107
108 <div style="clear: both;"></div>
108 <div style="clear: both;"></div>
109 <% if authorize_for('issues', 'edit') %>
109 <% if authorize_for('issues', 'edit') %>
110 <div id="update" style="display:none;">
110 <div id="update" style="display:none;">
111 <h3><%= l(:button_update) %></h3>
111 <h3><%= l(:button_update) %></h3>
112 <%= render :partial => 'edit' %>
112 <%= render :partial => 'edit' %>
113 </div>
113 </div>
114 <% end %>
114 <% end %>
115
115
116 <% other_formats_links do |f| %>
116 <% other_formats_links do |f| %>
117 <%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
117 <%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
118 <%= f.link_to 'PDF' %>
118 <%= f.link_to 'PDF' %>
119 <% end %>
119 <% end %>
120
120
121 <% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %>
121 <% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %>
122
122
123 <% content_for :sidebar do %>
123 <% content_for :sidebar do %>
124 <%= render :partial => 'issues/sidebar' %>
124 <%= render :partial => 'issues/sidebar' %>
125 <% end %>
125 <% end %>
126
126
127 <% content_for :header_tags do %>
127 <% content_for :header_tags do %>
128 <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
128 <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
129 <%= stylesheet_link_tag 'scm' %>
129 <%= stylesheet_link_tag 'scm' %>
130 <%= javascript_include_tag 'context_menu' %>
130 <%= javascript_include_tag 'context_menu' %>
131 <%= stylesheet_link_tag 'context_menu' %>
131 <%= stylesheet_link_tag 'context_menu' %>
132 <% end %>
132 <% end %>
133 <div id="context-menu" style="display: none;"></div>
133 <div id="context-menu" style="display: none;"></div>
134 <%= javascript_tag "new ContextMenu('#{url_for(:controller => 'issues', :action => 'context_menu')}')" %> No newline at end of file
134 <%= javascript_tag "new ContextMenu('#{url_for(:controller => 'issues', :action => 'context_menu')}')" %>
@@ -1,875 +1,876
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
2
2
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
4 h1 {margin:0; padding:0; font-size: 24px;}
4 h1 {margin:0; padding:0; font-size: 24px;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
8
8
9 /***** Layout *****/
9 /***** Layout *****/
10 #wrapper {background: white;}
10 #wrapper {background: white;}
11
11
12 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
12 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
13 #top-menu ul {margin: 0; padding: 0;}
13 #top-menu ul {margin: 0; padding: 0;}
14 #top-menu li {
14 #top-menu li {
15 float:left;
15 float:left;
16 list-style-type:none;
16 list-style-type:none;
17 margin: 0px 0px 0px 0px;
17 margin: 0px 0px 0px 0px;
18 padding: 0px 0px 0px 0px;
18 padding: 0px 0px 0px 0px;
19 white-space:nowrap;
19 white-space:nowrap;
20 }
20 }
21 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
21 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
22 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
22 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
23
23
24 #account {float:right;}
24 #account {float:right;}
25
25
26 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
26 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
27 #header a {color:#f8f8f8;}
27 #header a {color:#f8f8f8;}
28 #header h1 a.ancestor { font-size: 80%; }
28 #header h1 a.ancestor { font-size: 80%; }
29 #quick-search {float:right;}
29 #quick-search {float:right;}
30
30
31 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
31 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
32 #main-menu ul {margin: 0; padding: 0;}
32 #main-menu ul {margin: 0; padding: 0;}
33 #main-menu li {
33 #main-menu li {
34 float:left;
34 float:left;
35 list-style-type:none;
35 list-style-type:none;
36 margin: 0px 2px 0px 0px;
36 margin: 0px 2px 0px 0px;
37 padding: 0px 0px 0px 0px;
37 padding: 0px 0px 0px 0px;
38 white-space:nowrap;
38 white-space:nowrap;
39 }
39 }
40 #main-menu li a {
40 #main-menu li a {
41 display: block;
41 display: block;
42 color: #fff;
42 color: #fff;
43 text-decoration: none;
43 text-decoration: none;
44 font-weight: bold;
44 font-weight: bold;
45 margin: 0;
45 margin: 0;
46 padding: 4px 10px 4px 10px;
46 padding: 4px 10px 4px 10px;
47 }
47 }
48 #main-menu li a:hover {background:#759FCF; color:#fff;}
48 #main-menu li a:hover {background:#759FCF; color:#fff;}
49 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
49 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
50
50
51 #admin-menu ul {margin: 0; padding: 0;}
51 #admin-menu ul {margin: 0; padding: 0;}
52 #admin-menu li {margin: 0; padding: 0 0 12px 0; list-style-type:none;}
52 #admin-menu li {margin: 0; padding: 0 0 12px 0; list-style-type:none;}
53
53
54 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
54 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
55 #admin-menu a.projects { background-image: url(../images/projects.png); }
55 #admin-menu a.projects { background-image: url(../images/projects.png); }
56 #admin-menu a.users { background-image: url(../images/user.png); }
56 #admin-menu a.users { background-image: url(../images/user.png); }
57 #admin-menu a.groups { background-image: url(../images/group.png); }
57 #admin-menu a.groups { background-image: url(../images/group.png); }
58 #admin-menu a.roles { background-image: url(../images/database_key.png); }
58 #admin-menu a.roles { background-image: url(../images/database_key.png); }
59 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
59 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
60 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
60 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
61 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
61 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
62 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
62 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
63 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
63 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
64 #admin-menu a.settings { background-image: url(../images/changeset.png); }
64 #admin-menu a.settings { background-image: url(../images/changeset.png); }
65 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
65 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
66 #admin-menu a.info { background-image: url(../images/help.png); }
66 #admin-menu a.info { background-image: url(../images/help.png); }
67
67
68 #main {background-color:#EEEEEE;}
68 #main {background-color:#EEEEEE;}
69
69
70 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; padding: 0; margin: 0;}
70 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; padding: 0; margin: 0;}
71 * html #sidebar{ width: 17%; }
71 * html #sidebar{ width: 17%; }
72 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
72 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
73 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
73 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
74 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
74 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
75
75
76 #content { width: 80%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
76 #content { width: 80%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
77 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
77 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
78 html>body #content { min-height: 600px; }
78 html>body #content { min-height: 600px; }
79 * html body #content { height: 600px; } /* IE */
79 * html body #content { height: 600px; } /* IE */
80
80
81 #main.nosidebar #sidebar{ display: none; }
81 #main.nosidebar #sidebar{ display: none; }
82 #main.nosidebar #content{ width: auto; border-right: 0; }
82 #main.nosidebar #content{ width: auto; border-right: 0; }
83
83
84 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
84 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
85
85
86 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
86 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
87 #login-form table td {padding: 6px;}
87 #login-form table td {padding: 6px;}
88 #login-form label {font-weight: bold;}
88 #login-form label {font-weight: bold;}
89 #login-form input#username, #login-form input#password { width: 300px; }
89 #login-form input#username, #login-form input#password { width: 300px; }
90
90
91 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
91 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
92
92
93 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
93 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
94
94
95 /***** Links *****/
95 /***** Links *****/
96 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
96 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
97 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
97 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
98 a img{ border: 0; }
98 a img{ border: 0; }
99
99
100 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
100 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
101
101
102 /***** Tables *****/
102 /***** Tables *****/
103 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
103 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
104 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
104 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
105 table.list td { vertical-align: top; }
105 table.list td { vertical-align: top; }
106 table.list td.id { width: 2%; text-align: center;}
106 table.list td.id { width: 2%; text-align: center;}
107 table.list td.checkbox { width: 15px; padding: 0px;}
107 table.list td.checkbox { width: 15px; padding: 0px;}
108 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
108 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
109 table.list td.buttons a { padding-right: 0.6em; }
109 table.list td.buttons a { padding-right: 0.6em; }
110 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
110 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
111
111
112 tr.project td.name a { padding-left: 16px; white-space:nowrap; }
112 tr.project td.name a { padding-left: 16px; white-space:nowrap; }
113 tr.project.parent td.name a { background: url('../images/bullet_toggle_minus.png') no-repeat; }
113 tr.project.parent td.name a { background: url('../images/bullet_toggle_minus.png') no-repeat; }
114
114
115 tr.issue { text-align: center; white-space: nowrap; }
115 tr.issue { text-align: center; white-space: nowrap; }
116 tr.issue td.subject, tr.issue td.category, td.assigned_to { white-space: normal; }
116 tr.issue td.subject, tr.issue td.category, td.assigned_to { white-space: normal; }
117 tr.issue td.subject { text-align: left; }
117 tr.issue td.subject { text-align: left; }
118 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
118 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
119
119
120 tr.entry { border: 1px solid #f8f8f8; }
120 tr.entry { border: 1px solid #f8f8f8; }
121 tr.entry td { white-space: nowrap; }
121 tr.entry td { white-space: nowrap; }
122 tr.entry td.filename { width: 30%; }
122 tr.entry td.filename { width: 30%; }
123 tr.entry td.size { text-align: right; font-size: 90%; }
123 tr.entry td.size { text-align: right; font-size: 90%; }
124 tr.entry td.revision, tr.entry td.author { text-align: center; }
124 tr.entry td.revision, tr.entry td.author { text-align: center; }
125 tr.entry td.age { text-align: right; }
125 tr.entry td.age { text-align: right; }
126 tr.entry.file td.filename a { margin-left: 16px; }
126 tr.entry.file td.filename a { margin-left: 16px; }
127
127
128 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
128 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
129 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
129 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
130
130
131 tr.changeset td.author { text-align: center; width: 15%; }
131 tr.changeset td.author { text-align: center; width: 15%; }
132 tr.changeset td.committed_on { text-align: center; width: 15%; }
132 tr.changeset td.committed_on { text-align: center; width: 15%; }
133
133
134 table.files tr.file td { text-align: center; }
134 table.files tr.file td { text-align: center; }
135 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
135 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
136 table.files tr.file td.digest { font-size: 80%; }
136 table.files tr.file td.digest { font-size: 80%; }
137
137
138 table.members td.roles, table.memberships td.roles { width: 45%; }
138 table.members td.roles, table.memberships td.roles { width: 45%; }
139
139
140 tr.message { height: 2.6em; }
140 tr.message { height: 2.6em; }
141 tr.message td.subject { padding-left: 20px; }
141 tr.message td.subject { padding-left: 20px; }
142 tr.message td.created_on { white-space: nowrap; }
142 tr.message td.created_on { white-space: nowrap; }
143 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
143 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
144 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
144 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
145 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
145 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
146
146
147 tr.version.closed, tr.version.closed a { color: #999; }
147 tr.version.closed, tr.version.closed a { color: #999; }
148 tr.version td.name { padding-left: 20px; }
148 tr.version td.name { padding-left: 20px; }
149 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
149 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
150 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; }
150 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; }
151
151
152 tr.user td { width:13%; }
152 tr.user td { width:13%; }
153 tr.user td.email { width:18%; }
153 tr.user td.email { width:18%; }
154 tr.user td { white-space: nowrap; }
154 tr.user td { white-space: nowrap; }
155 tr.user.locked, tr.user.registered { color: #aaa; }
155 tr.user.locked, tr.user.registered { color: #aaa; }
156 tr.user.locked a, tr.user.registered a { color: #aaa; }
156 tr.user.locked a, tr.user.registered a { color: #aaa; }
157
157
158 tr.time-entry { text-align: center; white-space: nowrap; }
158 tr.time-entry { text-align: center; white-space: nowrap; }
159 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
159 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
160 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
160 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
161 td.hours .hours-dec { font-size: 0.9em; }
161 td.hours .hours-dec { font-size: 0.9em; }
162
162
163 table.plugins td { vertical-align: middle; }
163 table.plugins td { vertical-align: middle; }
164 table.plugins td.configure { text-align: right; padding-right: 1em; }
164 table.plugins td.configure { text-align: right; padding-right: 1em; }
165 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
165 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
166 table.plugins span.description { display: block; font-size: 0.9em; }
166 table.plugins span.description { display: block; font-size: 0.9em; }
167 table.plugins span.url { display: block; font-size: 0.9em; }
167 table.plugins span.url { display: block; font-size: 0.9em; }
168
168
169 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
169 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
170 table.list tbody tr.group span.count { color: #aaa; font-size: 80%; }
170 table.list tbody tr.group span.count { color: #aaa; font-size: 80%; }
171
171
172 table.list tbody tr:hover { background-color:#ffffdd; }
172 table.list tbody tr:hover { background-color:#ffffdd; }
173 table.list tbody tr.group:hover { background-color:inherit; }
173 table.list tbody tr.group:hover { background-color:inherit; }
174 table td {padding:2px;}
174 table td {padding:2px;}
175 table p {margin:0;}
175 table p {margin:0;}
176 .odd {background-color:#f6f7f8;}
176 .odd {background-color:#f6f7f8;}
177 .even {background-color: #fff;}
177 .even {background-color: #fff;}
178
178
179 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
179 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
180 a.sort.asc { background-image: url(../images/sort_asc.png); }
180 a.sort.asc { background-image: url(../images/sort_asc.png); }
181 a.sort.desc { background-image: url(../images/sort_desc.png); }
181 a.sort.desc { background-image: url(../images/sort_desc.png); }
182
182
183 table.attributes { width: 100% }
183 table.attributes { width: 100% }
184 table.attributes th { vertical-align: top; text-align: left; }
184 table.attributes th { vertical-align: top; text-align: left; }
185 table.attributes td { vertical-align: top; }
185 table.attributes td { vertical-align: top; }
186
186
187 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
187 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
188
188
189 td.center {text-align:center;}
189 td.center {text-align:center;}
190
190
191 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
191 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
192
192
193 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
193 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
194 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
194 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
195 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
195 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
196 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
196 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
197
197
198 .highlight { background-color: #FCFD8D;}
198 .highlight { background-color: #FCFD8D;}
199 .highlight.token-1 { background-color: #faa;}
199 .highlight.token-1 { background-color: #faa;}
200 .highlight.token-2 { background-color: #afa;}
200 .highlight.token-2 { background-color: #afa;}
201 .highlight.token-3 { background-color: #aaf;}
201 .highlight.token-3 { background-color: #aaf;}
202
202
203 .box{
203 .box{
204 padding:6px;
204 padding:6px;
205 margin-bottom: 10px;
205 margin-bottom: 10px;
206 background-color:#f6f6f6;
206 background-color:#f6f6f6;
207 color:#505050;
207 color:#505050;
208 line-height:1.5em;
208 line-height:1.5em;
209 border: 1px solid #e4e4e4;
209 border: 1px solid #e4e4e4;
210 }
210 }
211
211
212 div.square {
212 div.square {
213 border: 1px solid #999;
213 border: 1px solid #999;
214 float: left;
214 float: left;
215 margin: .3em .4em 0 .4em;
215 margin: .3em .4em 0 .4em;
216 overflow: hidden;
216 overflow: hidden;
217 width: .6em; height: .6em;
217 width: .6em; height: .6em;
218 }
218 }
219 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
219 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
220 .contextual input, .contextual select {font-size:0.9em;}
220 .contextual input, .contextual select {font-size:0.9em;}
221 .message .contextual { margin-top: 0; }
221 .message .contextual { margin-top: 0; }
222
222
223 .splitcontentleft{float:left; width:49%;}
223 .splitcontentleft{float:left; width:49%;}
224 .splitcontentright{float:right; width:49%;}
224 .splitcontentright{float:right; width:49%;}
225 form {display: inline;}
225 form {display: inline;}
226 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
226 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
227 fieldset {border: 1px solid #e4e4e4; margin:0;}
227 fieldset {border: 1px solid #e4e4e4; margin:0;}
228 legend {color: #484848;}
228 legend {color: #484848;}
229 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
229 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
230 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
230 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
231 blockquote blockquote { margin-left: 0;}
231 blockquote blockquote { margin-left: 0;}
232 acronym { border-bottom: 1px dotted; cursor: help; }
232 acronym { border-bottom: 1px dotted; cursor: help; }
233 textarea.wiki-edit { width: 99%; }
233 textarea.wiki-edit { width: 99%; }
234 li p {margin-top: 0;}
234 li p {margin-top: 0;}
235 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
235 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
236 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
236 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
237 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
237 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
238 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
238 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
239
239
240 div.issue div.subject div div { padding-left: 16px; }
240 div.issue div.subject div div { padding-left: 16px; }
241 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
241 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
242 div.issue div.subject>div>p { margin-top: 0.5em; }
242 div.issue div.subject>div>p { margin-top: 0.5em; }
243 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
243 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
244
244
245 #issue_tree table.issues { border: 0; }
245 #issue_tree table.issues { border: 0; }
246 #issue_tree td.checkbox {display:none;}
246
247
247 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
248 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
248 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
249 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
249 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
250 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
250
251
251 fieldset#date-range p { margin: 2px 0 2px 0; }
252 fieldset#date-range p { margin: 2px 0 2px 0; }
252 fieldset#filters table { border-collapse: collapse; }
253 fieldset#filters table { border-collapse: collapse; }
253 fieldset#filters table td { padding: 0; vertical-align: middle; }
254 fieldset#filters table td { padding: 0; vertical-align: middle; }
254 fieldset#filters tr.filter { height: 2em; }
255 fieldset#filters tr.filter { height: 2em; }
255 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
256 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
256 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
257 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
257
258
258 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
259 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
259 div#issue-changesets .changeset { padding: 4px;}
260 div#issue-changesets .changeset { padding: 4px;}
260 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
261 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
261 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
262 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
262
263
263 div#activity dl, #search-results { margin-left: 2em; }
264 div#activity dl, #search-results { margin-left: 2em; }
264 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
265 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
265 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
266 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
266 div#activity dt.me .time { border-bottom: 1px solid #999; }
267 div#activity dt.me .time { border-bottom: 1px solid #999; }
267 div#activity dt .time { color: #777; font-size: 80%; }
268 div#activity dt .time { color: #777; font-size: 80%; }
268 div#activity dd .description, #search-results dd .description { font-style: italic; }
269 div#activity dd .description, #search-results dd .description { font-style: italic; }
269 div#activity span.project:after, #search-results span.project:after { content: " -"; }
270 div#activity span.project:after, #search-results span.project:after { content: " -"; }
270 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
271 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
271
272
272 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
273 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
273
274
274 div#search-results-counts {float:right;}
275 div#search-results-counts {float:right;}
275 div#search-results-counts ul { margin-top: 0.5em; }
276 div#search-results-counts ul { margin-top: 0.5em; }
276 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
277 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
277
278
278 dt.issue { background-image: url(../images/ticket.png); }
279 dt.issue { background-image: url(../images/ticket.png); }
279 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
280 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
280 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
281 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
281 dt.issue-note { background-image: url(../images/ticket_note.png); }
282 dt.issue-note { background-image: url(../images/ticket_note.png); }
282 dt.changeset { background-image: url(../images/changeset.png); }
283 dt.changeset { background-image: url(../images/changeset.png); }
283 dt.news { background-image: url(../images/news.png); }
284 dt.news { background-image: url(../images/news.png); }
284 dt.message { background-image: url(../images/message.png); }
285 dt.message { background-image: url(../images/message.png); }
285 dt.reply { background-image: url(../images/comments.png); }
286 dt.reply { background-image: url(../images/comments.png); }
286 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
287 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
287 dt.attachment { background-image: url(../images/attachment.png); }
288 dt.attachment { background-image: url(../images/attachment.png); }
288 dt.document { background-image: url(../images/document.png); }
289 dt.document { background-image: url(../images/document.png); }
289 dt.project { background-image: url(../images/projects.png); }
290 dt.project { background-image: url(../images/projects.png); }
290 dt.time-entry { background-image: url(../images/time.png); }
291 dt.time-entry { background-image: url(../images/time.png); }
291
292
292 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
293 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
293
294
294 div#roadmap .related-issues { margin-bottom: 1em; }
295 div#roadmap .related-issues { margin-bottom: 1em; }
295 div#roadmap .related-issues td.checkbox { display: none; }
296 div#roadmap .related-issues td.checkbox { display: none; }
296 div#roadmap .wiki h1:first-child { display: none; }
297 div#roadmap .wiki h1:first-child { display: none; }
297 div#roadmap .wiki h1 { font-size: 120%; }
298 div#roadmap .wiki h1 { font-size: 120%; }
298 div#roadmap .wiki h2 { font-size: 110%; }
299 div#roadmap .wiki h2 { font-size: 110%; }
299
300
300 div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
301 div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
301 div#version-summary fieldset { margin-bottom: 1em; }
302 div#version-summary fieldset { margin-bottom: 1em; }
302 div#version-summary .total-hours { text-align: right; }
303 div#version-summary .total-hours { text-align: right; }
303
304
304 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
305 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
305 table#time-report tbody tr { font-style: italic; color: #777; }
306 table#time-report tbody tr { font-style: italic; color: #777; }
306 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
307 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
307 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
308 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
308 table#time-report .hours-dec { font-size: 0.9em; }
309 table#time-report .hours-dec { font-size: 0.9em; }
309
310
310 form .attributes { margin-bottom: 8px; }
311 form .attributes { margin-bottom: 8px; }
311 form .attributes p { padding-top: 1px; padding-bottom: 2px; }
312 form .attributes p { padding-top: 1px; padding-bottom: 2px; }
312 form .attributes select { min-width: 50%; }
313 form .attributes select { min-width: 50%; }
313
314
314 ul.projects { margin: 0; padding-left: 1em; }
315 ul.projects { margin: 0; padding-left: 1em; }
315 ul.projects.root { margin: 0; padding: 0; }
316 ul.projects.root { margin: 0; padding: 0; }
316 ul.projects ul { border-left: 3px solid #e0e0e0; }
317 ul.projects ul { border-left: 3px solid #e0e0e0; }
317 ul.projects li { list-style-type:none; }
318 ul.projects li { list-style-type:none; }
318 ul.projects li.root { margin-bottom: 1em; }
319 ul.projects li.root { margin-bottom: 1em; }
319 ul.projects li.child { margin-top: 1em;}
320 ul.projects li.child { margin-top: 1em;}
320 ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
321 ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
321 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
322 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
322
323
323 #tracker_project_ids ul { margin: 0; padding-left: 1em; }
324 #tracker_project_ids ul { margin: 0; padding-left: 1em; }
324 #tracker_project_ids li { list-style-type:none; }
325 #tracker_project_ids li { list-style-type:none; }
325
326
326 ul.properties {padding:0; font-size: 0.9em; color: #777;}
327 ul.properties {padding:0; font-size: 0.9em; color: #777;}
327 ul.properties li {list-style-type:none;}
328 ul.properties li {list-style-type:none;}
328 ul.properties li span {font-style:italic;}
329 ul.properties li span {font-style:italic;}
329
330
330 .total-hours { font-size: 110%; font-weight: bold; }
331 .total-hours { font-size: 110%; font-weight: bold; }
331 .total-hours span.hours-int { font-size: 120%; }
332 .total-hours span.hours-int { font-size: 120%; }
332
333
333 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
334 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
334 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
335 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
335
336
336 #workflow_copy_form select { width: 200px; }
337 #workflow_copy_form select { width: 200px; }
337
338
338 .pagination {font-size: 90%}
339 .pagination {font-size: 90%}
339 p.pagination {margin-top:8px;}
340 p.pagination {margin-top:8px;}
340
341
341 /***** Tabular forms ******/
342 /***** Tabular forms ******/
342 .tabular p{
343 .tabular p{
343 margin: 0;
344 margin: 0;
344 padding: 5px 0 8px 0;
345 padding: 5px 0 8px 0;
345 padding-left: 180px; /*width of left column containing the label elements*/
346 padding-left: 180px; /*width of left column containing the label elements*/
346 height: 1%;
347 height: 1%;
347 clear:left;
348 clear:left;
348 }
349 }
349
350
350 html>body .tabular p {overflow:hidden;}
351 html>body .tabular p {overflow:hidden;}
351
352
352 .tabular label{
353 .tabular label{
353 font-weight: bold;
354 font-weight: bold;
354 float: left;
355 float: left;
355 text-align: right;
356 text-align: right;
356 margin-left: -180px; /*width of left column*/
357 margin-left: -180px; /*width of left column*/
357 width: 175px; /*width of labels. Should be smaller than left column to create some right
358 width: 175px; /*width of labels. Should be smaller than left column to create some right
358 margin*/
359 margin*/
359 }
360 }
360
361
361 .tabular label.floating{
362 .tabular label.floating{
362 font-weight: normal;
363 font-weight: normal;
363 margin-left: 0px;
364 margin-left: 0px;
364 text-align: left;
365 text-align: left;
365 width: 270px;
366 width: 270px;
366 }
367 }
367
368
368 .tabular label.block{
369 .tabular label.block{
369 font-weight: normal;
370 font-weight: normal;
370 margin-left: 0px !important;
371 margin-left: 0px !important;
371 text-align: left;
372 text-align: left;
372 float: none;
373 float: none;
373 display: block;
374 display: block;
374 width: auto;
375 width: auto;
375 }
376 }
376
377
377 input#time_entry_comments { width: 90%;}
378 input#time_entry_comments { width: 90%;}
378
379
379 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
380 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
380
381
381 .tabular.settings p{ padding-left: 300px; }
382 .tabular.settings p{ padding-left: 300px; }
382 .tabular.settings label{ margin-left: -300px; width: 295px; }
383 .tabular.settings label{ margin-left: -300px; width: 295px; }
383 .tabular.settings textarea { width: 99%; }
384 .tabular.settings textarea { width: 99%; }
384
385
385 fieldset.settings label { display: block; }
386 fieldset.settings label { display: block; }
386
387
387 .required {color: #bb0000;}
388 .required {color: #bb0000;}
388 .summary {font-style: italic;}
389 .summary {font-style: italic;}
389
390
390 #attachments_fields input[type=text] {margin-left: 8px; }
391 #attachments_fields input[type=text] {margin-left: 8px; }
391
392
392 div.attachments { margin-top: 12px; }
393 div.attachments { margin-top: 12px; }
393 div.attachments p { margin:4px 0 2px 0; }
394 div.attachments p { margin:4px 0 2px 0; }
394 div.attachments img { vertical-align: middle; }
395 div.attachments img { vertical-align: middle; }
395 div.attachments span.author { font-size: 0.9em; color: #888; }
396 div.attachments span.author { font-size: 0.9em; color: #888; }
396
397
397 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
398 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
398 .other-formats span + span:before { content: "| "; }
399 .other-formats span + span:before { content: "| "; }
399
400
400 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
401 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
401
402
402 /* Project members tab */
403 /* Project members tab */
403 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
404 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
404 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
405 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
405 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
406 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
406 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
407 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
407 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
408 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
408 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
409 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
409
410
410 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
411 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
411
412
412 * html div#tab-content-members fieldset div { height: 450px; }
413 * html div#tab-content-members fieldset div { height: 450px; }
413
414
414 /***** Flash & error messages ****/
415 /***** Flash & error messages ****/
415 #errorExplanation, div.flash, .nodata, .warning {
416 #errorExplanation, div.flash, .nodata, .warning {
416 padding: 4px 4px 4px 30px;
417 padding: 4px 4px 4px 30px;
417 margin-bottom: 12px;
418 margin-bottom: 12px;
418 font-size: 1.1em;
419 font-size: 1.1em;
419 border: 2px solid;
420 border: 2px solid;
420 }
421 }
421
422
422 div.flash {margin-top: 8px;}
423 div.flash {margin-top: 8px;}
423
424
424 div.flash.error, #errorExplanation {
425 div.flash.error, #errorExplanation {
425 background: url(../images/exclamation.png) 8px 50% no-repeat;
426 background: url(../images/exclamation.png) 8px 50% no-repeat;
426 background-color: #ffe3e3;
427 background-color: #ffe3e3;
427 border-color: #dd0000;
428 border-color: #dd0000;
428 color: #880000;
429 color: #880000;
429 }
430 }
430
431
431 div.flash.notice {
432 div.flash.notice {
432 background: url(../images/true.png) 8px 5px no-repeat;
433 background: url(../images/true.png) 8px 5px no-repeat;
433 background-color: #dfffdf;
434 background-color: #dfffdf;
434 border-color: #9fcf9f;
435 border-color: #9fcf9f;
435 color: #005f00;
436 color: #005f00;
436 }
437 }
437
438
438 div.flash.warning {
439 div.flash.warning {
439 background: url(../images/warning.png) 8px 5px no-repeat;
440 background: url(../images/warning.png) 8px 5px no-repeat;
440 background-color: #FFEBC1;
441 background-color: #FFEBC1;
441 border-color: #FDBF3B;
442 border-color: #FDBF3B;
442 color: #A6750C;
443 color: #A6750C;
443 text-align: left;
444 text-align: left;
444 }
445 }
445
446
446 .nodata, .warning {
447 .nodata, .warning {
447 text-align: center;
448 text-align: center;
448 background-color: #FFEBC1;
449 background-color: #FFEBC1;
449 border-color: #FDBF3B;
450 border-color: #FDBF3B;
450 color: #A6750C;
451 color: #A6750C;
451 }
452 }
452
453
453 #errorExplanation ul { font-size: 0.9em;}
454 #errorExplanation ul { font-size: 0.9em;}
454 #errorExplanation h2, #errorExplanation p { display: none; }
455 #errorExplanation h2, #errorExplanation p { display: none; }
455
456
456 /***** Ajax indicator ******/
457 /***** Ajax indicator ******/
457 #ajax-indicator {
458 #ajax-indicator {
458 position: absolute; /* fixed not supported by IE */
459 position: absolute; /* fixed not supported by IE */
459 background-color:#eee;
460 background-color:#eee;
460 border: 1px solid #bbb;
461 border: 1px solid #bbb;
461 top:35%;
462 top:35%;
462 left:40%;
463 left:40%;
463 width:20%;
464 width:20%;
464 font-weight:bold;
465 font-weight:bold;
465 text-align:center;
466 text-align:center;
466 padding:0.6em;
467 padding:0.6em;
467 z-index:100;
468 z-index:100;
468 filter:alpha(opacity=50);
469 filter:alpha(opacity=50);
469 opacity: 0.5;
470 opacity: 0.5;
470 }
471 }
471
472
472 html>body #ajax-indicator { position: fixed; }
473 html>body #ajax-indicator { position: fixed; }
473
474
474 #ajax-indicator span {
475 #ajax-indicator span {
475 background-position: 0% 40%;
476 background-position: 0% 40%;
476 background-repeat: no-repeat;
477 background-repeat: no-repeat;
477 background-image: url(../images/loading.gif);
478 background-image: url(../images/loading.gif);
478 padding-left: 26px;
479 padding-left: 26px;
479 vertical-align: bottom;
480 vertical-align: bottom;
480 }
481 }
481
482
482 /***** Calendar *****/
483 /***** Calendar *****/
483 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
484 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
484 table.cal thead th {width: 14%;}
485 table.cal thead th {width: 14%;}
485 table.cal tbody tr {height: 100px;}
486 table.cal tbody tr {height: 100px;}
486 table.cal th { background-color:#EEEEEE; padding: 4px; }
487 table.cal th { background-color:#EEEEEE; padding: 4px; }
487 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
488 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
488 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
489 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
489 table.cal td.odd p.day-num {color: #bbb;}
490 table.cal td.odd p.day-num {color: #bbb;}
490 table.cal td.today {background:#ffffdd;}
491 table.cal td.today {background:#ffffdd;}
491 table.cal td.today p.day-num {font-weight: bold;}
492 table.cal td.today p.day-num {font-weight: bold;}
492 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
493 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
493 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
494 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
494 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
495 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
495 p.cal.legend span {display:block;}
496 p.cal.legend span {display:block;}
496
497
497 /***** Tooltips ******/
498 /***** Tooltips ******/
498 .tooltip{position:relative;z-index:24;}
499 .tooltip{position:relative;z-index:24;}
499 .tooltip:hover{z-index:25;color:#000;}
500 .tooltip:hover{z-index:25;color:#000;}
500 .tooltip span.tip{display: none; text-align:left;}
501 .tooltip span.tip{display: none; text-align:left;}
501
502
502 div.tooltip:hover span.tip{
503 div.tooltip:hover span.tip{
503 display:block;
504 display:block;
504 position:absolute;
505 position:absolute;
505 top:12px; left:24px; width:270px;
506 top:12px; left:24px; width:270px;
506 border:1px solid #555;
507 border:1px solid #555;
507 background-color:#fff;
508 background-color:#fff;
508 padding: 4px;
509 padding: 4px;
509 font-size: 0.8em;
510 font-size: 0.8em;
510 color:#505050;
511 color:#505050;
511 }
512 }
512
513
513 /***** Progress bar *****/
514 /***** Progress bar *****/
514 table.progress {
515 table.progress {
515 border: 1px solid #D7D7D7;
516 border: 1px solid #D7D7D7;
516 border-collapse: collapse;
517 border-collapse: collapse;
517 border-spacing: 0pt;
518 border-spacing: 0pt;
518 empty-cells: show;
519 empty-cells: show;
519 text-align: center;
520 text-align: center;
520 float:left;
521 float:left;
521 margin: 1px 6px 1px 0px;
522 margin: 1px 6px 1px 0px;
522 }
523 }
523
524
524 table.progress td { height: 0.9em; }
525 table.progress td { height: 0.9em; }
525 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
526 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
526 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
527 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
527 table.progress td.open { background: #FFF none repeat scroll 0%; }
528 table.progress td.open { background: #FFF none repeat scroll 0%; }
528 p.pourcent {font-size: 80%;}
529 p.pourcent {font-size: 80%;}
529 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
530 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
530
531
531 /***** Tabs *****/
532 /***** Tabs *****/
532 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
533 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
533 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:1em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
534 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:1em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
534 #content .tabs ul li {
535 #content .tabs ul li {
535 float:left;
536 float:left;
536 list-style-type:none;
537 list-style-type:none;
537 white-space:nowrap;
538 white-space:nowrap;
538 margin-right:8px;
539 margin-right:8px;
539 background:#fff;
540 background:#fff;
540 position:relative;
541 position:relative;
541 margin-bottom:-1px;
542 margin-bottom:-1px;
542 }
543 }
543 #content .tabs ul li a{
544 #content .tabs ul li a{
544 display:block;
545 display:block;
545 font-size: 0.9em;
546 font-size: 0.9em;
546 text-decoration:none;
547 text-decoration:none;
547 line-height:1.3em;
548 line-height:1.3em;
548 padding:4px 6px 4px 6px;
549 padding:4px 6px 4px 6px;
549 border: 1px solid #ccc;
550 border: 1px solid #ccc;
550 border-bottom: 1px solid #bbbbbb;
551 border-bottom: 1px solid #bbbbbb;
551 background-color: #eeeeee;
552 background-color: #eeeeee;
552 color:#777;
553 color:#777;
553 font-weight:bold;
554 font-weight:bold;
554 }
555 }
555
556
556 #content .tabs ul li a:hover {
557 #content .tabs ul li a:hover {
557 background-color: #ffffdd;
558 background-color: #ffffdd;
558 text-decoration:none;
559 text-decoration:none;
559 }
560 }
560
561
561 #content .tabs ul li a.selected {
562 #content .tabs ul li a.selected {
562 background-color: #fff;
563 background-color: #fff;
563 border: 1px solid #bbbbbb;
564 border: 1px solid #bbbbbb;
564 border-bottom: 1px solid #fff;
565 border-bottom: 1px solid #fff;
565 }
566 }
566
567
567 #content .tabs ul li a.selected:hover {
568 #content .tabs ul li a.selected:hover {
568 background-color: #fff;
569 background-color: #fff;
569 }
570 }
570
571
571 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
572 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
572
573
573 button.tab-left, button.tab-right {
574 button.tab-left, button.tab-right {
574 font-size: 0.9em;
575 font-size: 0.9em;
575 cursor: pointer;
576 cursor: pointer;
576 height:24px;
577 height:24px;
577 border: 1px solid #ccc;
578 border: 1px solid #ccc;
578 border-bottom: 1px solid #bbbbbb;
579 border-bottom: 1px solid #bbbbbb;
579 position:absolute;
580 position:absolute;
580 padding:4px;
581 padding:4px;
581 width: 20px;
582 width: 20px;
582 bottom: -1px;
583 bottom: -1px;
583 }
584 }
584
585
585 button.tab-left {
586 button.tab-left {
586 right: 20px;
587 right: 20px;
587 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
588 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
588 }
589 }
589
590
590 button.tab-right {
591 button.tab-right {
591 right: 0;
592 right: 0;
592 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
593 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
593 }
594 }
594
595
595 /***** Auto-complete *****/
596 /***** Auto-complete *****/
596 div.autocomplete {
597 div.autocomplete {
597 position:absolute;
598 position:absolute;
598 width:400px;
599 width:400px;
599 margin:0;
600 margin:0;
600 padding:0;
601 padding:0;
601 }
602 }
602 div.autocomplete ul {
603 div.autocomplete ul {
603 list-style-type:none;
604 list-style-type:none;
604 margin:0;
605 margin:0;
605 padding:0;
606 padding:0;
606 }
607 }
607 div.autocomplete ul li {
608 div.autocomplete ul li {
608 list-style-type:none;
609 list-style-type:none;
609 display:block;
610 display:block;
610 margin:-1px 0 0 0;
611 margin:-1px 0 0 0;
611 padding:2px;
612 padding:2px;
612 cursor:pointer;
613 cursor:pointer;
613 font-size: 90%;
614 font-size: 90%;
614 border: 1px solid #ccc;
615 border: 1px solid #ccc;
615 border-left: 1px solid #ccc;
616 border-left: 1px solid #ccc;
616 border-right: 1px solid #ccc;
617 border-right: 1px solid #ccc;
617 background-color:white;
618 background-color:white;
618 }
619 }
619 div.autocomplete ul li.selected { background-color: #ffb;}
620 div.autocomplete ul li.selected { background-color: #ffb;}
620 div.autocomplete ul li span.informal {
621 div.autocomplete ul li span.informal {
621 font-size: 80%;
622 font-size: 80%;
622 color: #aaa;
623 color: #aaa;
623 }
624 }
624
625
625 #parent_issue_candidates ul li {width: 500px;}
626 #parent_issue_candidates ul li {width: 500px;}
626
627
627 /***** Diff *****/
628 /***** Diff *****/
628 .diff_out { background: #fcc; }
629 .diff_out { background: #fcc; }
629 .diff_in { background: #cfc; }
630 .diff_in { background: #cfc; }
630
631
631 /***** Wiki *****/
632 /***** Wiki *****/
632 div.wiki table {
633 div.wiki table {
633 border: 1px solid #505050;
634 border: 1px solid #505050;
634 border-collapse: collapse;
635 border-collapse: collapse;
635 margin-bottom: 1em;
636 margin-bottom: 1em;
636 }
637 }
637
638
638 div.wiki table, div.wiki td, div.wiki th {
639 div.wiki table, div.wiki td, div.wiki th {
639 border: 1px solid #bbb;
640 border: 1px solid #bbb;
640 padding: 4px;
641 padding: 4px;
641 }
642 }
642
643
643 div.wiki .external {
644 div.wiki .external {
644 background-position: 0% 60%;
645 background-position: 0% 60%;
645 background-repeat: no-repeat;
646 background-repeat: no-repeat;
646 padding-left: 12px;
647 padding-left: 12px;
647 background-image: url(../images/external.png);
648 background-image: url(../images/external.png);
648 }
649 }
649
650
650 div.wiki a.new {
651 div.wiki a.new {
651 color: #b73535;
652 color: #b73535;
652 }
653 }
653
654
654 div.wiki pre {
655 div.wiki pre {
655 margin: 1em 1em 1em 1.6em;
656 margin: 1em 1em 1em 1.6em;
656 padding: 2px;
657 padding: 2px;
657 background-color: #fafafa;
658 background-color: #fafafa;
658 border: 1px solid #dadada;
659 border: 1px solid #dadada;
659 width:95%;
660 width:95%;
660 overflow-x: auto;
661 overflow-x: auto;
661 }
662 }
662
663
663 div.wiki ul.toc {
664 div.wiki ul.toc {
664 background-color: #ffffdd;
665 background-color: #ffffdd;
665 border: 1px solid #e4e4e4;
666 border: 1px solid #e4e4e4;
666 padding: 4px;
667 padding: 4px;
667 line-height: 1.2em;
668 line-height: 1.2em;
668 margin-bottom: 12px;
669 margin-bottom: 12px;
669 margin-right: 12px;
670 margin-right: 12px;
670 margin-left: 0;
671 margin-left: 0;
671 display: table
672 display: table
672 }
673 }
673 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
674 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
674
675
675 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
676 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
676 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
677 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
677 div.wiki ul.toc li { list-style-type:none;}
678 div.wiki ul.toc li { list-style-type:none;}
678 div.wiki ul.toc li.heading2 { margin-left: 6px; }
679 div.wiki ul.toc li.heading2 { margin-left: 6px; }
679 div.wiki ul.toc li.heading3 { margin-left: 12px; font-size: 0.8em; }
680 div.wiki ul.toc li.heading3 { margin-left: 12px; font-size: 0.8em; }
680
681
681 div.wiki ul.toc a {
682 div.wiki ul.toc a {
682 font-size: 0.9em;
683 font-size: 0.9em;
683 font-weight: normal;
684 font-weight: normal;
684 text-decoration: none;
685 text-decoration: none;
685 color: #606060;
686 color: #606060;
686 }
687 }
687 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
688 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
688
689
689 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
690 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
690 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
691 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
691 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
692 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
692
693
693 div.wiki img { vertical-align: middle; }
694 div.wiki img { vertical-align: middle; }
694
695
695 /***** My page layout *****/
696 /***** My page layout *****/
696 .block-receiver {
697 .block-receiver {
697 border:1px dashed #c0c0c0;
698 border:1px dashed #c0c0c0;
698 margin-bottom: 20px;
699 margin-bottom: 20px;
699 padding: 15px 0 15px 0;
700 padding: 15px 0 15px 0;
700 }
701 }
701
702
702 .mypage-box {
703 .mypage-box {
703 margin:0 0 20px 0;
704 margin:0 0 20px 0;
704 color:#505050;
705 color:#505050;
705 line-height:1.5em;
706 line-height:1.5em;
706 }
707 }
707
708
708 .handle {
709 .handle {
709 cursor: move;
710 cursor: move;
710 }
711 }
711
712
712 a.close-icon {
713 a.close-icon {
713 display:block;
714 display:block;
714 margin-top:3px;
715 margin-top:3px;
715 overflow:hidden;
716 overflow:hidden;
716 width:12px;
717 width:12px;
717 height:12px;
718 height:12px;
718 background-repeat: no-repeat;
719 background-repeat: no-repeat;
719 cursor:pointer;
720 cursor:pointer;
720 background-image:url('../images/close.png');
721 background-image:url('../images/close.png');
721 }
722 }
722
723
723 a.close-icon:hover {
724 a.close-icon:hover {
724 background-image:url('../images/close_hl.png');
725 background-image:url('../images/close_hl.png');
725 }
726 }
726
727
727 /***** Gantt chart *****/
728 /***** Gantt chart *****/
728 .gantt_hdr {
729 .gantt_hdr {
729 position:absolute;
730 position:absolute;
730 top:0;
731 top:0;
731 height:16px;
732 height:16px;
732 border-top: 1px solid #c0c0c0;
733 border-top: 1px solid #c0c0c0;
733 border-bottom: 1px solid #c0c0c0;
734 border-bottom: 1px solid #c0c0c0;
734 border-right: 1px solid #c0c0c0;
735 border-right: 1px solid #c0c0c0;
735 text-align: center;
736 text-align: center;
736 overflow: hidden;
737 overflow: hidden;
737 }
738 }
738
739
739 .task {
740 .task {
740 position: absolute;
741 position: absolute;
741 height:8px;
742 height:8px;
742 font-size:0.8em;
743 font-size:0.8em;
743 color:#888;
744 color:#888;
744 padding:0;
745 padding:0;
745 margin:0;
746 margin:0;
746 line-height:0.8em;
747 line-height:0.8em;
747 white-space:nowrap;
748 white-space:nowrap;
748 }
749 }
749
750
750 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
751 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
751 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
752 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
752 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
753 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
753
754
754 .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
755 .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
755 .task_late.parent, .task_done.parent { height: 3px;}
756 .task_late.parent, .task_done.parent { height: 3px;}
756 .task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;}
757 .task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;}
757 .task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;}
758 .task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;}
758
759
759 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
760 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
760
761
761 /***** Icons *****/
762 /***** Icons *****/
762 .icon {
763 .icon {
763 background-position: 0% 50%;
764 background-position: 0% 50%;
764 background-repeat: no-repeat;
765 background-repeat: no-repeat;
765 padding-left: 20px;
766 padding-left: 20px;
766 padding-top: 2px;
767 padding-top: 2px;
767 padding-bottom: 3px;
768 padding-bottom: 3px;
768 }
769 }
769
770
770 .icon-add { background-image: url(../images/add.png); }
771 .icon-add { background-image: url(../images/add.png); }
771 .icon-edit { background-image: url(../images/edit.png); }
772 .icon-edit { background-image: url(../images/edit.png); }
772 .icon-copy { background-image: url(../images/copy.png); }
773 .icon-copy { background-image: url(../images/copy.png); }
773 .icon-duplicate { background-image: url(../images/duplicate.png); }
774 .icon-duplicate { background-image: url(../images/duplicate.png); }
774 .icon-del { background-image: url(../images/delete.png); }
775 .icon-del { background-image: url(../images/delete.png); }
775 .icon-move { background-image: url(../images/move.png); }
776 .icon-move { background-image: url(../images/move.png); }
776 .icon-save { background-image: url(../images/save.png); }
777 .icon-save { background-image: url(../images/save.png); }
777 .icon-cancel { background-image: url(../images/cancel.png); }
778 .icon-cancel { background-image: url(../images/cancel.png); }
778 .icon-multiple { background-image: url(../images/table_multiple.png); }
779 .icon-multiple { background-image: url(../images/table_multiple.png); }
779 .icon-folder { background-image: url(../images/folder.png); }
780 .icon-folder { background-image: url(../images/folder.png); }
780 .open .icon-folder { background-image: url(../images/folder_open.png); }
781 .open .icon-folder { background-image: url(../images/folder_open.png); }
781 .icon-package { background-image: url(../images/package.png); }
782 .icon-package { background-image: url(../images/package.png); }
782 .icon-home { background-image: url(../images/home.png); }
783 .icon-home { background-image: url(../images/home.png); }
783 .icon-user { background-image: url(../images/user.png); }
784 .icon-user { background-image: url(../images/user.png); }
784 .icon-projects { background-image: url(../images/projects.png); }
785 .icon-projects { background-image: url(../images/projects.png); }
785 .icon-help { background-image: url(../images/help.png); }
786 .icon-help { background-image: url(../images/help.png); }
786 .icon-attachment { background-image: url(../images/attachment.png); }
787 .icon-attachment { background-image: url(../images/attachment.png); }
787 .icon-history { background-image: url(../images/history.png); }
788 .icon-history { background-image: url(../images/history.png); }
788 .icon-time { background-image: url(../images/time.png); }
789 .icon-time { background-image: url(../images/time.png); }
789 .icon-time-add { background-image: url(../images/time_add.png); }
790 .icon-time-add { background-image: url(../images/time_add.png); }
790 .icon-stats { background-image: url(../images/stats.png); }
791 .icon-stats { background-image: url(../images/stats.png); }
791 .icon-warning { background-image: url(../images/warning.png); }
792 .icon-warning { background-image: url(../images/warning.png); }
792 .icon-fav { background-image: url(../images/fav.png); }
793 .icon-fav { background-image: url(../images/fav.png); }
793 .icon-fav-off { background-image: url(../images/fav_off.png); }
794 .icon-fav-off { background-image: url(../images/fav_off.png); }
794 .icon-reload { background-image: url(../images/reload.png); }
795 .icon-reload { background-image: url(../images/reload.png); }
795 .icon-lock { background-image: url(../images/locked.png); }
796 .icon-lock { background-image: url(../images/locked.png); }
796 .icon-unlock { background-image: url(../images/unlock.png); }
797 .icon-unlock { background-image: url(../images/unlock.png); }
797 .icon-checked { background-image: url(../images/true.png); }
798 .icon-checked { background-image: url(../images/true.png); }
798 .icon-details { background-image: url(../images/zoom_in.png); }
799 .icon-details { background-image: url(../images/zoom_in.png); }
799 .icon-report { background-image: url(../images/report.png); }
800 .icon-report { background-image: url(../images/report.png); }
800 .icon-comment { background-image: url(../images/comment.png); }
801 .icon-comment { background-image: url(../images/comment.png); }
801 .icon-summary { background-image: url(../images/lightning.png); }
802 .icon-summary { background-image: url(../images/lightning.png); }
802
803
803 .icon-file { background-image: url(../images/files/default.png); }
804 .icon-file { background-image: url(../images/files/default.png); }
804 .icon-file.text-plain { background-image: url(../images/files/text.png); }
805 .icon-file.text-plain { background-image: url(../images/files/text.png); }
805 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
806 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
806 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
807 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
807 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
808 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
808 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
809 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
809 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
810 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
810 .icon-file.image-gif { background-image: url(../images/files/image.png); }
811 .icon-file.image-gif { background-image: url(../images/files/image.png); }
811 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
812 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
812 .icon-file.image-png { background-image: url(../images/files/image.png); }
813 .icon-file.image-png { background-image: url(../images/files/image.png); }
813 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
814 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
814 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
815 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
815 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
816 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
816 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
817 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
817
818
818 img.gravatar {
819 img.gravatar {
819 padding: 2px;
820 padding: 2px;
820 border: solid 1px #d5d5d5;
821 border: solid 1px #d5d5d5;
821 background: #fff;
822 background: #fff;
822 }
823 }
823
824
824 div.issue img.gravatar {
825 div.issue img.gravatar {
825 float: right;
826 float: right;
826 margin: 0 0 0 1em;
827 margin: 0 0 0 1em;
827 padding: 5px;
828 padding: 5px;
828 }
829 }
829
830
830 div.issue table img.gravatar {
831 div.issue table img.gravatar {
831 height: 14px;
832 height: 14px;
832 width: 14px;
833 width: 14px;
833 padding: 2px;
834 padding: 2px;
834 float: left;
835 float: left;
835 margin: 0 0.5em 0 0;
836 margin: 0 0.5em 0 0;
836 }
837 }
837
838
838 h2 img.gravatar {
839 h2 img.gravatar {
839 padding: 3px;
840 padding: 3px;
840 margin: -2px 4px -4px 0;
841 margin: -2px 4px -4px 0;
841 vertical-align: top;
842 vertical-align: top;
842 }
843 }
843
844
844 h4 img.gravatar {
845 h4 img.gravatar {
845 padding: 3px;
846 padding: 3px;
846 margin: -6px 0 -4px 0;
847 margin: -6px 0 -4px 0;
847 vertical-align: top;
848 vertical-align: top;
848 }
849 }
849
850
850 td.username img.gravatar {
851 td.username img.gravatar {
851 float: left;
852 float: left;
852 margin: 0 1em 0 0;
853 margin: 0 1em 0 0;
853 }
854 }
854
855
855 #activity dt img.gravatar {
856 #activity dt img.gravatar {
856 float: left;
857 float: left;
857 margin: 0 1em 1em 0;
858 margin: 0 1em 1em 0;
858 }
859 }
859
860
860 #activity dt,
861 #activity dt,
861 .journal {
862 .journal {
862 clear: left;
863 clear: left;
863 }
864 }
864
865
865 h2 img { vertical-align:middle; }
866 h2 img { vertical-align:middle; }
866
867
867 .hascontextmenu { cursor: context-menu; }
868 .hascontextmenu { cursor: context-menu; }
868
869
869 /***** Media print specific styles *****/
870 /***** Media print specific styles *****/
870 @media print {
871 @media print {
871 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
872 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
872 #main { background: #fff; }
873 #main { background: #fff; }
873 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
874 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
874 #wiki_add_attachment { display:none; }
875 #wiki_add_attachment { display:none; }
875 }
876 }
General Comments 0
You need to be logged in to leave comments. Login now