##// END OF EJS Templates
Makes time entry custom fields available for display on the time entries list (#1766)....
Jean-Philippe Lang -
r10745:0ce6eb92850b
parent child
Show More
@@ -1,160 +1,162
1 # encoding: utf-8
1 # encoding: utf-8
2 #
2 #
3 # Redmine - project management software
3 # Redmine - project management software
4 # Copyright (C) 2006-2012 Jean-Philippe Lang
4 # Copyright (C) 2006-2012 Jean-Philippe Lang
5 #
5 #
6 # This program is free software; you can redistribute it and/or
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version.
9 # of the License, or (at your option) any later version.
10 #
10 #
11 # This program is distributed in the hope that it will be useful,
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
14 # GNU General Public License for more details.
15 #
15 #
16 # You should have received a copy of the GNU General Public License
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
19
20 module QueriesHelper
20 module QueriesHelper
21 def filters_options_for_select(query)
21 def filters_options_for_select(query)
22 options_for_select(filters_options(query))
22 options_for_select(filters_options(query))
23 end
23 end
24
24
25 def filters_options(query)
25 def filters_options(query)
26 options = [[]]
26 options = [[]]
27 sorted_options = query.available_filters.sort do |a, b|
27 sorted_options = query.available_filters.sort do |a, b|
28 ord = 0
28 ord = 0
29 if !(a[1][:order] == 20 && b[1][:order] == 20)
29 if !(a[1][:order] == 20 && b[1][:order] == 20)
30 ord = a[1][:order] <=> b[1][:order]
30 ord = a[1][:order] <=> b[1][:order]
31 else
31 else
32 cn = (CustomField::CUSTOM_FIELDS_NAMES.index(a[1][:field].class.name) <=>
32 cn = (CustomField::CUSTOM_FIELDS_NAMES.index(a[1][:field].class.name) <=>
33 CustomField::CUSTOM_FIELDS_NAMES.index(b[1][:field].class.name))
33 CustomField::CUSTOM_FIELDS_NAMES.index(b[1][:field].class.name))
34 if cn != 0
34 if cn != 0
35 ord = cn
35 ord = cn
36 else
36 else
37 f = (a[1][:field] <=> b[1][:field])
37 f = (a[1][:field] <=> b[1][:field])
38 if f != 0
38 if f != 0
39 ord = f
39 ord = f
40 else
40 else
41 # assigned_to or author
41 # assigned_to or author
42 ord = (a[0] <=> b[0])
42 ord = (a[0] <=> b[0])
43 end
43 end
44 end
44 end
45 end
45 end
46 ord
46 ord
47 end
47 end
48 options += sorted_options.map do |field, field_options|
48 options += sorted_options.map do |field, field_options|
49 [field_options[:name], field]
49 [field_options[:name], field]
50 end
50 end
51 end
51 end
52
52
53 def available_block_columns_tags(query)
53 def available_block_columns_tags(query)
54 tags = ''.html_safe
54 tags = ''.html_safe
55 query.available_block_columns.each do |column|
55 query.available_block_columns.each do |column|
56 tags << content_tag('label', check_box_tag('c[]', column.name.to_s, query.has_column?(column)) + " #{column.caption}", :class => 'inline')
56 tags << content_tag('label', check_box_tag('c[]', column.name.to_s, query.has_column?(column)) + " #{column.caption}", :class => 'inline')
57 end
57 end
58 tags
58 tags
59 end
59 end
60
60
61 def column_header(column)
61 def column_header(column)
62 column.sortable ? sort_header_tag(column.name.to_s, :caption => column.caption,
62 column.sortable ? sort_header_tag(column.name.to_s, :caption => column.caption,
63 :default_order => column.default_order) :
63 :default_order => column.default_order) :
64 content_tag('th', h(column.caption))
64 content_tag('th', h(column.caption))
65 end
65 end
66
66
67 def column_content(column, issue)
67 def column_content(column, issue)
68 value = column.value(issue)
68 value = column.value(issue)
69 if value.is_a?(Array)
69 if value.is_a?(Array)
70 value.collect {|v| column_value(column, issue, v)}.compact.join(', ').html_safe
70 value.collect {|v| column_value(column, issue, v)}.compact.join(', ').html_safe
71 else
71 else
72 column_value(column, issue, value)
72 column_value(column, issue, value)
73 end
73 end
74 end
74 end
75
75
76 def column_value(column, issue, value)
76 def column_value(column, issue, value)
77 case value.class.name
77 case value.class.name
78 when 'String'
78 when 'String'
79 if column.name == :subject
79 if column.name == :subject
80 link_to(h(value), :controller => 'issues', :action => 'show', :id => issue)
80 link_to(h(value), :controller => 'issues', :action => 'show', :id => issue)
81 elsif column.name == :description
81 elsif column.name == :description
82 issue.description? ? content_tag('div', textilizable(issue, :description), :class => "wiki") : ''
82 issue.description? ? content_tag('div', textilizable(issue, :description), :class => "wiki") : ''
83 else
83 else
84 h(value)
84 h(value)
85 end
85 end
86 when 'Time'
86 when 'Time'
87 format_time(value)
87 format_time(value)
88 when 'Date'
88 when 'Date'
89 format_date(value)
89 format_date(value)
90 when 'Fixnum', 'Float'
90 when 'Fixnum', 'Float'
91 if column.name == :done_ratio
91 if column.name == :done_ratio
92 progress_bar(value, :width => '80px')
92 progress_bar(value, :width => '80px')
93 elsif column.name == :spent_hours
93 elsif column.name == :spent_hours
94 sprintf "%.2f", value
94 sprintf "%.2f", value
95 elsif column.name == :hours
96 html_hours("%.2f" % value)
95 else
97 else
96 h(value.to_s)
98 h(value.to_s)
97 end
99 end
98 when 'User'
100 when 'User'
99 link_to_user value
101 link_to_user value
100 when 'Project'
102 when 'Project'
101 link_to_project value
103 link_to_project value
102 when 'Version'
104 when 'Version'
103 link_to(h(value), :controller => 'versions', :action => 'show', :id => value)
105 link_to(h(value), :controller => 'versions', :action => 'show', :id => value)
104 when 'TrueClass'
106 when 'TrueClass'
105 l(:general_text_Yes)
107 l(:general_text_Yes)
106 when 'FalseClass'
108 when 'FalseClass'
107 l(:general_text_No)
109 l(:general_text_No)
108 when 'Issue'
110 when 'Issue'
109 link_to_issue(value, :subject => false)
111 value.visible? ? link_to_issue(value) : "##{value.id}"
110 when 'IssueRelation'
112 when 'IssueRelation'
111 other = value.other_issue(issue)
113 other = value.other_issue(issue)
112 content_tag('span',
114 content_tag('span',
113 (l(value.label_for(issue)) + " " + link_to_issue(other, :subject => false, :tracker => false)).html_safe,
115 (l(value.label_for(issue)) + " " + link_to_issue(other, :subject => false, :tracker => false)).html_safe,
114 :class => value.css_classes_for(issue))
116 :class => value.css_classes_for(issue))
115 else
117 else
116 h(value)
118 h(value)
117 end
119 end
118 end
120 end
119
121
120 # Retrieve query from session or build a new query
122 # Retrieve query from session or build a new query
121 def retrieve_query
123 def retrieve_query
122 if !params[:query_id].blank?
124 if !params[:query_id].blank?
123 cond = "project_id IS NULL"
125 cond = "project_id IS NULL"
124 cond << " OR project_id = #{@project.id}" if @project
126 cond << " OR project_id = #{@project.id}" if @project
125 @query = IssueQuery.find(params[:query_id], :conditions => cond)
127 @query = IssueQuery.find(params[:query_id], :conditions => cond)
126 raise ::Unauthorized unless @query.visible?
128 raise ::Unauthorized unless @query.visible?
127 @query.project = @project
129 @query.project = @project
128 session[:query] = {:id => @query.id, :project_id => @query.project_id}
130 session[:query] = {:id => @query.id, :project_id => @query.project_id}
129 sort_clear
131 sort_clear
130 elsif api_request? || params[:set_filter] || session[:query].nil? || session[:query][:project_id] != (@project ? @project.id : nil)
132 elsif api_request? || params[:set_filter] || session[:query].nil? || session[:query][:project_id] != (@project ? @project.id : nil)
131 # Give it a name, required to be valid
133 # Give it a name, required to be valid
132 @query = IssueQuery.new(:name => "_")
134 @query = IssueQuery.new(:name => "_")
133 @query.project = @project
135 @query.project = @project
134 @query.build_from_params(params)
136 @query.build_from_params(params)
135 session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names}
137 session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names}
136 else
138 else
137 # retrieve from session
139 # retrieve from session
138 @query = IssueQuery.find_by_id(session[:query][:id]) if session[:query][:id]
140 @query = IssueQuery.find_by_id(session[:query][:id]) if session[:query][:id]
139 @query ||= IssueQuery.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
141 @query ||= IssueQuery.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
140 @query.project = @project
142 @query.project = @project
141 end
143 end
142 end
144 end
143
145
144 def retrieve_query_from_session
146 def retrieve_query_from_session
145 if session[:query]
147 if session[:query]
146 if session[:query][:id]
148 if session[:query][:id]
147 @query = IssueQuery.find_by_id(session[:query][:id])
149 @query = IssueQuery.find_by_id(session[:query][:id])
148 return unless @query
150 return unless @query
149 else
151 else
150 @query = IssueQuery.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
152 @query = IssueQuery.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
151 end
153 end
152 if session[:query].has_key?(:project_id)
154 if session[:query].has_key?(:project_id)
153 @query.project_id = session[:query][:project_id]
155 @query.project_id = session[:query][:project_id]
154 else
156 else
155 @query.project = @project
157 @query.project = @project
156 end
158 end
157 @query
159 @query
158 end
160 end
159 end
161 end
160 end
162 end
@@ -1,115 +1,122
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
3 #
3 #
4 # 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 class TimeEntryQuery < Query
18 class TimeEntryQuery < Query
19
19
20 self.queried_class = TimeEntry
20 self.queried_class = TimeEntry
21
21
22 self.available_columns = [
22 self.available_columns = [
23 QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true),
23 QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true),
24 QueryColumn.new(:spent_on, :sortable => ["#{TimeEntry.table_name}.spent_on", "#{TimeEntry.table_name}.created_on"]),
24 QueryColumn.new(:spent_on, :sortable => ["#{TimeEntry.table_name}.spent_on", "#{TimeEntry.table_name}.created_on"], :default_order => 'desc', :groupable => true),
25 QueryColumn.new(:user, :sortable => lambda {User.fields_for_order_statement}, :groupable => true),
25 QueryColumn.new(:user, :sortable => lambda {User.fields_for_order_statement}, :groupable => true),
26 QueryColumn.new(:activity, :sortable => "#{TimeEntryActivity.table_name}.position", :groupable => true),
26 QueryColumn.new(:activity, :sortable => "#{TimeEntryActivity.table_name}.position", :groupable => true),
27 QueryColumn.new(:issue, :sortable => "#{Issue.table_name}.id"),
27 QueryColumn.new(:issue, :sortable => "#{Issue.table_name}.id"),
28 QueryColumn.new(:comments),
28 QueryColumn.new(:comments),
29 QueryColumn.new(:hours, :sortable => "#{TimeEntry.table_name}.hours"),
29 QueryColumn.new(:hours, :sortable => "#{TimeEntry.table_name}.hours"),
30 ]
30 ]
31
31
32 def initialize(attributes=nil, *args)
32 def initialize(attributes=nil, *args)
33 super attributes
33 super attributes
34 self.filters ||= {}
34 self.filters ||= {}
35 add_filter('spent_on', '*') unless filters.present?
35 add_filter('spent_on', '*') unless filters.present?
36 end
36 end
37
37
38 def available_filters
38 def available_filters
39 return @available_filters if @available_filters
39 return @available_filters if @available_filters
40 @available_filters = {
40 @available_filters = {
41 "spent_on" => { :type => :date_past, :order => 0 },
41 "spent_on" => { :type => :date_past, :order => 0 },
42 "comments" => { :type => :text, :order => 5 },
42 "comments" => { :type => :text, :order => 5 },
43 "hours" => { :type => :float, :order => 6 }
43 "hours" => { :type => :float, :order => 6 }
44 }
44 }
45
45
46 principals = []
46 principals = []
47 if project
47 if project
48 principals += project.principals.sort
48 principals += project.principals.sort
49 unless project.leaf?
49 unless project.leaf?
50 subprojects = project.descendants.visible.all
50 subprojects = project.descendants.visible.all
51 if subprojects.any?
51 if subprojects.any?
52 @available_filters["subproject_id"] = {
52 @available_filters["subproject_id"] = {
53 :type => :list_subprojects, :order => 1,
53 :type => :list_subprojects, :order => 1,
54 :values => subprojects.collect{|s| [s.name, s.id.to_s] }
54 :values => subprojects.collect{|s| [s.name, s.id.to_s] }
55 }
55 }
56 principals += Principal.member_of(subprojects)
56 principals += Principal.member_of(subprojects)
57 end
57 end
58 end
58 end
59 else
59 else
60 if all_projects.any?
60 if all_projects.any?
61 # members of visible projects
61 # members of visible projects
62 principals += Principal.member_of(all_projects)
62 principals += Principal.member_of(all_projects)
63 # project filter
63 # project filter
64 project_values = []
64 project_values = []
65 if User.current.logged? && User.current.memberships.any?
65 if User.current.logged? && User.current.memberships.any?
66 project_values << ["<< #{l(:label_my_projects).downcase} >>", "mine"]
66 project_values << ["<< #{l(:label_my_projects).downcase} >>", "mine"]
67 end
67 end
68 project_values += all_projects_values
68 project_values += all_projects_values
69 @available_filters["project_id"] = {
69 @available_filters["project_id"] = {
70 :type => :list, :order => 1, :values => project_values
70 :type => :list, :order => 1, :values => project_values
71 } unless project_values.empty?
71 } unless project_values.empty?
72 end
72 end
73 end
73 end
74 principals.uniq!
74 principals.uniq!
75 principals.sort!
75 principals.sort!
76 users = principals.select {|p| p.is_a?(User)}
76 users = principals.select {|p| p.is_a?(User)}
77
77
78 users_values = []
78 users_values = []
79 users_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged?
79 users_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged?
80 users_values += users.collect{|s| [s.name, s.id.to_s] }
80 users_values += users.collect{|s| [s.name, s.id.to_s] }
81 @available_filters["user_id"] = {
81 @available_filters["user_id"] = {
82 :type => :list_optional, :order => 2, :values => users_values
82 :type => :list_optional, :order => 2, :values => users_values
83 } unless users_values.empty?
83 } unless users_values.empty?
84
84
85 activities = (project ? project.activities : TimeEntryActivity.shared.active)
85 activities = (project ? project.activities : TimeEntryActivity.shared.active)
86 @available_filters["activity_id"] = {
86 @available_filters["activity_id"] = {
87 :type => :list, :order => 3, :values => activities.map {|a| [a.name, a.id.to_s]}
87 :type => :list, :order => 3, :values => activities.map {|a| [a.name, a.id.to_s]}
88 } unless activities.empty?
88 } unless activities.empty?
89
89
90 add_custom_fields_filters(TimeEntryCustomField.where(:is_filter => true).all)
90 add_custom_fields_filters(TimeEntryCustomField.where(:is_filter => true).all)
91 add_associations_custom_fields_filters :project, :user
91 add_associations_custom_fields_filters :project, :user
92
92
93 @available_filters.each do |field, options|
93 @available_filters.each do |field, options|
94 options[:name] ||= l(options[:label] || "field_#{field}".gsub(/_id$/, ''))
94 options[:name] ||= l(options[:label] || "field_#{field}".gsub(/_id$/, ''))
95 end
95 end
96 @available_filters
96 @available_filters
97 end
97 end
98
98
99 def available_columns
100 return @available_columns if @available_columns
101 @available_columns = self.class.available_columns.dup
102 @available_columns += TimeEntryCustomField.all.map {|cf| QueryCustomFieldColumn.new(cf) }
103 @available_columns
104 end
105
99 def default_columns_names
106 def default_columns_names
100 @default_columns_names ||= [:project, :spent_on, :user, :activity, :issue, :comments, :hours]
107 @default_columns_names ||= [:project, :spent_on, :user, :activity, :issue, :comments, :hours]
101 end
108 end
102
109
103 # Accepts :from/:to params as shortcut filters
110 # Accepts :from/:to params as shortcut filters
104 def build_from_params(params)
111 def build_from_params(params)
105 super
112 super
106 if params[:from].present? && params[:to].present?
113 if params[:from].present? && params[:to].present?
107 add_filter('spent_on', '><', [params[:from], params[:to]])
114 add_filter('spent_on', '><', [params[:from], params[:to]])
108 elsif params[:from].present?
115 elsif params[:from].present?
109 add_filter('spent_on', '>=', [params[:from]])
116 add_filter('spent_on', '>=', [params[:from]])
110 elsif params[:to].present?
117 elsif params[:to].present?
111 add_filter('spent_on', '<=', [params[:to]])
118 add_filter('spent_on', '<=', [params[:to]])
112 end
119 end
113 self
120 self
114 end
121 end
115 end
122 end
@@ -1,23 +1,34
1 <div id="query_form_content" class="hide-when-print">
1 <div id="query_form_content" class="hide-when-print">
2 <fieldset id="filters" class="collapsible <%= @query.new_record? ? "" : "collapsed" %>">
2 <fieldset id="filters" class="collapsible <%= @query.new_record? ? "" : "collapsed" %>">
3 <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
3 <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
4 <div style="<%= @query.new_record? ? "" : "display: none;" %>">
4 <div style="<%= @query.new_record? ? "" : "display: none;" %>">
5 <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
5 <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
6 </div>
6 </div>
7 </fieldset>
7 </fieldset>
8 <fieldset class="collapsible collapsed">
9 <legend onclick="toggleFieldset(this);"><%= l(:label_options) %></legend>
10 <div style="display: none;">
11 <table>
12 <tr>
13 <td><%= l(:field_column_names) %></td>
14 <td><%= render :partial => 'queries/columns', :locals => {:query => @query} %></td>
15 </tr>
16 </table>
17 </div>
18 </fieldset>
8 </div>
19 </div>
9
20
10 <p class="buttons hide-when-print">
21 <p class="buttons hide-when-print">
11 <%= link_to_function l(:button_apply), '$("#query_form").submit()', :class => 'icon icon-checked' %>
22 <%= link_to_function l(:button_apply), 'submit_query_form("query_form")', :class => 'icon icon-checked' %>
12 <%= link_to l(:button_clear), {:project_id => @project, :issue_id => @issue}, :class => 'icon icon-reload' %>
23 <%= link_to l(:button_clear), {:project_id => @project, :issue_id => @issue}, :class => 'icon icon-reload' %>
13 </p>
24 </p>
14
25
15 <div class="tabs">
26 <div class="tabs">
16 <% query_params = params.slice(:f, :op, :v, :sort) %>
27 <% query_params = params.slice(:f, :op, :v, :sort) %>
17 <ul>
28 <ul>
18 <li><%= link_to(l(:label_details), query_params.merge({:controller => 'timelog', :action => 'index', :project_id => @project, :issue_id => @issue }),
29 <li><%= link_to(l(:label_details), query_params.merge({:controller => 'timelog', :action => 'index', :project_id => @project, :issue_id => @issue }),
19 :class => (action_name == 'index' ? 'selected' : nil)) %></li>
30 :class => (action_name == 'index' ? 'selected' : nil)) %></li>
20 <li><%= link_to(l(:label_report), query_params.merge({:controller => 'timelog', :action => 'report', :project_id => @project, :issue_id => @issue}),
31 <li><%= link_to(l(:label_report), query_params.merge({:controller => 'timelog', :action => 'report', :project_id => @project, :issue_id => @issue}),
21 :class => (action_name == 'report' ? 'selected' : nil)) %></li>
32 :class => (action_name == 'report' ? 'selected' : nil)) %></li>
22 </ul>
33 </ul>
23 </div>
34 </div>
@@ -1,55 +1,41
1 <%= form_tag({}) do -%>
1 <%= form_tag({}) do -%>
2 <%= hidden_field_tag 'back_url', url_for(params) %>
2 <%= hidden_field_tag 'back_url', url_for(params) %>
3 <div class="autoscroll">
3 <div class="autoscroll">
4 <table class="list time-entries">
4 <table class="list time-entries">
5 <thead>
5 <thead>
6 <tr>
6 <tr>
7 <th class="checkbox hide-when-print">
7 <th class="checkbox hide-when-print">
8 <%= link_to image_tag('toggle_check.png'),
8 <%= link_to image_tag('toggle_check.png'),
9 {},
9 {},
10 :onclick => 'toggleIssuesSelection(this); return false;',
10 :onclick => 'toggleIssuesSelection(this); return false;',
11 :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
11 :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
12 </th>
12 </th>
13 <%= sort_header_tag('spent_on', :caption => l(:label_date), :default_order => 'desc') %>
13 <% @query.inline_columns.each do |column| %>
14 <%= sort_header_tag('user', :caption => l(:label_user)) %>
14 <%= column_header(column) %>
15 <%= sort_header_tag('activity', :caption => l(:label_activity)) %>
15 <% end %>
16 <%= sort_header_tag('project', :caption => l(:label_project)) %>
16 <th></th>
17 <%= sort_header_tag('issue', :caption => l(:label_issue), :default_order => 'desc') %>
17 </tr>
18 <th><%= l(:field_comments) %></th>
19 <%= sort_header_tag('hours', :caption => l(:field_hours)) %>
20 <th></th>
21 </tr>
22 </thead>
18 </thead>
23 <tbody>
19 <tbody>
24 <% entries.each do |entry| -%>
20 <% entries.each do |entry| -%>
25 <tr class="time-entry <%= cycle("odd", "even") %> hascontextmenu">
21 <tr class="time-entry <%= cycle("odd", "even") %> hascontextmenu">
26 <td class="checkbox hide-when-print"><%= check_box_tag("ids[]", entry.id, false, :id => nil) %></td>
22 <td class="checkbox hide-when-print"><%= check_box_tag("ids[]", entry.id, false, :id => nil) %></td>
27 <td class="spent_on"><%= format_date(entry.spent_on) %></td>
23 <%= raw @query.inline_columns.map {|column| "<td class=\"#{column.css_classes}\">#{column_content(column, entry)}</td>"}.join %>
28 <td class="user"><%= link_to_user(entry.user) %></td>
24 <td align="center">
29 <td class="activity"><%=h entry.activity %></td>
25 <% if entry.editable_by?(User.current) -%>
30 <td class="project"><%= link_to_project(entry.project) %></td>
26 <%= link_to image_tag('edit.png'), edit_time_entry_path(entry),
31 <td class="subject">
27 :title => l(:button_edit) %>
32 <% if entry.issue -%>
28 <%= link_to image_tag('delete.png'), time_entry_path(entry),
33 <%= entry.issue.visible? ? link_to_issue(entry.issue, :truncate => 50) : "##{entry.issue.id}" -%>
29 :data => {:confirm => l(:text_are_you_sure)},
34 <% end -%>
30 :method => :delete,
35 </td>
31 :title => l(:button_delete) %>
36 <td class="comments"><%=h entry.comments %></td>
32 <% end -%>
37 <td class="hours"><%= html_hours("%.2f" % entry.hours) %></td>
33 </td>
38 <td align="center">
34 </tr>
39 <% if entry.editable_by?(User.current) -%>
40 <%= link_to image_tag('edit.png'), edit_time_entry_path(entry),
41 :title => l(:button_edit) %>
42 <%= link_to image_tag('delete.png'), time_entry_path(entry),
43 :data => {:confirm => l(:text_are_you_sure)},
44 :method => :delete,
45 :title => l(:button_delete) %>
46 <% end -%>
47 </td>
48 </tr>
49 <% end -%>
35 <% end -%>
50 </tbody>
36 </tbody>
51 </table>
37 </table>
52 </div>
38 </div>
53 <% end -%>
39 <% end -%>
54
40
55 <%= context_menu time_entries_context_menu_path %>
41 <%= context_menu time_entries_context_menu_path %>
@@ -1,1140 +1,1140
1 html {overflow-y:scroll;}
1 html {overflow-y:scroll;}
2 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
2 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
3
3
4 h1, h2, h3, h4 {font-family: "Trebuchet MS", Verdana, sans-serif;padding: 2px 10px 1px 0px;margin: 0 0 10px 0;}
4 h1, h2, h3, h4 {font-family: "Trebuchet MS", Verdana, sans-serif;padding: 2px 10px 1px 0px;margin: 0 0 10px 0;}
5 #content h1, h2, h3, h4 {color: #555;}
5 #content h1, h2, h3, h4 {color: #555;}
6 h2, .wiki h1 {font-size: 20px;}
6 h2, .wiki h1 {font-size: 20px;}
7 h3, .wiki h2 {font-size: 16px;}
7 h3, .wiki h2 {font-size: 16px;}
8 h4, .wiki h3 {font-size: 13px;}
8 h4, .wiki h3 {font-size: 13px;}
9 h4 {border-bottom: 1px dotted #bbb;}
9 h4 {border-bottom: 1px dotted #bbb;}
10
10
11 /***** Layout *****/
11 /***** Layout *****/
12 #wrapper {background: white;}
12 #wrapper {background: white;}
13
13
14 #top-menu {background: #3E5B76; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
14 #top-menu {background: #3E5B76; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
15 #top-menu ul {margin: 0; padding: 0;}
15 #top-menu ul {margin: 0; padding: 0;}
16 #top-menu li {
16 #top-menu li {
17 float:left;
17 float:left;
18 list-style-type:none;
18 list-style-type:none;
19 margin: 0px 0px 0px 0px;
19 margin: 0px 0px 0px 0px;
20 padding: 0px 0px 0px 0px;
20 padding: 0px 0px 0px 0px;
21 white-space:nowrap;
21 white-space:nowrap;
22 }
22 }
23 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
23 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
24 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
24 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
25
25
26 #account {float:right;}
26 #account {float:right;}
27
27
28 #header {height:5.3em;margin:0;background-color:#628DB6;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
28 #header {height:5.3em;margin:0;background-color:#628DB6;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
29 #header a {color:#f8f8f8;}
29 #header a {color:#f8f8f8;}
30 #header h1 a.ancestor { font-size: 80%; }
30 #header h1 a.ancestor { font-size: 80%; }
31 #quick-search {float:right;}
31 #quick-search {float:right;}
32
32
33 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
33 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
34 #main-menu ul {margin: 0; padding: 0;}
34 #main-menu ul {margin: 0; padding: 0;}
35 #main-menu li {
35 #main-menu li {
36 float:left;
36 float:left;
37 list-style-type:none;
37 list-style-type:none;
38 margin: 0px 2px 0px 0px;
38 margin: 0px 2px 0px 0px;
39 padding: 0px 0px 0px 0px;
39 padding: 0px 0px 0px 0px;
40 white-space:nowrap;
40 white-space:nowrap;
41 }
41 }
42 #main-menu li a {
42 #main-menu li a {
43 display: block;
43 display: block;
44 color: #fff;
44 color: #fff;
45 text-decoration: none;
45 text-decoration: none;
46 font-weight: bold;
46 font-weight: bold;
47 margin: 0;
47 margin: 0;
48 padding: 4px 10px 4px 10px;
48 padding: 4px 10px 4px 10px;
49 }
49 }
50 #main-menu li a:hover {background:#759FCF; color:#fff;}
50 #main-menu li a:hover {background:#759FCF; color:#fff;}
51 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
51 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
52
52
53 #admin-menu ul {margin: 0; padding: 0;}
53 #admin-menu ul {margin: 0; padding: 0;}
54 #admin-menu li {margin: 0; padding: 0 0 6px 0; list-style-type:none;}
54 #admin-menu li {margin: 0; padding: 0 0 6px 0; list-style-type:none;}
55
55
56 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
56 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
57 #admin-menu a.projects { background-image: url(../images/projects.png); }
57 #admin-menu a.projects { background-image: url(../images/projects.png); }
58 #admin-menu a.users { background-image: url(../images/user.png); }
58 #admin-menu a.users { background-image: url(../images/user.png); }
59 #admin-menu a.groups { background-image: url(../images/group.png); }
59 #admin-menu a.groups { background-image: url(../images/group.png); }
60 #admin-menu a.roles { background-image: url(../images/database_key.png); }
60 #admin-menu a.roles { background-image: url(../images/database_key.png); }
61 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
61 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
62 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
62 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
63 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
63 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
64 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
64 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
65 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
65 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
66 #admin-menu a.settings { background-image: url(../images/changeset.png); }
66 #admin-menu a.settings { background-image: url(../images/changeset.png); }
67 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
67 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
68 #admin-menu a.info { background-image: url(../images/help.png); }
68 #admin-menu a.info { background-image: url(../images/help.png); }
69 #admin-menu a.server_authentication { background-image: url(../images/server_key.png); }
69 #admin-menu a.server_authentication { background-image: url(../images/server_key.png); }
70
70
71 #main {background-color:#EEEEEE;}
71 #main {background-color:#EEEEEE;}
72
72
73 #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;}
73 #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;}
74 * html #sidebar{ width: 22%; }
74 * html #sidebar{ width: 22%; }
75 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
75 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
76 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
76 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
77 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
77 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
78 #sidebar .contextual { margin-right: 1em; }
78 #sidebar .contextual { margin-right: 1em; }
79
79
80 #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
80 #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
81 * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
81 * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
82 html>body #content { min-height: 600px; }
82 html>body #content { min-height: 600px; }
83 * html body #content { height: 600px; } /* IE */
83 * html body #content { height: 600px; } /* IE */
84
84
85 #main.nosidebar #sidebar{ display: none; }
85 #main.nosidebar #sidebar{ display: none; }
86 #main.nosidebar #content{ width: auto; border-right: 0; }
86 #main.nosidebar #content{ width: auto; border-right: 0; }
87
87
88 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
88 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
89
89
90 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
90 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
91 #login-form table td {padding: 6px;}
91 #login-form table td {padding: 6px;}
92 #login-form label {font-weight: bold;}
92 #login-form label {font-weight: bold;}
93 #login-form input#username, #login-form input#password { width: 300px; }
93 #login-form input#username, #login-form input#password { width: 300px; }
94
94
95 div.modal { border-radius:5px; background:#fff; z-index:50; padding:4px;}
95 div.modal { border-radius:5px; background:#fff; z-index:50; padding:4px;}
96 div.modal h3.title {display:none;}
96 div.modal h3.title {display:none;}
97 div.modal p.buttons {text-align:right; margin-bottom:0;}
97 div.modal p.buttons {text-align:right; margin-bottom:0;}
98
98
99 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
99 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
100
100
101 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
101 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
102
102
103 /***** Links *****/
103 /***** Links *****/
104 a, a:link, a:visited{ color: #169; text-decoration: none; }
104 a, a:link, a:visited{ color: #169; text-decoration: none; }
105 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
105 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
106 a img{ border: 0; }
106 a img{ border: 0; }
107
107
108 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
108 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
109 a.project.closed, a.project.closed:link, a.project.closed:visited { color: #999; }
109 a.project.closed, a.project.closed:link, a.project.closed:visited { color: #999; }
110 a.user.locked, a.user.locked:link, a.user.locked:visited {color: #999;}
110 a.user.locked, a.user.locked:link, a.user.locked:visited {color: #999;}
111
111
112 #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px;}
112 #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px;}
113 #sidebar a.selected:hover {text-decoration:none;}
113 #sidebar a.selected:hover {text-decoration:none;}
114 #admin-menu a {line-height:1.7em;}
114 #admin-menu a {line-height:1.7em;}
115 #admin-menu a.selected {padding-left: 20px !important; background-position: 2px 40%;}
115 #admin-menu a.selected {padding-left: 20px !important; background-position: 2px 40%;}
116
116
117 a.collapsible {padding-left: 12px; background: url(../images/arrow_expanded.png) no-repeat -3px 40%;}
117 a.collapsible {padding-left: 12px; background: url(../images/arrow_expanded.png) no-repeat -3px 40%;}
118 a.collapsible.collapsed {background: url(../images/arrow_collapsed.png) no-repeat -5px 40%;}
118 a.collapsible.collapsed {background: url(../images/arrow_collapsed.png) no-repeat -5px 40%;}
119
119
120 a#toggle-completed-versions {color:#999;}
120 a#toggle-completed-versions {color:#999;}
121 /***** Tables *****/
121 /***** Tables *****/
122 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
122 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
123 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
123 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
124 table.list td { vertical-align: top; padding-right:10px; }
124 table.list td { vertical-align: top; padding-right:10px; }
125 table.list td.id { width: 2%; text-align: center;}
125 table.list td.id { width: 2%; text-align: center;}
126 table.list td.checkbox { width: 15px; padding: 2px 0 0 0; }
126 table.list td.checkbox { width: 15px; padding: 2px 0 0 0; }
127 table.list td.checkbox input {padding:0px;}
127 table.list td.checkbox input {padding:0px;}
128 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
128 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
129 table.list td.buttons a { padding-right: 0.6em; }
129 table.list td.buttons a { padding-right: 0.6em; }
130 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
130 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
131
131
132 tr.project td.name a { white-space:nowrap; }
132 tr.project td.name a { white-space:nowrap; }
133 tr.project.closed, tr.project.archived { color: #aaa; }
133 tr.project.closed, tr.project.archived { color: #aaa; }
134 tr.project.closed a, tr.project.archived a { color: #aaa; }
134 tr.project.closed a, tr.project.archived a { color: #aaa; }
135
135
136 tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
136 tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
137 tr.project.idnt-1 td.name {padding-left: 0.5em;}
137 tr.project.idnt-1 td.name {padding-left: 0.5em;}
138 tr.project.idnt-2 td.name {padding-left: 2em;}
138 tr.project.idnt-2 td.name {padding-left: 2em;}
139 tr.project.idnt-3 td.name {padding-left: 3.5em;}
139 tr.project.idnt-3 td.name {padding-left: 3.5em;}
140 tr.project.idnt-4 td.name {padding-left: 5em;}
140 tr.project.idnt-4 td.name {padding-left: 5em;}
141 tr.project.idnt-5 td.name {padding-left: 6.5em;}
141 tr.project.idnt-5 td.name {padding-left: 6.5em;}
142 tr.project.idnt-6 td.name {padding-left: 8em;}
142 tr.project.idnt-6 td.name {padding-left: 8em;}
143 tr.project.idnt-7 td.name {padding-left: 9.5em;}
143 tr.project.idnt-7 td.name {padding-left: 9.5em;}
144 tr.project.idnt-8 td.name {padding-left: 11em;}
144 tr.project.idnt-8 td.name {padding-left: 11em;}
145 tr.project.idnt-9 td.name {padding-left: 12.5em;}
145 tr.project.idnt-9 td.name {padding-left: 12.5em;}
146
146
147 tr.issue { text-align: center; white-space: nowrap; }
147 tr.issue { text-align: center; white-space: nowrap; }
148 tr.issue td.subject, tr.issue td.category, td.assigned_to, tr.issue td.string, tr.issue td.text, tr.issue td.relations { white-space: normal; }
148 tr.issue td.subject, tr.issue td.category, td.assigned_to, tr.issue td.string, tr.issue td.text, tr.issue td.relations { white-space: normal; }
149 tr.issue td.subject, tr.issue td.relations { text-align: left; }
149 tr.issue td.subject, tr.issue td.relations { text-align: left; }
150 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
150 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
151 tr.issue td.relations span {white-space: nowrap;}
151 tr.issue td.relations span {white-space: nowrap;}
152 table.issues td.description {color:#777; font-size:90%; padding:4px 4px 4px 24px; text-align:left; white-space:normal;}
152 table.issues td.description {color:#777; font-size:90%; padding:4px 4px 4px 24px; text-align:left; white-space:normal;}
153 table.issues td.description pre {white-space:normal;}
153 table.issues td.description pre {white-space:normal;}
154
154
155 tr.issue.idnt td.subject a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
155 tr.issue.idnt td.subject a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
156 tr.issue.idnt-1 td.subject {padding-left: 0.5em;}
156 tr.issue.idnt-1 td.subject {padding-left: 0.5em;}
157 tr.issue.idnt-2 td.subject {padding-left: 2em;}
157 tr.issue.idnt-2 td.subject {padding-left: 2em;}
158 tr.issue.idnt-3 td.subject {padding-left: 3.5em;}
158 tr.issue.idnt-3 td.subject {padding-left: 3.5em;}
159 tr.issue.idnt-4 td.subject {padding-left: 5em;}
159 tr.issue.idnt-4 td.subject {padding-left: 5em;}
160 tr.issue.idnt-5 td.subject {padding-left: 6.5em;}
160 tr.issue.idnt-5 td.subject {padding-left: 6.5em;}
161 tr.issue.idnt-6 td.subject {padding-left: 8em;}
161 tr.issue.idnt-6 td.subject {padding-left: 8em;}
162 tr.issue.idnt-7 td.subject {padding-left: 9.5em;}
162 tr.issue.idnt-7 td.subject {padding-left: 9.5em;}
163 tr.issue.idnt-8 td.subject {padding-left: 11em;}
163 tr.issue.idnt-8 td.subject {padding-left: 11em;}
164 tr.issue.idnt-9 td.subject {padding-left: 12.5em;}
164 tr.issue.idnt-9 td.subject {padding-left: 12.5em;}
165
165
166 tr.entry { border: 1px solid #f8f8f8; }
166 tr.entry { border: 1px solid #f8f8f8; }
167 tr.entry td { white-space: nowrap; }
167 tr.entry td { white-space: nowrap; }
168 tr.entry td.filename { width: 30%; }
168 tr.entry td.filename { width: 30%; }
169 tr.entry td.filename_no_report { width: 70%; }
169 tr.entry td.filename_no_report { width: 70%; }
170 tr.entry td.size { text-align: right; font-size: 90%; }
170 tr.entry td.size { text-align: right; font-size: 90%; }
171 tr.entry td.revision, tr.entry td.author { text-align: center; }
171 tr.entry td.revision, tr.entry td.author { text-align: center; }
172 tr.entry td.age { text-align: right; }
172 tr.entry td.age { text-align: right; }
173 tr.entry.file td.filename a { margin-left: 16px; }
173 tr.entry.file td.filename a { margin-left: 16px; }
174 tr.entry.file td.filename_no_report a { margin-left: 16px; }
174 tr.entry.file td.filename_no_report a { margin-left: 16px; }
175
175
176 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
176 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
177 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
177 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
178
178
179 tr.changeset { height: 20px }
179 tr.changeset { height: 20px }
180 tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; }
180 tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; }
181 tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; }
181 tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; }
182 tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;}
182 tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;}
183 tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;}
183 tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;}
184
184
185 table.files tr.file td { text-align: center; }
185 table.files tr.file td { text-align: center; }
186 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
186 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
187 table.files tr.file td.digest { font-size: 80%; }
187 table.files tr.file td.digest { font-size: 80%; }
188
188
189 table.members td.roles, table.memberships td.roles { width: 45%; }
189 table.members td.roles, table.memberships td.roles { width: 45%; }
190
190
191 tr.message { height: 2.6em; }
191 tr.message { height: 2.6em; }
192 tr.message td.subject { padding-left: 20px; }
192 tr.message td.subject { padding-left: 20px; }
193 tr.message td.created_on { white-space: nowrap; }
193 tr.message td.created_on { white-space: nowrap; }
194 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
194 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
195 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
195 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
196 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
196 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
197
197
198 tr.version.closed, tr.version.closed a { color: #999; }
198 tr.version.closed, tr.version.closed a { color: #999; }
199 tr.version td.name { padding-left: 20px; }
199 tr.version td.name { padding-left: 20px; }
200 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
200 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
201 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; }
201 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; }
202
202
203 tr.user td { width:13%; }
203 tr.user td { width:13%; }
204 tr.user td.email { width:18%; }
204 tr.user td.email { width:18%; }
205 tr.user td { white-space: nowrap; }
205 tr.user td { white-space: nowrap; }
206 tr.user.locked, tr.user.registered { color: #aaa; }
206 tr.user.locked, tr.user.registered { color: #aaa; }
207 tr.user.locked a, tr.user.registered a { color: #aaa; }
207 tr.user.locked a, tr.user.registered a { color: #aaa; }
208
208
209 table.permissions td.role {color:#999;font-size:90%;font-weight:normal !important;text-align:center;vertical-align:bottom;}
209 table.permissions td.role {color:#999;font-size:90%;font-weight:normal !important;text-align:center;vertical-align:bottom;}
210
210
211 tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;}
211 tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;}
212
212
213 tr.time-entry { text-align: center; white-space: nowrap; }
213 tr.time-entry { text-align: center; white-space: nowrap; }
214 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
214 tr.time-entry td.issue, tr.time-entry td.comments { text-align: left; white-space: normal; }
215 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
215 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
216 td.hours .hours-dec { font-size: 0.9em; }
216 td.hours .hours-dec { font-size: 0.9em; }
217
217
218 table.plugins td { vertical-align: middle; }
218 table.plugins td { vertical-align: middle; }
219 table.plugins td.configure { text-align: right; padding-right: 1em; }
219 table.plugins td.configure { text-align: right; padding-right: 1em; }
220 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
220 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
221 table.plugins span.description { display: block; font-size: 0.9em; }
221 table.plugins span.description { display: block; font-size: 0.9em; }
222 table.plugins span.url { display: block; font-size: 0.9em; }
222 table.plugins span.url { display: block; font-size: 0.9em; }
223
223
224 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
224 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
225 table.list tbody tr.group span.count {position:relative; top:-1px; color:#fff; font-size:10px; background:#9DB9D5; padding:0px 6px 1px 6px; border-radius:3px; margin-left:4px;}
225 table.list tbody tr.group span.count {position:relative; top:-1px; color:#fff; font-size:10px; background:#9DB9D5; padding:0px 6px 1px 6px; border-radius:3px; margin-left:4px;}
226 tr.group a.toggle-all { color: #aaa; font-size: 80%; font-weight: normal; display:none;}
226 tr.group a.toggle-all { color: #aaa; font-size: 80%; font-weight: normal; display:none;}
227 tr.group:hover a.toggle-all { display:inline;}
227 tr.group:hover a.toggle-all { display:inline;}
228 a.toggle-all:hover {text-decoration:none;}
228 a.toggle-all:hover {text-decoration:none;}
229
229
230 table.list tbody tr:hover { background-color:#ffffdd; }
230 table.list tbody tr:hover { background-color:#ffffdd; }
231 table.list tbody tr.group:hover { background-color:inherit; }
231 table.list tbody tr.group:hover { background-color:inherit; }
232 table td {padding:2px;}
232 table td {padding:2px;}
233 table p {margin:0;}
233 table p {margin:0;}
234 .odd {background-color:#f6f7f8;}
234 .odd {background-color:#f6f7f8;}
235 .even {background-color: #fff;}
235 .even {background-color: #fff;}
236
236
237 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
237 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
238 a.sort.asc { background-image: url(../images/sort_asc.png); }
238 a.sort.asc { background-image: url(../images/sort_asc.png); }
239 a.sort.desc { background-image: url(../images/sort_desc.png); }
239 a.sort.desc { background-image: url(../images/sort_desc.png); }
240
240
241 table.attributes { width: 100% }
241 table.attributes { width: 100% }
242 table.attributes th { vertical-align: top; text-align: left; }
242 table.attributes th { vertical-align: top; text-align: left; }
243 table.attributes td { vertical-align: top; }
243 table.attributes td { vertical-align: top; }
244
244
245 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
245 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
246 table.boards td.topic-count, table.boards td.message-count {text-align:center;}
246 table.boards td.topic-count, table.boards td.message-count {text-align:center;}
247 table.boards td.last-message {font-size:80%;}
247 table.boards td.last-message {font-size:80%;}
248
248
249 table.messages td.author, table.messages td.created_on, table.messages td.reply-count {text-align:center;}
249 table.messages td.author, table.messages td.created_on, table.messages td.reply-count {text-align:center;}
250
250
251 table.query-columns {
251 table.query-columns {
252 border-collapse: collapse;
252 border-collapse: collapse;
253 border: 0;
253 border: 0;
254 }
254 }
255
255
256 table.query-columns td.buttons {
256 table.query-columns td.buttons {
257 vertical-align: middle;
257 vertical-align: middle;
258 text-align: center;
258 text-align: center;
259 }
259 }
260
260
261 td.center {text-align:center;}
261 td.center {text-align:center;}
262
262
263 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
263 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
264
264
265 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
265 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
266 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
266 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
267 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
267 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
268 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
268 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
269
269
270 #watchers ul {margin: 0; padding: 0;}
270 #watchers ul {margin: 0; padding: 0;}
271 #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
271 #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
272 #watchers select {width: 95%; display: block;}
272 #watchers select {width: 95%; display: block;}
273 #watchers a.delete {opacity: 0.4;}
273 #watchers a.delete {opacity: 0.4;}
274 #watchers a.delete:hover {opacity: 1;}
274 #watchers a.delete:hover {opacity: 1;}
275 #watchers img.gravatar {margin: 0 4px 2px 0;}
275 #watchers img.gravatar {margin: 0 4px 2px 0;}
276
276
277 span#watchers_inputs {overflow:auto; display:block;}
277 span#watchers_inputs {overflow:auto; display:block;}
278 span.search_for_watchers {display:block;}
278 span.search_for_watchers {display:block;}
279 span.search_for_watchers, span.add_attachment {font-size:80%; line-height:2.5em;}
279 span.search_for_watchers, span.add_attachment {font-size:80%; line-height:2.5em;}
280 span.search_for_watchers a, span.add_attachment a {padding-left:16px; background: url(../images/bullet_add.png) no-repeat 0 50%; }
280 span.search_for_watchers a, span.add_attachment a {padding-left:16px; background: url(../images/bullet_add.png) no-repeat 0 50%; }
281
281
282
282
283 .highlight { background-color: #FCFD8D;}
283 .highlight { background-color: #FCFD8D;}
284 .highlight.token-1 { background-color: #faa;}
284 .highlight.token-1 { background-color: #faa;}
285 .highlight.token-2 { background-color: #afa;}
285 .highlight.token-2 { background-color: #afa;}
286 .highlight.token-3 { background-color: #aaf;}
286 .highlight.token-3 { background-color: #aaf;}
287
287
288 .box{
288 .box{
289 padding:6px;
289 padding:6px;
290 margin-bottom: 10px;
290 margin-bottom: 10px;
291 background-color:#f6f6f6;
291 background-color:#f6f6f6;
292 color:#505050;
292 color:#505050;
293 line-height:1.5em;
293 line-height:1.5em;
294 border: 1px solid #e4e4e4;
294 border: 1px solid #e4e4e4;
295 }
295 }
296
296
297 div.square {
297 div.square {
298 border: 1px solid #999;
298 border: 1px solid #999;
299 float: left;
299 float: left;
300 margin: .3em .4em 0 .4em;
300 margin: .3em .4em 0 .4em;
301 overflow: hidden;
301 overflow: hidden;
302 width: .6em; height: .6em;
302 width: .6em; height: .6em;
303 }
303 }
304 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
304 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
305 .contextual input, .contextual select {font-size:0.9em;}
305 .contextual input, .contextual select {font-size:0.9em;}
306 .message .contextual { margin-top: 0; }
306 .message .contextual { margin-top: 0; }
307
307
308 .splitcontent {overflow:auto;}
308 .splitcontent {overflow:auto;}
309 .splitcontentleft{float:left; width:49%;}
309 .splitcontentleft{float:left; width:49%;}
310 .splitcontentright{float:right; width:49%;}
310 .splitcontentright{float:right; width:49%;}
311 form {display: inline;}
311 form {display: inline;}
312 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
312 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
313 fieldset {border: 1px solid #e4e4e4; margin:0;}
313 fieldset {border: 1px solid #e4e4e4; margin:0;}
314 legend {color: #484848;}
314 legend {color: #484848;}
315 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
315 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
316 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
316 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
317 blockquote blockquote { margin-left: 0;}
317 blockquote blockquote { margin-left: 0;}
318 acronym { border-bottom: 1px dotted; cursor: help; }
318 acronym { border-bottom: 1px dotted; cursor: help; }
319 textarea.wiki-edit {width:99%; resize:vertical;}
319 textarea.wiki-edit {width:99%; resize:vertical;}
320 li p {margin-top: 0;}
320 li p {margin-top: 0;}
321 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
321 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
322 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
322 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
323 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
323 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
324 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
324 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
325
325
326 div.issue div.subject div div { padding-left: 16px; }
326 div.issue div.subject div div { padding-left: 16px; }
327 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
327 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
328 div.issue div.subject>div>p { margin-top: 0.5em; }
328 div.issue div.subject>div>p { margin-top: 0.5em; }
329 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
329 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
330 div.issue span.private { position:relative; bottom: 2px; text-transform: uppercase; background: #d22; color: #fff; font-weight:bold; padding: 0px 2px 0px 2px; font-size: 60%; margin-right: 2px; border-radius: 2px;}
330 div.issue span.private { position:relative; bottom: 2px; text-transform: uppercase; background: #d22; color: #fff; font-weight:bold; padding: 0px 2px 0px 2px; font-size: 60%; margin-right: 2px; border-radius: 2px;}
331 div.issue .next-prev-links {color:#999;}
331 div.issue .next-prev-links {color:#999;}
332 div.issue table.attributes th {width:22%;}
332 div.issue table.attributes th {width:22%;}
333 div.issue table.attributes td {width:28%;}
333 div.issue table.attributes td {width:28%;}
334
334
335 #issue_tree table.issues, #relations table.issues { border: 0; }
335 #issue_tree table.issues, #relations table.issues { border: 0; }
336 #issue_tree td.checkbox, #relations td.checkbox {display:none;}
336 #issue_tree td.checkbox, #relations td.checkbox {display:none;}
337 #relations td.buttons {padding:0;}
337 #relations td.buttons {padding:0;}
338
338
339 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
339 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
340 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
340 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
341 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
341 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
342
342
343 fieldset#date-range p { margin: 2px 0 2px 0; }
343 fieldset#date-range p { margin: 2px 0 2px 0; }
344 fieldset#filters table { border-collapse: collapse; }
344 fieldset#filters table { border-collapse: collapse; }
345 fieldset#filters table td { padding: 0; vertical-align: middle; }
345 fieldset#filters table td { padding: 0; vertical-align: middle; }
346 fieldset#filters tr.filter { height: 2.1em; }
346 fieldset#filters tr.filter { height: 2.1em; }
347 fieldset#filters td.field { width:230px; }
347 fieldset#filters td.field { width:230px; }
348 fieldset#filters td.operator { width:180px; }
348 fieldset#filters td.operator { width:180px; }
349 fieldset#filters td.operator select {max-width:170px;}
349 fieldset#filters td.operator select {max-width:170px;}
350 fieldset#filters td.values { white-space:nowrap; }
350 fieldset#filters td.values { white-space:nowrap; }
351 fieldset#filters td.values select {min-width:130px;}
351 fieldset#filters td.values select {min-width:130px;}
352 fieldset#filters td.values input {height:1em;}
352 fieldset#filters td.values input {height:1em;}
353 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
353 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
354
354
355 .toggle-multiselect {background: url(../images/bullet_toggle_plus.png) no-repeat 0% 40%; padding-left:8px; margin-left:0; cursor:pointer;}
355 .toggle-multiselect {background: url(../images/bullet_toggle_plus.png) no-repeat 0% 40%; padding-left:8px; margin-left:0; cursor:pointer;}
356 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
356 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
357
357
358 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
358 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
359 div#issue-changesets div.changeset { padding: 4px;}
359 div#issue-changesets div.changeset { padding: 4px;}
360 div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
360 div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
361 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
361 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
362
362
363 .journal ul.details img {margin:0 0 -3px 4px;}
363 .journal ul.details img {margin:0 0 -3px 4px;}
364 div.journal {overflow:auto;}
364 div.journal {overflow:auto;}
365 div.journal.private-notes {border-left:2px solid #d22; padding-left:4px; margin-left:-6px;}
365 div.journal.private-notes {border-left:2px solid #d22; padding-left:4px; margin-left:-6px;}
366
366
367 div#activity dl, #search-results { margin-left: 2em; }
367 div#activity dl, #search-results { margin-left: 2em; }
368 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
368 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
369 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
369 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
370 div#activity dt.me .time { border-bottom: 1px solid #999; }
370 div#activity dt.me .time { border-bottom: 1px solid #999; }
371 div#activity dt .time { color: #777; font-size: 80%; }
371 div#activity dt .time { color: #777; font-size: 80%; }
372 div#activity dd .description, #search-results dd .description { font-style: italic; }
372 div#activity dd .description, #search-results dd .description { font-style: italic; }
373 div#activity span.project:after, #search-results span.project:after { content: " -"; }
373 div#activity span.project:after, #search-results span.project:after { content: " -"; }
374 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
374 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
375 div#activity dt.grouped {margin-left:5em;}
375 div#activity dt.grouped {margin-left:5em;}
376 div#activity dd.grouped {margin-left:9em;}
376 div#activity dd.grouped {margin-left:9em;}
377
377
378 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
378 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
379
379
380 div#search-results-counts {float:right;}
380 div#search-results-counts {float:right;}
381 div#search-results-counts ul { margin-top: 0.5em; }
381 div#search-results-counts ul { margin-top: 0.5em; }
382 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
382 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
383
383
384 dt.issue { background-image: url(../images/ticket.png); }
384 dt.issue { background-image: url(../images/ticket.png); }
385 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
385 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
386 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
386 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
387 dt.issue-note { background-image: url(../images/ticket_note.png); }
387 dt.issue-note { background-image: url(../images/ticket_note.png); }
388 dt.changeset { background-image: url(../images/changeset.png); }
388 dt.changeset { background-image: url(../images/changeset.png); }
389 dt.news { background-image: url(../images/news.png); }
389 dt.news { background-image: url(../images/news.png); }
390 dt.message { background-image: url(../images/message.png); }
390 dt.message { background-image: url(../images/message.png); }
391 dt.reply { background-image: url(../images/comments.png); }
391 dt.reply { background-image: url(../images/comments.png); }
392 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
392 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
393 dt.attachment { background-image: url(../images/attachment.png); }
393 dt.attachment { background-image: url(../images/attachment.png); }
394 dt.document { background-image: url(../images/document.png); }
394 dt.document { background-image: url(../images/document.png); }
395 dt.project { background-image: url(../images/projects.png); }
395 dt.project { background-image: url(../images/projects.png); }
396 dt.time-entry { background-image: url(../images/time.png); }
396 dt.time-entry { background-image: url(../images/time.png); }
397
397
398 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
398 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
399
399
400 div#roadmap .related-issues { margin-bottom: 1em; }
400 div#roadmap .related-issues { margin-bottom: 1em; }
401 div#roadmap .related-issues td.checkbox { display: none; }
401 div#roadmap .related-issues td.checkbox { display: none; }
402 div#roadmap .wiki h1:first-child { display: none; }
402 div#roadmap .wiki h1:first-child { display: none; }
403 div#roadmap .wiki h1 { font-size: 120%; }
403 div#roadmap .wiki h1 { font-size: 120%; }
404 div#roadmap .wiki h2 { font-size: 110%; }
404 div#roadmap .wiki h2 { font-size: 110%; }
405 body.controller-versions.action-show div#roadmap .related-issues {width:70%;}
405 body.controller-versions.action-show div#roadmap .related-issues {width:70%;}
406
406
407 div#version-summary { float:right; width:28%; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
407 div#version-summary { float:right; width:28%; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
408 div#version-summary fieldset { margin-bottom: 1em; }
408 div#version-summary fieldset { margin-bottom: 1em; }
409 div#version-summary fieldset.time-tracking table { width:100%; }
409 div#version-summary fieldset.time-tracking table { width:100%; }
410 div#version-summary th, div#version-summary td.total-hours { text-align: right; }
410 div#version-summary th, div#version-summary td.total-hours { text-align: right; }
411
411
412 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
412 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
413 table#time-report tbody tr.subtotal { font-style: italic; color:#777;}
413 table#time-report tbody tr.subtotal { font-style: italic; color:#777;}
414 table#time-report tbody tr.subtotal td.hours { color:#b0b0b0; }
414 table#time-report tbody tr.subtotal td.hours { color:#b0b0b0; }
415 table#time-report tbody tr.total { font-weight: bold; background-color:#EEEEEE; border-top:1px solid #e4e4e4;}
415 table#time-report tbody tr.total { font-weight: bold; background-color:#EEEEEE; border-top:1px solid #e4e4e4;}
416 table#time-report .hours-dec { font-size: 0.9em; }
416 table#time-report .hours-dec { font-size: 0.9em; }
417
417
418 div.wiki-page .contextual a {opacity: 0.4}
418 div.wiki-page .contextual a {opacity: 0.4}
419 div.wiki-page .contextual a:hover {opacity: 1}
419 div.wiki-page .contextual a:hover {opacity: 1}
420
420
421 form .attributes select { width: 60%; }
421 form .attributes select { width: 60%; }
422 input#issue_subject { width: 99%; }
422 input#issue_subject { width: 99%; }
423 select#issue_done_ratio { width: 95px; }
423 select#issue_done_ratio { width: 95px; }
424
424
425 ul.projects {margin:0; padding-left:1em;}
425 ul.projects {margin:0; padding-left:1em;}
426 ul.projects ul {padding-left:1.6em;}
426 ul.projects ul {padding-left:1.6em;}
427 ul.projects.root {margin:0; padding:0;}
427 ul.projects.root {margin:0; padding:0;}
428 ul.projects li {list-style-type:none;}
428 ul.projects li {list-style-type:none;}
429
429
430 #projects-index ul.projects ul.projects { border-left: 3px solid #e0e0e0; padding-left:1em;}
430 #projects-index ul.projects ul.projects { border-left: 3px solid #e0e0e0; padding-left:1em;}
431 #projects-index ul.projects li.root {margin-bottom: 1em;}
431 #projects-index ul.projects li.root {margin-bottom: 1em;}
432 #projects-index ul.projects li.child {margin-top: 1em;}
432 #projects-index ul.projects li.child {margin-top: 1em;}
433 #projects-index ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
433 #projects-index ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
434 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
434 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
435
435
436 #notified-projects ul, #tracker_project_ids ul {max-height:250px; overflow-y:auto;}
436 #notified-projects ul, #tracker_project_ids ul {max-height:250px; overflow-y:auto;}
437
437
438 #related-issues li img {vertical-align:middle;}
438 #related-issues li img {vertical-align:middle;}
439
439
440 ul.properties {padding:0; font-size: 0.9em; color: #777;}
440 ul.properties {padding:0; font-size: 0.9em; color: #777;}
441 ul.properties li {list-style-type:none;}
441 ul.properties li {list-style-type:none;}
442 ul.properties li span {font-style:italic;}
442 ul.properties li span {font-style:italic;}
443
443
444 .total-hours { font-size: 110%; font-weight: bold; }
444 .total-hours { font-size: 110%; font-weight: bold; }
445 .total-hours span.hours-int { font-size: 120%; }
445 .total-hours span.hours-int { font-size: 120%; }
446
446
447 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
447 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
448 #user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select, #user_identity_url { width: 90%; }
448 #user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select, #user_identity_url { width: 90%; }
449
449
450 #workflow_copy_form select { width: 200px; }
450 #workflow_copy_form select { width: 200px; }
451 table.transitions td.enabled {background: #bfb;}
451 table.transitions td.enabled {background: #bfb;}
452 table.fields_permissions select {font-size:90%}
452 table.fields_permissions select {font-size:90%}
453 table.fields_permissions td.readonly {background:#ddd;}
453 table.fields_permissions td.readonly {background:#ddd;}
454 table.fields_permissions td.required {background:#d88;}
454 table.fields_permissions td.required {background:#d88;}
455
455
456 textarea#custom_field_possible_values {width: 99%}
456 textarea#custom_field_possible_values {width: 99%}
457 input#content_comments {width: 99%}
457 input#content_comments {width: 99%}
458
458
459 .pagination {font-size: 90%}
459 .pagination {font-size: 90%}
460 p.pagination {margin-top:8px;}
460 p.pagination {margin-top:8px;}
461
461
462 /***** Tabular forms ******/
462 /***** Tabular forms ******/
463 .tabular p{
463 .tabular p{
464 margin: 0;
464 margin: 0;
465 padding: 3px 0 3px 0;
465 padding: 3px 0 3px 0;
466 padding-left: 180px; /* width of left column containing the label elements */
466 padding-left: 180px; /* width of left column containing the label elements */
467 min-height: 1.8em;
467 min-height: 1.8em;
468 clear:left;
468 clear:left;
469 }
469 }
470
470
471 html>body .tabular p {overflow:hidden;}
471 html>body .tabular p {overflow:hidden;}
472
472
473 .tabular label{
473 .tabular label{
474 font-weight: bold;
474 font-weight: bold;
475 float: left;
475 float: left;
476 text-align: right;
476 text-align: right;
477 /* width of left column */
477 /* width of left column */
478 margin-left: -180px;
478 margin-left: -180px;
479 /* width of labels. Should be smaller than left column to create some right margin */
479 /* width of labels. Should be smaller than left column to create some right margin */
480 width: 175px;
480 width: 175px;
481 }
481 }
482
482
483 .tabular label.floating{
483 .tabular label.floating{
484 font-weight: normal;
484 font-weight: normal;
485 margin-left: 0px;
485 margin-left: 0px;
486 text-align: left;
486 text-align: left;
487 width: 270px;
487 width: 270px;
488 }
488 }
489
489
490 .tabular label.block{
490 .tabular label.block{
491 font-weight: normal;
491 font-weight: normal;
492 margin-left: 0px !important;
492 margin-left: 0px !important;
493 text-align: left;
493 text-align: left;
494 float: none;
494 float: none;
495 display: block;
495 display: block;
496 width: auto;
496 width: auto;
497 }
497 }
498
498
499 .tabular label.inline{
499 .tabular label.inline{
500 font-weight: normal;
500 font-weight: normal;
501 float:none;
501 float:none;
502 margin-left: 5px !important;
502 margin-left: 5px !important;
503 width: auto;
503 width: auto;
504 }
504 }
505
505
506 label.no-css {
506 label.no-css {
507 font-weight: inherit;
507 font-weight: inherit;
508 float:none;
508 float:none;
509 text-align:left;
509 text-align:left;
510 margin-left:0px;
510 margin-left:0px;
511 width:auto;
511 width:auto;
512 }
512 }
513 input#time_entry_comments { width: 90%;}
513 input#time_entry_comments { width: 90%;}
514
514
515 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
515 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
516
516
517 .tabular.settings p{ padding-left: 300px; }
517 .tabular.settings p{ padding-left: 300px; }
518 .tabular.settings label{ margin-left: -300px; width: 295px; }
518 .tabular.settings label{ margin-left: -300px; width: 295px; }
519 .tabular.settings textarea { width: 99%; }
519 .tabular.settings textarea { width: 99%; }
520
520
521 .settings.enabled_scm table {width:100%}
521 .settings.enabled_scm table {width:100%}
522 .settings.enabled_scm td.scm_name{ font-weight: bold; }
522 .settings.enabled_scm td.scm_name{ font-weight: bold; }
523
523
524 fieldset.settings label { display: block; }
524 fieldset.settings label { display: block; }
525 fieldset#notified_events .parent { padding-left: 20px; }
525 fieldset#notified_events .parent { padding-left: 20px; }
526
526
527 span.required {color: #bb0000;}
527 span.required {color: #bb0000;}
528 .summary {font-style: italic;}
528 .summary {font-style: italic;}
529
529
530 #attachments_fields input.description {margin-left: 8px; width:340px;}
530 #attachments_fields input.description {margin-left: 8px; width:340px;}
531 #attachments_fields span {display:block; white-space:nowrap;}
531 #attachments_fields span {display:block; white-space:nowrap;}
532 #attachments_fields img {vertical-align: middle;}
532 #attachments_fields img {vertical-align: middle;}
533
533
534 div.attachments { margin-top: 12px; }
534 div.attachments { margin-top: 12px; }
535 div.attachments p { margin:4px 0 2px 0; }
535 div.attachments p { margin:4px 0 2px 0; }
536 div.attachments img { vertical-align: middle; }
536 div.attachments img { vertical-align: middle; }
537 div.attachments span.author { font-size: 0.9em; color: #888; }
537 div.attachments span.author { font-size: 0.9em; color: #888; }
538
538
539 div.thumbnails {margin-top:0.6em;}
539 div.thumbnails {margin-top:0.6em;}
540 div.thumbnails div {background:#fff;border:2px solid #ddd;display:inline-block;margin-right:2px;}
540 div.thumbnails div {background:#fff;border:2px solid #ddd;display:inline-block;margin-right:2px;}
541 div.thumbnails img {margin: 3px;}
541 div.thumbnails img {margin: 3px;}
542
542
543 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
543 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
544 .other-formats span + span:before { content: "| "; }
544 .other-formats span + span:before { content: "| "; }
545
545
546 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
546 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
547
547
548 em.info {font-style:normal;font-size:90%;color:#888;display:block;}
548 em.info {font-style:normal;font-size:90%;color:#888;display:block;}
549 em.info.error {padding-left:20px; background:url(../images/exclamation.png) no-repeat 0 50%;}
549 em.info.error {padding-left:20px; background:url(../images/exclamation.png) no-repeat 0 50%;}
550
550
551 textarea.text_cf {width:90%;}
551 textarea.text_cf {width:90%;}
552
552
553 /* Project members tab */
553 /* Project members tab */
554 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
554 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
555 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
555 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
556 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
556 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
557 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
557 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
558 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
558 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
559 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
559 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
560
560
561 #users_for_watcher {height: 200px; overflow:auto;}
561 #users_for_watcher {height: 200px; overflow:auto;}
562 #users_for_watcher label {display: block;}
562 #users_for_watcher label {display: block;}
563
563
564 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
564 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
565
565
566 input#principal_search, input#user_search {width:100%}
566 input#principal_search, input#user_search {width:100%}
567 input#principal_search, input#user_search {
567 input#principal_search, input#user_search {
568 background: url(../images/magnifier.png) no-repeat 2px 50%; padding-left:20px;
568 background: url(../images/magnifier.png) no-repeat 2px 50%; padding-left:20px;
569 border:1px solid #9EB1C2; border-radius:3px; height:1.5em; width:95%;
569 border:1px solid #9EB1C2; border-radius:3px; height:1.5em; width:95%;
570 }
570 }
571 input#principal_search.ajax-loading, input#user_search.ajax-loading {
571 input#principal_search.ajax-loading, input#user_search.ajax-loading {
572 background-image: url(../images/loading.gif);
572 background-image: url(../images/loading.gif);
573 }
573 }
574
574
575 * html div#tab-content-members fieldset div { height: 450px; }
575 * html div#tab-content-members fieldset div { height: 450px; }
576
576
577 /***** Flash & error messages ****/
577 /***** Flash & error messages ****/
578 #errorExplanation, div.flash, .nodata, .warning, .conflict {
578 #errorExplanation, div.flash, .nodata, .warning, .conflict {
579 padding: 4px 4px 4px 30px;
579 padding: 4px 4px 4px 30px;
580 margin-bottom: 12px;
580 margin-bottom: 12px;
581 font-size: 1.1em;
581 font-size: 1.1em;
582 border: 2px solid;
582 border: 2px solid;
583 }
583 }
584
584
585 div.flash {margin-top: 8px;}
585 div.flash {margin-top: 8px;}
586
586
587 div.flash.error, #errorExplanation {
587 div.flash.error, #errorExplanation {
588 background: url(../images/exclamation.png) 8px 50% no-repeat;
588 background: url(../images/exclamation.png) 8px 50% no-repeat;
589 background-color: #ffe3e3;
589 background-color: #ffe3e3;
590 border-color: #dd0000;
590 border-color: #dd0000;
591 color: #880000;
591 color: #880000;
592 }
592 }
593
593
594 div.flash.notice {
594 div.flash.notice {
595 background: url(../images/true.png) 8px 5px no-repeat;
595 background: url(../images/true.png) 8px 5px no-repeat;
596 background-color: #dfffdf;
596 background-color: #dfffdf;
597 border-color: #9fcf9f;
597 border-color: #9fcf9f;
598 color: #005f00;
598 color: #005f00;
599 }
599 }
600
600
601 div.flash.warning, .conflict {
601 div.flash.warning, .conflict {
602 background: url(../images/warning.png) 8px 5px no-repeat;
602 background: url(../images/warning.png) 8px 5px no-repeat;
603 background-color: #FFEBC1;
603 background-color: #FFEBC1;
604 border-color: #FDBF3B;
604 border-color: #FDBF3B;
605 color: #A6750C;
605 color: #A6750C;
606 text-align: left;
606 text-align: left;
607 }
607 }
608
608
609 .nodata, .warning {
609 .nodata, .warning {
610 text-align: center;
610 text-align: center;
611 background-color: #FFEBC1;
611 background-color: #FFEBC1;
612 border-color: #FDBF3B;
612 border-color: #FDBF3B;
613 color: #A6750C;
613 color: #A6750C;
614 }
614 }
615
615
616 #errorExplanation ul { font-size: 0.9em;}
616 #errorExplanation ul { font-size: 0.9em;}
617 #errorExplanation h2, #errorExplanation p { display: none; }
617 #errorExplanation h2, #errorExplanation p { display: none; }
618
618
619 .conflict-details {font-size:80%;}
619 .conflict-details {font-size:80%;}
620
620
621 /***** Ajax indicator ******/
621 /***** Ajax indicator ******/
622 #ajax-indicator {
622 #ajax-indicator {
623 position: absolute; /* fixed not supported by IE */
623 position: absolute; /* fixed not supported by IE */
624 background-color:#eee;
624 background-color:#eee;
625 border: 1px solid #bbb;
625 border: 1px solid #bbb;
626 top:35%;
626 top:35%;
627 left:40%;
627 left:40%;
628 width:20%;
628 width:20%;
629 font-weight:bold;
629 font-weight:bold;
630 text-align:center;
630 text-align:center;
631 padding:0.6em;
631 padding:0.6em;
632 z-index:100;
632 z-index:100;
633 opacity: 0.5;
633 opacity: 0.5;
634 }
634 }
635
635
636 html>body #ajax-indicator { position: fixed; }
636 html>body #ajax-indicator { position: fixed; }
637
637
638 #ajax-indicator span {
638 #ajax-indicator span {
639 background-position: 0% 40%;
639 background-position: 0% 40%;
640 background-repeat: no-repeat;
640 background-repeat: no-repeat;
641 background-image: url(../images/loading.gif);
641 background-image: url(../images/loading.gif);
642 padding-left: 26px;
642 padding-left: 26px;
643 vertical-align: bottom;
643 vertical-align: bottom;
644 }
644 }
645
645
646 /***** Calendar *****/
646 /***** Calendar *****/
647 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
647 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
648 table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
648 table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
649 table.cal thead th.week-number {width: auto;}
649 table.cal thead th.week-number {width: auto;}
650 table.cal tbody tr {height: 100px;}
650 table.cal tbody tr {height: 100px;}
651 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
651 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
652 table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
652 table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
653 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
653 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
654 table.cal td.odd p.day-num {color: #bbb;}
654 table.cal td.odd p.day-num {color: #bbb;}
655 table.cal td.today {background:#ffffdd;}
655 table.cal td.today {background:#ffffdd;}
656 table.cal td.today p.day-num {font-weight: bold;}
656 table.cal td.today p.day-num {font-weight: bold;}
657 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
657 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
658 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
658 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
659 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
659 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
660 p.cal.legend span {display:block;}
660 p.cal.legend span {display:block;}
661
661
662 /***** Tooltips ******/
662 /***** Tooltips ******/
663 .tooltip{position:relative;z-index:24;}
663 .tooltip{position:relative;z-index:24;}
664 .tooltip:hover{z-index:25;color:#000;}
664 .tooltip:hover{z-index:25;color:#000;}
665 .tooltip span.tip{display: none; text-align:left;}
665 .tooltip span.tip{display: none; text-align:left;}
666
666
667 div.tooltip:hover span.tip{
667 div.tooltip:hover span.tip{
668 display:block;
668 display:block;
669 position:absolute;
669 position:absolute;
670 top:12px; left:24px; width:270px;
670 top:12px; left:24px; width:270px;
671 border:1px solid #555;
671 border:1px solid #555;
672 background-color:#fff;
672 background-color:#fff;
673 padding: 4px;
673 padding: 4px;
674 font-size: 0.8em;
674 font-size: 0.8em;
675 color:#505050;
675 color:#505050;
676 }
676 }
677
677
678 img.ui-datepicker-trigger {
678 img.ui-datepicker-trigger {
679 cursor: pointer;
679 cursor: pointer;
680 vertical-align: middle;
680 vertical-align: middle;
681 margin-left: 4px;
681 margin-left: 4px;
682 }
682 }
683
683
684 /***** Progress bar *****/
684 /***** Progress bar *****/
685 table.progress {
685 table.progress {
686 border-collapse: collapse;
686 border-collapse: collapse;
687 border-spacing: 0pt;
687 border-spacing: 0pt;
688 empty-cells: show;
688 empty-cells: show;
689 text-align: center;
689 text-align: center;
690 float:left;
690 float:left;
691 margin: 1px 6px 1px 0px;
691 margin: 1px 6px 1px 0px;
692 }
692 }
693
693
694 table.progress td { height: 1em; }
694 table.progress td { height: 1em; }
695 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
695 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
696 table.progress td.done { background: #D3EDD3 none repeat scroll 0%; }
696 table.progress td.done { background: #D3EDD3 none repeat scroll 0%; }
697 table.progress td.todo { background: #eee none repeat scroll 0%; }
697 table.progress td.todo { background: #eee none repeat scroll 0%; }
698 p.pourcent {font-size: 80%;}
698 p.pourcent {font-size: 80%;}
699 p.progress-info {clear: left; font-size: 80%; margin-top:-4px; color:#777;}
699 p.progress-info {clear: left; font-size: 80%; margin-top:-4px; color:#777;}
700
700
701 #roadmap table.progress td { height: 1.2em; }
701 #roadmap table.progress td { height: 1.2em; }
702 /***** Tabs *****/
702 /***** Tabs *****/
703 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
703 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
704 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
704 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
705 #content .tabs ul li {
705 #content .tabs ul li {
706 float:left;
706 float:left;
707 list-style-type:none;
707 list-style-type:none;
708 white-space:nowrap;
708 white-space:nowrap;
709 margin-right:4px;
709 margin-right:4px;
710 background:#fff;
710 background:#fff;
711 position:relative;
711 position:relative;
712 margin-bottom:-1px;
712 margin-bottom:-1px;
713 }
713 }
714 #content .tabs ul li a{
714 #content .tabs ul li a{
715 display:block;
715 display:block;
716 font-size: 0.9em;
716 font-size: 0.9em;
717 text-decoration:none;
717 text-decoration:none;
718 line-height:1.3em;
718 line-height:1.3em;
719 padding:4px 6px 4px 6px;
719 padding:4px 6px 4px 6px;
720 border: 1px solid #ccc;
720 border: 1px solid #ccc;
721 border-bottom: 1px solid #bbbbbb;
721 border-bottom: 1px solid #bbbbbb;
722 background-color: #f6f6f6;
722 background-color: #f6f6f6;
723 color:#999;
723 color:#999;
724 font-weight:bold;
724 font-weight:bold;
725 border-top-left-radius:3px;
725 border-top-left-radius:3px;
726 border-top-right-radius:3px;
726 border-top-right-radius:3px;
727 }
727 }
728
728
729 #content .tabs ul li a:hover {
729 #content .tabs ul li a:hover {
730 background-color: #ffffdd;
730 background-color: #ffffdd;
731 text-decoration:none;
731 text-decoration:none;
732 }
732 }
733
733
734 #content .tabs ul li a.selected {
734 #content .tabs ul li a.selected {
735 background-color: #fff;
735 background-color: #fff;
736 border: 1px solid #bbbbbb;
736 border: 1px solid #bbbbbb;
737 border-bottom: 1px solid #fff;
737 border-bottom: 1px solid #fff;
738 color:#444;
738 color:#444;
739 }
739 }
740
740
741 #content .tabs ul li a.selected:hover {background-color: #fff;}
741 #content .tabs ul li a.selected:hover {background-color: #fff;}
742
742
743 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
743 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
744
744
745 button.tab-left, button.tab-right {
745 button.tab-left, button.tab-right {
746 font-size: 0.9em;
746 font-size: 0.9em;
747 cursor: pointer;
747 cursor: pointer;
748 height:24px;
748 height:24px;
749 border: 1px solid #ccc;
749 border: 1px solid #ccc;
750 border-bottom: 1px solid #bbbbbb;
750 border-bottom: 1px solid #bbbbbb;
751 position:absolute;
751 position:absolute;
752 padding:4px;
752 padding:4px;
753 width: 20px;
753 width: 20px;
754 bottom: -1px;
754 bottom: -1px;
755 }
755 }
756
756
757 button.tab-left {
757 button.tab-left {
758 right: 20px;
758 right: 20px;
759 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
759 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
760 border-top-left-radius:3px;
760 border-top-left-radius:3px;
761 }
761 }
762
762
763 button.tab-right {
763 button.tab-right {
764 right: 0;
764 right: 0;
765 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
765 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
766 border-top-right-radius:3px;
766 border-top-right-radius:3px;
767 }
767 }
768
768
769 /***** Diff *****/
769 /***** Diff *****/
770 .diff_out { background: #fcc; }
770 .diff_out { background: #fcc; }
771 .diff_out span { background: #faa; }
771 .diff_out span { background: #faa; }
772 .diff_in { background: #cfc; }
772 .diff_in { background: #cfc; }
773 .diff_in span { background: #afa; }
773 .diff_in span { background: #afa; }
774
774
775 .text-diff {
775 .text-diff {
776 padding: 1em;
776 padding: 1em;
777 background-color:#f6f6f6;
777 background-color:#f6f6f6;
778 color:#505050;
778 color:#505050;
779 border: 1px solid #e4e4e4;
779 border: 1px solid #e4e4e4;
780 }
780 }
781
781
782 /***** Wiki *****/
782 /***** Wiki *****/
783 div.wiki table {
783 div.wiki table {
784 border-collapse: collapse;
784 border-collapse: collapse;
785 margin-bottom: 1em;
785 margin-bottom: 1em;
786 }
786 }
787
787
788 div.wiki table, div.wiki td, div.wiki th {
788 div.wiki table, div.wiki td, div.wiki th {
789 border: 1px solid #bbb;
789 border: 1px solid #bbb;
790 padding: 4px;
790 padding: 4px;
791 }
791 }
792
792
793 div.wiki .noborder, div.wiki .noborder td, div.wiki .noborder th {border:0;}
793 div.wiki .noborder, div.wiki .noborder td, div.wiki .noborder th {border:0;}
794
794
795 div.wiki .external {
795 div.wiki .external {
796 background-position: 0% 60%;
796 background-position: 0% 60%;
797 background-repeat: no-repeat;
797 background-repeat: no-repeat;
798 padding-left: 12px;
798 padding-left: 12px;
799 background-image: url(../images/external.png);
799 background-image: url(../images/external.png);
800 }
800 }
801
801
802 div.wiki a.new {color: #b73535;}
802 div.wiki a.new {color: #b73535;}
803
803
804 div.wiki ul, div.wiki ol {margin-bottom:1em;}
804 div.wiki ul, div.wiki ol {margin-bottom:1em;}
805
805
806 div.wiki pre {
806 div.wiki pre {
807 margin: 1em 1em 1em 1.6em;
807 margin: 1em 1em 1em 1.6em;
808 padding: 8px;
808 padding: 8px;
809 background-color: #fafafa;
809 background-color: #fafafa;
810 border: 1px solid #e2e2e2;
810 border: 1px solid #e2e2e2;
811 width:auto;
811 width:auto;
812 overflow-x: auto;
812 overflow-x: auto;
813 overflow-y: hidden;
813 overflow-y: hidden;
814 }
814 }
815
815
816 div.wiki ul.toc {
816 div.wiki ul.toc {
817 background-color: #ffffdd;
817 background-color: #ffffdd;
818 border: 1px solid #e4e4e4;
818 border: 1px solid #e4e4e4;
819 padding: 4px;
819 padding: 4px;
820 line-height: 1.2em;
820 line-height: 1.2em;
821 margin-bottom: 12px;
821 margin-bottom: 12px;
822 margin-right: 12px;
822 margin-right: 12px;
823 margin-left: 0;
823 margin-left: 0;
824 display: table
824 display: table
825 }
825 }
826 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
826 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
827
827
828 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
828 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
829 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
829 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
830 div.wiki ul.toc ul { margin: 0; padding: 0; }
830 div.wiki ul.toc ul { margin: 0; padding: 0; }
831 div.wiki ul.toc li {list-style-type:none; margin: 0; font-size:12px;}
831 div.wiki ul.toc li {list-style-type:none; margin: 0; font-size:12px;}
832 div.wiki ul.toc li li {margin-left: 1.5em; font-size:10px;}
832 div.wiki ul.toc li li {margin-left: 1.5em; font-size:10px;}
833 div.wiki ul.toc a {
833 div.wiki ul.toc a {
834 font-size: 0.9em;
834 font-size: 0.9em;
835 font-weight: normal;
835 font-weight: normal;
836 text-decoration: none;
836 text-decoration: none;
837 color: #606060;
837 color: #606060;
838 }
838 }
839 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
839 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
840
840
841 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
841 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
842 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
842 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
843 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
843 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
844
844
845 div.wiki img { vertical-align: middle; }
845 div.wiki img { vertical-align: middle; }
846
846
847 /***** My page layout *****/
847 /***** My page layout *****/
848 .block-receiver {
848 .block-receiver {
849 border:1px dashed #c0c0c0;
849 border:1px dashed #c0c0c0;
850 margin-bottom: 20px;
850 margin-bottom: 20px;
851 padding: 15px 0 15px 0;
851 padding: 15px 0 15px 0;
852 }
852 }
853
853
854 .mypage-box {
854 .mypage-box {
855 margin:0 0 20px 0;
855 margin:0 0 20px 0;
856 color:#505050;
856 color:#505050;
857 line-height:1.5em;
857 line-height:1.5em;
858 }
858 }
859
859
860 .handle {cursor: move;}
860 .handle {cursor: move;}
861
861
862 a.close-icon {
862 a.close-icon {
863 display:block;
863 display:block;
864 margin-top:3px;
864 margin-top:3px;
865 overflow:hidden;
865 overflow:hidden;
866 width:12px;
866 width:12px;
867 height:12px;
867 height:12px;
868 background-repeat: no-repeat;
868 background-repeat: no-repeat;
869 cursor:pointer;
869 cursor:pointer;
870 background-image:url('../images/close.png');
870 background-image:url('../images/close.png');
871 }
871 }
872 a.close-icon:hover {background-image:url('../images/close_hl.png');}
872 a.close-icon:hover {background-image:url('../images/close_hl.png');}
873
873
874 /***** Gantt chart *****/
874 /***** Gantt chart *****/
875 .gantt_hdr {
875 .gantt_hdr {
876 position:absolute;
876 position:absolute;
877 top:0;
877 top:0;
878 height:16px;
878 height:16px;
879 border-top: 1px solid #c0c0c0;
879 border-top: 1px solid #c0c0c0;
880 border-bottom: 1px solid #c0c0c0;
880 border-bottom: 1px solid #c0c0c0;
881 border-right: 1px solid #c0c0c0;
881 border-right: 1px solid #c0c0c0;
882 text-align: center;
882 text-align: center;
883 overflow: hidden;
883 overflow: hidden;
884 }
884 }
885
885
886 .gantt_hdr.nwday {background-color:#f1f1f1;}
886 .gantt_hdr.nwday {background-color:#f1f1f1;}
887
887
888 .gantt_subjects { font-size: 0.8em; }
888 .gantt_subjects { font-size: 0.8em; }
889 .gantt_subjects div { line-height:16px;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; }
889 .gantt_subjects div { line-height:16px;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; }
890
890
891 .task {
891 .task {
892 position: absolute;
892 position: absolute;
893 height:8px;
893 height:8px;
894 font-size:0.8em;
894 font-size:0.8em;
895 color:#888;
895 color:#888;
896 padding:0;
896 padding:0;
897 margin:0;
897 margin:0;
898 line-height:16px;
898 line-height:16px;
899 white-space:nowrap;
899 white-space:nowrap;
900 }
900 }
901
901
902 .task.label {width:100%;}
902 .task.label {width:100%;}
903 .task.label.project, .task.label.version { font-weight: bold; }
903 .task.label.project, .task.label.version { font-weight: bold; }
904
904
905 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
905 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
906 .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
906 .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
907 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
907 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
908
908
909 .task_todo.parent { background: #888; border: 1px solid #888; height: 3px;}
909 .task_todo.parent { background: #888; border: 1px solid #888; height: 3px;}
910 .task_late.parent, .task_done.parent { height: 3px;}
910 .task_late.parent, .task_done.parent { height: 3px;}
911 .task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;}
911 .task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;}
912 .task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;}
912 .task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;}
913
913
914 .version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
914 .version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
915 .version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
915 .version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
916 .version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
916 .version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
917 .version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
917 .version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
918
918
919 .project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
919 .project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
920 .project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
920 .project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
921 .project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
921 .project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
922 .project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
922 .project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
923
923
924 .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
924 .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
925 .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
925 .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
926
926
927 /***** Icons *****/
927 /***** Icons *****/
928 .icon {
928 .icon {
929 background-position: 0% 50%;
929 background-position: 0% 50%;
930 background-repeat: no-repeat;
930 background-repeat: no-repeat;
931 padding-left: 20px;
931 padding-left: 20px;
932 padding-top: 2px;
932 padding-top: 2px;
933 padding-bottom: 3px;
933 padding-bottom: 3px;
934 }
934 }
935
935
936 .icon-add { background-image: url(../images/add.png); }
936 .icon-add { background-image: url(../images/add.png); }
937 .icon-edit { background-image: url(../images/edit.png); }
937 .icon-edit { background-image: url(../images/edit.png); }
938 .icon-copy { background-image: url(../images/copy.png); }
938 .icon-copy { background-image: url(../images/copy.png); }
939 .icon-duplicate { background-image: url(../images/duplicate.png); }
939 .icon-duplicate { background-image: url(../images/duplicate.png); }
940 .icon-del { background-image: url(../images/delete.png); }
940 .icon-del { background-image: url(../images/delete.png); }
941 .icon-move { background-image: url(../images/move.png); }
941 .icon-move { background-image: url(../images/move.png); }
942 .icon-save { background-image: url(../images/save.png); }
942 .icon-save { background-image: url(../images/save.png); }
943 .icon-cancel { background-image: url(../images/cancel.png); }
943 .icon-cancel { background-image: url(../images/cancel.png); }
944 .icon-multiple { background-image: url(../images/table_multiple.png); }
944 .icon-multiple { background-image: url(../images/table_multiple.png); }
945 .icon-folder { background-image: url(../images/folder.png); }
945 .icon-folder { background-image: url(../images/folder.png); }
946 .open .icon-folder { background-image: url(../images/folder_open.png); }
946 .open .icon-folder { background-image: url(../images/folder_open.png); }
947 .icon-package { background-image: url(../images/package.png); }
947 .icon-package { background-image: url(../images/package.png); }
948 .icon-user { background-image: url(../images/user.png); }
948 .icon-user { background-image: url(../images/user.png); }
949 .icon-projects { background-image: url(../images/projects.png); }
949 .icon-projects { background-image: url(../images/projects.png); }
950 .icon-help { background-image: url(../images/help.png); }
950 .icon-help { background-image: url(../images/help.png); }
951 .icon-attachment { background-image: url(../images/attachment.png); }
951 .icon-attachment { background-image: url(../images/attachment.png); }
952 .icon-history { background-image: url(../images/history.png); }
952 .icon-history { background-image: url(../images/history.png); }
953 .icon-time { background-image: url(../images/time.png); }
953 .icon-time { background-image: url(../images/time.png); }
954 .icon-time-add { background-image: url(../images/time_add.png); }
954 .icon-time-add { background-image: url(../images/time_add.png); }
955 .icon-stats { background-image: url(../images/stats.png); }
955 .icon-stats { background-image: url(../images/stats.png); }
956 .icon-warning { background-image: url(../images/warning.png); }
956 .icon-warning { background-image: url(../images/warning.png); }
957 .icon-fav { background-image: url(../images/fav.png); }
957 .icon-fav { background-image: url(../images/fav.png); }
958 .icon-fav-off { background-image: url(../images/fav_off.png); }
958 .icon-fav-off { background-image: url(../images/fav_off.png); }
959 .icon-reload { background-image: url(../images/reload.png); }
959 .icon-reload { background-image: url(../images/reload.png); }
960 .icon-lock { background-image: url(../images/locked.png); }
960 .icon-lock { background-image: url(../images/locked.png); }
961 .icon-unlock { background-image: url(../images/unlock.png); }
961 .icon-unlock { background-image: url(../images/unlock.png); }
962 .icon-checked { background-image: url(../images/true.png); }
962 .icon-checked { background-image: url(../images/true.png); }
963 .icon-details { background-image: url(../images/zoom_in.png); }
963 .icon-details { background-image: url(../images/zoom_in.png); }
964 .icon-report { background-image: url(../images/report.png); }
964 .icon-report { background-image: url(../images/report.png); }
965 .icon-comment { background-image: url(../images/comment.png); }
965 .icon-comment { background-image: url(../images/comment.png); }
966 .icon-summary { background-image: url(../images/lightning.png); }
966 .icon-summary { background-image: url(../images/lightning.png); }
967 .icon-server-authentication { background-image: url(../images/server_key.png); }
967 .icon-server-authentication { background-image: url(../images/server_key.png); }
968 .icon-issue { background-image: url(../images/ticket.png); }
968 .icon-issue { background-image: url(../images/ticket.png); }
969 .icon-zoom-in { background-image: url(../images/zoom_in.png); }
969 .icon-zoom-in { background-image: url(../images/zoom_in.png); }
970 .icon-zoom-out { background-image: url(../images/zoom_out.png); }
970 .icon-zoom-out { background-image: url(../images/zoom_out.png); }
971 .icon-passwd { background-image: url(../images/textfield_key.png); }
971 .icon-passwd { background-image: url(../images/textfield_key.png); }
972 .icon-test { background-image: url(../images/bullet_go.png); }
972 .icon-test { background-image: url(../images/bullet_go.png); }
973
973
974 .icon-file { background-image: url(../images/files/default.png); }
974 .icon-file { background-image: url(../images/files/default.png); }
975 .icon-file.text-plain { background-image: url(../images/files/text.png); }
975 .icon-file.text-plain { background-image: url(../images/files/text.png); }
976 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
976 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
977 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
977 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
978 .icon-file.text-x-java { background-image: url(../images/files/java.png); }
978 .icon-file.text-x-java { background-image: url(../images/files/java.png); }
979 .icon-file.text-x-javascript { background-image: url(../images/files/js.png); }
979 .icon-file.text-x-javascript { background-image: url(../images/files/js.png); }
980 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
980 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
981 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
981 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
982 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
982 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
983 .icon-file.text-css { background-image: url(../images/files/css.png); }
983 .icon-file.text-css { background-image: url(../images/files/css.png); }
984 .icon-file.text-html { background-image: url(../images/files/html.png); }
984 .icon-file.text-html { background-image: url(../images/files/html.png); }
985 .icon-file.image-gif { background-image: url(../images/files/image.png); }
985 .icon-file.image-gif { background-image: url(../images/files/image.png); }
986 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
986 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
987 .icon-file.image-png { background-image: url(../images/files/image.png); }
987 .icon-file.image-png { background-image: url(../images/files/image.png); }
988 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
988 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
989 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
989 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
990 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
990 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
991 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
991 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
992
992
993 img.gravatar {
993 img.gravatar {
994 padding: 2px;
994 padding: 2px;
995 border: solid 1px #d5d5d5;
995 border: solid 1px #d5d5d5;
996 background: #fff;
996 background: #fff;
997 vertical-align: middle;
997 vertical-align: middle;
998 }
998 }
999
999
1000 div.issue img.gravatar {
1000 div.issue img.gravatar {
1001 float: left;
1001 float: left;
1002 margin: 0 6px 0 0;
1002 margin: 0 6px 0 0;
1003 padding: 5px;
1003 padding: 5px;
1004 }
1004 }
1005
1005
1006 div.issue table img.gravatar {
1006 div.issue table img.gravatar {
1007 height: 14px;
1007 height: 14px;
1008 width: 14px;
1008 width: 14px;
1009 padding: 2px;
1009 padding: 2px;
1010 float: left;
1010 float: left;
1011 margin: 0 0.5em 0 0;
1011 margin: 0 0.5em 0 0;
1012 }
1012 }
1013
1013
1014 h2 img.gravatar {margin: -2px 4px -4px 0;}
1014 h2 img.gravatar {margin: -2px 4px -4px 0;}
1015 h3 img.gravatar {margin: -4px 4px -4px 0;}
1015 h3 img.gravatar {margin: -4px 4px -4px 0;}
1016 h4 img.gravatar {margin: -6px 4px -4px 0;}
1016 h4 img.gravatar {margin: -6px 4px -4px 0;}
1017 td.username img.gravatar {margin: 0 0.5em 0 0; vertical-align: top;}
1017 td.username img.gravatar {margin: 0 0.5em 0 0; vertical-align: top;}
1018 #activity dt img.gravatar {float: left; margin: 0 1em 1em 0;}
1018 #activity dt img.gravatar {float: left; margin: 0 1em 1em 0;}
1019 /* Used on 12px Gravatar img tags without the icon background */
1019 /* Used on 12px Gravatar img tags without the icon background */
1020 .icon-gravatar {float: left; margin-right: 4px;}
1020 .icon-gravatar {float: left; margin-right: 4px;}
1021
1021
1022 #activity dt, .journal {clear: left;}
1022 #activity dt, .journal {clear: left;}
1023
1023
1024 .journal-link {float: right;}
1024 .journal-link {float: right;}
1025
1025
1026 h2 img { vertical-align:middle; }
1026 h2 img { vertical-align:middle; }
1027
1027
1028 .hascontextmenu { cursor: context-menu; }
1028 .hascontextmenu { cursor: context-menu; }
1029
1029
1030 /************* CodeRay styles *************/
1030 /************* CodeRay styles *************/
1031 .syntaxhl div {display: inline;}
1031 .syntaxhl div {display: inline;}
1032 .syntaxhl .line-numbers {padding: 2px 4px 2px 4px; background-color: #eee; margin:0px 5px 0px 0px;}
1032 .syntaxhl .line-numbers {padding: 2px 4px 2px 4px; background-color: #eee; margin:0px 5px 0px 0px;}
1033 .syntaxhl .code pre { overflow: auto }
1033 .syntaxhl .code pre { overflow: auto }
1034 .syntaxhl .debug { color: white !important; background: blue !important; }
1034 .syntaxhl .debug { color: white !important; background: blue !important; }
1035
1035
1036 .syntaxhl .annotation { color:#007 }
1036 .syntaxhl .annotation { color:#007 }
1037 .syntaxhl .attribute-name { color:#b48 }
1037 .syntaxhl .attribute-name { color:#b48 }
1038 .syntaxhl .attribute-value { color:#700 }
1038 .syntaxhl .attribute-value { color:#700 }
1039 .syntaxhl .binary { color:#509 }
1039 .syntaxhl .binary { color:#509 }
1040 .syntaxhl .char .content { color:#D20 }
1040 .syntaxhl .char .content { color:#D20 }
1041 .syntaxhl .char .delimiter { color:#710 }
1041 .syntaxhl .char .delimiter { color:#710 }
1042 .syntaxhl .char { color:#D20 }
1042 .syntaxhl .char { color:#D20 }
1043 .syntaxhl .class { color:#258; font-weight:bold }
1043 .syntaxhl .class { color:#258; font-weight:bold }
1044 .syntaxhl .class-variable { color:#369 }
1044 .syntaxhl .class-variable { color:#369 }
1045 .syntaxhl .color { color:#0A0 }
1045 .syntaxhl .color { color:#0A0 }
1046 .syntaxhl .comment { color:#385 }
1046 .syntaxhl .comment { color:#385 }
1047 .syntaxhl .comment .char { color:#385 }
1047 .syntaxhl .comment .char { color:#385 }
1048 .syntaxhl .comment .delimiter { color:#385 }
1048 .syntaxhl .comment .delimiter { color:#385 }
1049 .syntaxhl .complex { color:#A08 }
1049 .syntaxhl .complex { color:#A08 }
1050 .syntaxhl .constant { color:#258; font-weight:bold }
1050 .syntaxhl .constant { color:#258; font-weight:bold }
1051 .syntaxhl .decorator { color:#B0B }
1051 .syntaxhl .decorator { color:#B0B }
1052 .syntaxhl .definition { color:#099; font-weight:bold }
1052 .syntaxhl .definition { color:#099; font-weight:bold }
1053 .syntaxhl .delimiter { color:black }
1053 .syntaxhl .delimiter { color:black }
1054 .syntaxhl .directive { color:#088; font-weight:bold }
1054 .syntaxhl .directive { color:#088; font-weight:bold }
1055 .syntaxhl .doc { color:#970 }
1055 .syntaxhl .doc { color:#970 }
1056 .syntaxhl .doc-string { color:#D42; font-weight:bold }
1056 .syntaxhl .doc-string { color:#D42; font-weight:bold }
1057 .syntaxhl .doctype { color:#34b }
1057 .syntaxhl .doctype { color:#34b }
1058 .syntaxhl .entity { color:#800; font-weight:bold }
1058 .syntaxhl .entity { color:#800; font-weight:bold }
1059 .syntaxhl .error { color:#F00; background-color:#FAA }
1059 .syntaxhl .error { color:#F00; background-color:#FAA }
1060 .syntaxhl .escape { color:#666 }
1060 .syntaxhl .escape { color:#666 }
1061 .syntaxhl .exception { color:#C00; font-weight:bold }
1061 .syntaxhl .exception { color:#C00; font-weight:bold }
1062 .syntaxhl .float { color:#06D }
1062 .syntaxhl .float { color:#06D }
1063 .syntaxhl .function { color:#06B; font-weight:bold }
1063 .syntaxhl .function { color:#06B; font-weight:bold }
1064 .syntaxhl .global-variable { color:#d70 }
1064 .syntaxhl .global-variable { color:#d70 }
1065 .syntaxhl .hex { color:#02b }
1065 .syntaxhl .hex { color:#02b }
1066 .syntaxhl .imaginary { color:#f00 }
1066 .syntaxhl .imaginary { color:#f00 }
1067 .syntaxhl .include { color:#B44; font-weight:bold }
1067 .syntaxhl .include { color:#B44; font-weight:bold }
1068 .syntaxhl .inline { background-color: hsla(0,0%,0%,0.07); color: black }
1068 .syntaxhl .inline { background-color: hsla(0,0%,0%,0.07); color: black }
1069 .syntaxhl .inline-delimiter { font-weight: bold; color: #666 }
1069 .syntaxhl .inline-delimiter { font-weight: bold; color: #666 }
1070 .syntaxhl .instance-variable { color:#33B }
1070 .syntaxhl .instance-variable { color:#33B }
1071 .syntaxhl .integer { color:#06D }
1071 .syntaxhl .integer { color:#06D }
1072 .syntaxhl .key .char { color: #60f }
1072 .syntaxhl .key .char { color: #60f }
1073 .syntaxhl .key .delimiter { color: #404 }
1073 .syntaxhl .key .delimiter { color: #404 }
1074 .syntaxhl .key { color: #606 }
1074 .syntaxhl .key { color: #606 }
1075 .syntaxhl .keyword { color:#939; font-weight:bold }
1075 .syntaxhl .keyword { color:#939; font-weight:bold }
1076 .syntaxhl .label { color:#970; font-weight:bold }
1076 .syntaxhl .label { color:#970; font-weight:bold }
1077 .syntaxhl .local-variable { color:#963 }
1077 .syntaxhl .local-variable { color:#963 }
1078 .syntaxhl .namespace { color:#707; font-weight:bold }
1078 .syntaxhl .namespace { color:#707; font-weight:bold }
1079 .syntaxhl .octal { color:#40E }
1079 .syntaxhl .octal { color:#40E }
1080 .syntaxhl .operator { }
1080 .syntaxhl .operator { }
1081 .syntaxhl .predefined { color:#369; font-weight:bold }
1081 .syntaxhl .predefined { color:#369; font-weight:bold }
1082 .syntaxhl .predefined-constant { color:#069 }
1082 .syntaxhl .predefined-constant { color:#069 }
1083 .syntaxhl .predefined-type { color:#0a5; font-weight:bold }
1083 .syntaxhl .predefined-type { color:#0a5; font-weight:bold }
1084 .syntaxhl .preprocessor { color:#579 }
1084 .syntaxhl .preprocessor { color:#579 }
1085 .syntaxhl .pseudo-class { color:#00C; font-weight:bold }
1085 .syntaxhl .pseudo-class { color:#00C; font-weight:bold }
1086 .syntaxhl .regexp .content { color:#808 }
1086 .syntaxhl .regexp .content { color:#808 }
1087 .syntaxhl .regexp .delimiter { color:#404 }
1087 .syntaxhl .regexp .delimiter { color:#404 }
1088 .syntaxhl .regexp .modifier { color:#C2C }
1088 .syntaxhl .regexp .modifier { color:#C2C }
1089 .syntaxhl .regexp { background-color:hsla(300,100%,50%,0.06); }
1089 .syntaxhl .regexp { background-color:hsla(300,100%,50%,0.06); }
1090 .syntaxhl .reserved { color:#080; font-weight:bold }
1090 .syntaxhl .reserved { color:#080; font-weight:bold }
1091 .syntaxhl .shell .content { color:#2B2 }
1091 .syntaxhl .shell .content { color:#2B2 }
1092 .syntaxhl .shell .delimiter { color:#161 }
1092 .syntaxhl .shell .delimiter { color:#161 }
1093 .syntaxhl .shell { background-color:hsla(120,100%,50%,0.06); }
1093 .syntaxhl .shell { background-color:hsla(120,100%,50%,0.06); }
1094 .syntaxhl .string .char { color: #46a }
1094 .syntaxhl .string .char { color: #46a }
1095 .syntaxhl .string .content { color: #46a }
1095 .syntaxhl .string .content { color: #46a }
1096 .syntaxhl .string .delimiter { color: #46a }
1096 .syntaxhl .string .delimiter { color: #46a }
1097 .syntaxhl .string .modifier { color: #46a }
1097 .syntaxhl .string .modifier { color: #46a }
1098 .syntaxhl .symbol .content { color:#d33 }
1098 .syntaxhl .symbol .content { color:#d33 }
1099 .syntaxhl .symbol .delimiter { color:#d33 }
1099 .syntaxhl .symbol .delimiter { color:#d33 }
1100 .syntaxhl .symbol { color:#d33 }
1100 .syntaxhl .symbol { color:#d33 }
1101 .syntaxhl .tag { color:#070 }
1101 .syntaxhl .tag { color:#070 }
1102 .syntaxhl .type { color:#339; font-weight:bold }
1102 .syntaxhl .type { color:#339; font-weight:bold }
1103 .syntaxhl .value { color: #088; }
1103 .syntaxhl .value { color: #088; }
1104 .syntaxhl .variable { color:#037 }
1104 .syntaxhl .variable { color:#037 }
1105
1105
1106 .syntaxhl .insert { background: hsla(120,100%,50%,0.12) }
1106 .syntaxhl .insert { background: hsla(120,100%,50%,0.12) }
1107 .syntaxhl .delete { background: hsla(0,100%,50%,0.12) }
1107 .syntaxhl .delete { background: hsla(0,100%,50%,0.12) }
1108 .syntaxhl .change { color: #bbf; background: #007; }
1108 .syntaxhl .change { color: #bbf; background: #007; }
1109 .syntaxhl .head { color: #f8f; background: #505 }
1109 .syntaxhl .head { color: #f8f; background: #505 }
1110 .syntaxhl .head .filename { color: white; }
1110 .syntaxhl .head .filename { color: white; }
1111
1111
1112 .syntaxhl .delete .eyecatcher { background-color: hsla(0,100%,50%,0.2); border: 1px solid hsla(0,100%,45%,0.5); margin: -1px; border-bottom: none; border-top-left-radius: 5px; border-top-right-radius: 5px; }
1112 .syntaxhl .delete .eyecatcher { background-color: hsla(0,100%,50%,0.2); border: 1px solid hsla(0,100%,45%,0.5); margin: -1px; border-bottom: none; border-top-left-radius: 5px; border-top-right-radius: 5px; }
1113 .syntaxhl .insert .eyecatcher { background-color: hsla(120,100%,50%,0.2); border: 1px solid hsla(120,100%,25%,0.5); margin: -1px; border-top: none; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }
1113 .syntaxhl .insert .eyecatcher { background-color: hsla(120,100%,50%,0.2); border: 1px solid hsla(120,100%,25%,0.5); margin: -1px; border-top: none; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }
1114
1114
1115 .syntaxhl .insert .insert { color: #0c0; background:transparent; font-weight:bold }
1115 .syntaxhl .insert .insert { color: #0c0; background:transparent; font-weight:bold }
1116 .syntaxhl .delete .delete { color: #c00; background:transparent; font-weight:bold }
1116 .syntaxhl .delete .delete { color: #c00; background:transparent; font-weight:bold }
1117 .syntaxhl .change .change { color: #88f }
1117 .syntaxhl .change .change { color: #88f }
1118 .syntaxhl .head .head { color: #f4f }
1118 .syntaxhl .head .head { color: #f4f }
1119
1119
1120 /***** Media print specific styles *****/
1120 /***** Media print specific styles *****/
1121 @media print {
1121 @media print {
1122 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
1122 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
1123 #main { background: #fff; }
1123 #main { background: #fff; }
1124 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
1124 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
1125 #wiki_add_attachment { display:none; }
1125 #wiki_add_attachment { display:none; }
1126 .hide-when-print { display: none; }
1126 .hide-when-print { display: none; }
1127 .autoscroll {overflow-x: visible;}
1127 .autoscroll {overflow-x: visible;}
1128 table.list {margin-top:0.5em;}
1128 table.list {margin-top:0.5em;}
1129 table.list th, table.list td {border: 1px solid #aaa;}
1129 table.list th, table.list td {border: 1px solid #aaa;}
1130 }
1130 }
1131
1131
1132 /* Accessibility specific styles */
1132 /* Accessibility specific styles */
1133 .hidden-for-sighted {
1133 .hidden-for-sighted {
1134 position:absolute;
1134 position:absolute;
1135 left:-10000px;
1135 left:-10000px;
1136 top:auto;
1136 top:auto;
1137 width:1px;
1137 width:1px;
1138 height:1px;
1138 height:1px;
1139 overflow:hidden;
1139 overflow:hidden;
1140 }
1140 }
General Comments 0
You need to be logged in to leave comments. Login now