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