##// END OF EJS Templates
Use the regular "icon icon-*" for admin menu links (#24313)....
Jean-Philippe Lang -
r15590:5a7211f70e4b
parent child
Show More
@@ -1,301 +1,311
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2016 Jean-Philippe Lang
2 # Copyright (C) 2006-2016 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 require 'redmine/core_ext'
18 require 'redmine/core_ext'
19
19
20 begin
20 begin
21 require 'rmagick' unless Object.const_defined?(:Magick)
21 require 'rmagick' unless Object.const_defined?(:Magick)
22 rescue LoadError
22 rescue LoadError
23 # RMagick is not available
23 # RMagick is not available
24 end
24 end
25 begin
25 begin
26 require 'redcarpet' unless Object.const_defined?(:Redcarpet)
26 require 'redcarpet' unless Object.const_defined?(:Redcarpet)
27 rescue LoadError
27 rescue LoadError
28 # Redcarpet is not available
28 # Redcarpet is not available
29 end
29 end
30
30
31 require 'redmine/acts/positioned'
31 require 'redmine/acts/positioned'
32
32
33 require 'redmine/scm/base'
33 require 'redmine/scm/base'
34 require 'redmine/access_control'
34 require 'redmine/access_control'
35 require 'redmine/access_keys'
35 require 'redmine/access_keys'
36 require 'redmine/activity'
36 require 'redmine/activity'
37 require 'redmine/activity/fetcher'
37 require 'redmine/activity/fetcher'
38 require 'redmine/ciphering'
38 require 'redmine/ciphering'
39 require 'redmine/codeset_util'
39 require 'redmine/codeset_util'
40 require 'redmine/field_format'
40 require 'redmine/field_format'
41 require 'redmine/menu_manager'
41 require 'redmine/menu_manager'
42 require 'redmine/notifiable'
42 require 'redmine/notifiable'
43 require 'redmine/platform'
43 require 'redmine/platform'
44 require 'redmine/mime_type'
44 require 'redmine/mime_type'
45 require 'redmine/notifiable'
45 require 'redmine/notifiable'
46 require 'redmine/search'
46 require 'redmine/search'
47 require 'redmine/syntax_highlighting'
47 require 'redmine/syntax_highlighting'
48 require 'redmine/thumbnail'
48 require 'redmine/thumbnail'
49 require 'redmine/unified_diff'
49 require 'redmine/unified_diff'
50 require 'redmine/utils'
50 require 'redmine/utils'
51 require 'redmine/version'
51 require 'redmine/version'
52 require 'redmine/wiki_formatting'
52 require 'redmine/wiki_formatting'
53
53
54 require 'redmine/default_data/loader'
54 require 'redmine/default_data/loader'
55 require 'redmine/helpers/calendar'
55 require 'redmine/helpers/calendar'
56 require 'redmine/helpers/diff'
56 require 'redmine/helpers/diff'
57 require 'redmine/helpers/gantt'
57 require 'redmine/helpers/gantt'
58 require 'redmine/helpers/time_report'
58 require 'redmine/helpers/time_report'
59 require 'redmine/views/other_formats_builder'
59 require 'redmine/views/other_formats_builder'
60 require 'redmine/views/labelled_form_builder'
60 require 'redmine/views/labelled_form_builder'
61 require 'redmine/views/builders'
61 require 'redmine/views/builders'
62
62
63 require 'redmine/themes'
63 require 'redmine/themes'
64 require 'redmine/hook'
64 require 'redmine/hook'
65 require 'redmine/hook/listener'
65 require 'redmine/hook/listener'
66 require 'redmine/hook/view_listener'
66 require 'redmine/hook/view_listener'
67 require 'redmine/plugin'
67 require 'redmine/plugin'
68
68
69 Redmine::Scm::Base.add "Subversion"
69 Redmine::Scm::Base.add "Subversion"
70 Redmine::Scm::Base.add "Darcs"
70 Redmine::Scm::Base.add "Darcs"
71 Redmine::Scm::Base.add "Mercurial"
71 Redmine::Scm::Base.add "Mercurial"
72 Redmine::Scm::Base.add "Cvs"
72 Redmine::Scm::Base.add "Cvs"
73 Redmine::Scm::Base.add "Bazaar"
73 Redmine::Scm::Base.add "Bazaar"
74 Redmine::Scm::Base.add "Git"
74 Redmine::Scm::Base.add "Git"
75 Redmine::Scm::Base.add "Filesystem"
75 Redmine::Scm::Base.add "Filesystem"
76
76
77 # Permissions
77 # Permissions
78 Redmine::AccessControl.map do |map|
78 Redmine::AccessControl.map do |map|
79 map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true, :read => true
79 map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true, :read => true
80 map.permission :search_project, {:search => :index}, :public => true, :read => true
80 map.permission :search_project, {:search => :index}, :public => true, :read => true
81 map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin
81 map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin
82 map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member
82 map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member
83 map.permission :close_project, {:projects => [:close, :reopen]}, :require => :member, :read => true
83 map.permission :close_project, {:projects => [:close, :reopen]}, :require => :member, :read => true
84 map.permission :select_project_modules, {:projects => :modules}, :require => :member
84 map.permission :select_project_modules, {:projects => :modules}, :require => :member
85 map.permission :view_members, {:members => [:index, :show]}, :public => true, :read => true
85 map.permission :view_members, {:members => [:index, :show]}, :public => true, :read => true
86 map.permission :manage_members, {:projects => :settings, :members => [:index, :show, :new, :create, :update, :destroy, :autocomplete]}, :require => :member
86 map.permission :manage_members, {:projects => :settings, :members => [:index, :show, :new, :create, :update, :destroy, :autocomplete]}, :require => :member
87 map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member
87 map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member
88 map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member
88 map.permission :add_subprojects, {:projects => [:new, :create]}, :require => :member
89
89
90 map.project_module :issue_tracking do |map|
90 map.project_module :issue_tracking do |map|
91 # Issues
91 # Issues
92 map.permission :view_issues, {:issues => [:index, :show],
92 map.permission :view_issues, {:issues => [:index, :show],
93 :auto_complete => [:issues],
93 :auto_complete => [:issues],
94 :context_menus => [:issues],
94 :context_menus => [:issues],
95 :versions => [:index, :show, :status_by],
95 :versions => [:index, :show, :status_by],
96 :journals => [:index, :diff],
96 :journals => [:index, :diff],
97 :queries => :index,
97 :queries => :index,
98 :reports => [:issue_report, :issue_report_details]},
98 :reports => [:issue_report, :issue_report_details]},
99 :read => true
99 :read => true
100 map.permission :add_issues, {:issues => [:new, :create], :attachments => :upload}
100 map.permission :add_issues, {:issues => [:new, :create], :attachments => :upload}
101 map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update], :journals => [:new], :attachments => :upload}
101 map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update], :journals => [:new], :attachments => :upload}
102 map.permission :copy_issues, {:issues => [:new, :create, :bulk_edit, :bulk_update], :attachments => :upload}
102 map.permission :copy_issues, {:issues => [:new, :create, :bulk_edit, :bulk_update], :attachments => :upload}
103 map.permission :manage_issue_relations, {:issue_relations => [:index, :show, :create, :destroy]}
103 map.permission :manage_issue_relations, {:issue_relations => [:index, :show, :create, :destroy]}
104 map.permission :manage_subtasks, {}
104 map.permission :manage_subtasks, {}
105 map.permission :set_issues_private, {}
105 map.permission :set_issues_private, {}
106 map.permission :set_own_issues_private, {}, :require => :loggedin
106 map.permission :set_own_issues_private, {}, :require => :loggedin
107 map.permission :add_issue_notes, {:issues => [:edit, :update], :journals => [:new], :attachments => :upload}
107 map.permission :add_issue_notes, {:issues => [:edit, :update], :journals => [:new], :attachments => :upload}
108 map.permission :edit_issue_notes, {:journals => [:edit, :update]}, :require => :loggedin
108 map.permission :edit_issue_notes, {:journals => [:edit, :update]}, :require => :loggedin
109 map.permission :edit_own_issue_notes, {:journals => [:edit, :update]}, :require => :loggedin
109 map.permission :edit_own_issue_notes, {:journals => [:edit, :update]}, :require => :loggedin
110 map.permission :view_private_notes, {}, :read => true, :require => :member
110 map.permission :view_private_notes, {}, :read => true, :require => :member
111 map.permission :set_notes_private, {}, :require => :member
111 map.permission :set_notes_private, {}, :require => :member
112 map.permission :delete_issues, {:issues => :destroy}, :require => :member
112 map.permission :delete_issues, {:issues => :destroy}, :require => :member
113 # Queries
113 # Queries
114 map.permission :manage_public_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :member
114 map.permission :manage_public_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :member
115 map.permission :save_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :loggedin
115 map.permission :save_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :loggedin
116 # Watchers
116 # Watchers
117 map.permission :view_issue_watchers, {}, :read => true
117 map.permission :view_issue_watchers, {}, :read => true
118 map.permission :add_issue_watchers, {:watchers => [:new, :create, :append, :autocomplete_for_user]}
118 map.permission :add_issue_watchers, {:watchers => [:new, :create, :append, :autocomplete_for_user]}
119 map.permission :delete_issue_watchers, {:watchers => :destroy}
119 map.permission :delete_issue_watchers, {:watchers => :destroy}
120 map.permission :import_issues, {:imports => [:new, :create, :settings, :mapping, :run, :show]}
120 map.permission :import_issues, {:imports => [:new, :create, :settings, :mapping, :run, :show]}
121 # Issue categories
121 # Issue categories
122 map.permission :manage_categories, {:projects => :settings, :issue_categories => [:index, :show, :new, :create, :edit, :update, :destroy]}, :require => :member
122 map.permission :manage_categories, {:projects => :settings, :issue_categories => [:index, :show, :new, :create, :edit, :update, :destroy]}, :require => :member
123 end
123 end
124
124
125 map.project_module :time_tracking do |map|
125 map.project_module :time_tracking do |map|
126 map.permission :view_time_entries, {:timelog => [:index, :report, :show]}, :read => true
126 map.permission :view_time_entries, {:timelog => [:index, :report, :show]}, :read => true
127 map.permission :log_time, {:timelog => [:new, :create]}, :require => :loggedin
127 map.permission :log_time, {:timelog => [:new, :create]}, :require => :loggedin
128 map.permission :edit_time_entries, {:timelog => [:edit, :update, :destroy, :bulk_edit, :bulk_update]}, :require => :member
128 map.permission :edit_time_entries, {:timelog => [:edit, :update, :destroy, :bulk_edit, :bulk_update]}, :require => :member
129 map.permission :edit_own_time_entries, {:timelog => [:edit, :update, :destroy,:bulk_edit, :bulk_update]}, :require => :loggedin
129 map.permission :edit_own_time_entries, {:timelog => [:edit, :update, :destroy,:bulk_edit, :bulk_update]}, :require => :loggedin
130 map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member
130 map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member
131 end
131 end
132
132
133 map.project_module :news do |map|
133 map.project_module :news do |map|
134 map.permission :view_news, {:news => [:index, :show]}, :public => true, :read => true
134 map.permission :view_news, {:news => [:index, :show]}, :public => true, :read => true
135 map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy], :attachments => :upload}, :require => :member
135 map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy], :attachments => :upload}, :require => :member
136 map.permission :comment_news, {:comments => :create}
136 map.permission :comment_news, {:comments => :create}
137 end
137 end
138
138
139 map.project_module :documents do |map|
139 map.project_module :documents do |map|
140 map.permission :view_documents, {:documents => [:index, :show, :download]}, :read => true
140 map.permission :view_documents, {:documents => [:index, :show, :download]}, :read => true
141 map.permission :add_documents, {:documents => [:new, :create, :add_attachment], :attachments => :upload}, :require => :loggedin
141 map.permission :add_documents, {:documents => [:new, :create, :add_attachment], :attachments => :upload}, :require => :loggedin
142 map.permission :edit_documents, {:documents => [:edit, :update, :add_attachment], :attachments => :upload}, :require => :loggedin
142 map.permission :edit_documents, {:documents => [:edit, :update, :add_attachment], :attachments => :upload}, :require => :loggedin
143 map.permission :delete_documents, {:documents => [:destroy]}, :require => :loggedin
143 map.permission :delete_documents, {:documents => [:destroy]}, :require => :loggedin
144 end
144 end
145
145
146 map.project_module :files do |map|
146 map.project_module :files do |map|
147 map.permission :view_files, {:files => :index, :versions => :download}, :read => true
147 map.permission :view_files, {:files => :index, :versions => :download}, :read => true
148 map.permission :manage_files, {:files => [:new, :create], :attachments => :upload}, :require => :loggedin
148 map.permission :manage_files, {:files => [:new, :create], :attachments => :upload}, :require => :loggedin
149 end
149 end
150
150
151 map.project_module :wiki do |map|
151 map.project_module :wiki do |map|
152 map.permission :view_wiki_pages, {:wiki => [:index, :show, :special, :date_index]}, :read => true
152 map.permission :view_wiki_pages, {:wiki => [:index, :show, :special, :date_index]}, :read => true
153 map.permission :view_wiki_edits, {:wiki => [:history, :diff, :annotate]}, :read => true
153 map.permission :view_wiki_edits, {:wiki => [:history, :diff, :annotate]}, :read => true
154 map.permission :export_wiki_pages, {:wiki => [:export]}, :read => true
154 map.permission :export_wiki_pages, {:wiki => [:export]}, :read => true
155 map.permission :edit_wiki_pages, :wiki => [:new, :edit, :update, :preview, :add_attachment], :attachments => :upload
155 map.permission :edit_wiki_pages, :wiki => [:new, :edit, :update, :preview, :add_attachment], :attachments => :upload
156 map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member
156 map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member
157 map.permission :delete_wiki_pages, {:wiki => [:destroy, :destroy_version]}, :require => :member
157 map.permission :delete_wiki_pages, {:wiki => [:destroy, :destroy_version]}, :require => :member
158 map.permission :delete_wiki_pages_attachments, {}
158 map.permission :delete_wiki_pages_attachments, {}
159 map.permission :protect_wiki_pages, {:wiki => :protect}, :require => :member
159 map.permission :protect_wiki_pages, {:wiki => :protect}, :require => :member
160 map.permission :manage_wiki, {:wikis => [:edit, :destroy]}, :require => :member
160 map.permission :manage_wiki, {:wikis => [:edit, :destroy]}, :require => :member
161 end
161 end
162
162
163 map.project_module :repository do |map|
163 map.project_module :repository do |map|
164 map.permission :view_changesets, {:repositories => [:show, :revisions, :revision]}, :read => true
164 map.permission :view_changesets, {:repositories => [:show, :revisions, :revision]}, :read => true
165 map.permission :browse_repository, {:repositories => [:show, :browse, :entry, :raw, :annotate, :changes, :diff, :stats, :graph]}, :read => true
165 map.permission :browse_repository, {:repositories => [:show, :browse, :entry, :raw, :annotate, :changes, :diff, :stats, :graph]}, :read => true
166 map.permission :commit_access, {}
166 map.permission :commit_access, {}
167 map.permission :manage_related_issues, {:repositories => [:add_related_issue, :remove_related_issue]}
167 map.permission :manage_related_issues, {:repositories => [:add_related_issue, :remove_related_issue]}
168 map.permission :manage_repository, {:repositories => [:new, :create, :edit, :update, :committers, :destroy]}, :require => :member
168 map.permission :manage_repository, {:repositories => [:new, :create, :edit, :update, :committers, :destroy]}, :require => :member
169 end
169 end
170
170
171 map.project_module :boards do |map|
171 map.project_module :boards do |map|
172 map.permission :view_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true, :read => true
172 map.permission :view_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true, :read => true
173 map.permission :add_messages, {:messages => [:new, :reply, :quote], :attachments => :upload}
173 map.permission :add_messages, {:messages => [:new, :reply, :quote], :attachments => :upload}
174 map.permission :edit_messages, {:messages => :edit, :attachments => :upload}, :require => :member
174 map.permission :edit_messages, {:messages => :edit, :attachments => :upload}, :require => :member
175 map.permission :edit_own_messages, {:messages => :edit, :attachments => :upload}, :require => :loggedin
175 map.permission :edit_own_messages, {:messages => :edit, :attachments => :upload}, :require => :loggedin
176 map.permission :delete_messages, {:messages => :destroy}, :require => :member
176 map.permission :delete_messages, {:messages => :destroy}, :require => :member
177 map.permission :delete_own_messages, {:messages => :destroy}, :require => :loggedin
177 map.permission :delete_own_messages, {:messages => :destroy}, :require => :loggedin
178 map.permission :manage_boards, {:boards => [:new, :create, :edit, :update, :destroy]}, :require => :member
178 map.permission :manage_boards, {:boards => [:new, :create, :edit, :update, :destroy]}, :require => :member
179 end
179 end
180
180
181 map.project_module :calendar do |map|
181 map.project_module :calendar do |map|
182 map.permission :view_calendar, {:calendars => [:show, :update]}, :read => true
182 map.permission :view_calendar, {:calendars => [:show, :update]}, :read => true
183 end
183 end
184
184
185 map.project_module :gantt do |map|
185 map.project_module :gantt do |map|
186 map.permission :view_gantt, {:gantts => [:show, :update]}, :read => true
186 map.permission :view_gantt, {:gantts => [:show, :update]}, :read => true
187 end
187 end
188 end
188 end
189
189
190 Redmine::MenuManager.map :top_menu do |menu|
190 Redmine::MenuManager.map :top_menu do |menu|
191 menu.push :home, :home_path
191 menu.push :home, :home_path
192 menu.push :my_page, { :controller => 'my', :action => 'page' }, :if => Proc.new { User.current.logged? }
192 menu.push :my_page, { :controller => 'my', :action => 'page' }, :if => Proc.new { User.current.logged? }
193 menu.push :projects, { :controller => 'projects', :action => 'index' }, :caption => :label_project_plural
193 menu.push :projects, { :controller => 'projects', :action => 'index' }, :caption => :label_project_plural
194 menu.push :administration, { :controller => 'admin', :action => 'index' }, :if => Proc.new { User.current.admin? }, :last => true
194 menu.push :administration, { :controller => 'admin', :action => 'index' }, :if => Proc.new { User.current.admin? }, :last => true
195 menu.push :help, Redmine::Info.help_url, :last => true
195 menu.push :help, Redmine::Info.help_url, :last => true
196 end
196 end
197
197
198 Redmine::MenuManager.map :account_menu do |menu|
198 Redmine::MenuManager.map :account_menu do |menu|
199 menu.push :login, :signin_path, :if => Proc.new { !User.current.logged? }
199 menu.push :login, :signin_path, :if => Proc.new { !User.current.logged? }
200 menu.push :register, :register_path, :if => Proc.new { !User.current.logged? && Setting.self_registration? }
200 menu.push :register, :register_path, :if => Proc.new { !User.current.logged? && Setting.self_registration? }
201 menu.push :my_account, { :controller => 'my', :action => 'account' }, :if => Proc.new { User.current.logged? }
201 menu.push :my_account, { :controller => 'my', :action => 'account' }, :if => Proc.new { User.current.logged? }
202 menu.push :logout, :signout_path, :html => {:method => 'post'}, :if => Proc.new { User.current.logged? }
202 menu.push :logout, :signout_path, :html => {:method => 'post'}, :if => Proc.new { User.current.logged? }
203 end
203 end
204
204
205 Redmine::MenuManager.map :application_menu do |menu|
205 Redmine::MenuManager.map :application_menu do |menu|
206 # Empty
206 # Empty
207 end
207 end
208
208
209 Redmine::MenuManager.map :admin_menu do |menu|
209 Redmine::MenuManager.map :admin_menu do |menu|
210 menu.push :projects, {:controller => 'admin', :action => 'projects'}, :caption => :label_project_plural
210 menu.push :projects, {:controller => 'admin', :action => 'projects'}, :caption => :label_project_plural,
211 menu.push :users, {:controller => 'users'}, :caption => :label_user_plural
211 :html => {:class => 'icon icon-projects'}
212 menu.push :groups, {:controller => 'groups'}, :caption => :label_group_plural
212 menu.push :users, {:controller => 'users'}, :caption => :label_user_plural,
213 menu.push :roles, {:controller => 'roles'}, :caption => :label_role_and_permissions
213 :html => {:class => 'icon icon-user'}
214 menu.push :trackers, {:controller => 'trackers'}, :caption => :label_tracker_plural
214 menu.push :groups, {:controller => 'groups'}, :caption => :label_group_plural,
215 :html => {:class => 'icon icon-group'}
216 menu.push :roles, {:controller => 'roles'}, :caption => :label_role_and_permissions,
217 :html => {:class => 'icon icon-roles'}
218 menu.push :trackers, {:controller => 'trackers'}, :caption => :label_tracker_plural,
219 :html => {:class => 'icon icon-issue'}
215 menu.push :issue_statuses, {:controller => 'issue_statuses'}, :caption => :label_issue_status_plural,
220 menu.push :issue_statuses, {:controller => 'issue_statuses'}, :caption => :label_issue_status_plural,
216 :html => {:class => 'issue_statuses'}
221 :html => {:class => 'icon icon-issue-edit'}
217 menu.push :workflows, {:controller => 'workflows', :action => 'edit'}, :caption => :label_workflow
222 menu.push :workflows, {:controller => 'workflows', :action => 'edit'}, :caption => :label_workflow,
223 :html => {:class => 'icon icon-workflows'}
218 menu.push :custom_fields, {:controller => 'custom_fields'}, :caption => :label_custom_field_plural,
224 menu.push :custom_fields, {:controller => 'custom_fields'}, :caption => :label_custom_field_plural,
219 :html => {:class => 'custom_fields'}
225 :html => {:class => 'icon icon-custom-fields'}
220 menu.push :enumerations, {:controller => 'enumerations'}
226 menu.push :enumerations, {:controller => 'enumerations'},
221 menu.push :settings, {:controller => 'settings'}
227 :html => {:class => 'icon icon-list'}
228 menu.push :settings, {:controller => 'settings'},
229 :html => {:class => 'icon icon-settings'}
222 menu.push :ldap_authentication, {:controller => 'auth_sources', :action => 'index'},
230 menu.push :ldap_authentication, {:controller => 'auth_sources', :action => 'index'},
223 :html => {:class => 'server_authentication'}
231 :html => {:class => 'icon icon-server-authentication'}
224 menu.push :plugins, {:controller => 'admin', :action => 'plugins'}, :last => true
232 menu.push :plugins, {:controller => 'admin', :action => 'plugins'}, :last => true,
225 menu.push :info, {:controller => 'admin', :action => 'info'}, :caption => :label_information_plural, :last => true
233 :html => {:class => 'icon icon-plugins'}
234 menu.push :info, {:controller => 'admin', :action => 'info'}, :caption => :label_information_plural, :last => true,
235 :html => {:class => 'icon icon-help'}
226 end
236 end
227
237
228 Redmine::MenuManager.map :project_menu do |menu|
238 Redmine::MenuManager.map :project_menu do |menu|
229 menu.push :new_object, nil, :caption => ' + ',
239 menu.push :new_object, nil, :caption => ' + ',
230 :if => Proc.new { |p| Setting.new_item_menu_tab == '2' },
240 :if => Proc.new { |p| Setting.new_item_menu_tab == '2' },
231 :html => { :id => 'new-object', :onclick => 'toggleNewObjectDropdown(); return false;' }
241 :html => { :id => 'new-object', :onclick => 'toggleNewObjectDropdown(); return false;' }
232 menu.push :new_issue_sub, { :controller => 'issues', :action => 'new', :copy_from => nil }, :param => :project_id, :caption => :label_issue_new,
242 menu.push :new_issue_sub, { :controller => 'issues', :action => 'new', :copy_from => nil }, :param => :project_id, :caption => :label_issue_new,
233 :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) },
243 :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) },
234 :if => Proc.new { |p| Issue.allowed_target_trackers(p).any? },
244 :if => Proc.new { |p| Issue.allowed_target_trackers(p).any? },
235 :permission => :add_issues,
245 :permission => :add_issues,
236 :parent => :new_object
246 :parent => :new_object
237 menu.push :new_issue_category, {:controller => 'issue_categories', :action => 'new'}, :param => :project_id, :caption => :label_issue_category_new,
247 menu.push :new_issue_category, {:controller => 'issue_categories', :action => 'new'}, :param => :project_id, :caption => :label_issue_category_new,
238 :parent => :new_object
248 :parent => :new_object
239 menu.push :new_version, {:controller => 'versions', :action => 'new'}, :param => :project_id, :caption => :label_version_new,
249 menu.push :new_version, {:controller => 'versions', :action => 'new'}, :param => :project_id, :caption => :label_version_new,
240 :parent => :new_object
250 :parent => :new_object
241 menu.push :new_timelog, {:controller => 'timelog', :action => 'new'}, :param => :project_id, :caption => :button_log_time,
251 menu.push :new_timelog, {:controller => 'timelog', :action => 'new'}, :param => :project_id, :caption => :button_log_time,
242 :parent => :new_object
252 :parent => :new_object
243 menu.push :new_news, {:controller => 'news', :action => 'new'}, :param => :project_id, :caption => :label_news_new,
253 menu.push :new_news, {:controller => 'news', :action => 'new'}, :param => :project_id, :caption => :label_news_new,
244 :parent => :new_object
254 :parent => :new_object
245 menu.push :new_document, {:controller => 'documents', :action => 'new'}, :param => :project_id, :caption => :label_document_new,
255 menu.push :new_document, {:controller => 'documents', :action => 'new'}, :param => :project_id, :caption => :label_document_new,
246 :parent => :new_object
256 :parent => :new_object
247 menu.push :new_wiki_page, {:controller => 'wiki', :action => 'new'}, :param => :project_id, :caption => :label_wiki_page_new,
257 menu.push :new_wiki_page, {:controller => 'wiki', :action => 'new'}, :param => :project_id, :caption => :label_wiki_page_new,
248 :parent => :new_object
258 :parent => :new_object
249 menu.push :new_file, {:controller => 'files', :action => 'new'}, :param => :project_id, :caption => :label_attachment_new,
259 menu.push :new_file, {:controller => 'files', :action => 'new'}, :param => :project_id, :caption => :label_attachment_new,
250 :parent => :new_object
260 :parent => :new_object
251 menu.push :overview, { :controller => 'projects', :action => 'show' }
261 menu.push :overview, { :controller => 'projects', :action => 'show' }
252 menu.push :activity, { :controller => 'activities', :action => 'index' }
262 menu.push :activity, { :controller => 'activities', :action => 'index' }
253 menu.push :roadmap, { :controller => 'versions', :action => 'index' }, :param => :project_id,
263 menu.push :roadmap, { :controller => 'versions', :action => 'index' }, :param => :project_id,
254 :if => Proc.new { |p| p.shared_versions.any? }
264 :if => Proc.new { |p| p.shared_versions.any? }
255 menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural
265 menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural
256 menu.push :new_issue, { :controller => 'issues', :action => 'new', :copy_from => nil }, :param => :project_id, :caption => :label_issue_new,
266 menu.push :new_issue, { :controller => 'issues', :action => 'new', :copy_from => nil }, :param => :project_id, :caption => :label_issue_new,
257 :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) },
267 :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) },
258 :if => Proc.new { |p| Setting.new_item_menu_tab == '1' && Issue.allowed_target_trackers(p).any? },
268 :if => Proc.new { |p| Setting.new_item_menu_tab == '1' && Issue.allowed_target_trackers(p).any? },
259 :permission => :add_issues
269 :permission => :add_issues
260 menu.push :time_entries, { :controller => 'timelog', :action => 'index' }, :param => :project_id, :caption => :label_spent_time
270 menu.push :time_entries, { :controller => 'timelog', :action => 'index' }, :param => :project_id, :caption => :label_spent_time
261 menu.push :gantt, { :controller => 'gantts', :action => 'show' }, :param => :project_id, :caption => :label_gantt
271 menu.push :gantt, { :controller => 'gantts', :action => 'show' }, :param => :project_id, :caption => :label_gantt
262 menu.push :calendar, { :controller => 'calendars', :action => 'show' }, :param => :project_id, :caption => :label_calendar
272 menu.push :calendar, { :controller => 'calendars', :action => 'show' }, :param => :project_id, :caption => :label_calendar
263 menu.push :news, { :controller => 'news', :action => 'index' }, :param => :project_id, :caption => :label_news_plural
273 menu.push :news, { :controller => 'news', :action => 'index' }, :param => :project_id, :caption => :label_news_plural
264 menu.push :documents, { :controller => 'documents', :action => 'index' }, :param => :project_id, :caption => :label_document_plural
274 menu.push :documents, { :controller => 'documents', :action => 'index' }, :param => :project_id, :caption => :label_document_plural
265 menu.push :wiki, { :controller => 'wiki', :action => 'show', :id => nil }, :param => :project_id,
275 menu.push :wiki, { :controller => 'wiki', :action => 'show', :id => nil }, :param => :project_id,
266 :if => Proc.new { |p| p.wiki && !p.wiki.new_record? }
276 :if => Proc.new { |p| p.wiki && !p.wiki.new_record? }
267 menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id,
277 menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id,
268 :if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural
278 :if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural
269 menu.push :files, { :controller => 'files', :action => 'index' }, :caption => :label_file_plural, :param => :project_id
279 menu.push :files, { :controller => 'files', :action => 'index' }, :caption => :label_file_plural, :param => :project_id
270 menu.push :repository, { :controller => 'repositories', :action => 'show', :repository_id => nil, :path => nil, :rev => nil },
280 menu.push :repository, { :controller => 'repositories', :action => 'show', :repository_id => nil, :path => nil, :rev => nil },
271 :if => Proc.new { |p| p.repository && !p.repository.new_record? }
281 :if => Proc.new { |p| p.repository && !p.repository.new_record? }
272 menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true
282 menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true
273 end
283 end
274
284
275 Redmine::Activity.map do |activity|
285 Redmine::Activity.map do |activity|
276 activity.register :issues, :class_name => %w(Issue Journal)
286 activity.register :issues, :class_name => %w(Issue Journal)
277 activity.register :changesets
287 activity.register :changesets
278 activity.register :news
288 activity.register :news
279 activity.register :documents, :class_name => %w(Document Attachment)
289 activity.register :documents, :class_name => %w(Document Attachment)
280 activity.register :files, :class_name => 'Attachment'
290 activity.register :files, :class_name => 'Attachment'
281 activity.register :wiki_edits, :class_name => 'WikiContent::Version', :default => false
291 activity.register :wiki_edits, :class_name => 'WikiContent::Version', :default => false
282 activity.register :messages, :default => false
292 activity.register :messages, :default => false
283 activity.register :time_entries, :default => false
293 activity.register :time_entries, :default => false
284 end
294 end
285
295
286 Redmine::Search.map do |search|
296 Redmine::Search.map do |search|
287 search.register :issues
297 search.register :issues
288 search.register :news
298 search.register :news
289 search.register :documents
299 search.register :documents
290 search.register :changesets
300 search.register :changesets
291 search.register :wiki_pages
301 search.register :wiki_pages
292 search.register :messages
302 search.register :messages
293 search.register :projects
303 search.register :projects
294 end
304 end
295
305
296 Redmine::WikiFormatting.map do |format|
306 Redmine::WikiFormatting.map do |format|
297 format.register :textile
307 format.register :textile
298 format.register :markdown if Object.const_defined?(:Redcarpet)
308 format.register :markdown if Object.const_defined?(:Redcarpet)
299 end
309 end
300
310
301 ActionView::Template.register_template_handler :rsb, Redmine::Views::ApiTemplateHandler
311 ActionView::Template.register_template_handler :rsb, Redmine::Views::ApiTemplateHandler
@@ -1,1406 +1,1397
1 html {overflow-y:scroll;}
1 html {overflow-y:scroll;}
2 body { font-family: Verdana, sans-serif; font-size: 12px; color:#333; margin: 0; padding: 0; min-width: 900px; }
2 body { font-family: Verdana, sans-serif; font-size: 12px; color:#333; 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 pre, code {font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace;}
10 pre, code {font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace;}
11
11
12 /***** Layout *****/
12 /***** Layout *****/
13 #wrapper {background: white;overflow: hidden;}
13 #wrapper {background: white;overflow: hidden;}
14
14
15 #top-menu {background: #3E5B76; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
15 #top-menu {background: #3E5B76; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
16 #top-menu ul {margin: 0; padding: 0;}
16 #top-menu ul {margin: 0; padding: 0;}
17 #top-menu li {
17 #top-menu li {
18 float:left;
18 float:left;
19 list-style-type:none;
19 list-style-type:none;
20 margin: 0px 0px 0px 0px;
20 margin: 0px 0px 0px 0px;
21 padding: 0px 0px 0px 0px;
21 padding: 0px 0px 0px 0px;
22 white-space:nowrap;
22 white-space:nowrap;
23 }
23 }
24 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
24 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
25 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
25 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
26
26
27 #account {float:right;}
27 #account {float:right;}
28
28
29 #header {min-height:5.3em;margin:0;background-color:#628DB6;color:#f8f8f8; padding: 4px 8px 20px 6px; position:relative;}
29 #header {min-height:5.3em;margin:0;background-color:#628DB6;color:#f8f8f8; padding: 4px 8px 20px 6px; position:relative;}
30 #header a {color:#f8f8f8;}
30 #header a {color:#f8f8f8;}
31 #header h1 { overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
31 #header h1 { overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
32 #header h1 .breadcrumbs { display:block; font-size: .5em; font-weight: normal; }
32 #header h1 .breadcrumbs { display:block; font-size: .5em; font-weight: normal; }
33 #quick-search {float:right;}
33 #quick-search {float:right;}
34
34
35 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px; width: 100%;}
35 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px; width: 100%;}
36 #main-menu ul {margin: 0; padding: 0; width: 100%; white-space: nowrap;}
36 #main-menu ul {margin: 0; padding: 0; width: 100%; white-space: nowrap;}
37 #main-menu li {
37 #main-menu li {
38 float:none;
38 float:none;
39 list-style-type:none;
39 list-style-type:none;
40 margin: 0px 2px 0px 0px;
40 margin: 0px 2px 0px 0px;
41 padding: 0px 0px 0px 0px;
41 padding: 0px 0px 0px 0px;
42 white-space:nowrap;
42 white-space:nowrap;
43 display:inline-block;
43 display:inline-block;
44 }
44 }
45 #main-menu li a {
45 #main-menu li a {
46 display: block;
46 display: block;
47 color: #fff;
47 color: #fff;
48 text-decoration: none;
48 text-decoration: none;
49 font-weight: bold;
49 font-weight: bold;
50 margin: 0;
50 margin: 0;
51 padding: 4px 10px 4px 10px;
51 padding: 4px 10px 4px 10px;
52 }
52 }
53 #main-menu li a:hover {background:#759FCF; color:#fff;}
53 #main-menu li a:hover {background:#759FCF; color:#fff;}
54 #main-menu li:hover ul.menu-children, #main-menu li ul.menu-children.visible {display: block;}
54 #main-menu li:hover ul.menu-children, #main-menu li ul.menu-children.visible {display: block;}
55 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
55 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
56 #main-menu li a.new-object { background-color:#759FCF; }
56 #main-menu li a.new-object { background-color:#759FCF; }
57
57
58 #main-menu .menu-children {
58 #main-menu .menu-children {
59 display: none;
59 display: none;
60 position:absolute;
60 position:absolute;
61 width: inherit;
61 width: inherit;
62 z-index:45;
62 z-index:45;
63 background-color:#fff;
63 background-color:#fff;
64 border-right: 1px solid #759FCF;
64 border-right: 1px solid #759FCF;
65 border-bottom: 1px solid #759FCF;
65 border-bottom: 1px solid #759FCF;
66 border-left: 1px solid #759FCF;
66 border-left: 1px solid #759FCF;
67 }
67 }
68 #main-menu .menu-children li {float:left; clear:both; width:100%;}
68 #main-menu .menu-children li {float:left; clear:both; width:100%;}
69 #main-menu .menu-children li a {color: #555; background-color:#fff; font-weight:normal;}
69 #main-menu .menu-children li a {color: #555; background-color:#fff; font-weight:normal;}
70 #main-menu .menu-children li a:hover {color: #fff; background-color: #759FCF;}
70 #main-menu .menu-children li a:hover {color: #fff; background-color: #759FCF;}
71
71
72 #main-menu .tabs-buttons {
72 #main-menu .tabs-buttons {
73 right: 6px;
73 right: 6px;
74 background-color: transparent;
74 background-color: transparent;
75 border-bottom-color: transparent;
75 border-bottom-color: transparent;
76 }
76 }
77
77
78 #admin-menu ul {margin: 0; padding: 0;}
78 #admin-menu ul {margin: 0; padding: 0;}
79 #admin-menu li {margin: 0; padding: 0 0 6px 0; list-style-type:none;}
79 #admin-menu li {margin: 0; padding: 0 0 6px 0; list-style-type:none;}
80
80
81 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
82 #admin-menu a.projects { background-image: url(../images/projects.png); }
83 #admin-menu a.users { background-image: url(../images/user.png); }
84 #admin-menu a.groups { background-image: url(../images/group.png); }
85 #admin-menu a.roles { background-image: url(../images/database_key.png); }
86 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
87 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
88 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
89 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
90 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
91 #admin-menu a.settings { background-image: url(../images/changeset.png); }
92 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
93 #admin-menu a.info { background-image: url(../images/help.png); }
94 #admin-menu a.server_authentication { background-image: url(../images/server_key.png); }
95
96 #main {background-color:#EEEEEE;}
81 #main {background-color:#EEEEEE;}
97
82
98 #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;}
83 #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;}
99 * html #sidebar{ width: 22%; }
84 * html #sidebar{ width: 22%; }
100 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
85 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
101 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
86 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
102 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
87 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
103 #sidebar .contextual { margin-right: 1em; }
88 #sidebar .contextual { margin-right: 1em; }
104 #sidebar ul, ul.flat {margin: 0; padding: 0;}
89 #sidebar ul, ul.flat {margin: 0; padding: 0;}
105 #sidebar ul li, ul.flat li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
90 #sidebar ul li, ul.flat li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
106 #sidebar div.wiki ul {margin:inherit; padding-left:40px;}
91 #sidebar div.wiki ul {margin:inherit; padding-left:40px;}
107 #sidebar div.wiki ul li {list-style-type:inherit;}
92 #sidebar div.wiki ul li {list-style-type:inherit;}
108
93
109 #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
94 #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
110 * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
95 * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
111 html>body #content { min-height: 600px; }
96 html>body #content { min-height: 600px; }
112 * html body #content { height: 600px; } /* IE */
97 * html body #content { height: 600px; } /* IE */
113
98
114 #main.nosidebar #sidebar{ display: none; }
99 #main.nosidebar #sidebar{ display: none; }
115 #main.nosidebar #content{ width: auto; border-right: 0; }
100 #main.nosidebar #content{ width: auto; border-right: 0; }
116
101
117 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
102 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
118
103
119 #login-form {margin:5em auto 2em auto; padding:20px; width:340px; border:1px solid #FDBF3B; background-color:#FFEBC1; border-radius:4px; box-sizing: border-box;}
104 #login-form {margin:5em auto 2em auto; padding:20px; width:340px; border:1px solid #FDBF3B; background-color:#FFEBC1; border-radius:4px; box-sizing: border-box;}
120 #login-form label {display:block; margin-bottom:5px;}
105 #login-form label {display:block; margin-bottom:5px;}
121 #login-form input[type=text], #login-form input[type=password] {border:1px solid #ccc; border-radius:3px; margin-bottom:15px; padding:7px; display:block; width:100%; box-sizing: border-box;}
106 #login-form input[type=text], #login-form input[type=password] {border:1px solid #ccc; border-radius:3px; margin-bottom:15px; padding:7px; display:block; width:100%; box-sizing: border-box;}
122 #login-form label {font-weight:bold;}
107 #login-form label {font-weight:bold;}
123 #login-form label[for=autologin] {font-weight:normal;}
108 #login-form label[for=autologin] {font-weight:normal;}
124 #login-form a.lost_password {float:right; font-weight:normal;}
109 #login-form a.lost_password {float:right; font-weight:normal;}
125 #login-form input#openid_url {background:#fff url(../images/openid-bg.gif) no-repeat 4px 50%; padding-left:24px !important;}
110 #login-form input#openid_url {background:#fff url(../images/openid-bg.gif) no-repeat 4px 50%; padding-left:24px !important;}
126 #login-form input#login-submit {margin-top:15px; padding:7px; display:block; width:100%; box-sizing: border-box;}
111 #login-form input#login-submit {margin-top:15px; padding:7px; display:block; width:100%; box-sizing: border-box;}
127
112
128 div.modal { border-radius:5px; background:#fff; z-index:50; padding:4px;}
113 div.modal { border-radius:5px; background:#fff; z-index:50; padding:4px;}
129 div.modal h3.title {display:none;}
114 div.modal h3.title {display:none;}
130 div.modal p.buttons {text-align:right; margin-bottom:0;}
115 div.modal p.buttons {text-align:right; margin-bottom:0;}
131 div.modal .box p {margin: 0.3em 0;}
116 div.modal .box p {margin: 0.3em 0;}
132
117
133 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
118 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
134
119
135 .mobile-show {display: none;}
120 .mobile-show {display: none;}
136
121
137 /***** Links *****/
122 /***** Links *****/
138 a, a:link, a:visited{ color: #169; text-decoration: none; }
123 a, a:link, a:visited{ color: #169; text-decoration: none; }
139 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
124 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
140 a img{ border: 0; }
125 a img{ border: 0; }
141
126
142 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
127 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
143 a.project.closed, a.project.closed:link, a.project.closed:visited { color: #999; }
128 a.project.closed, a.project.closed:link, a.project.closed:visited { color: #999; }
144 a.user.locked, a.user.locked:link, a.user.locked:visited {color: #999;}
129 a.user.locked, a.user.locked:link, a.user.locked:visited {color: #999;}
145
130
146 #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px;}
131 #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px;}
147 #sidebar a.selected:hover {text-decoration:none;}
132 #sidebar a.selected:hover {text-decoration:none;}
148 #admin-menu a {line-height:1.7em;}
133 #admin-menu a {line-height:1.7em;}
149 #admin-menu a.selected {padding-left: 20px !important; background-position: 2px 40%;}
134 #admin-menu a.selected {padding-left: 20px !important; background-position: 2px 40%;}
150
135
151 a.collapsible {padding-left: 12px; background: url(../images/arrow_expanded.png) no-repeat -3px 40%;}
136 a.collapsible {padding-left: 12px; background: url(../images/arrow_expanded.png) no-repeat -3px 40%;}
152 a.collapsible.collapsed {background: url(../images/arrow_collapsed.png) no-repeat -5px 40%;}
137 a.collapsible.collapsed {background: url(../images/arrow_collapsed.png) no-repeat -5px 40%;}
153
138
154 a#toggle-completed-versions {color:#999;}
139 a#toggle-completed-versions {color:#999;}
155
140
156 a.toggle-checkboxes { margin-left: 5px; padding-left: 12px; background: url(../images/toggle_check.png) no-repeat 0% 50%; }
141 a.toggle-checkboxes { margin-left: 5px; padding-left: 12px; background: url(../images/toggle_check.png) no-repeat 0% 50%; }
157
142
158 /***** Tables *****/
143 /***** Tables *****/
159 table.list, .table-list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
144 table.list, .table-list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
160 table.list th, .table-list-header { background-color:#EEEEEE; padding: 4px; white-space:nowrap; font-weight:bold; }
145 table.list th, .table-list-header { background-color:#EEEEEE; padding: 4px; white-space:nowrap; font-weight:bold; }
161 table.list td {text-align:center; vertical-align:middle; padding-right:10px;}
146 table.list td {text-align:center; vertical-align:middle; padding-right:10px;}
162 table.list td.id { width: 2%; text-align: center;}
147 table.list td.id { width: 2%; text-align: center;}
163 table.list td.name, table.list td.description, table.list td.subject, table.list td.comments, table.list td.roles {text-align: left;}
148 table.list td.name, table.list td.description, table.list td.subject, table.list td.comments, table.list td.roles {text-align: left;}
164 table.list td.tick {width:15%}
149 table.list td.tick {width:15%}
165 table.list td.checkbox { width: 15px; padding: 2px 0 0 0; }
150 table.list td.checkbox { width: 15px; padding: 2px 0 0 0; }
166 table.list td.checkbox input {padding:0px;}
151 table.list td.checkbox input {padding:0px;}
167 table.list td.buttons, div.buttons { white-space:nowrap; text-align: right; }
152 table.list td.buttons, div.buttons { white-space:nowrap; text-align: right; }
168 table.list td.buttons a, div.buttons a { margin-right: 0.6em; }
153 table.list td.buttons a, div.buttons a { margin-right: 0.6em; }
169 table.list td.buttons img, div.buttons img {vertical-align:middle;}
154 table.list td.buttons img, div.buttons img {vertical-align:middle;}
170 table.list td.reorder {width:15%; white-space:nowrap; text-align:center; }
155 table.list td.reorder {width:15%; white-space:nowrap; text-align:center; }
171 table.list table.progress td {padding-right:0px;}
156 table.list table.progress td {padding-right:0px;}
172 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
157 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
173 #role-permissions-trackers table.list th {white-space:normal;}
158 #role-permissions-trackers table.list th {white-space:normal;}
174
159
175 .table-list-cell {display: table-cell; vertical-align: top; padding:2px; }
160 .table-list-cell {display: table-cell; vertical-align: top; padding:2px; }
176
161
177 tr.project td.name a { white-space:nowrap; }
162 tr.project td.name a { white-space:nowrap; }
178 tr.project.closed, tr.project.archived { color: #aaa; }
163 tr.project.closed, tr.project.archived { color: #aaa; }
179 tr.project.closed a, tr.project.archived a { color: #aaa; }
164 tr.project.closed a, tr.project.archived a { color: #aaa; }
180
165
181 tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
166 tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
182 tr.project.idnt-1 td.name {padding-left: 0.5em;}
167 tr.project.idnt-1 td.name {padding-left: 0.5em;}
183 tr.project.idnt-2 td.name {padding-left: 2em;}
168 tr.project.idnt-2 td.name {padding-left: 2em;}
184 tr.project.idnt-3 td.name {padding-left: 3.5em;}
169 tr.project.idnt-3 td.name {padding-left: 3.5em;}
185 tr.project.idnt-4 td.name {padding-left: 5em;}
170 tr.project.idnt-4 td.name {padding-left: 5em;}
186 tr.project.idnt-5 td.name {padding-left: 6.5em;}
171 tr.project.idnt-5 td.name {padding-left: 6.5em;}
187 tr.project.idnt-6 td.name {padding-left: 8em;}
172 tr.project.idnt-6 td.name {padding-left: 8em;}
188 tr.project.idnt-7 td.name {padding-left: 9.5em;}
173 tr.project.idnt-7 td.name {padding-left: 9.5em;}
189 tr.project.idnt-8 td.name {padding-left: 11em;}
174 tr.project.idnt-8 td.name {padding-left: 11em;}
190 tr.project.idnt-9 td.name {padding-left: 12.5em;}
175 tr.project.idnt-9 td.name {padding-left: 12.5em;}
191
176
192 tr.issue { text-align: center; white-space: nowrap; }
177 tr.issue { text-align: center; white-space: nowrap; }
193 tr.issue td.subject, tr.issue td.category, td.assigned_to, tr.issue td.string, tr.issue td.text, tr.issue td.list, tr.issue td.relations, tr.issue td.parent { white-space: normal; }
178 tr.issue td.subject, tr.issue td.category, td.assigned_to, tr.issue td.string, tr.issue td.text, tr.issue td.list, tr.issue td.relations, tr.issue td.parent { white-space: normal; }
194 tr.issue td.relations { text-align: left; }
179 tr.issue td.relations { text-align: left; }
195 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
180 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
196 tr.issue td.relations span {white-space: nowrap;}
181 tr.issue td.relations span {white-space: nowrap;}
197 table.issues td.description {color:#777; font-size:90%; padding:4px 4px 4px 24px; text-align:left; white-space:normal;}
182 table.issues td.description {color:#777; font-size:90%; padding:4px 4px 4px 24px; text-align:left; white-space:normal;}
198 table.issues td.description pre {white-space:normal;}
183 table.issues td.description pre {white-space:normal;}
199
184
200 tr.issue.idnt td.subject {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%;}
185 tr.issue.idnt td.subject {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%;}
201 tr.issue.idnt-1 td.subject {padding-left: 24px; background-position: 8px 50%;}
186 tr.issue.idnt-1 td.subject {padding-left: 24px; background-position: 8px 50%;}
202 tr.issue.idnt-2 td.subject {padding-left: 40px; background-position: 24px 50%;}
187 tr.issue.idnt-2 td.subject {padding-left: 40px; background-position: 24px 50%;}
203 tr.issue.idnt-3 td.subject {padding-left: 56px; background-position: 40px 50%;}
188 tr.issue.idnt-3 td.subject {padding-left: 56px; background-position: 40px 50%;}
204 tr.issue.idnt-4 td.subject {padding-left: 72px; background-position: 56px 50%;}
189 tr.issue.idnt-4 td.subject {padding-left: 72px; background-position: 56px 50%;}
205 tr.issue.idnt-5 td.subject {padding-left: 88px; background-position: 72px 50%;}
190 tr.issue.idnt-5 td.subject {padding-left: 88px; background-position: 72px 50%;}
206 tr.issue.idnt-6 td.subject {padding-left: 104px; background-position: 88px 50%;}
191 tr.issue.idnt-6 td.subject {padding-left: 104px; background-position: 88px 50%;}
207 tr.issue.idnt-7 td.subject {padding-left: 120px; background-position: 104px 50%;}
192 tr.issue.idnt-7 td.subject {padding-left: 120px; background-position: 104px 50%;}
208 tr.issue.idnt-8 td.subject {padding-left: 136px; background-position: 120px 50%;}
193 tr.issue.idnt-8 td.subject {padding-left: 136px; background-position: 120px 50%;}
209 tr.issue.idnt-9 td.subject {padding-left: 152px; background-position: 136px 50%;}
194 tr.issue.idnt-9 td.subject {padding-left: 152px; background-position: 136px 50%;}
210
195
211 table.issue-report {table-layout:fixed;}
196 table.issue-report {table-layout:fixed;}
212
197
213 tr.entry { border: 1px solid #f8f8f8; }
198 tr.entry { border: 1px solid #f8f8f8; }
214 tr.entry td { white-space: nowrap; }
199 tr.entry td { white-space: nowrap; }
215 tr.entry td.filename {width:30%; text-align:left;}
200 tr.entry td.filename {width:30%; text-align:left;}
216 tr.entry td.filename_no_report {width:70%; text-align:left;}
201 tr.entry td.filename_no_report {width:70%; text-align:left;}
217 tr.entry td.size { text-align: right; font-size: 90%; }
202 tr.entry td.size { text-align: right; font-size: 90%; }
218 tr.entry td.revision, tr.entry td.author { text-align: center; }
203 tr.entry td.revision, tr.entry td.author { text-align: center; }
219 tr.entry td.age { text-align: right; }
204 tr.entry td.age { text-align: right; }
220 tr.entry.file td.filename a { margin-left: 16px; }
205 tr.entry.file td.filename a { margin-left: 16px; }
221 tr.entry.file td.filename_no_report a { margin-left: 16px; }
206 tr.entry.file td.filename_no_report a { margin-left: 16px; }
222
207
223 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
208 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
224 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
209 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
225
210
226 tr.changeset { height: 20px }
211 tr.changeset { height: 20px }
227 tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; }
212 tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; }
228 tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; }
213 tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; }
229 tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;}
214 tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;}
230 tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;}
215 tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;}
231
216
232 table.files tbody th {text-align:left;}
217 table.files tbody th {text-align:left;}
233 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
218 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
234 table.files tr.file td.digest { font-size: 80%; }
219 table.files tr.file td.digest { font-size: 80%; }
235
220
236 table.members td.roles, table.memberships td.roles { width: 45%; }
221 table.members td.roles, table.memberships td.roles { width: 45%; }
237
222
238 tr.message { height: 2.6em; }
223 tr.message { height: 2.6em; }
239 tr.message td.subject { padding-left: 20px; }
224 tr.message td.subject { padding-left: 20px; }
240 tr.message td.created_on { white-space: nowrap; }
225 tr.message td.created_on { white-space: nowrap; }
241 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
226 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
242 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
227 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
243 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
228 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
244
229
245 tr.version.closed, tr.version.closed a { color: #999; }
230 tr.version.closed, tr.version.closed a { color: #999; }
246 tr.version td.name { padding-left: 20px; }
231 tr.version td.name { padding-left: 20px; }
247 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
232 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
248 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; }
233 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; }
249
234
250 tr.user td {width:13%;white-space: nowrap;}
235 tr.user td {width:13%;white-space: nowrap;}
251 td.username, td.firstname, td.lastname, td.email {text-align:left !important;}
236 td.username, td.firstname, td.lastname, td.email {text-align:left !important;}
252 tr.user td.email { width:18%; }
237 tr.user td.email { width:18%; }
253 tr.user.locked, tr.user.registered { color: #aaa; }
238 tr.user.locked, tr.user.registered { color: #aaa; }
254 tr.user.locked a, tr.user.registered a { color: #aaa; }
239 tr.user.locked a, tr.user.registered a { color: #aaa; }
255
240
256 table.permissions td.role {color:#999;font-size:90%;font-weight:normal !important;text-align:center;vertical-align:bottom;}
241 table.permissions td.role {color:#999;font-size:90%;font-weight:normal !important;text-align:center;vertical-align:bottom;}
257
242
258 tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;}
243 tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;}
259
244
260 tr.time-entry { text-align: center; white-space: nowrap; }
245 tr.time-entry { text-align: center; white-space: nowrap; }
261 tr.time-entry td.issue, tr.time-entry td.comments, tr.time-entry td.subject, tr.time-entry td.activity { text-align: left; white-space: normal; }
246 tr.time-entry td.issue, tr.time-entry td.comments, tr.time-entry td.subject, tr.time-entry td.activity { text-align: left; white-space: normal; }
262 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
247 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
263 td.hours .hours-dec { font-size: 0.9em; }
248 td.hours .hours-dec { font-size: 0.9em; }
264
249
265 table.plugins td { vertical-align: middle; }
250 table.plugins td { vertical-align: middle; }
266 table.plugins td.configure { text-align: right; padding-right: 1em; }
251 table.plugins td.configure { text-align: right; padding-right: 1em; }
267 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
252 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
268 table.plugins span.description { display: block; font-size: 0.9em; }
253 table.plugins span.description { display: block; font-size: 0.9em; }
269 table.plugins span.url { display: block; font-size: 0.9em; }
254 table.plugins span.url { display: block; font-size: 0.9em; }
270
255
271 tr.group td { padding: 0.8em 0 0.5em 0.3em; border-bottom: 1px solid #ccc; text-align:left; }
256 tr.group td { padding: 0.8em 0 0.5em 0.3em; border-bottom: 1px solid #ccc; text-align:left; }
272 tr.group span.name {font-weight:bold;}
257 tr.group span.name {font-weight:bold;}
273 tr.group span.count {font-weight:bold; position:relative; top:-1px; color:#fff; font-size:10px; background:#9DB9D5; padding:0px 6px 1px 6px; border-radius:3px; margin-left:4px;}
258 tr.group span.count {font-weight:bold; position:relative; top:-1px; color:#fff; font-size:10px; background:#9DB9D5; padding:0px 6px 1px 6px; border-radius:3px; margin-left:4px;}
274 tr.group span.totals {color: #aaa; font-size: 80%;}
259 tr.group span.totals {color: #aaa; font-size: 80%;}
275 tr.group span.totals .value {font-weight:bold; color:#777;}
260 tr.group span.totals .value {font-weight:bold; color:#777;}
276 tr.group a.toggle-all { color: #aaa; font-size: 80%; display:none; float:right; margin-right:4px;}
261 tr.group a.toggle-all { color: #aaa; font-size: 80%; display:none; float:right; margin-right:4px;}
277 tr.group:hover a.toggle-all { display:inline;}
262 tr.group:hover a.toggle-all { display:inline;}
278 a.toggle-all:hover {text-decoration:none;}
263 a.toggle-all:hover {text-decoration:none;}
279
264
280 table.list tbody tr:hover { background-color:#ffffdd; }
265 table.list tbody tr:hover { background-color:#ffffdd; }
281 table.list tbody tr.group:hover { background-color:inherit; }
266 table.list tbody tr.group:hover { background-color:inherit; }
282 table td {padding:2px;}
267 table td {padding:2px;}
283 table p {margin:0;}
268 table p {margin:0;}
284 .odd {background-color:#f6f7f8;}
269 .odd {background-color:#f6f7f8;}
285 .even {background-color: #fff;}
270 .even {background-color: #fff;}
286
271
287 tr.builtin td.name {font-style:italic;}
272 tr.builtin td.name {font-style:italic;}
288
273
289 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
274 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
290 a.sort.asc { background-image: url(../images/sort_asc.png); }
275 a.sort.asc { background-image: url(../images/sort_asc.png); }
291 a.sort.desc { background-image: url(../images/sort_desc.png); }
276 a.sort.desc { background-image: url(../images/sort_desc.png); }
292
277
293 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
278 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
294 table.boards td.last-message {text-align:left;font-size:80%;}
279 table.boards td.last-message {text-align:left;font-size:80%;}
295
280
296 div.table-list.boards .table-list-cell.name {width: 30%;}
281 div.table-list.boards .table-list-cell.name {width: 30%;}
297
282
298 #content table.list-simple {table-layout:fixed;}
283 #content table.list-simple {table-layout:fixed;}
299 #content table.list-simple td {white-space:nowrap; overflow:hidden; text-overflow: ellipsis; text-align:left;}
284 #content table.list-simple td {white-space:nowrap; overflow:hidden; text-overflow: ellipsis; text-align:left;}
300 #content table.list-simple th.id, #content table.list-simple th.project {width:18%;}
285 #content table.list-simple th.id, #content table.list-simple th.project {width:18%;}
301 #content table.list-simple th.status {width:14%;}
286 #content table.list-simple th.status {width:14%;}
302
287
303 table.messages td.last_message {text-align:left;}
288 table.messages td.last_message {text-align:left;}
304
289
305 #query_form_content {font-size:90%;}
290 #query_form_content {font-size:90%;}
306
291
307 .query_sort_criteria_count {
292 .query_sort_criteria_count {
308 display: inline-block;
293 display: inline-block;
309 min-width: 1em;
294 min-width: 1em;
310 }
295 }
311
296
312 table.query-columns {
297 table.query-columns {
313 border-collapse: collapse;
298 border-collapse: collapse;
314 border: 0;
299 border: 0;
315 }
300 }
316
301
317 table.query-columns td.buttons {
302 table.query-columns td.buttons {
318 vertical-align: middle;
303 vertical-align: middle;
319 text-align: center;
304 text-align: center;
320 }
305 }
321 table.query-columns td.buttons input[type=button] {width:35px;}
306 table.query-columns td.buttons input[type=button] {width:35px;}
322 .query-totals {text-align:right;}
307 .query-totals {text-align:right;}
323 .query-totals>span {margin-left:0.6em;}
308 .query-totals>span {margin-left:0.6em;}
324 .query-totals .value {font-weight:bold;}
309 .query-totals .value {font-weight:bold;}
325 body.controller-issues .query-totals {margin-top:-2.3em;}
310 body.controller-issues .query-totals {margin-top:-2.3em;}
326
311
327 td.center {text-align:center;}
312 td.center {text-align:center;}
328
313
329 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
314 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
330
315
331 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
316 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
332 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
317 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
333 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
318 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
334 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
319 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
335 div.spent_time h3 { background: url(../images/time.png) no-repeat 0% 50%; padding-left: 20px; }
320 div.spent_time h3 { background: url(../images/time.png) no-repeat 0% 50%; padding-left: 20px; }
336
321
337 #watchers select {width: 95%; display: block;}
322 #watchers select {width: 95%; display: block;}
338 #watchers a.delete {opacity: 0.4; margin-left: 5px;}
323 #watchers a.delete {opacity: 0.4; margin-left: 5px;}
339 #watchers a.delete:hover {opacity: 1;}
324 #watchers a.delete:hover {opacity: 1;}
340 #watchers img.gravatar {margin: 0 4px 2px 0;}
325 #watchers img.gravatar {margin: 0 4px 2px 0;}
341
326
342 span#watchers_inputs {overflow:auto; display:block;}
327 span#watchers_inputs {overflow:auto; display:block;}
343 span.search_for_watchers {display:block;}
328 span.search_for_watchers {display:block;}
344 span.search_for_watchers, span.add_attachment {font-size:80%; line-height:2.5em;}
329 span.search_for_watchers, span.add_attachment {font-size:80%; line-height:2.5em;}
345 span.search_for_watchers a, span.add_attachment a {padding-left:16px; background: url(../images/bullet_add.png) no-repeat 0 50%; }
330 span.search_for_watchers a, span.add_attachment a {padding-left:16px; background: url(../images/bullet_add.png) no-repeat 0 50%; }
346
331
347
332
348 .highlight { background-color: #FCFD8D;}
333 .highlight { background-color: #FCFD8D;}
349 .highlight.token-1 { background-color: #faa;}
334 .highlight.token-1 { background-color: #faa;}
350 .highlight.token-2 { background-color: #afa;}
335 .highlight.token-2 { background-color: #afa;}
351 .highlight.token-3 { background-color: #aaf;}
336 .highlight.token-3 { background-color: #aaf;}
352
337
353 .box{
338 .box{
354 padding:6px;
339 padding:6px;
355 margin-bottom: 10px;
340 margin-bottom: 10px;
356 background-color:#f6f6f6;
341 background-color:#f6f6f6;
357 color:#505050;
342 color:#505050;
358 line-height:1.5em;
343 line-height:1.5em;
359 border: 1px solid #e4e4e4;
344 border: 1px solid #e4e4e4;
360 word-wrap: break-word;
345 word-wrap: break-word;
361 border-radius: 3px;
346 border-radius: 3px;
362 }
347 }
363
348
364 div.square {
349 div.square {
365 border: 1px solid #999;
350 border: 1px solid #999;
366 float: left;
351 float: left;
367 margin: .3em .4em 0 .4em;
352 margin: .3em .4em 0 .4em;
368 overflow: hidden;
353 overflow: hidden;
369 width: .6em; height: .6em;
354 width: .6em; height: .6em;
370 }
355 }
371 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin:5px 0px; padding-left: 10px; font-size:0.9em;}
356 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin:5px 0px; padding-left: 10px; font-size:0.9em;}
372 .contextual input, .contextual select {font-size:0.9em;}
357 .contextual input, .contextual select {font-size:0.9em;}
373 .message .contextual { margin-top: 0; }
358 .message .contextual { margin-top: 0; }
374
359
375 .splitcontent {overflow:auto;}
360 .splitcontent {overflow:auto;}
376 .splitcontentleft{float:left; width:49%;}
361 .splitcontentleft{float:left; width:49%;}
377 .splitcontentright{float:right; width:49%;}
362 .splitcontentright{float:right; width:49%;}
378 form {display: inline;}
363 form {display: inline;}
379 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
364 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
380 input[type="submit"] { -webkit-appearance: button; }
365 input[type="submit"] { -webkit-appearance: button; }
381 fieldset {border: 1px solid #e4e4e4; margin:0;}
366 fieldset {border: 1px solid #e4e4e4; margin:0;}
382 legend {color: #333;}
367 legend {color: #333;}
383 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
368 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
384 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
369 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
385 blockquote blockquote { margin-left: 0;}
370 blockquote blockquote { margin-left: 0;}
386 abbr, span.field-description[title] { border-bottom: 1px dotted #aaa; cursor: help; }
371 abbr, span.field-description[title] { border-bottom: 1px dotted #aaa; cursor: help; }
387 textarea.wiki-edit {width:99%; resize:vertical;}
372 textarea.wiki-edit {width:99%; resize:vertical;}
388 body.textarea-monospace textarea.wiki-edit {font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; font-size: 12px;}
373 body.textarea-monospace textarea.wiki-edit {font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; font-size: 12px;}
389 body.textarea-proportional textarea.wiki-edit {font-family: Verdana, sans-serif; font-size: 12px;}
374 body.textarea-proportional textarea.wiki-edit {font-family: Verdana, sans-serif; font-size: 12px;}
390 li p {margin-top: 0;}
375 li p {margin-top: 0;}
391 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px; border: 1px solid #d7d7d7; border-radius:3px;}
376 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px; border: 1px solid #d7d7d7; border-radius:3px;}
392 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
377 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
393 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
378 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
394 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
379 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
395 .ltr {direction:ltr !important; unicode-bidi:bidi-override;}
380 .ltr {direction:ltr !important; unicode-bidi:bidi-override;}
396 .rtl {direction:rtl !important; unicode-bidi:bidi-override;}
381 .rtl {direction:rtl !important; unicode-bidi:bidi-override;}
397
382
398 div.issue div.subject div div { padding-left: 16px; }
383 div.issue div.subject div div { padding-left: 16px; }
399 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
384 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
400 div.issue div.subject>div>p { margin-top: 0.5em; }
385 div.issue div.subject>div>p { margin-top: 0.5em; }
401 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
386 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
402 div.issue span.private, div.journal 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;}
387 div.issue span.private, div.journal 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;}
403 div.issue .next-prev-links {color:#999;}
388 div.issue .next-prev-links {color:#999;}
404 div.issue .attributes {margin-top: 2em;}
389 div.issue .attributes {margin-top: 2em;}
405 div.issue .attribute {padding-left:180px; clear:left; min-height: 1.8em;}
390 div.issue .attribute {padding-left:180px; clear:left; min-height: 1.8em;}
406 div.issue .attribute .label {width: 170px; margin-left:-180px; font-weight:bold; float:left;}
391 div.issue .attribute .label {width: 170px; margin-left:-180px; font-weight:bold; float:left;}
407 div.issue.overdue .due-date .value { color: #c22; }
392 div.issue.overdue .due-date .value { color: #c22; }
408
393
409 #issue_tree table.issues, #relations table.issues { border: 0; }
394 #issue_tree table.issues, #relations table.issues { border: 0; }
410 #issue_tree td.checkbox, #relations td.checkbox {display:none;}
395 #issue_tree td.checkbox, #relations td.checkbox {display:none;}
411 #relations td.buttons {padding:0;}
396 #relations td.buttons {padding:0;}
412
397
413 fieldset.collapsible {border-width: 1px 0 0 0;}
398 fieldset.collapsible {border-width: 1px 0 0 0;}
414 fieldset.collapsible>legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
399 fieldset.collapsible>legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
415 fieldset.collapsible.collapsed>legend { background-image: url(../images/arrow_collapsed.png); }
400 fieldset.collapsible.collapsed>legend { background-image: url(../images/arrow_collapsed.png); }
416
401
417 fieldset#date-range p { margin: 2px 0 2px 0; }
402 fieldset#date-range p { margin: 2px 0 2px 0; }
418 fieldset#filters table { border-collapse: collapse; }
403 fieldset#filters table { border-collapse: collapse; }
419 fieldset#filters table td { padding: 0; vertical-align: middle; }
404 fieldset#filters table td { padding: 0; vertical-align: middle; }
420 fieldset#filters tr.filter { height: 2.1em; }
405 fieldset#filters tr.filter { height: 2.1em; }
421 fieldset#filters td.field { width:230px; }
406 fieldset#filters td.field { width:230px; }
422 fieldset#filters td.operator { width:130px; }
407 fieldset#filters td.operator { width:130px; }
423 fieldset#filters td.operator select {max-width:120px;}
408 fieldset#filters td.operator select {max-width:120px;}
424 fieldset#filters td.values { white-space:nowrap; }
409 fieldset#filters td.values { white-space:nowrap; }
425 fieldset#filters td.values select {min-width:130px; max-width:200px;}
410 fieldset#filters td.values select {min-width:130px; max-width:200px;}
426 fieldset#filters td.values input {height:1em;}
411 fieldset#filters td.values input {height:1em;}
427
412
428 #filters-table {width:60%; float:left;}
413 #filters-table {width:60%; float:left;}
429 .add-filter {width:35%; float:right; text-align: right; vertical-align: top;}
414 .add-filter {width:35%; float:right; text-align: right; vertical-align: top;}
430
415
431 #issue_is_private_wrap {float:right; margin-right:1em;}
416 #issue_is_private_wrap {float:right; margin-right:1em;}
432 .toggle-multiselect {background: url(../images/bullet_toggle_plus.png) no-repeat 0% 40%; padding-left:16px; margin-left:0; margin-right:5px; cursor:pointer;}
417 .toggle-multiselect {background: url(../images/bullet_toggle_plus.png) no-repeat 0% 40%; padding-left:16px; margin-left:0; margin-right:5px; cursor:pointer;}
433 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
418 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
434
419
435 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
420 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
436 div#issue-changesets div.changeset { padding: 4px;}
421 div#issue-changesets div.changeset { padding: 4px;}
437 div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
422 div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
438 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
423 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
439
424
440 div.journal {overflow:auto;}
425 div.journal {overflow:auto;}
441 div.journal.private-notes {border-left:2px solid #d22; padding-left:4px; margin-left:-6px;}
426 div.journal.private-notes {border-left:2px solid #d22; padding-left:4px; margin-left:-6px;}
442 div.journal ul.details, ul.revision-info {color:#959595; margin-bottom: 1.5em;}
427 div.journal ul.details, ul.revision-info {color:#959595; margin-bottom: 1.5em;}
443 div.journal ul.details a, ul.revision-info a {color:#70A7CD;}
428 div.journal ul.details a, ul.revision-info a {color:#70A7CD;}
444 div.journal ul.details a:hover, ul.revision-info a:hover {color:#D14848;}
429 div.journal ul.details a:hover, ul.revision-info a:hover {color:#D14848;}
445
430
446 div#activity dl, #search-results { margin-left: 2em; }
431 div#activity dl, #search-results { margin-left: 2em; }
447 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
432 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
448 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
433 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
449 div#activity dt.me .time { border-bottom: 1px solid #999; }
434 div#activity dt.me .time { border-bottom: 1px solid #999; }
450 div#activity dt .time { color: #777; font-size: 80%; }
435 div#activity dt .time { color: #777; font-size: 80%; }
451 div#activity dd .description, #search-results dd .description { font-style: italic; }
436 div#activity dd .description, #search-results dd .description { font-style: italic; }
452 div#activity span.project:after, #search-results span.project:after { content: " -"; }
437 div#activity span.project:after, #search-results span.project:after { content: " -"; }
453 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
438 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
454 div#activity dt.grouped {margin-left:5em;}
439 div#activity dt.grouped {margin-left:5em;}
455 div#activity dd.grouped {margin-left:9em;}
440 div#activity dd.grouped {margin-left:9em;}
456 div#activity dt { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; height: 18px;}
441 div#activity dt { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; height: 18px;}
457
442
458 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
443 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
459
444
460 div#search-results-counts {float:right;}
445 div#search-results-counts {float:right;}
461 div#search-results-counts ul { margin-top: 0.5em; }
446 div#search-results-counts ul { margin-top: 0.5em; }
462 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
447 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
463
448
464 dt.issue { background-image: url(../images/ticket.png); }
449 dt.issue { background-image: url(../images/ticket.png); }
465 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
450 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
466 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
451 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
467 dt.issue-note { background-image: url(../images/ticket_note.png); }
452 dt.issue-note { background-image: url(../images/ticket_note.png); }
468 dt.changeset { background-image: url(../images/changeset.png); }
453 dt.changeset { background-image: url(../images/changeset.png); }
469 dt.news { background-image: url(../images/news.png); }
454 dt.news { background-image: url(../images/news.png); }
470 dt.message { background-image: url(../images/message.png); }
455 dt.message { background-image: url(../images/message.png); }
471 dt.reply { background-image: url(../images/comments.png); }
456 dt.reply { background-image: url(../images/comments.png); }
472 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
457 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
473 dt.attachment { background-image: url(../images/attachment.png); }
458 dt.attachment { background-image: url(../images/attachment.png); }
474 dt.document { background-image: url(../images/document.png); }
459 dt.document { background-image: url(../images/document.png); }
475 dt.project { background-image: url(../images/projects.png); }
460 dt.project { background-image: url(../images/projects.png); }
476 dt.time-entry { background-image: url(../images/time.png); }
461 dt.time-entry { background-image: url(../images/time.png); }
477
462
478 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
463 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
479
464
480 div#roadmap .related-issues { margin-bottom: 1em; }
465 div#roadmap .related-issues { margin-bottom: 1em; }
481 div#roadmap .related-issues td.checkbox { display: none; }
466 div#roadmap .related-issues td.checkbox { display: none; }
482 div#roadmap .wiki h1:first-child { display: none; }
467 div#roadmap .wiki h1:first-child { display: none; }
483 div#roadmap .wiki h1 { font-size: 120%; }
468 div#roadmap .wiki h1 { font-size: 120%; }
484 div#roadmap .wiki h2 { font-size: 110%; }
469 div#roadmap .wiki h2 { font-size: 110%; }
485 body.controller-versions.action-show div#roadmap .related-issues {width:70%;}
470 body.controller-versions.action-show div#roadmap .related-issues {width:70%;}
486
471
487 div#version-summary { float:right; width:28%; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
472 div#version-summary { float:right; width:28%; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
488 div#version-summary fieldset { margin-bottom: 1em; }
473 div#version-summary fieldset { margin-bottom: 1em; }
489 div#version-summary fieldset.time-tracking table { width:100%; }
474 div#version-summary fieldset.time-tracking table { width:100%; }
490 div#version-summary th, div#version-summary td.total-hours { text-align: right; }
475 div#version-summary th, div#version-summary td.total-hours { text-align: right; }
491
476
492 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
477 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
493 table#time-report tbody tr.subtotal { font-style: italic; color:#777;}
478 table#time-report tbody tr.subtotal { font-style: italic; color:#777;}
494 table#time-report tbody tr.subtotal td.hours { color:#b0b0b0; }
479 table#time-report tbody tr.subtotal td.hours { color:#b0b0b0; }
495 table#time-report tbody tr.total { font-weight: bold; background-color:#EEEEEE; border-top:1px solid #e4e4e4;}
480 table#time-report tbody tr.total { font-weight: bold; background-color:#EEEEEE; border-top:1px solid #e4e4e4;}
496 table#time-report .hours-dec { font-size: 0.9em; }
481 table#time-report .hours-dec { font-size: 0.9em; }
497
482
498 div.wiki-page .contextual a {opacity: 0.4}
483 div.wiki-page .contextual a {opacity: 0.4}
499 div.wiki-page .contextual a:hover {opacity: 1}
484 div.wiki-page .contextual a:hover {opacity: 1}
500
485
501 form .attributes select { width: 60%; }
486 form .attributes select { width: 60%; }
502 form .attributes select + a.icon-only { vertical-align: middle; margin-left: 4px; }
487 form .attributes select + a.icon-only { vertical-align: middle; margin-left: 4px; }
503 input#issue_subject, input#document_title { width: 99%; }
488 input#issue_subject, input#document_title { width: 99%; }
504 select#issue_done_ratio { width: 95px; }
489 select#issue_done_ratio { width: 95px; }
505
490
506 ul.projects {margin:0; padding-left:1em;}
491 ul.projects {margin:0; padding-left:1em;}
507 ul.projects ul {padding-left:1.6em;}
492 ul.projects ul {padding-left:1.6em;}
508 ul.projects.root {margin:0; padding:0;}
493 ul.projects.root {margin:0; padding:0;}
509 ul.projects li {list-style-type:none;}
494 ul.projects li {list-style-type:none;}
510
495
511 #projects-index {
496 #projects-index {
512 column-count: auto;
497 column-count: auto;
513 column-width: 400px;
498 column-width: 400px;
514 -webkit-column-count: auto;
499 -webkit-column-count: auto;
515 -webkit-column-width: 400px;
500 -webkit-column-width: 400px;
516 -webkit-column-gap : 0.5rem;
501 -webkit-column-gap : 0.5rem;
517 -moz-column-count: auto;
502 -moz-column-count: auto;
518 -moz-column-width: 400px;
503 -moz-column-width: 400px;
519 -moz-column-gap : 0.5rem;
504 -moz-column-gap : 0.5rem;
520 }
505 }
521 #projects-index ul.projects ul.projects { border-left: 3px solid #e0e0e0; padding-left:1em;}
506 #projects-index ul.projects ul.projects { border-left: 3px solid #e0e0e0; padding-left:1em;}
522 #projects-index ul.projects li.root {margin-bottom: 1em;}
507 #projects-index ul.projects li.root {margin-bottom: 1em;}
523 #projects-index ul.projects li.child {margin-top: 1em;}
508 #projects-index ul.projects li.child {margin-top: 1em;}
524 #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; }
509 #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; }
525 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
510 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
526
511
527 #notified-projects>ul, #tracker_project_ids>ul, #custom_field_project_ids>ul {max-height:250px; overflow-y:auto;}
512 #notified-projects>ul, #tracker_project_ids>ul, #custom_field_project_ids>ul {max-height:250px; overflow-y:auto;}
528
513
529 #related-issues li img {vertical-align:middle;}
514 #related-issues li img {vertical-align:middle;}
530
515
531 ul.properties {padding:0; font-size: 0.9em; color: #777;}
516 ul.properties {padding:0; font-size: 0.9em; color: #777;}
532 ul.properties li {list-style-type:none;}
517 ul.properties li {list-style-type:none;}
533 ul.properties li span {font-style:italic;}
518 ul.properties li span {font-style:italic;}
534
519
535 .total-hours { font-size: 110%; font-weight: bold; }
520 .total-hours { font-size: 110%; font-weight: bold; }
536 .total-hours span.hours-int { font-size: 120%; }
521 .total-hours span.hours-int { font-size: 120%; }
537
522
538 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em; position: relative;}
523 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em; position: relative;}
539 #user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select, #user_identity_url { width: 90%; }
524 #user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select, #user_identity_url { width: 90%; }
540
525
541 #workflow_copy_form select { width: 200px; }
526 #workflow_copy_form select { width: 200px; }
542 table.transitions td.enabled {background: #bfb;}
527 table.transitions td.enabled {background: #bfb;}
543 #workflow_form table select {font-size:90%; max-width:100px;}
528 #workflow_form table select {font-size:90%; max-width:100px;}
544 table.fields_permissions td.readonly {background:#ddd;}
529 table.fields_permissions td.readonly {background:#ddd;}
545 table.fields_permissions td.required {background:#d88;}
530 table.fields_permissions td.required {background:#d88;}
546
531
547 select.expandable {vertical-align:top;}
532 select.expandable {vertical-align:top;}
548
533
549 textarea#custom_field_possible_values {width: 95%; resize:vertical}
534 textarea#custom_field_possible_values {width: 95%; resize:vertical}
550 textarea#custom_field_default_value {width: 95%; resize:vertical}
535 textarea#custom_field_default_value {width: 95%; resize:vertical}
551 .sort-handle {display:inline-block; vertical-align:middle;}
536 .sort-handle {display:inline-block; vertical-align:middle;}
552
537
553 input#content_comments {width: 99%}
538 input#content_comments {width: 99%}
554
539
555 span.pagination {margin-left:3px; color:#888; display:block;}
540 span.pagination {margin-left:3px; color:#888; display:block;}
556 .pagination ul.pages {
541 .pagination ul.pages {
557 margin: 0 5px 0 0;
542 margin: 0 5px 0 0;
558 padding: 0;
543 padding: 0;
559 display: inline;
544 display: inline;
560 }
545 }
561 .pagination ul.pages li {
546 .pagination ul.pages li {
562 display: inline-block;
547 display: inline-block;
563 padding: 0;
548 padding: 0;
564 border: 1px solid #ddd;
549 border: 1px solid #ddd;
565 margin-left: -1px;
550 margin-left: -1px;
566 line-height: 2em;
551 line-height: 2em;
567 margin-bottom: 1em;
552 margin-bottom: 1em;
568 white-space: nowrap;
553 white-space: nowrap;
569 text-align: center;
554 text-align: center;
570 }
555 }
571 .pagination ul.pages li a,
556 .pagination ul.pages li a,
572 .pagination ul.pages li span {
557 .pagination ul.pages li span {
573 padding: 3px 8px;
558 padding: 3px 8px;
574 }
559 }
575 .pagination ul.pages li:first-child {
560 .pagination ul.pages li:first-child {
576 border-top-left-radius: 4px;
561 border-top-left-radius: 4px;
577 border-bottom-left-radius: 4px;
562 border-bottom-left-radius: 4px;
578 }
563 }
579 .pagination ul.pages li:last-child {
564 .pagination ul.pages li:last-child {
580 border-top-right-radius: 4px;
565 border-top-right-radius: 4px;
581 border-bottom-right-radius: 4px;
566 border-bottom-right-radius: 4px;
582 }
567 }
583 .pagination ul.pages li.current {
568 .pagination ul.pages li.current {
584 color: white;
569 color: white;
585 background-color: #628DB6;
570 background-color: #628DB6;
586 border-color: #628DB6;
571 border-color: #628DB6;
587 }
572 }
588 .pagination ul.pages li.page:hover {
573 .pagination ul.pages li.page:hover {
589 background-color: #ddd;
574 background-color: #ddd;
590 }
575 }
591 .pagination ul.pages li.page a:hover,
576 .pagination ul.pages li.page a:hover,
592 .pagination ul.pages li.page a:active {
577 .pagination ul.pages li.page a:active {
593 color: #169;
578 color: #169;
594 text-decoration: inherit;
579 text-decoration: inherit;
595 }
580 }
596 .pagination .per-page span.selected {
581 .pagination .per-page span.selected {
597 font-weight: bold;
582 font-weight: bold;
598 }
583 }
599 span.pagination>span {white-space:nowrap;}
584 span.pagination>span {white-space:nowrap;}
600
585
601 #search-form fieldset p {margin:0.2em 0;}
586 #search-form fieldset p {margin:0.2em 0;}
602
587
603 /***** Tabular forms ******/
588 /***** Tabular forms ******/
604 .tabular p{
589 .tabular p{
605 margin: 0;
590 margin: 0;
606 padding: 3px 0 3px 0;
591 padding: 3px 0 3px 0;
607 padding-left: 180px; /* width of left column containing the label elements */
592 padding-left: 180px; /* width of left column containing the label elements */
608 min-height: 2em;
593 min-height: 2em;
609 clear:left;
594 clear:left;
610 }
595 }
611
596
612 html>body .tabular p {overflow:hidden;}
597 html>body .tabular p {overflow:hidden;}
613
598
614 .tabular input, .tabular select {max-width:95%}
599 .tabular input, .tabular select {max-width:95%}
615 .tabular textarea {width:95%; resize:vertical;}
600 .tabular textarea {width:95%; resize:vertical;}
616
601
617 .tabular label{
602 .tabular label{
618 font-weight: bold;
603 font-weight: bold;
619 float: left;
604 float: left;
620 text-align: right;
605 text-align: right;
621 /* width of left column */
606 /* width of left column */
622 margin-left: -180px;
607 margin-left: -180px;
623 /* width of labels. Should be smaller than left column to create some right margin */
608 /* width of labels. Should be smaller than left column to create some right margin */
624 width: 175px;
609 width: 175px;
625 }
610 }
626
611
627 .tabular label.floating{
612 .tabular label.floating{
628 font-weight: normal;
613 font-weight: normal;
629 margin-left: 0px;
614 margin-left: 0px;
630 text-align: left;
615 text-align: left;
631 width: 270px;
616 width: 270px;
632 }
617 }
633
618
634 label.block {
619 label.block {
635 display: block;
620 display: block;
636 width: auto !important;
621 width: auto !important;
637 }
622 }
638
623
639 .tabular label.block{
624 .tabular label.block{
640 font-weight: normal;
625 font-weight: normal;
641 margin-left: 0px !important;
626 margin-left: 0px !important;
642 text-align: left;
627 text-align: left;
643 float: none;
628 float: none;
644 }
629 }
645
630
646 .tabular label.inline{
631 .tabular label.inline{
647 font-weight: normal;
632 font-weight: normal;
648 float:none;
633 float:none;
649 margin-left: 5px !important;
634 margin-left: 5px !important;
650 width: auto;
635 width: auto;
651 }
636 }
652
637
653 label.no-css {
638 label.no-css {
654 font-weight: inherit;
639 font-weight: inherit;
655 float:none;
640 float:none;
656 text-align:left;
641 text-align:left;
657 margin-left:0px;
642 margin-left:0px;
658 width:auto;
643 width:auto;
659 }
644 }
660 input#time_entry_comments { width: 90%;}
645 input#time_entry_comments { width: 90%;}
661
646
662 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
647 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
663
648
664 .tabular.settings p{ padding-left: 300px; }
649 .tabular.settings p{ padding-left: 300px; }
665 .tabular.settings label{ margin-left: -300px; width: 295px; }
650 .tabular.settings label{ margin-left: -300px; width: 295px; }
666 .tabular.settings textarea { width: 99%; }
651 .tabular.settings textarea { width: 99%; }
667
652
668 .settings.enabled_scm table {width:100%}
653 .settings.enabled_scm table {width:100%}
669 .settings.enabled_scm td.scm_name{ font-weight: bold; }
654 .settings.enabled_scm td.scm_name{ font-weight: bold; }
670
655
671 fieldset.settings label { display: block; }
656 fieldset.settings label { display: block; }
672 fieldset#notified_events .parent { padding-left: 20px; }
657 fieldset#notified_events .parent { padding-left: 20px; }
673
658
674 span.required {color: #bb0000;}
659 span.required {color: #bb0000;}
675 .summary {font-style: italic;}
660 .summary {font-style: italic;}
676
661
677 .check_box_group {
662 .check_box_group {
678 display:block;
663 display:block;
679 width:95%;
664 width:95%;
680 max-height:300px;
665 max-height:300px;
681 overflow-y:auto;
666 overflow-y:auto;
682 padding:2px 4px 4px 2px;
667 padding:2px 4px 4px 2px;
683 background:#fff;
668 background:#fff;
684 border:1px solid #9EB1C2;
669 border:1px solid #9EB1C2;
685 border-radius:2px
670 border-radius:2px
686 }
671 }
687 .check_box_group label {
672 .check_box_group label {
688 font-weight: normal;
673 font-weight: normal;
689 margin-left: 0px !important;
674 margin-left: 0px !important;
690 text-align: left;
675 text-align: left;
691 float: none;
676 float: none;
692 display: block;
677 display: block;
693 width: auto;
678 width: auto;
694 }
679 }
695 .check_box_group.bool_cf {border:0; background:inherit;}
680 .check_box_group.bool_cf {border:0; background:inherit;}
696 .check_box_group.bool_cf label {display: inline;}
681 .check_box_group.bool_cf label {display: inline;}
697
682
698 .attachments_fields input.description, #existing-attachments input.description {margin-left:4px; width:340px;}
683 .attachments_fields input.description, #existing-attachments input.description {margin-left:4px; width:340px;}
699 .attachments_fields>span, #existing-attachments>span {display:block; white-space:nowrap;}
684 .attachments_fields>span, #existing-attachments>span {display:block; white-space:nowrap;}
700 .attachments_fields input.filename, #existing-attachments .filename {border:0; width:250px; color:#555; background-color:inherit; background:url(../images/attachment.png) no-repeat 1px 50%; padding-left:18px;}
685 .attachments_fields input.filename, #existing-attachments .filename {border:0; width:250px; color:#555; background-color:inherit; background:url(../images/attachment.png) no-repeat 1px 50%; padding-left:18px;}
701 .tabular input.filename {max-width:75% !important;}
686 .tabular input.filename {max-width:75% !important;}
702 .attachments_fields input.filename {height:1.8em;}
687 .attachments_fields input.filename {height:1.8em;}
703 .attachments_fields .ajax-waiting input.filename {background:url(../images/hourglass.png) no-repeat 0px 50%;}
688 .attachments_fields .ajax-waiting input.filename {background:url(../images/hourglass.png) no-repeat 0px 50%;}
704 .attachments_fields .ajax-loading input.filename {background:url(../images/loading.gif) no-repeat 0px 50%;}
689 .attachments_fields .ajax-loading input.filename {background:url(../images/loading.gif) no-repeat 0px 50%;}
705 .attachments_fields div.ui-progressbar { width: 100px; height:14px; margin: 2px 0 -5px 8px; display: inline-block; }
690 .attachments_fields div.ui-progressbar { width: 100px; height:14px; margin: 2px 0 -5px 8px; display: inline-block; }
706 a.remove-upload {background: url(../images/delete.png) no-repeat 1px 50%; width:1px; display:inline-block; padding-left:16px;}
691 a.remove-upload {background: url(../images/delete.png) no-repeat 1px 50%; width:1px; display:inline-block; padding-left:16px;}
707 a.remove-upload:hover {text-decoration:none !important;}
692 a.remove-upload:hover {text-decoration:none !important;}
708 .existing-attachment.deleted .filename {text-decoration:line-through; color:#999 !important;}
693 .existing-attachment.deleted .filename {text-decoration:line-through; color:#999 !important;}
709
694
710 div.fileover { background-color: lavender; }
695 div.fileover { background-color: lavender; }
711
696
712 div.attachments { margin: 12px 0; }
697 div.attachments { margin: 12px 0; }
713 div.attachments p { margin:4px 0 2px 0; }
698 div.attachments p { margin:4px 0 2px 0; }
714 div.attachments img { vertical-align: middle; }
699 div.attachments img { vertical-align: middle; }
715 div.attachments span.author { font-size: 0.9em; color: #888; }
700 div.attachments span.author { font-size: 0.9em; color: #888; }
716
701
717 div.thumbnails {margin:0.6em;}
702 div.thumbnails {margin:0.6em;}
718 div.thumbnails div {background:#fff;border:2px solid #ddd;display:inline-block;margin-right:2px;}
703 div.thumbnails div {background:#fff;border:2px solid #ddd;display:inline-block;margin-right:2px;}
719 div.thumbnails img {margin: 3px; vertical-align: middle;}
704 div.thumbnails img {margin: 3px; vertical-align: middle;}
720 #history div.thumbnails {margin-left: 2em;}
705 #history div.thumbnails {margin-left: 2em;}
721
706
722 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
707 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
723 .other-formats span + span:before { content: "| "; }
708 .other-formats span + span:before { content: "| "; }
724
709
725 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
710 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
726
711
727 em.info {font-style:normal;font-size:90%;color:#888;display:block;}
712 em.info {font-style:normal;font-size:90%;color:#888;display:block;}
728 em.info.error {padding-left:20px; background:url(../images/exclamation.png) no-repeat 0 50%;}
713 em.info.error {padding-left:20px; background:url(../images/exclamation.png) no-repeat 0 50%;}
729
714
730 textarea.text_cf {width:95%; resize:vertical;}
715 textarea.text_cf {width:95%; resize:vertical;}
731 input.string_cf, input.link_cf {width:95%;}
716 input.string_cf, input.link_cf {width:95%;}
732 select.bool_cf {width:auto !important;}
717 select.bool_cf {width:auto !important;}
733
718
734 #tab-content-modules fieldset p {margin:3px 0 4px 0;}
719 #tab-content-modules fieldset p {margin:3px 0 4px 0;}
735
720
736 #tab-content-users .splitcontentleft {width: 64%;}
721 #tab-content-users .splitcontentleft {width: 64%;}
737 #tab-content-users .splitcontentright {width: 34%;}
722 #tab-content-users .splitcontentright {width: 34%;}
738 #tab-content-users fieldset {padding:1em; margin-bottom: 1em;}
723 #tab-content-users fieldset {padding:1em; margin-bottom: 1em;}
739 #tab-content-users fieldset legend {font-weight: bold;}
724 #tab-content-users fieldset legend {font-weight: bold;}
740 #tab-content-users fieldset label {display: block;}
725 #tab-content-users fieldset label {display: block;}
741 #tab-content-users #principals {max-height: 400px; overflow: auto;}
726 #tab-content-users #principals {max-height: 400px; overflow: auto;}
742
727
743 #users_for_watcher {height: 200px; overflow:auto;}
728 #users_for_watcher {height: 200px; overflow:auto;}
744 #users_for_watcher label {display: block;}
729 #users_for_watcher label {display: block;}
745
730
746 table.members td.name {padding-left: 20px;}
731 table.members td.name {padding-left: 20px;}
747 table.members td.group, table.members td.groupnonmember, table.members td.groupanonymous {background: url(../images/group.png) no-repeat 0% 1px;}
732 table.members td.group, table.members td.groupnonmember, table.members td.groupanonymous {background: url(../images/group.png) no-repeat 0% 1px;}
748
733
749 input#principal_search, input#user_search {width:90%}
734 input#principal_search, input#user_search {width:90%}
750 .roles-selection label {display:inline-block; width:210px;}
735 .roles-selection label {display:inline-block; width:210px;}
751
736
752 input.autocomplete {
737 input.autocomplete {
753 background: #fff url(../images/magnifier.png) no-repeat 2px 50%; padding-left:20px !important;
738 background: #fff url(../images/magnifier.png) no-repeat 2px 50%; padding-left:20px !important;
754 border:1px solid #9EB1C2; border-radius:2px; height:1.5em;
739 border:1px solid #9EB1C2; border-radius:2px; height:1.5em;
755 }
740 }
756 input.autocomplete.ajax-loading {
741 input.autocomplete.ajax-loading {
757 background-image: url(../images/loading.gif);
742 background-image: url(../images/loading.gif);
758 }
743 }
759
744
760 .role-visibility {padding-left:2em;}
745 .role-visibility {padding-left:2em;}
761
746
762 .objects-selection {
747 .objects-selection {
763 height: 300px;
748 height: 300px;
764 overflow: auto;
749 overflow: auto;
765 margin-bottom: 1em;
750 margin-bottom: 1em;
766 }
751 }
767
752
768 .objects-selection label {
753 .objects-selection label {
769 display: block;
754 display: block;
770 }
755 }
771
756
772 .objects-selection>div, #user_group_ids {
757 .objects-selection>div, #user_group_ids {
773 column-count: auto;
758 column-count: auto;
774 column-width: 200px;
759 column-width: 200px;
775 -webkit-column-count: auto;
760 -webkit-column-count: auto;
776 -webkit-column-width: 200px;
761 -webkit-column-width: 200px;
777 -webkit-column-gap : 0.5rem;
762 -webkit-column-gap : 0.5rem;
778 -webkit-column-rule: 1px solid #ccc;
763 -webkit-column-rule: 1px solid #ccc;
779 -moz-column-count: auto;
764 -moz-column-count: auto;
780 -moz-column-width: 200px;
765 -moz-column-width: 200px;
781 -moz-column-gap : 0.5rem;
766 -moz-column-gap : 0.5rem;
782 -moz-column-rule: 1px solid #ccc;
767 -moz-column-rule: 1px solid #ccc;
783 }
768 }
784
769
785 /***** Flash & error messages ****/
770 /***** Flash & error messages ****/
786 #errorExplanation, div.flash, .nodata, .warning, .conflict {
771 #errorExplanation, div.flash, .nodata, .warning, .conflict {
787 padding: 6px 4px 6px 30px;
772 padding: 6px 4px 6px 30px;
788 margin-bottom: 12px;
773 margin-bottom: 12px;
789 font-size: 1.1em;
774 font-size: 1.1em;
790 border: 1px solid;
775 border: 1px solid;
791 border-radius: 3px;
776 border-radius: 3px;
792 }
777 }
793
778
794 div.flash {margin-top: 8px;}
779 div.flash {margin-top: 8px;}
795
780
796 div.flash.error, #errorExplanation {
781 div.flash.error, #errorExplanation {
797 background: url(../images/exclamation.png) 8px 50% no-repeat;
782 background: url(../images/exclamation.png) 8px 50% no-repeat;
798 background-color: #ffe3e3;
783 background-color: #ffe3e3;
799 border-color: #d88;
784 border-color: #d88;
800 color: #880000;
785 color: #880000;
801 }
786 }
802
787
803 div.flash.notice {
788 div.flash.notice {
804 background: url(../images/true.png) 8px 5px no-repeat;
789 background: url(../images/true.png) 8px 5px no-repeat;
805 background-color: #dfffdf;
790 background-color: #dfffdf;
806 border-color: #9fcf9f;
791 border-color: #9fcf9f;
807 color: #005f00;
792 color: #005f00;
808 }
793 }
809
794
810 div.flash.warning, .conflict {
795 div.flash.warning, .conflict {
811 background: url(../images/warning.png) 8px 5px no-repeat;
796 background: url(../images/warning.png) 8px 5px no-repeat;
812 background-color: #F3EDD1;
797 background-color: #F3EDD1;
813 border-color: #eadbbc;
798 border-color: #eadbbc;
814 color: #A6750C;
799 color: #A6750C;
815 text-align: left;
800 text-align: left;
816 }
801 }
817
802
818 .nodata, .warning {
803 .nodata, .warning {
819 text-align: center;
804 text-align: center;
820 background-color: #F3EDD1;
805 background-color: #F3EDD1;
821 border-color: #eadbbc;
806 border-color: #eadbbc;
822 color: #A6750C;
807 color: #A6750C;
823 }
808 }
824
809
825 #errorExplanation ul { font-size: 0.9em;}
810 #errorExplanation ul { font-size: 0.9em;}
826 #errorExplanation h2, #errorExplanation p { display: none; }
811 #errorExplanation h2, #errorExplanation p { display: none; }
827
812
828 .conflict-details {font-size:80%;}
813 .conflict-details {font-size:80%;}
829
814
830 /***** Ajax indicator ******/
815 /***** Ajax indicator ******/
831 #ajax-indicator {
816 #ajax-indicator {
832 position: absolute; /* fixed not supported by IE */
817 position: absolute; /* fixed not supported by IE */
833 background-color:#eee;
818 background-color:#eee;
834 border: 1px solid #bbb;
819 border: 1px solid #bbb;
835 top:35%;
820 top:35%;
836 left:40%;
821 left:40%;
837 width:20%;
822 width:20%;
838 font-weight:bold;
823 font-weight:bold;
839 text-align:center;
824 text-align:center;
840 padding:0.6em;
825 padding:0.6em;
841 z-index:100;
826 z-index:100;
842 opacity: 0.5;
827 opacity: 0.5;
843 }
828 }
844
829
845 html>body #ajax-indicator { position: fixed; }
830 html>body #ajax-indicator { position: fixed; }
846
831
847 #ajax-indicator span {
832 #ajax-indicator span {
848 background-position: 0% 40%;
833 background-position: 0% 40%;
849 background-repeat: no-repeat;
834 background-repeat: no-repeat;
850 background-image: url(../images/loading.gif);
835 background-image: url(../images/loading.gif);
851 padding-left: 26px;
836 padding-left: 26px;
852 vertical-align: bottom;
837 vertical-align: bottom;
853 }
838 }
854
839
855 /***** Calendar *****/
840 /***** Calendar *****/
856 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
841 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
857 table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
842 table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
858 table.cal thead th.week-number {width: auto;}
843 table.cal thead th.week-number {width: auto;}
859 table.cal tbody tr {height: 100px;}
844 table.cal tbody tr {height: 100px;}
860 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
845 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
861 table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
846 table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
862 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
847 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
863 table.cal td.odd p.day-num {color: #bbb;}
848 table.cal td.odd p.day-num {color: #bbb;}
864 table.cal td.today {background:#ffffdd;}
849 table.cal td.today {background:#ffffdd;}
865 table.cal td.today p.day-num {font-weight: bold;}
850 table.cal td.today p.day-num {font-weight: bold;}
866 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
851 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
867 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
852 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
868 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
853 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
869 p.cal.legend span {display:block;}
854 p.cal.legend span {display:block;}
870
855
871 /***** Tooltips ******/
856 /***** Tooltips ******/
872 .tooltip{position:relative;z-index:24;}
857 .tooltip{position:relative;z-index:24;}
873 .tooltip:hover{z-index:25;color:#000;}
858 .tooltip:hover{z-index:25;color:#000;}
874 .tooltip span.tip{display: none; text-align:left;}
859 .tooltip span.tip{display: none; text-align:left;}
875
860
876 div.tooltip:hover span.tip{
861 div.tooltip:hover span.tip{
877 display:block;
862 display:block;
878 position:absolute;
863 position:absolute;
879 top:12px; width:270px;
864 top:12px; width:270px;
880 border:1px solid #555;
865 border:1px solid #555;
881 background-color:#fff;
866 background-color:#fff;
882 padding: 4px;
867 padding: 4px;
883 font-size: 0.8em;
868 font-size: 0.8em;
884 color:#505050;
869 color:#505050;
885 }
870 }
886
871
887 img.ui-datepicker-trigger {
872 img.ui-datepicker-trigger {
888 cursor: pointer;
873 cursor: pointer;
889 vertical-align: middle;
874 vertical-align: middle;
890 margin-left: 4px;
875 margin-left: 4px;
891 }
876 }
892
877
893 /***** Progress bar *****/
878 /***** Progress bar *****/
894 table.progress {
879 table.progress {
895 border-collapse: collapse;
880 border-collapse: collapse;
896 border-spacing: 0pt;
881 border-spacing: 0pt;
897 empty-cells: show;
882 empty-cells: show;
898 text-align: center;
883 text-align: center;
899 float:left;
884 float:left;
900 margin: 1px 6px 1px 0px;
885 margin: 1px 6px 1px 0px;
901 }
886 }
902
887
903 table.progress {width:80px;}
888 table.progress {width:80px;}
904 table.progress td { height: 1em; }
889 table.progress td { height: 1em; }
905 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
890 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
906 table.progress td.done { background: #D3EDD3 none repeat scroll 0%; }
891 table.progress td.done { background: #D3EDD3 none repeat scroll 0%; }
907 table.progress td.todo { background: #eee none repeat scroll 0%; }
892 table.progress td.todo { background: #eee none repeat scroll 0%; }
908 p.percent {font-size: 80%; margin:0;}
893 p.percent {font-size: 80%; margin:0;}
909 p.progress-info {clear: left; font-size: 80%; margin-top:-4px; color:#777;}
894 p.progress-info {clear: left; font-size: 80%; margin-top:-4px; color:#777;}
910
895
911 .version-overview table.progress {width:40em;}
896 .version-overview table.progress {width:40em;}
912 .version-overview table.progress td { height: 1.2em; }
897 .version-overview table.progress td { height: 1.2em; }
913
898
914 /***** Tabs *****/
899 /***** Tabs *****/
915 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
900 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
916 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
901 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
917 #content .tabs ul li {
902 #content .tabs ul li {
918 float:left;
903 float:left;
919 list-style-type:none;
904 list-style-type:none;
920 white-space:nowrap;
905 white-space:nowrap;
921 margin-right:4px;
906 margin-right:4px;
922 background:#fff;
907 background:#fff;
923 position:relative;
908 position:relative;
924 margin-bottom:-1px;
909 margin-bottom:-1px;
925 }
910 }
926 #content .tabs ul li a{
911 #content .tabs ul li a{
927 display:block;
912 display:block;
928 font-size: 0.9em;
913 font-size: 0.9em;
929 text-decoration:none;
914 text-decoration:none;
930 line-height:1.3em;
915 line-height:1.3em;
931 padding:4px 6px 4px 6px;
916 padding:4px 6px 4px 6px;
932 border: 1px solid #ccc;
917 border: 1px solid #ccc;
933 border-bottom: 1px solid #bbbbbb;
918 border-bottom: 1px solid #bbbbbb;
934 background-color: #f6f6f6;
919 background-color: #f6f6f6;
935 color:#999;
920 color:#999;
936 font-weight:bold;
921 font-weight:bold;
937 border-top-left-radius:3px;
922 border-top-left-radius:3px;
938 border-top-right-radius:3px;
923 border-top-right-radius:3px;
939 }
924 }
940
925
941 #content .tabs ul li a:hover {
926 #content .tabs ul li a:hover {
942 background-color: #ffffdd;
927 background-color: #ffffdd;
943 text-decoration:none;
928 text-decoration:none;
944 }
929 }
945
930
946 #content .tabs ul li a.selected {
931 #content .tabs ul li a.selected {
947 background-color: #fff;
932 background-color: #fff;
948 border: 1px solid #bbbbbb;
933 border: 1px solid #bbbbbb;
949 border-bottom: 1px solid #fff;
934 border-bottom: 1px solid #fff;
950 color:#444;
935 color:#444;
951 }
936 }
952
937
953 #content .tabs ul li a.selected:hover {background-color: #fff;}
938 #content .tabs ul li a.selected:hover {background-color: #fff;}
954
939
955 div.tabs-buttons { position:absolute; right: 0; width: 54px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
940 div.tabs-buttons { position:absolute; right: 0; width: 54px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
956
941
957 button.tab-left, button.tab-right {
942 button.tab-left, button.tab-right {
958 font-size: 0.9em;
943 font-size: 0.9em;
959 cursor: pointer;
944 cursor: pointer;
960 height:24px;
945 height:24px;
961 border: 1px solid #ccc;
946 border: 1px solid #ccc;
962 border-bottom: 1px solid #bbbbbb;
947 border-bottom: 1px solid #bbbbbb;
963 position:absolute;
948 position:absolute;
964 padding:4px;
949 padding:4px;
965 width: 20px;
950 width: 20px;
966 bottom: -1px;
951 bottom: -1px;
967 }
952 }
968 button.tab-left:hover, button.tab-right:hover {
953 button.tab-left:hover, button.tab-right:hover {
969 background-color: #f5f5f5;
954 background-color: #f5f5f5;
970 }
955 }
971 button.tab-left:focus, button.tab-right:focus {
956 button.tab-left:focus, button.tab-right:focus {
972 outline: 0;
957 outline: 0;
973 }
958 }
974
959
975 button.tab-left {
960 button.tab-left {
976 right: 20px;
961 right: 20px;
977 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
962 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
978 border-top-left-radius:3px;
963 border-top-left-radius:3px;
979 }
964 }
980
965
981 button.tab-right {
966 button.tab-right {
982 right: 0;
967 right: 0;
983 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
968 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
984 border-top-right-radius:3px;
969 border-top-right-radius:3px;
985 }
970 }
986
971
987 button.tab-left.disabled, button.tab-right.disabled {
972 button.tab-left.disabled, button.tab-right.disabled {
988 background-color: #ccc;
973 background-color: #ccc;
989 cursor: unset;
974 cursor: unset;
990 }
975 }
991
976
992 /***** Diff *****/
977 /***** Diff *****/
993 .diff_out { background: #fcc; }
978 .diff_out { background: #fcc; }
994 .diff_out span { background: #faa; }
979 .diff_out span { background: #faa; }
995 .diff_in { background: #cfc; }
980 .diff_in { background: #cfc; }
996 .diff_in span { background: #afa; }
981 .diff_in span { background: #afa; }
997
982
998 .text-diff {
983 .text-diff {
999 padding: 1em;
984 padding: 1em;
1000 background-color:#f6f6f6;
985 background-color:#f6f6f6;
1001 color:#505050;
986 color:#505050;
1002 border: 1px solid #e4e4e4;
987 border: 1px solid #e4e4e4;
1003 }
988 }
1004
989
1005 /***** Wiki *****/
990 /***** Wiki *****/
1006 div.wiki table {
991 div.wiki table {
1007 border-collapse: collapse;
992 border-collapse: collapse;
1008 margin-bottom: 1em;
993 margin-bottom: 1em;
1009 }
994 }
1010
995
1011 div.wiki table, div.wiki td, div.wiki th {
996 div.wiki table, div.wiki td, div.wiki th {
1012 border: 1px solid #bbb;
997 border: 1px solid #bbb;
1013 padding: 4px;
998 padding: 4px;
1014 }
999 }
1015
1000
1016 div.wiki .noborder, div.wiki .noborder td, div.wiki .noborder th {border:0;}
1001 div.wiki .noborder, div.wiki .noborder td, div.wiki .noborder th {border:0;}
1017
1002
1018 div.wiki .external {
1003 div.wiki .external {
1019 background-position: 0% 60%;
1004 background-position: 0% 60%;
1020 background-repeat: no-repeat;
1005 background-repeat: no-repeat;
1021 padding-left: 12px;
1006 padding-left: 12px;
1022 background-image: url(../images/external.png);
1007 background-image: url(../images/external.png);
1023 }
1008 }
1024
1009
1025 div.wiki a {word-wrap: break-word;}
1010 div.wiki a {word-wrap: break-word;}
1026 div.wiki a.new {color: #b73535;}
1011 div.wiki a.new {color: #b73535;}
1027
1012
1028 div.wiki ul, div.wiki ol {margin-bottom:1em;}
1013 div.wiki ul, div.wiki ol {margin-bottom:1em;}
1029 div.wiki li>ul, div.wiki li>ol {margin-bottom: 0;}
1014 div.wiki li>ul, div.wiki li>ol {margin-bottom: 0;}
1030
1015
1031 div.wiki pre {
1016 div.wiki pre {
1032 margin: 1em 1em 1em 1.6em;
1017 margin: 1em 1em 1em 1.6em;
1033 padding: 8px;
1018 padding: 8px;
1034 background-color: #fafafa;
1019 background-color: #fafafa;
1035 border: 1px solid #e2e2e2;
1020 border: 1px solid #e2e2e2;
1036 border-radius: 3px;
1021 border-radius: 3px;
1037 width:auto;
1022 width:auto;
1038 overflow-x: auto;
1023 overflow-x: auto;
1039 overflow-y: hidden;
1024 overflow-y: hidden;
1040 }
1025 }
1041
1026
1042 div.wiki ul.toc {
1027 div.wiki ul.toc {
1043 background-color: #ffffdd;
1028 background-color: #ffffdd;
1044 border: 1px solid #e4e4e4;
1029 border: 1px solid #e4e4e4;
1045 padding: 4px;
1030 padding: 4px;
1046 line-height: 1.2em;
1031 line-height: 1.2em;
1047 margin-bottom: 12px;
1032 margin-bottom: 12px;
1048 margin-right: 12px;
1033 margin-right: 12px;
1049 margin-left: 0;
1034 margin-left: 0;
1050 display: table
1035 display: table
1051 }
1036 }
1052 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
1037 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
1053
1038
1054 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
1039 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
1055 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
1040 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
1056 div.wiki ul.toc ul { margin: 0; padding: 0; }
1041 div.wiki ul.toc ul { margin: 0; padding: 0; }
1057 div.wiki ul.toc li {list-style-type:none; margin: 0; font-size:12px;}
1042 div.wiki ul.toc li {list-style-type:none; margin: 0; font-size:12px;}
1058 div.wiki ul.toc li li {margin-left: 1.5em; font-size:10px;}
1043 div.wiki ul.toc li li {margin-left: 1.5em; font-size:10px;}
1059 div.wiki ul.toc a {
1044 div.wiki ul.toc a {
1060 font-size: 0.9em;
1045 font-size: 0.9em;
1061 font-weight: normal;
1046 font-weight: normal;
1062 text-decoration: none;
1047 text-decoration: none;
1063 color: #606060;
1048 color: #606060;
1064 }
1049 }
1065 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
1050 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
1066
1051
1067 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
1052 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
1068 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
1053 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
1069 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
1054 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
1070
1055
1071 div.wiki img {vertical-align:middle; max-width:100%;}
1056 div.wiki img {vertical-align:middle; max-width:100%;}
1072
1057
1073 /***** My page layout *****/
1058 /***** My page layout *****/
1074 .block-receiver {
1059 .block-receiver {
1075 border:1px dashed #c0c0c0;
1060 border:1px dashed #c0c0c0;
1076 margin-bottom: 20px;
1061 margin-bottom: 20px;
1077 padding: 15px 0 15px 0;
1062 padding: 15px 0 15px 0;
1078 }
1063 }
1079
1064
1080 .mypage-box {
1065 .mypage-box {
1081 margin:0 0 20px 0;
1066 margin:0 0 20px 0;
1082 color:#505050;
1067 color:#505050;
1083 line-height:1.5em;
1068 line-height:1.5em;
1084 }
1069 }
1085 .mypage-box .icon-close {
1070 .mypage-box .icon-close {
1086 float:right;
1071 float:right;
1087 }
1072 }
1088
1073
1089 .handle {cursor: move;}
1074 .handle {cursor: move;}
1090
1075
1091 /***** Gantt chart *****/
1076 /***** Gantt chart *****/
1092 .gantt_hdr {
1077 .gantt_hdr {
1093 position:absolute;
1078 position:absolute;
1094 top:0;
1079 top:0;
1095 height:16px;
1080 height:16px;
1096 border-top: 1px solid #c0c0c0;
1081 border-top: 1px solid #c0c0c0;
1097 border-bottom: 1px solid #c0c0c0;
1082 border-bottom: 1px solid #c0c0c0;
1098 border-right: 1px solid #c0c0c0;
1083 border-right: 1px solid #c0c0c0;
1099 text-align: center;
1084 text-align: center;
1100 overflow: hidden;
1085 overflow: hidden;
1101 }
1086 }
1102
1087
1103 .gantt_hdr.nwday {background-color:#f1f1f1; color:#999;}
1088 .gantt_hdr.nwday {background-color:#f1f1f1; color:#999;}
1104
1089
1105 .gantt_subjects { font-size: 0.8em; }
1090 .gantt_subjects { font-size: 0.8em; }
1106 .gantt_subjects div { line-height:16px;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; }
1091 .gantt_subjects div { line-height:16px;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; }
1107
1092
1108 .task {
1093 .task {
1109 position: absolute;
1094 position: absolute;
1110 height:8px;
1095 height:8px;
1111 font-size:0.8em;
1096 font-size:0.8em;
1112 color:#888;
1097 color:#888;
1113 padding:0;
1098 padding:0;
1114 margin:0;
1099 margin:0;
1115 line-height:16px;
1100 line-height:16px;
1116 white-space:nowrap;
1101 white-space:nowrap;
1117 }
1102 }
1118
1103
1119 .task.label {width:100%;}
1104 .task.label {width:100%;}
1120 .task.label.project, .task.label.version { font-weight: bold; }
1105 .task.label.project, .task.label.version { font-weight: bold; }
1121
1106
1122 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
1107 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
1123 .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
1108 .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
1124 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
1109 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
1125
1110
1126 .task_todo.parent { background: #888; border: 1px solid #888; height: 3px;}
1111 .task_todo.parent { background: #888; border: 1px solid #888; height: 3px;}
1127 .task_late.parent, .task_done.parent { height: 3px;}
1112 .task_late.parent, .task_done.parent { height: 3px;}
1128 .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;}
1113 .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;}
1129 .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;}
1114 .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;}
1130
1115
1131 .version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
1116 .version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
1132 .version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
1117 .version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
1133 .version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
1118 .version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
1134 .version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
1119 .version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
1135
1120
1136 .project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
1121 .project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
1137 .project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
1122 .project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
1138 .project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
1123 .project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
1139 .project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
1124 .project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
1140
1125
1141 .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
1126 .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
1142 .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
1127 .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
1143
1128
1144 /***** Icons *****/
1129 /***** Icons *****/
1145 .icon {
1130 .icon {
1146 background-position: 0% 50%;
1131 background-position: 0% 50%;
1147 background-repeat: no-repeat;
1132 background-repeat: no-repeat;
1148 padding-left: 20px;
1133 padding-left: 20px;
1149 padding-top: 2px;
1134 padding-top: 2px;
1150 padding-bottom: 3px;
1135 padding-bottom: 3px;
1151 }
1136 }
1152 .icon-only {
1137 .icon-only {
1153 background-position: 0% 50%;
1138 background-position: 0% 50%;
1154 background-repeat: no-repeat;
1139 background-repeat: no-repeat;
1155 padding-left: 16px;
1140 padding-left: 16px;
1156 display: inline-block;
1141 display: inline-block;
1157 width: 0;
1142 width: 0;
1158 height: 16px;
1143 height: 16px;
1159 overflow: hidden;
1144 overflow: hidden;
1160 padding-top: 0;
1145 padding-top: 0;
1161 padding-bottom: 0;
1146 padding-bottom: 0;
1162 font-size: 8px;
1147 font-size: 8px;
1163 vertical-align: middle;
1148 vertical-align: middle;
1164 }
1149 }
1165 .icon-only::after {
1150 .icon-only::after {
1166 content: " ";
1151 content: " ";
1167 }
1152 }
1168
1153
1169 .icon-add { background-image: url(../images/add.png); }
1154 .icon-add { background-image: url(../images/add.png); }
1170 .icon-edit { background-image: url(../images/edit.png); }
1155 .icon-edit { background-image: url(../images/edit.png); }
1171 .icon-copy { background-image: url(../images/copy.png); }
1156 .icon-copy { background-image: url(../images/copy.png); }
1172 .icon-duplicate { background-image: url(../images/duplicate.png); }
1157 .icon-duplicate { background-image: url(../images/duplicate.png); }
1173 .icon-del { background-image: url(../images/delete.png); }
1158 .icon-del { background-image: url(../images/delete.png); }
1174 .icon-move { background-image: url(../images/move.png); }
1159 .icon-move { background-image: url(../images/move.png); }
1175 .icon-save { background-image: url(../images/save.png); }
1160 .icon-save { background-image: url(../images/save.png); }
1176 .icon-cancel { background-image: url(../images/cancel.png); }
1161 .icon-cancel { background-image: url(../images/cancel.png); }
1177 .icon-multiple { background-image: url(../images/table_multiple.png); }
1162 .icon-multiple { background-image: url(../images/table_multiple.png); }
1178 .icon-folder { background-image: url(../images/folder.png); }
1163 .icon-folder { background-image: url(../images/folder.png); }
1179 .open .icon-folder { background-image: url(../images/folder_open.png); }
1164 .open .icon-folder { background-image: url(../images/folder_open.png); }
1180 .icon-package { background-image: url(../images/package.png); }
1165 .icon-package { background-image: url(../images/package.png); }
1181 .icon-user { background-image: url(../images/user.png); }
1166 .icon-user { background-image: url(../images/user.png); }
1182 .icon-projects { background-image: url(../images/projects.png); }
1167 .icon-projects { background-image: url(../images/projects.png); }
1183 .icon-help { background-image: url(../images/help.png); }
1168 .icon-help { background-image: url(../images/help.png); }
1184 .icon-attachment { background-image: url(../images/attachment.png); }
1169 .icon-attachment { background-image: url(../images/attachment.png); }
1185 .icon-history { background-image: url(../images/history.png); }
1170 .icon-history { background-image: url(../images/history.png); }
1186 .icon-time { background-image: url(../images/time.png); }
1171 .icon-time { background-image: url(../images/time.png); }
1187 .icon-time-add { background-image: url(../images/time_add.png); }
1172 .icon-time-add { background-image: url(../images/time_add.png); }
1188 .icon-stats { background-image: url(../images/stats.png); }
1173 .icon-stats { background-image: url(../images/stats.png); }
1189 .icon-warning { background-image: url(../images/warning.png); }
1174 .icon-warning { background-image: url(../images/warning.png); }
1190 .icon-error { background-image: url(../images/exclamation.png); }
1175 .icon-error { background-image: url(../images/exclamation.png); }
1191 .icon-fav { background-image: url(../images/fav.png); }
1176 .icon-fav { background-image: url(../images/fav.png); }
1192 .icon-fav-off { background-image: url(../images/fav_off.png); }
1177 .icon-fav-off { background-image: url(../images/fav_off.png); }
1193 .icon-reload { background-image: url(../images/reload.png); }
1178 .icon-reload { background-image: url(../images/reload.png); }
1194 .icon-lock { background-image: url(../images/locked.png); }
1179 .icon-lock { background-image: url(../images/locked.png); }
1195 .icon-unlock { background-image: url(../images/unlock.png); }
1180 .icon-unlock { background-image: url(../images/unlock.png); }
1196 .icon-checked { background-image: url(../images/toggle_check.png); }
1181 .icon-checked { background-image: url(../images/toggle_check.png); }
1197 .icon-details { background-image: url(../images/zoom_in.png); }
1182 .icon-details { background-image: url(../images/zoom_in.png); }
1198 .icon-report { background-image: url(../images/report.png); }
1183 .icon-report { background-image: url(../images/report.png); }
1199 .icon-comment { background-image: url(../images/comment.png); }
1184 .icon-comment { background-image: url(../images/comment.png); }
1200 .icon-summary { background-image: url(../images/lightning.png); }
1185 .icon-summary { background-image: url(../images/lightning.png); }
1201 .icon-server-authentication { background-image: url(../images/server_key.png); }
1186 .icon-server-authentication { background-image: url(../images/server_key.png); }
1202 .icon-issue { background-image: url(../images/ticket.png); }
1187 .icon-issue { background-image: url(../images/ticket.png); }
1203 .icon-zoom-in { background-image: url(../images/zoom_in.png); }
1188 .icon-zoom-in { background-image: url(../images/zoom_in.png); }
1204 .icon-zoom-out { background-image: url(../images/zoom_out.png); }
1189 .icon-zoom-out { background-image: url(../images/zoom_out.png); }
1205 .icon-magnifier { background-image: url(../images/magnifier.png); }
1190 .icon-magnifier { background-image: url(../images/magnifier.png); }
1206 .icon-passwd { background-image: url(../images/textfield_key.png); }
1191 .icon-passwd { background-image: url(../images/textfield_key.png); }
1207 .icon-test { background-image: url(../images/bullet_go.png); }
1192 .icon-test { background-image: url(../images/bullet_go.png); }
1208 .icon-email { background-image: url(../images/email.png); }
1193 .icon-email { background-image: url(../images/email.png); }
1209 .icon-email-disabled { background-image: url(../images/email_disabled.png); }
1194 .icon-email-disabled { background-image: url(../images/email_disabled.png); }
1210 .icon-email-add { background-image: url(../images/email_add.png); }
1195 .icon-email-add { background-image: url(../images/email_add.png); }
1211 .icon-move-up { background-image: url(../images/1uparrow.png); }
1196 .icon-move-up { background-image: url(../images/1uparrow.png); }
1212 .icon-move-top { background-image: url(../images/2uparrow.png); }
1197 .icon-move-top { background-image: url(../images/2uparrow.png); }
1213 .icon-move-down { background-image: url(../images/1downarrow.png); }
1198 .icon-move-down { background-image: url(../images/1downarrow.png); }
1214 .icon-move-bottom { background-image: url(../images/2downarrow.png); }
1199 .icon-move-bottom { background-image: url(../images/2downarrow.png); }
1215 .icon-ok { background-image: url(../images/true.png); }
1200 .icon-ok { background-image: url(../images/true.png); }
1216 .icon-not-ok { background-image: url(../images/false.png); }
1201 .icon-not-ok { background-image: url(../images/false.png); }
1217 .icon-link-break { background-image: url(../images/link_break.png); }
1202 .icon-link-break { background-image: url(../images/link_break.png); }
1218 .icon-list { background-image: url(../images/text_list_bullets.png); }
1203 .icon-list { background-image: url(../images/text_list_bullets.png); }
1219 .icon-close { background-image: url(../images/close.png); }
1204 .icon-close { background-image: url(../images/close.png); }
1220 .icon-close:hover { background-image: url(../images/close_hl.png); }
1205 .icon-close:hover { background-image: url(../images/close_hl.png); }
1221 .icon-settings { background-image: url(../images/changeset.png); }
1206 .icon-settings { background-image: url(../images/changeset.png); }
1207 .icon-group { background-image: url(../images/group.png); }
1208 .icon-roles { background-image: url(../images/database_key.png); }
1209 .icon-issue-edit { background-image: url(../images/ticket_edit.png); }
1210 .icon-workflows { background-image: url(../images/ticket_go.png); }
1211 .icon-custom-fields { background-image: url(../images/textfield.png); }
1212 .icon-plugins { background-image: url(../images/plugin.png); }
1222
1213
1223 .icon-file { background-image: url(../images/files/default.png); }
1214 .icon-file { background-image: url(../images/files/default.png); }
1224 .icon-file.text-plain { background-image: url(../images/files/text.png); }
1215 .icon-file.text-plain { background-image: url(../images/files/text.png); }
1225 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
1216 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
1226 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
1217 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
1227 .icon-file.text-x-java { background-image: url(../images/files/java.png); }
1218 .icon-file.text-x-java { background-image: url(../images/files/java.png); }
1228 .icon-file.text-x-javascript { background-image: url(../images/files/js.png); }
1219 .icon-file.text-x-javascript { background-image: url(../images/files/js.png); }
1229 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
1220 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
1230 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
1221 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
1231 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
1222 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
1232 .icon-file.text-css { background-image: url(../images/files/css.png); }
1223 .icon-file.text-css { background-image: url(../images/files/css.png); }
1233 .icon-file.text-html { background-image: url(../images/files/html.png); }
1224 .icon-file.text-html { background-image: url(../images/files/html.png); }
1234 .icon-file.image-gif { background-image: url(../images/files/image.png); }
1225 .icon-file.image-gif { background-image: url(../images/files/image.png); }
1235 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
1226 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
1236 .icon-file.image-png { background-image: url(../images/files/image.png); }
1227 .icon-file.image-png { background-image: url(../images/files/image.png); }
1237 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
1228 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
1238 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
1229 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
1239 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
1230 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
1240 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
1231 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
1241
1232
1242 .sort-handle { width:16px; height:16px; background:url(../images/reorder.png) no-repeat 0 50%; cursor:move; }
1233 .sort-handle { width:16px; height:16px; background:url(../images/reorder.png) no-repeat 0 50%; cursor:move; }
1243 .sort-handle.ajax-loading { background-image: url(../images/loading.gif); }
1234 .sort-handle.ajax-loading { background-image: url(../images/loading.gif); }
1244 tr.ui-sortable-helper { border:1px solid #e4e4e4; }
1235 tr.ui-sortable-helper { border:1px solid #e4e4e4; }
1245
1236
1246 .contextual>*:not(:first-child), .buttons>.icon:not(:first-child) { margin-left: 5px; }
1237 .contextual>*:not(:first-child), .buttons>.icon:not(:first-child) { margin-left: 5px; }
1247
1238
1248 img.gravatar {
1239 img.gravatar {
1249 vertical-align: middle;
1240 vertical-align: middle;
1250 border-radius: 20%;
1241 border-radius: 20%;
1251 }
1242 }
1252
1243
1253 div.issue img.gravatar {
1244 div.issue img.gravatar {
1254 float: left;
1245 float: left;
1255 margin: 0 6px 0 0;
1246 margin: 0 6px 0 0;
1256 }
1247 }
1257
1248
1258 h2 img.gravatar {margin: -2px 4px -4px 0;}
1249 h2 img.gravatar {margin: -2px 4px -4px 0;}
1259 h3 img.gravatar {margin: -4px 4px -4px 0;}
1250 h3 img.gravatar {margin: -4px 4px -4px 0;}
1260 h4 img.gravatar {margin: -2px 4px -4px 0;}
1251 h4 img.gravatar {margin: -2px 4px -4px 0;}
1261 td.username img.gravatar {margin: 0 0.5em 0 0; vertical-align: top;}
1252 td.username img.gravatar {margin: 0 0.5em 0 0; vertical-align: top;}
1262 #activity dt img.gravatar {float: left; margin: 0 1em 1em 0;}
1253 #activity dt img.gravatar {float: left; margin: 0 1em 1em 0;}
1263 /* Used on 12px Gravatar img tags without the icon background */
1254 /* Used on 12px Gravatar img tags without the icon background */
1264 .icon-gravatar {float: left; margin-right: 4px;}
1255 .icon-gravatar {float: left; margin-right: 4px;}
1265
1256
1266 #activity dt, .journal {clear: left;}
1257 #activity dt, .journal {clear: left;}
1267
1258
1268 .journal-link {float: right;}
1259 .journal-link {float: right;}
1269
1260
1270 h2 img { vertical-align:middle; }
1261 h2 img { vertical-align:middle; }
1271
1262
1272 .hascontextmenu { cursor: context-menu; }
1263 .hascontextmenu { cursor: context-menu; }
1273
1264
1274 .sample-data {border:1px solid #ccc; border-collapse:collapse; background-color:#fff; margin:0.5em;}
1265 .sample-data {border:1px solid #ccc; border-collapse:collapse; background-color:#fff; margin:0.5em;}
1275 .sample-data td {border:1px solid #ccc; padding: 2px 4px; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace;}
1266 .sample-data td {border:1px solid #ccc; padding: 2px 4px; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace;}
1276 .sample-data tr:first-child td {font-weight:bold; text-align:center;}
1267 .sample-data tr:first-child td {font-weight:bold; text-align:center;}
1277
1268
1278 .ui-progressbar {position: relative;}
1269 .ui-progressbar {position: relative;}
1279 #progress-label {
1270 #progress-label {
1280 position: absolute; left: 50%; top: 4px;
1271 position: absolute; left: 50%; top: 4px;
1281 font-weight: bold;
1272 font-weight: bold;
1282 color: #555; text-shadow: 1px 1px 0 #fff;
1273 color: #555; text-shadow: 1px 1px 0 #fff;
1283 }
1274 }
1284
1275
1285 /* Custom JQuery styles */
1276 /* Custom JQuery styles */
1286 .ui-datepicker-title select {width:70px !important; margin-top:-2px !important; margin-right:4px !important;}
1277 .ui-datepicker-title select {width:70px !important; margin-top:-2px !important; margin-right:4px !important;}
1287
1278
1288
1279
1289 /************* CodeRay styles *************/
1280 /************* CodeRay styles *************/
1290 .syntaxhl div {display: inline;}
1281 .syntaxhl div {display: inline;}
1291 .syntaxhl .code pre { overflow: auto }
1282 .syntaxhl .code pre { overflow: auto }
1292
1283
1293 .syntaxhl .annotation { color:#007 }
1284 .syntaxhl .annotation { color:#007 }
1294 .syntaxhl .attribute-name { color:#b48 }
1285 .syntaxhl .attribute-name { color:#b48 }
1295 .syntaxhl .attribute-value { color:#700 }
1286 .syntaxhl .attribute-value { color:#700 }
1296 .syntaxhl .binary { color:#549 }
1287 .syntaxhl .binary { color:#549 }
1297 .syntaxhl .binary .char { color:#325 }
1288 .syntaxhl .binary .char { color:#325 }
1298 .syntaxhl .binary .delimiter { color:#325 }
1289 .syntaxhl .binary .delimiter { color:#325 }
1299 .syntaxhl .char { color:#D20 }
1290 .syntaxhl .char { color:#D20 }
1300 .syntaxhl .char .content { color:#D20 }
1291 .syntaxhl .char .content { color:#D20 }
1301 .syntaxhl .char .delimiter { color:#710 }
1292 .syntaxhl .char .delimiter { color:#710 }
1302 .syntaxhl .class { color:#B06; font-weight:bold }
1293 .syntaxhl .class { color:#B06; font-weight:bold }
1303 .syntaxhl .class-variable { color:#369 }
1294 .syntaxhl .class-variable { color:#369 }
1304 .syntaxhl .color { color:#0A0 }
1295 .syntaxhl .color { color:#0A0 }
1305 .syntaxhl .comment { color:#777 }
1296 .syntaxhl .comment { color:#777 }
1306 .syntaxhl .comment .char { color:#444 }
1297 .syntaxhl .comment .char { color:#444 }
1307 .syntaxhl .comment .delimiter { color:#444 }
1298 .syntaxhl .comment .delimiter { color:#444 }
1308 .syntaxhl .constant { color:#036; font-weight:bold }
1299 .syntaxhl .constant { color:#036; font-weight:bold }
1309 .syntaxhl .decorator { color:#B0B }
1300 .syntaxhl .decorator { color:#B0B }
1310 .syntaxhl .definition { color:#099; font-weight:bold }
1301 .syntaxhl .definition { color:#099; font-weight:bold }
1311 .syntaxhl .delimiter { color:black }
1302 .syntaxhl .delimiter { color:black }
1312 .syntaxhl .directive { color:#088; font-weight:bold }
1303 .syntaxhl .directive { color:#088; font-weight:bold }
1313 .syntaxhl .docstring { color:#D42; }
1304 .syntaxhl .docstring { color:#D42; }
1314 .syntaxhl .doctype { color:#34b }
1305 .syntaxhl .doctype { color:#34b }
1315 .syntaxhl .done { text-decoration: line-through; color: gray }
1306 .syntaxhl .done { text-decoration: line-through; color: gray }
1316 .syntaxhl .entity { color:#800; font-weight:bold }
1307 .syntaxhl .entity { color:#800; font-weight:bold }
1317 .syntaxhl .error { color:#F00; background-color:#FAA }
1308 .syntaxhl .error { color:#F00; background-color:#FAA }
1318 .syntaxhl .escape { color:#666 }
1309 .syntaxhl .escape { color:#666 }
1319 .syntaxhl .exception { color:#C00; font-weight:bold }
1310 .syntaxhl .exception { color:#C00; font-weight:bold }
1320 .syntaxhl .float { color:#60E }
1311 .syntaxhl .float { color:#60E }
1321 .syntaxhl .function { color:#06B; font-weight:bold }
1312 .syntaxhl .function { color:#06B; font-weight:bold }
1322 .syntaxhl .function .delimiter { color:#059 }
1313 .syntaxhl .function .delimiter { color:#059 }
1323 .syntaxhl .function .content { color:#037 }
1314 .syntaxhl .function .content { color:#037 }
1324 .syntaxhl .global-variable { color:#d70 }
1315 .syntaxhl .global-variable { color:#d70 }
1325 .syntaxhl .hex { color:#02b }
1316 .syntaxhl .hex { color:#02b }
1326 .syntaxhl .id { color:#33D; font-weight:bold }
1317 .syntaxhl .id { color:#33D; font-weight:bold }
1327 .syntaxhl .include { color:#B44; font-weight:bold }
1318 .syntaxhl .include { color:#B44; font-weight:bold }
1328 .syntaxhl .inline { background-color: hsla(0,0%,0%,0.07); color: black }
1319 .syntaxhl .inline { background-color: hsla(0,0%,0%,0.07); color: black }
1329 .syntaxhl .inline-delimiter { font-weight: bold; color: #666 }
1320 .syntaxhl .inline-delimiter { font-weight: bold; color: #666 }
1330 .syntaxhl .instance-variable { color:#33B }
1321 .syntaxhl .instance-variable { color:#33B }
1331 .syntaxhl .integer { color:#00D }
1322 .syntaxhl .integer { color:#00D }
1332 .syntaxhl .imaginary { color:#f00 }
1323 .syntaxhl .imaginary { color:#f00 }
1333 .syntaxhl .important { color:#D00 }
1324 .syntaxhl .important { color:#D00 }
1334 .syntaxhl .key { color: #606 }
1325 .syntaxhl .key { color: #606 }
1335 .syntaxhl .key .char { color: #60f }
1326 .syntaxhl .key .char { color: #60f }
1336 .syntaxhl .key .delimiter { color: #404 }
1327 .syntaxhl .key .delimiter { color: #404 }
1337 .syntaxhl .keyword { color:#080; font-weight:bold }
1328 .syntaxhl .keyword { color:#080; font-weight:bold }
1338 .syntaxhl .label { color:#970; font-weight:bold }
1329 .syntaxhl .label { color:#970; font-weight:bold }
1339 .syntaxhl .local-variable { color:#950 }
1330 .syntaxhl .local-variable { color:#950 }
1340 .syntaxhl .map .content { color:#808 }
1331 .syntaxhl .map .content { color:#808 }
1341 .syntaxhl .map .delimiter { color:#40A}
1332 .syntaxhl .map .delimiter { color:#40A}
1342 .syntaxhl .map { background-color:hsla(200,100%,50%,0.06); }
1333 .syntaxhl .map { background-color:hsla(200,100%,50%,0.06); }
1343 .syntaxhl .namespace { color:#707; font-weight:bold }
1334 .syntaxhl .namespace { color:#707; font-weight:bold }
1344 .syntaxhl .octal { color:#40E }
1335 .syntaxhl .octal { color:#40E }
1345 .syntaxhl .operator { }
1336 .syntaxhl .operator { }
1346 .syntaxhl .predefined { color:#369; font-weight:bold }
1337 .syntaxhl .predefined { color:#369; font-weight:bold }
1347 .syntaxhl .predefined-constant { color:#069 }
1338 .syntaxhl .predefined-constant { color:#069 }
1348 .syntaxhl .predefined-type { color:#0a8; font-weight:bold }
1339 .syntaxhl .predefined-type { color:#0a8; font-weight:bold }
1349 .syntaxhl .preprocessor { color:#579 }
1340 .syntaxhl .preprocessor { color:#579 }
1350 .syntaxhl .pseudo-class { color:#00C; font-weight:bold }
1341 .syntaxhl .pseudo-class { color:#00C; font-weight:bold }
1351 .syntaxhl .regexp { background-color:hsla(300,100%,50%,0.06); }
1342 .syntaxhl .regexp { background-color:hsla(300,100%,50%,0.06); }
1352 .syntaxhl .regexp .content { color:#808 }
1343 .syntaxhl .regexp .content { color:#808 }
1353 .syntaxhl .regexp .delimiter { color:#404 }
1344 .syntaxhl .regexp .delimiter { color:#404 }
1354 .syntaxhl .regexp .modifier { color:#C2C }
1345 .syntaxhl .regexp .modifier { color:#C2C }
1355 .syntaxhl .reserved { color:#080; font-weight:bold }
1346 .syntaxhl .reserved { color:#080; font-weight:bold }
1356 .syntaxhl .shell { background-color:hsla(120,100%,50%,0.06); }
1347 .syntaxhl .shell { background-color:hsla(120,100%,50%,0.06); }
1357 .syntaxhl .shell .content { color:#2B2 }
1348 .syntaxhl .shell .content { color:#2B2 }
1358 .syntaxhl .shell .delimiter { color:#161 }
1349 .syntaxhl .shell .delimiter { color:#161 }
1359 .syntaxhl .string { background-color:hsla(0,100%,50%,0.05); }
1350 .syntaxhl .string { background-color:hsla(0,100%,50%,0.05); }
1360 .syntaxhl .string .char { color: #b0b }
1351 .syntaxhl .string .char { color: #b0b }
1361 .syntaxhl .string .content { color: #D20 }
1352 .syntaxhl .string .content { color: #D20 }
1362 .syntaxhl .string .delimiter { color: #710 }
1353 .syntaxhl .string .delimiter { color: #710 }
1363 .syntaxhl .string .modifier { color: #E40 }
1354 .syntaxhl .string .modifier { color: #E40 }
1364 .syntaxhl .symbol { color:#A60 }
1355 .syntaxhl .symbol { color:#A60 }
1365 .syntaxhl .symbol .content { color:#A60 }
1356 .syntaxhl .symbol .content { color:#A60 }
1366 .syntaxhl .symbol .delimiter { color:#740 }
1357 .syntaxhl .symbol .delimiter { color:#740 }
1367 .syntaxhl .tag { color:#070; font-weight:bold }
1358 .syntaxhl .tag { color:#070; font-weight:bold }
1368 .syntaxhl .type { color:#339; font-weight:bold }
1359 .syntaxhl .type { color:#339; font-weight:bold }
1369 .syntaxhl .value { color: #088 }
1360 .syntaxhl .value { color: #088 }
1370 .syntaxhl .variable { color:#037 }
1361 .syntaxhl .variable { color:#037 }
1371
1362
1372 .syntaxhl .insert { background: hsla(120,100%,50%,0.12) }
1363 .syntaxhl .insert { background: hsla(120,100%,50%,0.12) }
1373 .syntaxhl .delete { background: hsla(0,100%,50%,0.12) }
1364 .syntaxhl .delete { background: hsla(0,100%,50%,0.12) }
1374 .syntaxhl .change { color: #bbf; background: #007 }
1365 .syntaxhl .change { color: #bbf; background: #007 }
1375 .syntaxhl .head { color: #f8f; background: #505 }
1366 .syntaxhl .head { color: #f8f; background: #505 }
1376 .syntaxhl .head .filename { color: white; }
1367 .syntaxhl .head .filename { color: white; }
1377
1368
1378 .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; }
1369 .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; }
1379 .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; }
1370 .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; }
1380
1371
1381 .syntaxhl .insert .insert { color: #0c0; background:transparent; font-weight:bold }
1372 .syntaxhl .insert .insert { color: #0c0; background:transparent; font-weight:bold }
1382 .syntaxhl .delete .delete { color: #c00; background:transparent; font-weight:bold }
1373 .syntaxhl .delete .delete { color: #c00; background:transparent; font-weight:bold }
1383 .syntaxhl .change .change { color: #88f }
1374 .syntaxhl .change .change { color: #88f }
1384 .syntaxhl .head .head { color: #f4f }
1375 .syntaxhl .head .head { color: #f4f }
1385
1376
1386 /***** Media print specific styles *****/
1377 /***** Media print specific styles *****/
1387 @media print {
1378 @media print {
1388 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
1379 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
1389 #main { background: #fff; }
1380 #main { background: #fff; }
1390 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
1381 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
1391 #wiki_add_attachment { display:none; }
1382 #wiki_add_attachment { display:none; }
1392 .hide-when-print, .pagination ul.pages, .pagination .per-page { display: none !important; }
1383 .hide-when-print, .pagination ul.pages, .pagination .per-page { display: none !important; }
1393 .autoscroll {overflow-x: visible;}
1384 .autoscroll {overflow-x: visible;}
1394 table.list {margin-top:0.5em;}
1385 table.list {margin-top:0.5em;}
1395 table.list th, table.list td {border: 1px solid #aaa;}
1386 table.list th, table.list td {border: 1px solid #aaa;}
1396 }
1387 }
1397
1388
1398 /* Accessibility specific styles */
1389 /* Accessibility specific styles */
1399 .hidden-for-sighted {
1390 .hidden-for-sighted {
1400 position:absolute;
1391 position:absolute;
1401 left:-10000px;
1392 left:-10000px;
1402 top:auto;
1393 top:auto;
1403 width:1px;
1394 width:1px;
1404 height:1px;
1395 height:1px;
1405 overflow:hidden;
1396 overflow:hidden;
1406 }
1397 }
General Comments 0
You need to be logged in to leave comments. Login now