##// END OF EJS Templates
#73 mapping of commited issues from commit message into issue tracker url.
marcink -
r1837:a6a30c91 beta
parent child Browse files
Show More
@@ -1,267 +1,288 b''
1 ################################################################################
1 ################################################################################
2 ################################################################################
2 ################################################################################
3 # RhodeCode - Pylons environment configuration #
3 # RhodeCode - Pylons environment configuration #
4 # #
4 # #
5 # The %(here)s variable will be replaced with the parent directory of this file#
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 ################################################################################
6 ################################################################################
7
7
8 [DEFAULT]
8 [DEFAULT]
9 debug = true
9 debug = true
10 pdebug = false
10 pdebug = false
11 ################################################################################
11 ################################################################################
12 ## Uncomment and replace with the address which should receive ##
12 ## Uncomment and replace with the address which should receive ##
13 ## any error reports after application crash ##
13 ## any error reports after application crash ##
14 ## Additionally those settings will be used by RhodeCode mailing system ##
14 ## Additionally those settings will be used by RhodeCode mailing system ##
15 ################################################################################
15 ################################################################################
16 #email_to = admin@localhost
16 #email_to = admin@localhost
17 #error_email_from = paste_error@localhost
17 #error_email_from = paste_error@localhost
18 #app_email_from = rhodecode-noreply@localhost
18 #app_email_from = rhodecode-noreply@localhost
19 #error_message =
19 #error_message =
20 #email_prefix = [RhodeCode]
20 #email_prefix = [RhodeCode]
21
21
22 #smtp_server = mail.server.com
22 #smtp_server = mail.server.com
23 #smtp_username =
23 #smtp_username =
24 #smtp_password =
24 #smtp_password =
25 #smtp_port =
25 #smtp_port =
26 #smtp_use_tls = false
26 #smtp_use_tls = false
27 #smtp_use_ssl = true
27 #smtp_use_ssl = true
28 # Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
28 # Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
29 #smtp_auth =
29 #smtp_auth =
30
30
31 [server:main]
31 [server:main]
32 ##nr of threads to spawn
32 ##nr of threads to spawn
33 threadpool_workers = 5
33 threadpool_workers = 5
34
34
35 ##max request before thread respawn
35 ##max request before thread respawn
36 threadpool_max_requests = 10
36 threadpool_max_requests = 10
37
37
38 ##option to use threads of process
38 ##option to use threads of process
39 use_threadpool = true
39 use_threadpool = true
40
40
41 use = egg:Paste#http
41 use = egg:Paste#http
42 host = 0.0.0.0
42 host = 0.0.0.0
43 port = 5000
43 port = 5000
44
44
45 [app:main]
45 [app:main]
46 use = egg:rhodecode
46 use = egg:rhodecode
47 full_stack = true
47 full_stack = true
48 static_files = true
48 static_files = true
49 lang=en
49 lang=en
50 cache_dir = %(here)s/data
50 cache_dir = %(here)s/data
51 index_dir = %(here)s/data/index
51 index_dir = %(here)s/data/index
52 app_instance_uuid = develop
52 app_instance_uuid = develop
53 cut_off_limit = 256000
53 cut_off_limit = 256000
54 force_https = false
54 force_https = false
55 commit_parse_limit = 25
55 commit_parse_limit = 25
56 use_gravatar = true
56 use_gravatar = true
57 container_auth_enabled = false
57 container_auth_enabled = false
58 proxypass_auth_enabled = false
58 proxypass_auth_enabled = false
59
59
60 ## overwrite schema of clone url
60 ## overwrite schema of clone url
61 # available vars:
61 ## available vars:
62 # scheme - http/https
62 ## scheme - http/https
63 # user - current user
63 ## user - current user
64 # pass - password
64 ## pass - password
65 # netloc - network location
65 ## netloc - network location
66 # path - usually repo_name
66 ## path - usually repo_name
67 # clone_uri = {scheme}://{user}{pass}{netloc}{path}
67
68 #clone_uri = {scheme}://{user}{pass}{netloc}{path}
69
70 ## issue tracking mapping for commits messages
71 ## uncomment url_pat, issue_server, issue_prefix to enable
72
73
74 ## pattern to get the issues from commit messages
75 ## default one used here is #1234
76
77 #url_pat = (?:^#|\s#)(\w+)
78
79 ## server url to the issue, each {id} will be replaced with id
80 ## fetched from the regex
81
82 #issue_server = https://myissueserver.com/issue/{id}
83
84 ## prefix to add to link to indicate it's an url
85 ## #314 will be replaced by <issue_prefix><id>
86
87 #issue_prefix = #
88
68
89
69 ####################################
90 ####################################
70 ### CELERY CONFIG ####
91 ### CELERY CONFIG ####
71 ####################################
92 ####################################
72 use_celery = false
93 use_celery = false
73 broker.host = localhost
94 broker.host = localhost
74 broker.vhost = rabbitmqhost
95 broker.vhost = rabbitmqhost
75 broker.port = 5672
96 broker.port = 5672
76 broker.user = rabbitmq
97 broker.user = rabbitmq
77 broker.password = qweqwe
98 broker.password = qweqwe
78
99
79 celery.imports = rhodecode.lib.celerylib.tasks
100 celery.imports = rhodecode.lib.celerylib.tasks
80
101
81 celery.result.backend = amqp
102 celery.result.backend = amqp
82 celery.result.dburi = amqp://
103 celery.result.dburi = amqp://
83 celery.result.serialier = json
104 celery.result.serialier = json
84
105
85 #celery.send.task.error.emails = true
106 #celery.send.task.error.emails = true
86 #celery.amqp.task.result.expires = 18000
107 #celery.amqp.task.result.expires = 18000
87
108
88 celeryd.concurrency = 2
109 celeryd.concurrency = 2
89 #celeryd.log.file = celeryd.log
110 #celeryd.log.file = celeryd.log
90 celeryd.log.level = debug
111 celeryd.log.level = debug
91 celeryd.max.tasks.per.child = 1
112 celeryd.max.tasks.per.child = 1
92
113
93 #tasks will never be sent to the queue, but executed locally instead.
114 #tasks will never be sent to the queue, but executed locally instead.
94 celery.always.eager = false
115 celery.always.eager = false
95
116
96 ####################################
117 ####################################
97 ### BEAKER CACHE ####
118 ### BEAKER CACHE ####
98 ####################################
119 ####################################
99 beaker.cache.data_dir=%(here)s/data/cache/data
120 beaker.cache.data_dir=%(here)s/data/cache/data
100 beaker.cache.lock_dir=%(here)s/data/cache/lock
121 beaker.cache.lock_dir=%(here)s/data/cache/lock
101
122
102 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
123 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
103
124
104 beaker.cache.super_short_term.type=memory
125 beaker.cache.super_short_term.type=memory
105 beaker.cache.super_short_term.expire=10
126 beaker.cache.super_short_term.expire=10
106 beaker.cache.super_short_term.key_length = 256
127 beaker.cache.super_short_term.key_length = 256
107
128
108 beaker.cache.short_term.type=memory
129 beaker.cache.short_term.type=memory
109 beaker.cache.short_term.expire=60
130 beaker.cache.short_term.expire=60
110 beaker.cache.short_term.key_length = 256
131 beaker.cache.short_term.key_length = 256
111
132
112 beaker.cache.long_term.type=memory
133 beaker.cache.long_term.type=memory
113 beaker.cache.long_term.expire=36000
134 beaker.cache.long_term.expire=36000
114 beaker.cache.long_term.key_length = 256
135 beaker.cache.long_term.key_length = 256
115
136
116 beaker.cache.sql_cache_short.type=memory
137 beaker.cache.sql_cache_short.type=memory
117 beaker.cache.sql_cache_short.expire=10
138 beaker.cache.sql_cache_short.expire=10
118 beaker.cache.sql_cache_short.key_length = 256
139 beaker.cache.sql_cache_short.key_length = 256
119
140
120 beaker.cache.sql_cache_med.type=memory
141 beaker.cache.sql_cache_med.type=memory
121 beaker.cache.sql_cache_med.expire=360
142 beaker.cache.sql_cache_med.expire=360
122 beaker.cache.sql_cache_med.key_length = 256
143 beaker.cache.sql_cache_med.key_length = 256
123
144
124 beaker.cache.sql_cache_long.type=file
145 beaker.cache.sql_cache_long.type=file
125 beaker.cache.sql_cache_long.expire=3600
146 beaker.cache.sql_cache_long.expire=3600
126 beaker.cache.sql_cache_long.key_length = 256
147 beaker.cache.sql_cache_long.key_length = 256
127
148
128 ####################################
149 ####################################
129 ### BEAKER SESSION ####
150 ### BEAKER SESSION ####
130 ####################################
151 ####################################
131 ## Type of storage used for the session, current types are
152 ## Type of storage used for the session, current types are
132 ## dbm, file, memcached, database, and memory.
153 ## dbm, file, memcached, database, and memory.
133 ## The storage uses the Container API
154 ## The storage uses the Container API
134 ## that is also used by the cache system.
155 ## that is also used by the cache system.
135
156
136 ## db session example
157 ## db session example
137
158
138 #beaker.session.type = ext:database
159 #beaker.session.type = ext:database
139 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/rhodecode
160 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/rhodecode
140 #beaker.session.table_name = db_session
161 #beaker.session.table_name = db_session
141
162
142 ## encrypted cookie session, good for many instances
163 ## encrypted cookie session, good for many instances
143 #beaker.session.type = cookie
164 #beaker.session.type = cookie
144
165
145 beaker.session.type = file
166 beaker.session.type = file
146 beaker.session.key = rhodecode
167 beaker.session.key = rhodecode
147 #beaker.session.encrypt_key = g654dcno0-9873jhgfreyu
168 #beaker.session.encrypt_key = g654dcno0-9873jhgfreyu
148 #beaker.session.validate_key = 9712sds2212c--zxc123
169 #beaker.session.validate_key = 9712sds2212c--zxc123
149 beaker.session.timeout = 36000
170 beaker.session.timeout = 36000
150 beaker.session.httponly = true
171 beaker.session.httponly = true
151
172
152 ## uncomment for https secure cookie
173 ## uncomment for https secure cookie
153 beaker.session.secure = false
174 beaker.session.secure = false
154
175
155 ##auto save the session to not to use .save()
176 ##auto save the session to not to use .save()
156 beaker.session.auto = False
177 beaker.session.auto = False
157
178
158 ##true exire at browser close
179 ##true exire at browser close
159 #beaker.session.cookie_expires = 3600
180 #beaker.session.cookie_expires = 3600
160
181
161
182
162 ################################################################################
183 ################################################################################
163 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
184 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
164 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
185 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
165 ## execute malicious code after an exception is raised. ##
186 ## execute malicious code after an exception is raised. ##
166 ################################################################################
187 ################################################################################
167 #set debug = false
188 #set debug = false
168
189
169 ##################################
190 ##################################
170 ### LOGVIEW CONFIG ###
191 ### LOGVIEW CONFIG ###
171 ##################################
192 ##################################
172 logview.sqlalchemy = #faa
193 logview.sqlalchemy = #faa
173 logview.pylons.templating = #bfb
194 logview.pylons.templating = #bfb
174 logview.pylons.util = #eee
195 logview.pylons.util = #eee
175
196
176 #########################################################
197 #########################################################
177 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
198 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
178 #########################################################
199 #########################################################
179 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
200 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
180 sqlalchemy.db1.url = postgresql://postgres:qwe@localhost/rhodecode
201 sqlalchemy.db1.url = postgresql://postgres:qwe@localhost/rhodecode
181 sqlalchemy.db1.echo = false
202 sqlalchemy.db1.echo = false
182 sqlalchemy.db1.pool_recycle = 3600
203 sqlalchemy.db1.pool_recycle = 3600
183 sqlalchemy.convert_unicode = true
204 sqlalchemy.convert_unicode = true
184
205
185 ################################
206 ################################
186 ### LOGGING CONFIGURATION ####
207 ### LOGGING CONFIGURATION ####
187 ################################
208 ################################
188 [loggers]
209 [loggers]
189 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
210 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
190
211
191 [handlers]
212 [handlers]
192 keys = console, console_sql
213 keys = console, console_sql
193
214
194 [formatters]
215 [formatters]
195 keys = generic, color_formatter, color_formatter_sql
216 keys = generic, color_formatter, color_formatter_sql
196
217
197 #############
218 #############
198 ## LOGGERS ##
219 ## LOGGERS ##
199 #############
220 #############
200 [logger_root]
221 [logger_root]
201 level = NOTSET
222 level = NOTSET
202 handlers = console
223 handlers = console
203
224
204 [logger_routes]
225 [logger_routes]
205 level = DEBUG
226 level = DEBUG
206 handlers =
227 handlers =
207 qualname = routes.middleware
228 qualname = routes.middleware
208 # "level = DEBUG" logs the route matched and routing variables.
229 # "level = DEBUG" logs the route matched and routing variables.
209 propagate = 1
230 propagate = 1
210
231
211 [logger_beaker]
232 [logger_beaker]
212 level = DEBUG
233 level = DEBUG
213 handlers =
234 handlers =
214 qualname = beaker.container
235 qualname = beaker.container
215 propagate = 1
236 propagate = 1
216
237
217 [logger_templates]
238 [logger_templates]
218 level = INFO
239 level = INFO
219 handlers =
240 handlers =
220 qualname = pylons.templating
241 qualname = pylons.templating
221 propagate = 1
242 propagate = 1
222
243
223 [logger_rhodecode]
244 [logger_rhodecode]
224 level = DEBUG
245 level = DEBUG
225 handlers =
246 handlers =
226 qualname = rhodecode
247 qualname = rhodecode
227 propagate = 1
248 propagate = 1
228
249
229 [logger_sqlalchemy]
250 [logger_sqlalchemy]
230 level = INFO
251 level = INFO
231 handlers = console_sql
252 handlers = console_sql
232 qualname = sqlalchemy.engine
253 qualname = sqlalchemy.engine
233 propagate = 0
254 propagate = 0
234
255
235 ##############
256 ##############
236 ## HANDLERS ##
257 ## HANDLERS ##
237 ##############
258 ##############
238
259
239 [handler_console]
260 [handler_console]
240 class = StreamHandler
261 class = StreamHandler
241 args = (sys.stderr,)
262 args = (sys.stderr,)
242 level = DEBUG
263 level = DEBUG
243 formatter = color_formatter
264 formatter = color_formatter
244
265
245 [handler_console_sql]
266 [handler_console_sql]
246 class = StreamHandler
267 class = StreamHandler
247 args = (sys.stderr,)
268 args = (sys.stderr,)
248 level = DEBUG
269 level = DEBUG
249 formatter = color_formatter_sql
270 formatter = color_formatter_sql
250
271
251 ################
272 ################
252 ## FORMATTERS ##
273 ## FORMATTERS ##
253 ################
274 ################
254
275
255 [formatter_generic]
276 [formatter_generic]
256 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
277 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
257 datefmt = %Y-%m-%d %H:%M:%S
278 datefmt = %Y-%m-%d %H:%M:%S
258
279
259 [formatter_color_formatter]
280 [formatter_color_formatter]
260 class=rhodecode.lib.colored_formatter.ColorFormatter
281 class=rhodecode.lib.colored_formatter.ColorFormatter
261 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
282 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
262 datefmt = %Y-%m-%d %H:%M:%S
283 datefmt = %Y-%m-%d %H:%M:%S
263
284
264 [formatter_color_formatter_sql]
285 [formatter_color_formatter_sql]
265 class=rhodecode.lib.colored_formatter.ColorFormatterSql
286 class=rhodecode.lib.colored_formatter.ColorFormatterSql
266 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
287 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
267 datefmt = %Y-%m-%d %H:%M:%S
288 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,267 +1,288 b''
1 ################################################################################
1 ################################################################################
2 ################################################################################
2 ################################################################################
3 # RhodeCode - Pylons environment configuration #
3 # RhodeCode - Pylons environment configuration #
4 # #
4 # #
5 # The %(here)s variable will be replaced with the parent directory of this file#
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 ################################################################################
6 ################################################################################
7
7
8 [DEFAULT]
8 [DEFAULT]
9 debug = true
9 debug = true
10 pdebug = false
10 pdebug = false
11 ################################################################################
11 ################################################################################
12 ## Uncomment and replace with the address which should receive ##
12 ## Uncomment and replace with the address which should receive ##
13 ## any error reports after application crash ##
13 ## any error reports after application crash ##
14 ## Additionally those settings will be used by RhodeCode mailing system ##
14 ## Additionally those settings will be used by RhodeCode mailing system ##
15 ################################################################################
15 ################################################################################
16 #email_to = admin@localhost
16 #email_to = admin@localhost
17 #error_email_from = paste_error@localhost
17 #error_email_from = paste_error@localhost
18 #app_email_from = rhodecode-noreply@localhost
18 #app_email_from = rhodecode-noreply@localhost
19 #error_message =
19 #error_message =
20 #email_prefix = [RhodeCode]
20 #email_prefix = [RhodeCode]
21
21
22 #smtp_server = mail.server.com
22 #smtp_server = mail.server.com
23 #smtp_username =
23 #smtp_username =
24 #smtp_password =
24 #smtp_password =
25 #smtp_port =
25 #smtp_port =
26 #smtp_use_tls = false
26 #smtp_use_tls = false
27 #smtp_use_ssl = true
27 #smtp_use_ssl = true
28 # Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
28 # Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
29 #smtp_auth =
29 #smtp_auth =
30
30
31 [server:main]
31 [server:main]
32 ##nr of threads to spawn
32 ##nr of threads to spawn
33 threadpool_workers = 5
33 threadpool_workers = 5
34
34
35 ##max request before thread respawn
35 ##max request before thread respawn
36 threadpool_max_requests = 10
36 threadpool_max_requests = 10
37
37
38 ##option to use threads of process
38 ##option to use threads of process
39 use_threadpool = true
39 use_threadpool = true
40
40
41 use = egg:Paste#http
41 use = egg:Paste#http
42 host = 127.0.0.1
42 host = 127.0.0.1
43 port = 8001
43 port = 8001
44
44
45 [app:main]
45 [app:main]
46 use = egg:rhodecode
46 use = egg:rhodecode
47 full_stack = true
47 full_stack = true
48 static_files = true
48 static_files = true
49 lang=en
49 lang=en
50 cache_dir = %(here)s/data
50 cache_dir = %(here)s/data
51 index_dir = %(here)s/data/index
51 index_dir = %(here)s/data/index
52 app_instance_uuid = prod1234
52 app_instance_uuid = prod1234
53 cut_off_limit = 256000
53 cut_off_limit = 256000
54 force_https = false
54 force_https = false
55 commit_parse_limit = 50
55 commit_parse_limit = 50
56 use_gravatar = true
56 use_gravatar = true
57 container_auth_enabled = false
57 container_auth_enabled = false
58 proxypass_auth_enabled = false
58 proxypass_auth_enabled = false
59
59
60 ## overwrite schema of clone url
60 ## overwrite schema of clone url
61 # available vars:
61 ## available vars:
62 # scheme - http/https
62 ## scheme - http/https
63 # user - current user
63 ## user - current user
64 # pass - password
64 ## pass - password
65 # netloc - network location
65 ## netloc - network location
66 # path - usually repo_name
66 ## path - usually repo_name
67 # clone_uri = {scheme}://{user}{pass}{netloc}{path}
67
68 #clone_uri = {scheme}://{user}{pass}{netloc}{path}
69
70 ## issue tracking mapping for commits messages
71 ## uncomment url_pat, issue_server, issue_prefix to enable
72
73
74 ## pattern to get the issues from commit messages
75 ## default one used here is #1234
76
77 #url_pat = (?:^#|\s#)(\w+)
78
79 ## server url to the issue, each {id} will be replaced with id
80 ## fetched from the regex
81
82 #issue_server = https://myissueserver.com/issue/{id}
83
84 ## prefix to add to link to indicate it's an url
85 ## #314 will be replaced by <issue_prefix><id>
86
87 #issue_prefix = #
88
68
89
69 ####################################
90 ####################################
70 ### CELERY CONFIG ####
91 ### CELERY CONFIG ####
71 ####################################
92 ####################################
72 use_celery = false
93 use_celery = false
73 broker.host = localhost
94 broker.host = localhost
74 broker.vhost = rabbitmqhost
95 broker.vhost = rabbitmqhost
75 broker.port = 5672
96 broker.port = 5672
76 broker.user = rabbitmq
97 broker.user = rabbitmq
77 broker.password = qweqwe
98 broker.password = qweqwe
78
99
79 celery.imports = rhodecode.lib.celerylib.tasks
100 celery.imports = rhodecode.lib.celerylib.tasks
80
101
81 celery.result.backend = amqp
102 celery.result.backend = amqp
82 celery.result.dburi = amqp://
103 celery.result.dburi = amqp://
83 celery.result.serialier = json
104 celery.result.serialier = json
84
105
85 #celery.send.task.error.emails = true
106 #celery.send.task.error.emails = true
86 #celery.amqp.task.result.expires = 18000
107 #celery.amqp.task.result.expires = 18000
87
108
88 celeryd.concurrency = 2
109 celeryd.concurrency = 2
89 #celeryd.log.file = celeryd.log
110 #celeryd.log.file = celeryd.log
90 celeryd.log.level = debug
111 celeryd.log.level = debug
91 celeryd.max.tasks.per.child = 1
112 celeryd.max.tasks.per.child = 1
92
113
93 #tasks will never be sent to the queue, but executed locally instead.
114 #tasks will never be sent to the queue, but executed locally instead.
94 celery.always.eager = false
115 celery.always.eager = false
95
116
96 ####################################
117 ####################################
97 ### BEAKER CACHE ####
118 ### BEAKER CACHE ####
98 ####################################
119 ####################################
99 beaker.cache.data_dir=%(here)s/data/cache/data
120 beaker.cache.data_dir=%(here)s/data/cache/data
100 beaker.cache.lock_dir=%(here)s/data/cache/lock
121 beaker.cache.lock_dir=%(here)s/data/cache/lock
101
122
102 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
123 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
103
124
104 beaker.cache.super_short_term.type=memory
125 beaker.cache.super_short_term.type=memory
105 beaker.cache.super_short_term.expire=10
126 beaker.cache.super_short_term.expire=10
106 beaker.cache.super_short_term.key_length = 256
127 beaker.cache.super_short_term.key_length = 256
107
128
108 beaker.cache.short_term.type=memory
129 beaker.cache.short_term.type=memory
109 beaker.cache.short_term.expire=60
130 beaker.cache.short_term.expire=60
110 beaker.cache.short_term.key_length = 256
131 beaker.cache.short_term.key_length = 256
111
132
112 beaker.cache.long_term.type=memory
133 beaker.cache.long_term.type=memory
113 beaker.cache.long_term.expire=36000
134 beaker.cache.long_term.expire=36000
114 beaker.cache.long_term.key_length = 256
135 beaker.cache.long_term.key_length = 256
115
136
116 beaker.cache.sql_cache_short.type=memory
137 beaker.cache.sql_cache_short.type=memory
117 beaker.cache.sql_cache_short.expire=10
138 beaker.cache.sql_cache_short.expire=10
118 beaker.cache.sql_cache_short.key_length = 256
139 beaker.cache.sql_cache_short.key_length = 256
119
140
120 beaker.cache.sql_cache_med.type=memory
141 beaker.cache.sql_cache_med.type=memory
121 beaker.cache.sql_cache_med.expire=360
142 beaker.cache.sql_cache_med.expire=360
122 beaker.cache.sql_cache_med.key_length = 256
143 beaker.cache.sql_cache_med.key_length = 256
123
144
124 beaker.cache.sql_cache_long.type=file
145 beaker.cache.sql_cache_long.type=file
125 beaker.cache.sql_cache_long.expire=3600
146 beaker.cache.sql_cache_long.expire=3600
126 beaker.cache.sql_cache_long.key_length = 256
147 beaker.cache.sql_cache_long.key_length = 256
127
148
128 ####################################
149 ####################################
129 ### BEAKER SESSION ####
150 ### BEAKER SESSION ####
130 ####################################
151 ####################################
131 ## Type of storage used for the session, current types are
152 ## Type of storage used for the session, current types are
132 ## dbm, file, memcached, database, and memory.
153 ## dbm, file, memcached, database, and memory.
133 ## The storage uses the Container API
154 ## The storage uses the Container API
134 ## that is also used by the cache system.
155 ## that is also used by the cache system.
135
156
136 ## db session example
157 ## db session example
137
158
138 #beaker.session.type = ext:database
159 #beaker.session.type = ext:database
139 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/rhodecode
160 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/rhodecode
140 #beaker.session.table_name = db_session
161 #beaker.session.table_name = db_session
141
162
142 ## encrypted cookie session, good for many instances
163 ## encrypted cookie session, good for many instances
143 #beaker.session.type = cookie
164 #beaker.session.type = cookie
144
165
145 beaker.session.type = file
166 beaker.session.type = file
146 beaker.session.key = rhodecode
167 beaker.session.key = rhodecode
147 #beaker.session.encrypt_key = g654dcno0-9873jhgfreyu
168 #beaker.session.encrypt_key = g654dcno0-9873jhgfreyu
148 #beaker.session.validate_key = 9712sds2212c--zxc123
169 #beaker.session.validate_key = 9712sds2212c--zxc123
149 beaker.session.timeout = 36000
170 beaker.session.timeout = 36000
150 beaker.session.httponly = true
171 beaker.session.httponly = true
151
172
152 ## uncomment for https secure cookie
173 ## uncomment for https secure cookie
153 beaker.session.secure = false
174 beaker.session.secure = false
154
175
155 ##auto save the session to not to use .save()
176 ##auto save the session to not to use .save()
156 beaker.session.auto = False
177 beaker.session.auto = False
157
178
158 ##true exire at browser close
179 ##true exire at browser close
159 #beaker.session.cookie_expires = 3600
180 #beaker.session.cookie_expires = 3600
160
181
161
182
162 ################################################################################
183 ################################################################################
163 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
184 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
164 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
185 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
165 ## execute malicious code after an exception is raised. ##
186 ## execute malicious code after an exception is raised. ##
166 ################################################################################
187 ################################################################################
167 set debug = false
188 set debug = false
168
189
169 ##################################
190 ##################################
170 ### LOGVIEW CONFIG ###
191 ### LOGVIEW CONFIG ###
171 ##################################
192 ##################################
172 logview.sqlalchemy = #faa
193 logview.sqlalchemy = #faa
173 logview.pylons.templating = #bfb
194 logview.pylons.templating = #bfb
174 logview.pylons.util = #eee
195 logview.pylons.util = #eee
175
196
176 #########################################################
197 #########################################################
177 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
198 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
178 #########################################################
199 #########################################################
179 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
200 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
180 sqlalchemy.db1.url = postgresql://postgres:qwe@localhost/rhodecode
201 sqlalchemy.db1.url = postgresql://postgres:qwe@localhost/rhodecode
181 sqlalchemy.db1.echo = false
202 sqlalchemy.db1.echo = false
182 sqlalchemy.db1.pool_recycle = 3600
203 sqlalchemy.db1.pool_recycle = 3600
183 sqlalchemy.convert_unicode = true
204 sqlalchemy.convert_unicode = true
184
205
185 ################################
206 ################################
186 ### LOGGING CONFIGURATION ####
207 ### LOGGING CONFIGURATION ####
187 ################################
208 ################################
188 [loggers]
209 [loggers]
189 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
210 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
190
211
191 [handlers]
212 [handlers]
192 keys = console, console_sql
213 keys = console, console_sql
193
214
194 [formatters]
215 [formatters]
195 keys = generic, color_formatter, color_formatter_sql
216 keys = generic, color_formatter, color_formatter_sql
196
217
197 #############
218 #############
198 ## LOGGERS ##
219 ## LOGGERS ##
199 #############
220 #############
200 [logger_root]
221 [logger_root]
201 level = NOTSET
222 level = NOTSET
202 handlers = console
223 handlers = console
203
224
204 [logger_routes]
225 [logger_routes]
205 level = DEBUG
226 level = DEBUG
206 handlers =
227 handlers =
207 qualname = routes.middleware
228 qualname = routes.middleware
208 # "level = DEBUG" logs the route matched and routing variables.
229 # "level = DEBUG" logs the route matched and routing variables.
209 propagate = 1
230 propagate = 1
210
231
211 [logger_beaker]
232 [logger_beaker]
212 level = DEBUG
233 level = DEBUG
213 handlers =
234 handlers =
214 qualname = beaker.container
235 qualname = beaker.container
215 propagate = 1
236 propagate = 1
216
237
217 [logger_templates]
238 [logger_templates]
218 level = INFO
239 level = INFO
219 handlers =
240 handlers =
220 qualname = pylons.templating
241 qualname = pylons.templating
221 propagate = 1
242 propagate = 1
222
243
223 [logger_rhodecode]
244 [logger_rhodecode]
224 level = DEBUG
245 level = DEBUG
225 handlers =
246 handlers =
226 qualname = rhodecode
247 qualname = rhodecode
227 propagate = 1
248 propagate = 1
228
249
229 [logger_sqlalchemy]
250 [logger_sqlalchemy]
230 level = INFO
251 level = INFO
231 handlers = console_sql
252 handlers = console_sql
232 qualname = sqlalchemy.engine
253 qualname = sqlalchemy.engine
233 propagate = 0
254 propagate = 0
234
255
235 ##############
256 ##############
236 ## HANDLERS ##
257 ## HANDLERS ##
237 ##############
258 ##############
238
259
239 [handler_console]
260 [handler_console]
240 class = StreamHandler
261 class = StreamHandler
241 args = (sys.stderr,)
262 args = (sys.stderr,)
242 level = INFO
263 level = INFO
243 formatter = generic
264 formatter = generic
244
265
245 [handler_console_sql]
266 [handler_console_sql]
246 class = StreamHandler
267 class = StreamHandler
247 args = (sys.stderr,)
268 args = (sys.stderr,)
248 level = WARN
269 level = WARN
249 formatter = generic
270 formatter = generic
250
271
251 ################
272 ################
252 ## FORMATTERS ##
273 ## FORMATTERS ##
253 ################
274 ################
254
275
255 [formatter_generic]
276 [formatter_generic]
256 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
277 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
257 datefmt = %Y-%m-%d %H:%M:%S
278 datefmt = %Y-%m-%d %H:%M:%S
258
279
259 [formatter_color_formatter]
280 [formatter_color_formatter]
260 class=rhodecode.lib.colored_formatter.ColorFormatter
281 class=rhodecode.lib.colored_formatter.ColorFormatter
261 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
282 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
262 datefmt = %Y-%m-%d %H:%M:%S
283 datefmt = %Y-%m-%d %H:%M:%S
263
284
264 [formatter_color_formatter_sql]
285 [formatter_color_formatter_sql]
265 class=rhodecode.lib.colored_formatter.ColorFormatterSql
286 class=rhodecode.lib.colored_formatter.ColorFormatterSql
266 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
287 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
267 datefmt = %Y-%m-%d %H:%M:%S
288 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,277 +1,298 b''
1 ################################################################################
1 ################################################################################
2 ################################################################################
2 ################################################################################
3 # RhodeCode - Pylons environment configuration #
3 # RhodeCode - Pylons environment configuration #
4 # #
4 # #
5 # The %(here)s variable will be replaced with the parent directory of this file#
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 ################################################################################
6 ################################################################################
7
7
8 [DEFAULT]
8 [DEFAULT]
9 debug = true
9 debug = true
10 pdebug = false
10 pdebug = false
11 ################################################################################
11 ################################################################################
12 ## Uncomment and replace with the address which should receive ##
12 ## Uncomment and replace with the address which should receive ##
13 ## any error reports after application crash ##
13 ## any error reports after application crash ##
14 ## Additionally those settings will be used by RhodeCode mailing system ##
14 ## Additionally those settings will be used by RhodeCode mailing system ##
15 ################################################################################
15 ################################################################################
16 #email_to = admin@localhost
16 #email_to = admin@localhost
17 #error_email_from = paste_error@localhost
17 #error_email_from = paste_error@localhost
18 #app_email_from = rhodecode-noreply@localhost
18 #app_email_from = rhodecode-noreply@localhost
19 #error_message =
19 #error_message =
20 #email_prefix = [RhodeCode]
20 #email_prefix = [RhodeCode]
21
21
22 #smtp_server = mail.server.com
22 #smtp_server = mail.server.com
23 #smtp_username =
23 #smtp_username =
24 #smtp_password =
24 #smtp_password =
25 #smtp_port =
25 #smtp_port =
26 #smtp_use_tls = false
26 #smtp_use_tls = false
27 #smtp_use_ssl = true
27 #smtp_use_ssl = true
28 # Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
28 # Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
29 #smtp_auth =
29 #smtp_auth =
30
30
31 [server:main]
31 [server:main]
32 ##nr of threads to spawn
32 ##nr of threads to spawn
33 threadpool_workers = 5
33 threadpool_workers = 5
34
34
35 ##max request before thread respawn
35 ##max request before thread respawn
36 threadpool_max_requests = 10
36 threadpool_max_requests = 10
37
37
38 ##option to use threads of process
38 ##option to use threads of process
39 use_threadpool = true
39 use_threadpool = true
40
40
41 use = egg:Paste#http
41 use = egg:Paste#http
42 host = 127.0.0.1
42 host = 127.0.0.1
43 port = 5000
43 port = 5000
44
44
45 [app:main]
45 [app:main]
46 use = egg:rhodecode
46 use = egg:rhodecode
47 full_stack = true
47 full_stack = true
48 static_files = true
48 static_files = true
49 lang=en
49 lang=en
50 cache_dir = %(here)s/data
50 cache_dir = %(here)s/data
51 index_dir = %(here)s/data/index
51 index_dir = %(here)s/data/index
52 app_instance_uuid = ${app_instance_uuid}
52 app_instance_uuid = ${app_instance_uuid}
53 cut_off_limit = 256000
53 cut_off_limit = 256000
54 force_https = false
54 force_https = false
55 commit_parse_limit = 50
55 commit_parse_limit = 50
56 use_gravatar = true
56 use_gravatar = true
57 container_auth_enabled = false
57 container_auth_enabled = false
58 proxypass_auth_enabled = false
58 proxypass_auth_enabled = false
59
59
60 ## overwrite schema of clone url
60 ## overwrite schema of clone url
61 # available vars:
61 ## available vars:
62 # scheme - http/https
62 ## scheme - http/https
63 # user - current user
63 ## user - current user
64 # pass - password
64 ## pass - password
65 # netloc - network location
65 ## netloc - network location
66 # path - usually repo_name
66 ## path - usually repo_name
67
67 # clone_uri = {scheme}://{user}{pass}{netloc}{path}
68 # clone_uri = {scheme}://{user}{pass}{netloc}{path}
68
69
70 ## issue tracking mapping for commits messages
71 ## uncomment url_pat, issue_server, issue_prefix to enable
72
73
74 ## pattern to get the issues from commit messages
75 ## default one used here is #1234
76
77 #url_pat = (?:^#|\s#)(\w+)
78
79 ## server url to the issue, each {id} will be replaced with id
80 ## fetched from the regex
81
82 #issue_server = https://myissueserver.com/issue/{id}
83
84 ## prefix to add to link to indicate it's an url
85 ## #314 will be replaced by <issue_prefix><id>
86
87 #issue_prefix = #
88
89
69 ####################################
90 ####################################
70 ### CELERY CONFIG ####
91 ### CELERY CONFIG ####
71 ####################################
92 ####################################
72 use_celery = false
93 use_celery = false
73 broker.host = localhost
94 broker.host = localhost
74 broker.vhost = rabbitmqhost
95 broker.vhost = rabbitmqhost
75 broker.port = 5672
96 broker.port = 5672
76 broker.user = rabbitmq
97 broker.user = rabbitmq
77 broker.password = qweqwe
98 broker.password = qweqwe
78
99
79 celery.imports = rhodecode.lib.celerylib.tasks
100 celery.imports = rhodecode.lib.celerylib.tasks
80
101
81 celery.result.backend = amqp
102 celery.result.backend = amqp
82 celery.result.dburi = amqp://
103 celery.result.dburi = amqp://
83 celery.result.serialier = json
104 celery.result.serialier = json
84
105
85 #celery.send.task.error.emails = true
106 #celery.send.task.error.emails = true
86 #celery.amqp.task.result.expires = 18000
107 #celery.amqp.task.result.expires = 18000
87
108
88 celeryd.concurrency = 2
109 celeryd.concurrency = 2
89 #celeryd.log.file = celeryd.log
110 #celeryd.log.file = celeryd.log
90 celeryd.log.level = debug
111 celeryd.log.level = debug
91 celeryd.max.tasks.per.child = 1
112 celeryd.max.tasks.per.child = 1
92
113
93 #tasks will never be sent to the queue, but executed locally instead.
114 #tasks will never be sent to the queue, but executed locally instead.
94 celery.always.eager = false
115 celery.always.eager = false
95
116
96 ####################################
117 ####################################
97 ### BEAKER CACHE ####
118 ### BEAKER CACHE ####
98 ####################################
119 ####################################
99 beaker.cache.data_dir=%(here)s/data/cache/data
120 beaker.cache.data_dir=%(here)s/data/cache/data
100 beaker.cache.lock_dir=%(here)s/data/cache/lock
121 beaker.cache.lock_dir=%(here)s/data/cache/lock
101
122
102 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
123 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
103
124
104 beaker.cache.super_short_term.type=memory
125 beaker.cache.super_short_term.type=memory
105 beaker.cache.super_short_term.expire=10
126 beaker.cache.super_short_term.expire=10
106 beaker.cache.super_short_term.key_length = 256
127 beaker.cache.super_short_term.key_length = 256
107
128
108 beaker.cache.short_term.type=memory
129 beaker.cache.short_term.type=memory
109 beaker.cache.short_term.expire=60
130 beaker.cache.short_term.expire=60
110 beaker.cache.short_term.key_length = 256
131 beaker.cache.short_term.key_length = 256
111
132
112 beaker.cache.long_term.type=memory
133 beaker.cache.long_term.type=memory
113 beaker.cache.long_term.expire=36000
134 beaker.cache.long_term.expire=36000
114 beaker.cache.long_term.key_length = 256
135 beaker.cache.long_term.key_length = 256
115
136
116 beaker.cache.sql_cache_short.type=memory
137 beaker.cache.sql_cache_short.type=memory
117 beaker.cache.sql_cache_short.expire=10
138 beaker.cache.sql_cache_short.expire=10
118 beaker.cache.sql_cache_short.key_length = 256
139 beaker.cache.sql_cache_short.key_length = 256
119
140
120 beaker.cache.sql_cache_med.type=memory
141 beaker.cache.sql_cache_med.type=memory
121 beaker.cache.sql_cache_med.expire=360
142 beaker.cache.sql_cache_med.expire=360
122 beaker.cache.sql_cache_med.key_length = 256
143 beaker.cache.sql_cache_med.key_length = 256
123
144
124 beaker.cache.sql_cache_long.type=file
145 beaker.cache.sql_cache_long.type=file
125 beaker.cache.sql_cache_long.expire=3600
146 beaker.cache.sql_cache_long.expire=3600
126 beaker.cache.sql_cache_long.key_length = 256
147 beaker.cache.sql_cache_long.key_length = 256
127
148
128 ####################################
149 ####################################
129 ### BEAKER SESSION ####
150 ### BEAKER SESSION ####
130 ####################################
151 ####################################
131 ## Type of storage used for the session, current types are
152 ## Type of storage used for the session, current types are
132 ## dbm, file, memcached, database, and memory.
153 ## dbm, file, memcached, database, and memory.
133 ## The storage uses the Container API
154 ## The storage uses the Container API
134 ## that is also used by the cache system.
155 ## that is also used by the cache system.
135
156
136 ## db session example
157 ## db session example
137
158
138 #beaker.session.type = ext:database
159 #beaker.session.type = ext:database
139 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/rhodecode
160 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/rhodecode
140 #beaker.session.table_name = db_session
161 #beaker.session.table_name = db_session
141
162
142 ## encrypted cookie session, good for many instances
163 ## encrypted cookie session, good for many instances
143 #beaker.session.type = cookie
164 #beaker.session.type = cookie
144
165
145 beaker.session.type = file
166 beaker.session.type = file
146 beaker.session.key = rhodecode
167 beaker.session.key = rhodecode
147 beaker.session.encrypt_key = ${app_instance_secret}
168 beaker.session.encrypt_key = ${app_instance_secret}
148 beaker.session.validate_key = ${app_instance_secret}
169 beaker.session.validate_key = ${app_instance_secret}
149 beaker.session.timeout = 36000
170 beaker.session.timeout = 36000
150 beaker.session.httponly = true
171 beaker.session.httponly = true
151
172
152 ## uncomment for https secure cookie
173 ## uncomment for https secure cookie
153 beaker.session.secure = false
174 beaker.session.secure = false
154
175
155 ##auto save the session to not to use .save()
176 ##auto save the session to not to use .save()
156 beaker.session.auto = False
177 beaker.session.auto = False
157
178
158 ##true exire at browser close
179 ##true exire at browser close
159 #beaker.session.cookie_expires = 3600
180 #beaker.session.cookie_expires = 3600
160
181
161
182
162 ################################################################################
183 ################################################################################
163 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
184 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
164 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
185 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
165 ## execute malicious code after an exception is raised. ##
186 ## execute malicious code after an exception is raised. ##
166 ################################################################################
187 ################################################################################
167 set debug = false
188 set debug = false
168
189
169 ##################################
190 ##################################
170 ### LOGVIEW CONFIG ###
191 ### LOGVIEW CONFIG ###
171 ##################################
192 ##################################
172 logview.sqlalchemy = #faa
193 logview.sqlalchemy = #faa
173 logview.pylons.templating = #bfb
194 logview.pylons.templating = #bfb
174 logview.pylons.util = #eee
195 logview.pylons.util = #eee
175
196
176 #########################################################
197 #########################################################
177 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
198 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
178 #########################################################
199 #########################################################
179
200
180 # SQLITE [default]
201 # SQLITE [default]
181 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
202 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
182
203
183 # POSTGRESQL
204 # POSTGRESQL
184 # sqlalchemy.db1.url = postgresql://user:pass@localhost/rhodecode
205 # sqlalchemy.db1.url = postgresql://user:pass@localhost/rhodecode
185
206
186 # MySQL
207 # MySQL
187 # sqlalchemy.db1.url = mysql://user:pass@localhost/rhodecode
208 # sqlalchemy.db1.url = mysql://user:pass@localhost/rhodecode
188
209
189 # see sqlalchemy docs for others
210 # see sqlalchemy docs for others
190
211
191 sqlalchemy.db1.echo = false
212 sqlalchemy.db1.echo = false
192 sqlalchemy.db1.pool_recycle = 3600
213 sqlalchemy.db1.pool_recycle = 3600
193 sqlalchemy.convert_unicode = true
214 sqlalchemy.convert_unicode = true
194
215
195 ################################
216 ################################
196 ### LOGGING CONFIGURATION ####
217 ### LOGGING CONFIGURATION ####
197 ################################
218 ################################
198 [loggers]
219 [loggers]
199 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
220 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
200
221
201 [handlers]
222 [handlers]
202 keys = console, console_sql
223 keys = console, console_sql
203
224
204 [formatters]
225 [formatters]
205 keys = generic, color_formatter, color_formatter_sql
226 keys = generic, color_formatter, color_formatter_sql
206
227
207 #############
228 #############
208 ## LOGGERS ##
229 ## LOGGERS ##
209 #############
230 #############
210 [logger_root]
231 [logger_root]
211 level = NOTSET
232 level = NOTSET
212 handlers = console
233 handlers = console
213
234
214 [logger_routes]
235 [logger_routes]
215 level = DEBUG
236 level = DEBUG
216 handlers =
237 handlers =
217 qualname = routes.middleware
238 qualname = routes.middleware
218 # "level = DEBUG" logs the route matched and routing variables.
239 # "level = DEBUG" logs the route matched and routing variables.
219 propagate = 1
240 propagate = 1
220
241
221 [logger_beaker]
242 [logger_beaker]
222 level = DEBUG
243 level = DEBUG
223 handlers =
244 handlers =
224 qualname = beaker.container
245 qualname = beaker.container
225 propagate = 1
246 propagate = 1
226
247
227 [logger_templates]
248 [logger_templates]
228 level = INFO
249 level = INFO
229 handlers =
250 handlers =
230 qualname = pylons.templating
251 qualname = pylons.templating
231 propagate = 1
252 propagate = 1
232
253
233 [logger_rhodecode]
254 [logger_rhodecode]
234 level = DEBUG
255 level = DEBUG
235 handlers =
256 handlers =
236 qualname = rhodecode
257 qualname = rhodecode
237 propagate = 1
258 propagate = 1
238
259
239 [logger_sqlalchemy]
260 [logger_sqlalchemy]
240 level = INFO
261 level = INFO
241 handlers = console_sql
262 handlers = console_sql
242 qualname = sqlalchemy.engine
263 qualname = sqlalchemy.engine
243 propagate = 0
264 propagate = 0
244
265
245 ##############
266 ##############
246 ## HANDLERS ##
267 ## HANDLERS ##
247 ##############
268 ##############
248
269
249 [handler_console]
270 [handler_console]
250 class = StreamHandler
271 class = StreamHandler
251 args = (sys.stderr,)
272 args = (sys.stderr,)
252 level = INFO
273 level = INFO
253 formatter = color_formatter
274 formatter = color_formatter
254
275
255 [handler_console_sql]
276 [handler_console_sql]
256 class = StreamHandler
277 class = StreamHandler
257 args = (sys.stderr,)
278 args = (sys.stderr,)
258 level = WARN
279 level = WARN
259 formatter = color_formatter_sql
280 formatter = color_formatter_sql
260
281
261 ################
282 ################
262 ## FORMATTERS ##
283 ## FORMATTERS ##
263 ################
284 ################
264
285
265 [formatter_generic]
286 [formatter_generic]
266 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
287 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
267 datefmt = %Y-%m-%d %H:%M:%S
288 datefmt = %Y-%m-%d %H:%M:%S
268
289
269 [formatter_color_formatter]
290 [formatter_color_formatter]
270 class=rhodecode.lib.colored_formatter.ColorFormatter
291 class=rhodecode.lib.colored_formatter.ColorFormatter
271 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
292 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
272 datefmt = %Y-%m-%d %H:%M:%S
293 datefmt = %Y-%m-%d %H:%M:%S
273
294
274 [formatter_color_formatter_sql]
295 [formatter_color_formatter_sql]
275 class=rhodecode.lib.colored_formatter.ColorFormatterSql
296 class=rhodecode.lib.colored_formatter.ColorFormatterSql
276 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
297 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
277 datefmt = %Y-%m-%d %H:%M:%S No newline at end of file
298 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,755 +1,785 b''
1 """Helper functions
1 """Helper functions
2
2
3 Consists of functions to typically be used within templates, but also
3 Consists of functions to typically be used within templates, but also
4 available to Controllers. This module is available to both as 'h'.
4 available to Controllers. This module is available to both as 'h'.
5 """
5 """
6 import random
6 import random
7 import hashlib
7 import hashlib
8 import StringIO
8 import StringIO
9 import urllib
9 import urllib
10 import math
10 import math
11 import logging
11
12
12 from datetime import datetime
13 from datetime import datetime
13 from pygments.formatters.html import HtmlFormatter
14 from pygments.formatters.html import HtmlFormatter
14 from pygments import highlight as code_highlight
15 from pygments import highlight as code_highlight
15 from pylons import url, request, config
16 from pylons import url, request, config
16 from pylons.i18n.translation import _, ungettext
17 from pylons.i18n.translation import _, ungettext
17 from hashlib import md5
18 from hashlib import md5
18
19
19 from webhelpers.html import literal, HTML, escape
20 from webhelpers.html import literal, HTML, escape
20 from webhelpers.html.tools import *
21 from webhelpers.html.tools import *
21 from webhelpers.html.builder import make_tag
22 from webhelpers.html.builder import make_tag
22 from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \
23 from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \
23 end_form, file, form, hidden, image, javascript_link, link_to, \
24 end_form, file, form, hidden, image, javascript_link, link_to, \
24 link_to_if, link_to_unless, ol, required_legend, select, stylesheet_link, \
25 link_to_if, link_to_unless, ol, required_legend, select, stylesheet_link, \
25 submit, text, password, textarea, title, ul, xml_declaration, radio
26 submit, text, password, textarea, title, ul, xml_declaration, radio
26 from webhelpers.html.tools import auto_link, button_to, highlight, \
27 from webhelpers.html.tools import auto_link, button_to, highlight, \
27 js_obfuscate, mail_to, strip_links, strip_tags, tag_re
28 js_obfuscate, mail_to, strip_links, strip_tags, tag_re
28 from webhelpers.number import format_byte_size, format_bit_size
29 from webhelpers.number import format_byte_size, format_bit_size
29 from webhelpers.pylonslib import Flash as _Flash
30 from webhelpers.pylonslib import Flash as _Flash
30 from webhelpers.pylonslib.secure_form import secure_form
31 from webhelpers.pylonslib.secure_form import secure_form
31 from webhelpers.text import chop_at, collapse, convert_accented_entities, \
32 from webhelpers.text import chop_at, collapse, convert_accented_entities, \
32 convert_misc_entities, lchop, plural, rchop, remove_formatting, \
33 convert_misc_entities, lchop, plural, rchop, remove_formatting, \
33 replace_whitespace, urlify, truncate, wrap_paragraphs
34 replace_whitespace, urlify, truncate, wrap_paragraphs
34 from webhelpers.date import time_ago_in_words
35 from webhelpers.date import time_ago_in_words
35 from webhelpers.paginate import Page
36 from webhelpers.paginate import Page
36 from webhelpers.html.tags import _set_input_attrs, _set_id_attr, \
37 from webhelpers.html.tags import _set_input_attrs, _set_id_attr, \
37 convert_boolean_attrs, NotGiven, _make_safe_id_component
38 convert_boolean_attrs, NotGiven, _make_safe_id_component
38
39
39 from rhodecode.lib.annotate import annotate_highlight
40 from rhodecode.lib.annotate import annotate_highlight
40 from rhodecode.lib.utils import repo_name_slug
41 from rhodecode.lib.utils import repo_name_slug
41 from rhodecode.lib import str2bool, safe_unicode, safe_str, get_changeset_safe
42 from rhodecode.lib import str2bool, safe_unicode, safe_str, get_changeset_safe
42 from rhodecode.lib.markup_renderer import MarkupRenderer
43 from rhodecode.lib.markup_renderer import MarkupRenderer
43
44
45 log = logging.getLogger(__name__)
46
44
47
45 def _reset(name, value=None, id=NotGiven, type="reset", **attrs):
48 def _reset(name, value=None, id=NotGiven, type="reset", **attrs):
46 """
49 """
47 Reset button
50 Reset button
48 """
51 """
49 _set_input_attrs(attrs, type, name, value)
52 _set_input_attrs(attrs, type, name, value)
50 _set_id_attr(attrs, id, name)
53 _set_id_attr(attrs, id, name)
51 convert_boolean_attrs(attrs, ["disabled"])
54 convert_boolean_attrs(attrs, ["disabled"])
52 return HTML.input(**attrs)
55 return HTML.input(**attrs)
53
56
54 reset = _reset
57 reset = _reset
55 safeid = _make_safe_id_component
58 safeid = _make_safe_id_component
56
59
57
60
58 def FID(raw_id, path):
61 def FID(raw_id, path):
59 """
62 """
60 Creates a uniqe ID for filenode based on it's hash of path and revision
63 Creates a uniqe ID for filenode based on it's hash of path and revision
61 it's safe to use in urls
64 it's safe to use in urls
62
65
63 :param raw_id:
66 :param raw_id:
64 :param path:
67 :param path:
65 """
68 """
66
69
67 return 'C-%s-%s' % (short_id(raw_id), md5(path).hexdigest()[:12])
70 return 'C-%s-%s' % (short_id(raw_id), md5(path).hexdigest()[:12])
68
71
69
72
70 def get_token():
73 def get_token():
71 """Return the current authentication token, creating one if one doesn't
74 """Return the current authentication token, creating one if one doesn't
72 already exist.
75 already exist.
73 """
76 """
74 token_key = "_authentication_token"
77 token_key = "_authentication_token"
75 from pylons import session
78 from pylons import session
76 if not token_key in session:
79 if not token_key in session:
77 try:
80 try:
78 token = hashlib.sha1(str(random.getrandbits(128))).hexdigest()
81 token = hashlib.sha1(str(random.getrandbits(128))).hexdigest()
79 except AttributeError: # Python < 2.4
82 except AttributeError: # Python < 2.4
80 token = hashlib.sha1(str(random.randrange(2 ** 128))).hexdigest()
83 token = hashlib.sha1(str(random.randrange(2 ** 128))).hexdigest()
81 session[token_key] = token
84 session[token_key] = token
82 if hasattr(session, 'save'):
85 if hasattr(session, 'save'):
83 session.save()
86 session.save()
84 return session[token_key]
87 return session[token_key]
85
88
86 class _GetError(object):
89 class _GetError(object):
87 """Get error from form_errors, and represent it as span wrapped error
90 """Get error from form_errors, and represent it as span wrapped error
88 message
91 message
89
92
90 :param field_name: field to fetch errors for
93 :param field_name: field to fetch errors for
91 :param form_errors: form errors dict
94 :param form_errors: form errors dict
92 """
95 """
93
96
94 def __call__(self, field_name, form_errors):
97 def __call__(self, field_name, form_errors):
95 tmpl = """<span class="error_msg">%s</span>"""
98 tmpl = """<span class="error_msg">%s</span>"""
96 if form_errors and form_errors.has_key(field_name):
99 if form_errors and form_errors.has_key(field_name):
97 return literal(tmpl % form_errors.get(field_name))
100 return literal(tmpl % form_errors.get(field_name))
98
101
99 get_error = _GetError()
102 get_error = _GetError()
100
103
101 class _ToolTip(object):
104 class _ToolTip(object):
102
105
103 def __call__(self, tooltip_title, trim_at=50):
106 def __call__(self, tooltip_title, trim_at=50):
104 """Special function just to wrap our text into nice formatted
107 """Special function just to wrap our text into nice formatted
105 autowrapped text
108 autowrapped text
106
109
107 :param tooltip_title:
110 :param tooltip_title:
108 """
111 """
109 return escape(tooltip_title)
112 return escape(tooltip_title)
110 tooltip = _ToolTip()
113 tooltip = _ToolTip()
111
114
112 class _FilesBreadCrumbs(object):
115 class _FilesBreadCrumbs(object):
113
116
114 def __call__(self, repo_name, rev, paths):
117 def __call__(self, repo_name, rev, paths):
115 if isinstance(paths, str):
118 if isinstance(paths, str):
116 paths = safe_unicode(paths)
119 paths = safe_unicode(paths)
117 url_l = [link_to(repo_name, url('files_home',
120 url_l = [link_to(repo_name, url('files_home',
118 repo_name=repo_name,
121 repo_name=repo_name,
119 revision=rev, f_path=''))]
122 revision=rev, f_path=''))]
120 paths_l = paths.split('/')
123 paths_l = paths.split('/')
121 for cnt, p in enumerate(paths_l):
124 for cnt, p in enumerate(paths_l):
122 if p != '':
125 if p != '':
123 url_l.append(link_to(p,
126 url_l.append(link_to(p,
124 url('files_home',
127 url('files_home',
125 repo_name=repo_name,
128 repo_name=repo_name,
126 revision=rev,
129 revision=rev,
127 f_path='/'.join(paths_l[:cnt + 1])
130 f_path='/'.join(paths_l[:cnt + 1])
128 )
131 )
129 )
132 )
130 )
133 )
131
134
132 return literal('/'.join(url_l))
135 return literal('/'.join(url_l))
133
136
134 files_breadcrumbs = _FilesBreadCrumbs()
137 files_breadcrumbs = _FilesBreadCrumbs()
135
138
136 class CodeHtmlFormatter(HtmlFormatter):
139 class CodeHtmlFormatter(HtmlFormatter):
137 """My code Html Formatter for source codes
140 """My code Html Formatter for source codes
138 """
141 """
139
142
140 def wrap(self, source, outfile):
143 def wrap(self, source, outfile):
141 return self._wrap_div(self._wrap_pre(self._wrap_code(source)))
144 return self._wrap_div(self._wrap_pre(self._wrap_code(source)))
142
145
143 def _wrap_code(self, source):
146 def _wrap_code(self, source):
144 for cnt, it in enumerate(source):
147 for cnt, it in enumerate(source):
145 i, t = it
148 i, t = it
146 t = '<div id="L%s">%s</div>' % (cnt + 1, t)
149 t = '<div id="L%s">%s</div>' % (cnt + 1, t)
147 yield i, t
150 yield i, t
148
151
149 def _wrap_tablelinenos(self, inner):
152 def _wrap_tablelinenos(self, inner):
150 dummyoutfile = StringIO.StringIO()
153 dummyoutfile = StringIO.StringIO()
151 lncount = 0
154 lncount = 0
152 for t, line in inner:
155 for t, line in inner:
153 if t:
156 if t:
154 lncount += 1
157 lncount += 1
155 dummyoutfile.write(line)
158 dummyoutfile.write(line)
156
159
157 fl = self.linenostart
160 fl = self.linenostart
158 mw = len(str(lncount + fl - 1))
161 mw = len(str(lncount + fl - 1))
159 sp = self.linenospecial
162 sp = self.linenospecial
160 st = self.linenostep
163 st = self.linenostep
161 la = self.lineanchors
164 la = self.lineanchors
162 aln = self.anchorlinenos
165 aln = self.anchorlinenos
163 nocls = self.noclasses
166 nocls = self.noclasses
164 if sp:
167 if sp:
165 lines = []
168 lines = []
166
169
167 for i in range(fl, fl + lncount):
170 for i in range(fl, fl + lncount):
168 if i % st == 0:
171 if i % st == 0:
169 if i % sp == 0:
172 if i % sp == 0:
170 if aln:
173 if aln:
171 lines.append('<a href="#%s%d" class="special">%*d</a>' %
174 lines.append('<a href="#%s%d" class="special">%*d</a>' %
172 (la, i, mw, i))
175 (la, i, mw, i))
173 else:
176 else:
174 lines.append('<span class="special">%*d</span>' % (mw, i))
177 lines.append('<span class="special">%*d</span>' % (mw, i))
175 else:
178 else:
176 if aln:
179 if aln:
177 lines.append('<a href="#%s%d">%*d</a>' % (la, i, mw, i))
180 lines.append('<a href="#%s%d">%*d</a>' % (la, i, mw, i))
178 else:
181 else:
179 lines.append('%*d' % (mw, i))
182 lines.append('%*d' % (mw, i))
180 else:
183 else:
181 lines.append('')
184 lines.append('')
182 ls = '\n'.join(lines)
185 ls = '\n'.join(lines)
183 else:
186 else:
184 lines = []
187 lines = []
185 for i in range(fl, fl + lncount):
188 for i in range(fl, fl + lncount):
186 if i % st == 0:
189 if i % st == 0:
187 if aln:
190 if aln:
188 lines.append('<a href="#%s%d">%*d</a>' % (la, i, mw, i))
191 lines.append('<a href="#%s%d">%*d</a>' % (la, i, mw, i))
189 else:
192 else:
190 lines.append('%*d' % (mw, i))
193 lines.append('%*d' % (mw, i))
191 else:
194 else:
192 lines.append('')
195 lines.append('')
193 ls = '\n'.join(lines)
196 ls = '\n'.join(lines)
194
197
195 # in case you wonder about the seemingly redundant <div> here: since the
198 # in case you wonder about the seemingly redundant <div> here: since the
196 # content in the other cell also is wrapped in a div, some browsers in
199 # content in the other cell also is wrapped in a div, some browsers in
197 # some configurations seem to mess up the formatting...
200 # some configurations seem to mess up the formatting...
198 if nocls:
201 if nocls:
199 yield 0, ('<table class="%stable">' % self.cssclass +
202 yield 0, ('<table class="%stable">' % self.cssclass +
200 '<tr><td><div class="linenodiv" '
203 '<tr><td><div class="linenodiv" '
201 'style="background-color: #f0f0f0; padding-right: 10px">'
204 'style="background-color: #f0f0f0; padding-right: 10px">'
202 '<pre style="line-height: 125%">' +
205 '<pre style="line-height: 125%">' +
203 ls + '</pre></div></td><td id="hlcode" class="code">')
206 ls + '</pre></div></td><td id="hlcode" class="code">')
204 else:
207 else:
205 yield 0, ('<table class="%stable">' % self.cssclass +
208 yield 0, ('<table class="%stable">' % self.cssclass +
206 '<tr><td class="linenos"><div class="linenodiv"><pre>' +
209 '<tr><td class="linenos"><div class="linenodiv"><pre>' +
207 ls + '</pre></div></td><td id="hlcode" class="code">')
210 ls + '</pre></div></td><td id="hlcode" class="code">')
208 yield 0, dummyoutfile.getvalue()
211 yield 0, dummyoutfile.getvalue()
209 yield 0, '</td></tr></table>'
212 yield 0, '</td></tr></table>'
210
213
211
214
212 def pygmentize(filenode, **kwargs):
215 def pygmentize(filenode, **kwargs):
213 """pygmentize function using pygments
216 """pygmentize function using pygments
214
217
215 :param filenode:
218 :param filenode:
216 """
219 """
217
220
218 return literal(code_highlight(filenode.content,
221 return literal(code_highlight(filenode.content,
219 filenode.lexer, CodeHtmlFormatter(**kwargs)))
222 filenode.lexer, CodeHtmlFormatter(**kwargs)))
220
223
221
224
222 def pygmentize_annotation(repo_name, filenode, **kwargs):
225 def pygmentize_annotation(repo_name, filenode, **kwargs):
223 """
226 """
224 pygmentize function for annotation
227 pygmentize function for annotation
225
228
226 :param filenode:
229 :param filenode:
227 """
230 """
228
231
229 color_dict = {}
232 color_dict = {}
230
233
231 def gen_color(n=10000):
234 def gen_color(n=10000):
232 """generator for getting n of evenly distributed colors using
235 """generator for getting n of evenly distributed colors using
233 hsv color and golden ratio. It always return same order of colors
236 hsv color and golden ratio. It always return same order of colors
234
237
235 :returns: RGB tuple
238 :returns: RGB tuple
236 """
239 """
237
240
238 def hsv_to_rgb(h, s, v):
241 def hsv_to_rgb(h, s, v):
239 if s == 0.0:
242 if s == 0.0:
240 return v, v, v
243 return v, v, v
241 i = int(h * 6.0) # XXX assume int() truncates!
244 i = int(h * 6.0) # XXX assume int() truncates!
242 f = (h * 6.0) - i
245 f = (h * 6.0) - i
243 p = v * (1.0 - s)
246 p = v * (1.0 - s)
244 q = v * (1.0 - s * f)
247 q = v * (1.0 - s * f)
245 t = v * (1.0 - s * (1.0 - f))
248 t = v * (1.0 - s * (1.0 - f))
246 i = i % 6
249 i = i % 6
247 if i == 0:
250 if i == 0:
248 return v, t, p
251 return v, t, p
249 if i == 1:
252 if i == 1:
250 return q, v, p
253 return q, v, p
251 if i == 2:
254 if i == 2:
252 return p, v, t
255 return p, v, t
253 if i == 3:
256 if i == 3:
254 return p, q, v
257 return p, q, v
255 if i == 4:
258 if i == 4:
256 return t, p, v
259 return t, p, v
257 if i == 5:
260 if i == 5:
258 return v, p, q
261 return v, p, q
259
262
260 golden_ratio = 0.618033988749895
263 golden_ratio = 0.618033988749895
261 h = 0.22717784590367374
264 h = 0.22717784590367374
262
265
263 for _ in xrange(n):
266 for _ in xrange(n):
264 h += golden_ratio
267 h += golden_ratio
265 h %= 1
268 h %= 1
266 HSV_tuple = [h, 0.95, 0.95]
269 HSV_tuple = [h, 0.95, 0.95]
267 RGB_tuple = hsv_to_rgb(*HSV_tuple)
270 RGB_tuple = hsv_to_rgb(*HSV_tuple)
268 yield map(lambda x: str(int(x * 256)), RGB_tuple)
271 yield map(lambda x: str(int(x * 256)), RGB_tuple)
269
272
270 cgenerator = gen_color()
273 cgenerator = gen_color()
271
274
272 def get_color_string(cs):
275 def get_color_string(cs):
273 if cs in color_dict:
276 if cs in color_dict:
274 col = color_dict[cs]
277 col = color_dict[cs]
275 else:
278 else:
276 col = color_dict[cs] = cgenerator.next()
279 col = color_dict[cs] = cgenerator.next()
277 return "color: rgb(%s)! important;" % (', '.join(col))
280 return "color: rgb(%s)! important;" % (', '.join(col))
278
281
279 def url_func(repo_name):
282 def url_func(repo_name):
280
283
281 def _url_func(changeset):
284 def _url_func(changeset):
282 author = changeset.author
285 author = changeset.author
283 date = changeset.date
286 date = changeset.date
284 message = tooltip(changeset.message)
287 message = tooltip(changeset.message)
285
288
286 tooltip_html = ("<div style='font-size:0.8em'><b>Author:</b>"
289 tooltip_html = ("<div style='font-size:0.8em'><b>Author:</b>"
287 " %s<br/><b>Date:</b> %s</b><br/><b>Message:"
290 " %s<br/><b>Date:</b> %s</b><br/><b>Message:"
288 "</b> %s<br/></div>")
291 "</b> %s<br/></div>")
289
292
290 tooltip_html = tooltip_html % (author, date, message)
293 tooltip_html = tooltip_html % (author, date, message)
291 lnk_format = '%5s:%s' % ('r%s' % changeset.revision,
294 lnk_format = '%5s:%s' % ('r%s' % changeset.revision,
292 short_id(changeset.raw_id))
295 short_id(changeset.raw_id))
293 uri = link_to(
296 uri = link_to(
294 lnk_format,
297 lnk_format,
295 url('changeset_home', repo_name=repo_name,
298 url('changeset_home', repo_name=repo_name,
296 revision=changeset.raw_id),
299 revision=changeset.raw_id),
297 style=get_color_string(changeset.raw_id),
300 style=get_color_string(changeset.raw_id),
298 class_='tooltip',
301 class_='tooltip',
299 title=tooltip_html
302 title=tooltip_html
300 )
303 )
301
304
302 uri += '\n'
305 uri += '\n'
303 return uri
306 return uri
304 return _url_func
307 return _url_func
305
308
306 return literal(annotate_highlight(filenode, url_func(repo_name), **kwargs))
309 return literal(annotate_highlight(filenode, url_func(repo_name), **kwargs))
307
310
308
311
309 def is_following_repo(repo_name, user_id):
312 def is_following_repo(repo_name, user_id):
310 from rhodecode.model.scm import ScmModel
313 from rhodecode.model.scm import ScmModel
311 return ScmModel().is_following_repo(repo_name, user_id)
314 return ScmModel().is_following_repo(repo_name, user_id)
312
315
313 flash = _Flash()
316 flash = _Flash()
314
317
315 #==============================================================================
318 #==============================================================================
316 # SCM FILTERS available via h.
319 # SCM FILTERS available via h.
317 #==============================================================================
320 #==============================================================================
318 from vcs.utils import author_name, author_email
321 from vcs.utils import author_name, author_email
319 from rhodecode.lib import credentials_filter, age as _age
322 from rhodecode.lib import credentials_filter, age as _age
320 from rhodecode.model.db import User
323 from rhodecode.model.db import User
321
324
322 age = lambda x: _age(x)
325 age = lambda x: _age(x)
323 capitalize = lambda x: x.capitalize()
326 capitalize = lambda x: x.capitalize()
324 email = author_email
327 email = author_email
325 short_id = lambda x: x[:12]
328 short_id = lambda x: x[:12]
326 hide_credentials = lambda x: ''.join(credentials_filter(x))
329 hide_credentials = lambda x: ''.join(credentials_filter(x))
327
330
328
331
329 def email_or_none(author):
332 def email_or_none(author):
330 _email = email(author)
333 _email = email(author)
331 if _email != '':
334 if _email != '':
332 return _email
335 return _email
333
336
334 # See if it contains a username we can get an email from
337 # See if it contains a username we can get an email from
335 user = User.get_by_username(author_name(author), case_insensitive=True,
338 user = User.get_by_username(author_name(author), case_insensitive=True,
336 cache=True)
339 cache=True)
337 if user is not None:
340 if user is not None:
338 return user.email
341 return user.email
339
342
340 # No valid email, not a valid user in the system, none!
343 # No valid email, not a valid user in the system, none!
341 return None
344 return None
342
345
343
346
344 def person(author):
347 def person(author):
345 # attr to return from fetched user
348 # attr to return from fetched user
346 person_getter = lambda usr: usr.username
349 person_getter = lambda usr: usr.username
347
350
348 # Valid email in the attribute passed, see if they're in the system
351 # Valid email in the attribute passed, see if they're in the system
349 _email = email(author)
352 _email = email(author)
350 if _email != '':
353 if _email != '':
351 user = User.get_by_email(_email, case_insensitive=True, cache=True)
354 user = User.get_by_email(_email, case_insensitive=True, cache=True)
352 if user is not None:
355 if user is not None:
353 return person_getter(user)
356 return person_getter(user)
354 return _email
357 return _email
355
358
356 # Maybe it's a username?
359 # Maybe it's a username?
357 _author = author_name(author)
360 _author = author_name(author)
358 user = User.get_by_username(_author, case_insensitive=True,
361 user = User.get_by_username(_author, case_insensitive=True,
359 cache=True)
362 cache=True)
360 if user is not None:
363 if user is not None:
361 return person_getter(user)
364 return person_getter(user)
362
365
363 # Still nothing? Just pass back the author name then
366 # Still nothing? Just pass back the author name then
364 return _author
367 return _author
365
368
366 def bool2icon(value):
369 def bool2icon(value):
367 """Returns True/False values represented as small html image of true/false
370 """Returns True/False values represented as small html image of true/false
368 icons
371 icons
369
372
370 :param value: bool value
373 :param value: bool value
371 """
374 """
372
375
373 if value is True:
376 if value is True:
374 return HTML.tag('img', src=url("/images/icons/accept.png"),
377 return HTML.tag('img', src=url("/images/icons/accept.png"),
375 alt=_('True'))
378 alt=_('True'))
376
379
377 if value is False:
380 if value is False:
378 return HTML.tag('img', src=url("/images/icons/cancel.png"),
381 return HTML.tag('img', src=url("/images/icons/cancel.png"),
379 alt=_('False'))
382 alt=_('False'))
380
383
381 return value
384 return value
382
385
383
386
384 def action_parser(user_log, feed=False):
387 def action_parser(user_log, feed=False):
385 """This helper will action_map the specified string action into translated
388 """This helper will action_map the specified string action into translated
386 fancy names with icons and links
389 fancy names with icons and links
387
390
388 :param user_log: user log instance
391 :param user_log: user log instance
389 :param feed: use output for feeds (no html and fancy icons)
392 :param feed: use output for feeds (no html and fancy icons)
390 """
393 """
391
394
392 action = user_log.action
395 action = user_log.action
393 action_params = ' '
396 action_params = ' '
394
397
395 x = action.split(':')
398 x = action.split(':')
396
399
397 if len(x) > 1:
400 if len(x) > 1:
398 action, action_params = x
401 action, action_params = x
399
402
400 def get_cs_links():
403 def get_cs_links():
401 revs_limit = 3 #display this amount always
404 revs_limit = 3 #display this amount always
402 revs_top_limit = 50 #show upto this amount of changesets hidden
405 revs_top_limit = 50 #show upto this amount of changesets hidden
403 revs = action_params.split(',')
406 revs = action_params.split(',')
404 repo_name = user_log.repository.repo_name
407 repo_name = user_log.repository.repo_name
405
408
406 from rhodecode.model.scm import ScmModel
409 from rhodecode.model.scm import ScmModel
407 repo = user_log.repository.scm_instance
410 repo = user_log.repository.scm_instance
408
411
409 message = lambda rev: get_changeset_safe(repo, rev).message
412 message = lambda rev: get_changeset_safe(repo, rev).message
410 cs_links = []
413 cs_links = []
411 cs_links.append(" " + ', '.join ([link_to(rev,
414 cs_links.append(" " + ', '.join ([link_to(rev,
412 url('changeset_home',
415 url('changeset_home',
413 repo_name=repo_name,
416 repo_name=repo_name,
414 revision=rev), title=tooltip(message(rev)),
417 revision=rev), title=tooltip(message(rev)),
415 class_='tooltip') for rev in revs[:revs_limit] ]))
418 class_='tooltip') for rev in revs[:revs_limit] ]))
416
419
417 compare_view = (' <div class="compare_view tooltip" title="%s">'
420 compare_view = (' <div class="compare_view tooltip" title="%s">'
418 '<a href="%s">%s</a> '
421 '<a href="%s">%s</a> '
419 '</div>' % (_('Show all combined changesets %s->%s' \
422 '</div>' % (_('Show all combined changesets %s->%s' \
420 % (revs[0], revs[-1])),
423 % (revs[0], revs[-1])),
421 url('changeset_home', repo_name=repo_name,
424 url('changeset_home', repo_name=repo_name,
422 revision='%s...%s' % (revs[0], revs[-1])
425 revision='%s...%s' % (revs[0], revs[-1])
423 ),
426 ),
424 _('compare view'))
427 _('compare view'))
425 )
428 )
426
429
427 if len(revs) > revs_limit:
430 if len(revs) > revs_limit:
428 uniq_id = revs[0]
431 uniq_id = revs[0]
429 html_tmpl = ('<span> %s '
432 html_tmpl = ('<span> %s '
430 '<a class="show_more" id="_%s" href="#more">%s</a> '
433 '<a class="show_more" id="_%s" href="#more">%s</a> '
431 '%s</span>')
434 '%s</span>')
432 if not feed:
435 if not feed:
433 cs_links.append(html_tmpl % (_('and'), uniq_id, _('%s more') \
436 cs_links.append(html_tmpl % (_('and'), uniq_id, _('%s more') \
434 % (len(revs) - revs_limit),
437 % (len(revs) - revs_limit),
435 _('revisions')))
438 _('revisions')))
436
439
437 if not feed:
440 if not feed:
438 html_tmpl = '<span id="%s" style="display:none"> %s </span>'
441 html_tmpl = '<span id="%s" style="display:none"> %s </span>'
439 else:
442 else:
440 html_tmpl = '<span id="%s"> %s </span>'
443 html_tmpl = '<span id="%s"> %s </span>'
441
444
442 cs_links.append(html_tmpl % (uniq_id, ', '.join([link_to(rev,
445 cs_links.append(html_tmpl % (uniq_id, ', '.join([link_to(rev,
443 url('changeset_home',
446 url('changeset_home',
444 repo_name=repo_name, revision=rev),
447 repo_name=repo_name, revision=rev),
445 title=message(rev), class_='tooltip')
448 title=message(rev), class_='tooltip')
446 for rev in revs[revs_limit:revs_top_limit]])))
449 for rev in revs[revs_limit:revs_top_limit]])))
447 if len(revs) > 1:
450 if len(revs) > 1:
448 cs_links.append(compare_view)
451 cs_links.append(compare_view)
449 return ''.join(cs_links)
452 return ''.join(cs_links)
450
453
451 def get_fork_name():
454 def get_fork_name():
452 repo_name = action_params
455 repo_name = action_params
453 return _('fork name ') + str(link_to(action_params, url('summary_home',
456 return _('fork name ') + str(link_to(action_params, url('summary_home',
454 repo_name=repo_name,)))
457 repo_name=repo_name,)))
455
458
456 action_map = {'user_deleted_repo':(_('[deleted] repository'), None),
459 action_map = {'user_deleted_repo':(_('[deleted] repository'), None),
457 'user_created_repo':(_('[created] repository'), None),
460 'user_created_repo':(_('[created] repository'), None),
458 'user_created_fork':(_('[created] repository as fork'), None),
461 'user_created_fork':(_('[created] repository as fork'), None),
459 'user_forked_repo':(_('[forked] repository'), get_fork_name),
462 'user_forked_repo':(_('[forked] repository'), get_fork_name),
460 'user_updated_repo':(_('[updated] repository'), None),
463 'user_updated_repo':(_('[updated] repository'), None),
461 'admin_deleted_repo':(_('[delete] repository'), None),
464 'admin_deleted_repo':(_('[delete] repository'), None),
462 'admin_created_repo':(_('[created] repository'), None),
465 'admin_created_repo':(_('[created] repository'), None),
463 'admin_forked_repo':(_('[forked] repository'), None),
466 'admin_forked_repo':(_('[forked] repository'), None),
464 'admin_updated_repo':(_('[updated] repository'), None),
467 'admin_updated_repo':(_('[updated] repository'), None),
465 'push':(_('[pushed] into'), get_cs_links),
468 'push':(_('[pushed] into'), get_cs_links),
466 'push_local':(_('[committed via RhodeCode] into'), get_cs_links),
469 'push_local':(_('[committed via RhodeCode] into'), get_cs_links),
467 'push_remote':(_('[pulled from remote] into'), get_cs_links),
470 'push_remote':(_('[pulled from remote] into'), get_cs_links),
468 'pull':(_('[pulled] from'), None),
471 'pull':(_('[pulled] from'), None),
469 'started_following_repo':(_('[started following] repository'), None),
472 'started_following_repo':(_('[started following] repository'), None),
470 'stopped_following_repo':(_('[stopped following] repository'), None),
473 'stopped_following_repo':(_('[stopped following] repository'), None),
471 }
474 }
472
475
473 action_str = action_map.get(action, action)
476 action_str = action_map.get(action, action)
474 if feed:
477 if feed:
475 action = action_str[0].replace('[', '').replace(']', '')
478 action = action_str[0].replace('[', '').replace(']', '')
476 else:
479 else:
477 action = action_str[0].replace('[', '<span class="journal_highlight">')\
480 action = action_str[0].replace('[', '<span class="journal_highlight">')\
478 .replace(']', '</span>')
481 .replace(']', '</span>')
479
482
480 action_params_func = lambda :""
483 action_params_func = lambda :""
481
484
482 if callable(action_str[1]):
485 if callable(action_str[1]):
483 action_params_func = action_str[1]
486 action_params_func = action_str[1]
484
487
485 return [literal(action), action_params_func]
488 return [literal(action), action_params_func]
486
489
487 def action_parser_icon(user_log):
490 def action_parser_icon(user_log):
488 action = user_log.action
491 action = user_log.action
489 action_params = None
492 action_params = None
490 x = action.split(':')
493 x = action.split(':')
491
494
492 if len(x) > 1:
495 if len(x) > 1:
493 action, action_params = x
496 action, action_params = x
494
497
495 tmpl = """<img src="%s%s" alt="%s"/>"""
498 tmpl = """<img src="%s%s" alt="%s"/>"""
496 map = {'user_deleted_repo':'database_delete.png',
499 map = {'user_deleted_repo':'database_delete.png',
497 'user_created_repo':'database_add.png',
500 'user_created_repo':'database_add.png',
498 'user_created_fork':'arrow_divide.png',
501 'user_created_fork':'arrow_divide.png',
499 'user_forked_repo':'arrow_divide.png',
502 'user_forked_repo':'arrow_divide.png',
500 'user_updated_repo':'database_edit.png',
503 'user_updated_repo':'database_edit.png',
501 'admin_deleted_repo':'database_delete.png',
504 'admin_deleted_repo':'database_delete.png',
502 'admin_created_repo':'database_add.png',
505 'admin_created_repo':'database_add.png',
503 'admin_forked_repo':'arrow_divide.png',
506 'admin_forked_repo':'arrow_divide.png',
504 'admin_updated_repo':'database_edit.png',
507 'admin_updated_repo':'database_edit.png',
505 'push':'script_add.png',
508 'push':'script_add.png',
506 'push_local':'script_edit.png',
509 'push_local':'script_edit.png',
507 'push_remote':'connect.png',
510 'push_remote':'connect.png',
508 'pull':'down_16.png',
511 'pull':'down_16.png',
509 'started_following_repo':'heart_add.png',
512 'started_following_repo':'heart_add.png',
510 'stopped_following_repo':'heart_delete.png',
513 'stopped_following_repo':'heart_delete.png',
511 }
514 }
512 return literal(tmpl % ((url('/images/icons/')),
515 return literal(tmpl % ((url('/images/icons/')),
513 map.get(action, action), action))
516 map.get(action, action), action))
514
517
515
518
516 #==============================================================================
519 #==============================================================================
517 # PERMS
520 # PERMS
518 #==============================================================================
521 #==============================================================================
519 from rhodecode.lib.auth import HasPermissionAny, HasPermissionAll, \
522 from rhodecode.lib.auth import HasPermissionAny, HasPermissionAll, \
520 HasRepoPermissionAny, HasRepoPermissionAll
523 HasRepoPermissionAny, HasRepoPermissionAll
521
524
522 #==============================================================================
525 #==============================================================================
523 # GRAVATAR URL
526 # GRAVATAR URL
524 #==============================================================================
527 #==============================================================================
525
528
526 def gravatar_url(email_address, size=30):
529 def gravatar_url(email_address, size=30):
527 if (not str2bool(config['app_conf'].get('use_gravatar')) or
530 if (not str2bool(config['app_conf'].get('use_gravatar')) or
528 not email_address or email_address == 'anonymous@rhodecode.org'):
531 not email_address or email_address == 'anonymous@rhodecode.org'):
529 return url("/images/user%s.png" % size)
532 return url("/images/user%s.png" % size)
530
533
531 ssl_enabled = 'https' == request.environ.get('wsgi.url_scheme')
534 ssl_enabled = 'https' == request.environ.get('wsgi.url_scheme')
532 default = 'identicon'
535 default = 'identicon'
533 baseurl_nossl = "http://www.gravatar.com/avatar/"
536 baseurl_nossl = "http://www.gravatar.com/avatar/"
534 baseurl_ssl = "https://secure.gravatar.com/avatar/"
537 baseurl_ssl = "https://secure.gravatar.com/avatar/"
535 baseurl = baseurl_ssl if ssl_enabled else baseurl_nossl
538 baseurl = baseurl_ssl if ssl_enabled else baseurl_nossl
536
539
537 if isinstance(email_address, unicode):
540 if isinstance(email_address, unicode):
538 #hashlib crashes on unicode items
541 #hashlib crashes on unicode items
539 email_address = safe_str(email_address)
542 email_address = safe_str(email_address)
540 # construct the url
543 # construct the url
541 gravatar_url = baseurl + hashlib.md5(email_address.lower()).hexdigest() + "?"
544 gravatar_url = baseurl + hashlib.md5(email_address.lower()).hexdigest() + "?"
542 gravatar_url += urllib.urlencode({'d':default, 's':str(size)})
545 gravatar_url += urllib.urlencode({'d':default, 's':str(size)})
543
546
544 return gravatar_url
547 return gravatar_url
545
548
546
549
547 #==============================================================================
550 #==============================================================================
548 # REPO PAGER, PAGER FOR REPOSITORY
551 # REPO PAGER, PAGER FOR REPOSITORY
549 #==============================================================================
552 #==============================================================================
550 class RepoPage(Page):
553 class RepoPage(Page):
551
554
552 def __init__(self, collection, page=1, items_per_page=20,
555 def __init__(self, collection, page=1, items_per_page=20,
553 item_count=None, url=None, **kwargs):
556 item_count=None, url=None, **kwargs):
554
557
555 """Create a "RepoPage" instance. special pager for paging
558 """Create a "RepoPage" instance. special pager for paging
556 repository
559 repository
557 """
560 """
558 self._url_generator = url
561 self._url_generator = url
559
562
560 # Safe the kwargs class-wide so they can be used in the pager() method
563 # Safe the kwargs class-wide so they can be used in the pager() method
561 self.kwargs = kwargs
564 self.kwargs = kwargs
562
565
563 # Save a reference to the collection
566 # Save a reference to the collection
564 self.original_collection = collection
567 self.original_collection = collection
565
568
566 self.collection = collection
569 self.collection = collection
567
570
568 # The self.page is the number of the current page.
571 # The self.page is the number of the current page.
569 # The first page has the number 1!
572 # The first page has the number 1!
570 try:
573 try:
571 self.page = int(page) # make it int() if we get it as a string
574 self.page = int(page) # make it int() if we get it as a string
572 except (ValueError, TypeError):
575 except (ValueError, TypeError):
573 self.page = 1
576 self.page = 1
574
577
575 self.items_per_page = items_per_page
578 self.items_per_page = items_per_page
576
579
577 # Unless the user tells us how many items the collections has
580 # Unless the user tells us how many items the collections has
578 # we calculate that ourselves.
581 # we calculate that ourselves.
579 if item_count is not None:
582 if item_count is not None:
580 self.item_count = item_count
583 self.item_count = item_count
581 else:
584 else:
582 self.item_count = len(self.collection)
585 self.item_count = len(self.collection)
583
586
584 # Compute the number of the first and last available page
587 # Compute the number of the first and last available page
585 if self.item_count > 0:
588 if self.item_count > 0:
586 self.first_page = 1
589 self.first_page = 1
587 self.page_count = int(math.ceil(float(self.item_count) /
590 self.page_count = int(math.ceil(float(self.item_count) /
588 self.items_per_page))
591 self.items_per_page))
589 self.last_page = self.first_page + self.page_count - 1
592 self.last_page = self.first_page + self.page_count - 1
590
593
591 # Make sure that the requested page number is the range of
594 # Make sure that the requested page number is the range of
592 # valid pages
595 # valid pages
593 if self.page > self.last_page:
596 if self.page > self.last_page:
594 self.page = self.last_page
597 self.page = self.last_page
595 elif self.page < self.first_page:
598 elif self.page < self.first_page:
596 self.page = self.first_page
599 self.page = self.first_page
597
600
598 # Note: the number of items on this page can be less than
601 # Note: the number of items on this page can be less than
599 # items_per_page if the last page is not full
602 # items_per_page if the last page is not full
600 self.first_item = max(0, (self.item_count) - (self.page *
603 self.first_item = max(0, (self.item_count) - (self.page *
601 items_per_page))
604 items_per_page))
602 self.last_item = ((self.item_count - 1) - items_per_page *
605 self.last_item = ((self.item_count - 1) - items_per_page *
603 (self.page - 1))
606 (self.page - 1))
604
607
605 self.items = list(self.collection[self.first_item:self.last_item + 1])
608 self.items = list(self.collection[self.first_item:self.last_item + 1])
606
609
607
610
608 # Links to previous and next page
611 # Links to previous and next page
609 if self.page > self.first_page:
612 if self.page > self.first_page:
610 self.previous_page = self.page - 1
613 self.previous_page = self.page - 1
611 else:
614 else:
612 self.previous_page = None
615 self.previous_page = None
613
616
614 if self.page < self.last_page:
617 if self.page < self.last_page:
615 self.next_page = self.page + 1
618 self.next_page = self.page + 1
616 else:
619 else:
617 self.next_page = None
620 self.next_page = None
618
621
619 # No items available
622 # No items available
620 else:
623 else:
621 self.first_page = None
624 self.first_page = None
622 self.page_count = 0
625 self.page_count = 0
623 self.last_page = None
626 self.last_page = None
624 self.first_item = None
627 self.first_item = None
625 self.last_item = None
628 self.last_item = None
626 self.previous_page = None
629 self.previous_page = None
627 self.next_page = None
630 self.next_page = None
628 self.items = []
631 self.items = []
629
632
630 # This is a subclass of the 'list' type. Initialise the list now.
633 # This is a subclass of the 'list' type. Initialise the list now.
631 list.__init__(self, reversed(self.items))
634 list.__init__(self, reversed(self.items))
632
635
633
636
634 def changed_tooltip(nodes):
637 def changed_tooltip(nodes):
635 """
638 """
636 Generates a html string for changed nodes in changeset page.
639 Generates a html string for changed nodes in changeset page.
637 It limits the output to 30 entries
640 It limits the output to 30 entries
638
641
639 :param nodes: LazyNodesGenerator
642 :param nodes: LazyNodesGenerator
640 """
643 """
641 if nodes:
644 if nodes:
642 pref = ': <br/> '
645 pref = ': <br/> '
643 suf = ''
646 suf = ''
644 if len(nodes) > 30:
647 if len(nodes) > 30:
645 suf = '<br/>' + _(' and %s more') % (len(nodes) - 30)
648 suf = '<br/>' + _(' and %s more') % (len(nodes) - 30)
646 return literal(pref + '<br/> '.join([safe_unicode(x.path)
649 return literal(pref + '<br/> '.join([safe_unicode(x.path)
647 for x in nodes[:30]]) + suf)
650 for x in nodes[:30]]) + suf)
648 else:
651 else:
649 return ': ' + _('No Files')
652 return ': ' + _('No Files')
650
653
651
654
652
655
653 def repo_link(groups_and_repos):
656 def repo_link(groups_and_repos):
654 """
657 """
655 Makes a breadcrumbs link to repo within a group
658 Makes a breadcrumbs link to repo within a group
656 joins &raquo; on each group to create a fancy link
659 joins &raquo; on each group to create a fancy link
657
660
658 ex::
661 ex::
659 group >> subgroup >> repo
662 group >> subgroup >> repo
660
663
661 :param groups_and_repos:
664 :param groups_and_repos:
662 """
665 """
663 groups, repo_name = groups_and_repos
666 groups, repo_name = groups_and_repos
664
667
665 if not groups:
668 if not groups:
666 return repo_name
669 return repo_name
667 else:
670 else:
668 def make_link(group):
671 def make_link(group):
669 return link_to(group.name, url('repos_group_home',
672 return link_to(group.name, url('repos_group_home',
670 group_name=group.group_name))
673 group_name=group.group_name))
671 return literal(' &raquo; '.join(map(make_link, groups)) + \
674 return literal(' &raquo; '.join(map(make_link, groups)) + \
672 " &raquo; " + repo_name)
675 " &raquo; " + repo_name)
673
676
674 def fancy_file_stats(stats):
677 def fancy_file_stats(stats):
675 """
678 """
676 Displays a fancy two colored bar for number of added/deleted
679 Displays a fancy two colored bar for number of added/deleted
677 lines of code on file
680 lines of code on file
678
681
679 :param stats: two element list of added/deleted lines of code
682 :param stats: two element list of added/deleted lines of code
680 """
683 """
681
684
682 a, d, t = stats[0], stats[1], stats[0] + stats[1]
685 a, d, t = stats[0], stats[1], stats[0] + stats[1]
683 width = 100
686 width = 100
684 unit = float(width) / (t or 1)
687 unit = float(width) / (t or 1)
685
688
686 # needs > 9% of width to be visible or 0 to be hidden
689 # needs > 9% of width to be visible or 0 to be hidden
687 a_p = max(9, unit * a) if a > 0 else 0
690 a_p = max(9, unit * a) if a > 0 else 0
688 d_p = max(9, unit * d) if d > 0 else 0
691 d_p = max(9, unit * d) if d > 0 else 0
689 p_sum = a_p + d_p
692 p_sum = a_p + d_p
690
693
691 if p_sum > width:
694 if p_sum > width:
692 #adjust the percentage to be == 100% since we adjusted to 9
695 #adjust the percentage to be == 100% since we adjusted to 9
693 if a_p > d_p:
696 if a_p > d_p:
694 a_p = a_p - (p_sum - width)
697 a_p = a_p - (p_sum - width)
695 else:
698 else:
696 d_p = d_p - (p_sum - width)
699 d_p = d_p - (p_sum - width)
697
700
698 a_v = a if a > 0 else ''
701 a_v = a if a > 0 else ''
699 d_v = d if d > 0 else ''
702 d_v = d if d > 0 else ''
700
703
701
704
702 def cgen(l_type):
705 def cgen(l_type):
703 mapping = {'tr':'top-right-rounded-corner',
706 mapping = {'tr':'top-right-rounded-corner',
704 'tl':'top-left-rounded-corner',
707 'tl':'top-left-rounded-corner',
705 'br':'bottom-right-rounded-corner',
708 'br':'bottom-right-rounded-corner',
706 'bl':'bottom-left-rounded-corner'}
709 'bl':'bottom-left-rounded-corner'}
707 map_getter = lambda x:mapping[x]
710 map_getter = lambda x:mapping[x]
708
711
709 if l_type == 'a' and d_v:
712 if l_type == 'a' and d_v:
710 #case when added and deleted are present
713 #case when added and deleted are present
711 return ' '.join(map(map_getter, ['tl', 'bl']))
714 return ' '.join(map(map_getter, ['tl', 'bl']))
712
715
713 if l_type == 'a' and not d_v:
716 if l_type == 'a' and not d_v:
714 return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
717 return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
715
718
716 if l_type == 'd' and a_v:
719 if l_type == 'd' and a_v:
717 return ' '.join(map(map_getter, ['tr', 'br']))
720 return ' '.join(map(map_getter, ['tr', 'br']))
718
721
719 if l_type == 'd' and not a_v:
722 if l_type == 'd' and not a_v:
720 return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
723 return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
721
724
722
725
723
726
724 d_a = '<div class="added %s" style="width:%s%%">%s</div>' % (cgen('a'),
727 d_a = '<div class="added %s" style="width:%s%%">%s</div>' % (cgen('a'),
725 a_p, a_v)
728 a_p, a_v)
726 d_d = '<div class="deleted %s" style="width:%s%%">%s</div>' % (cgen('d'),
729 d_d = '<div class="deleted %s" style="width:%s%%">%s</div>' % (cgen('d'),
727 d_p, d_v)
730 d_p, d_v)
728 return literal('<div style="width:%spx">%s%s</div>' % (width, d_a, d_d))
731 return literal('<div style="width:%spx">%s%s</div>' % (width, d_a, d_d))
729
732
730
733
731 def urlify_text(text):
734 def urlify_text(text):
732 import re
735 import re
733
736
734 url_pat = re.compile(r'''(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]'''
737 url_pat = re.compile(r'''(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]'''
735 '''|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)''')
738 '''|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)''')
736
739
737 def url_func(match_obj):
740 def url_func(match_obj):
738 url_full = match_obj.groups()[0]
741 url_full = match_obj.groups()[0]
739 return '<a href="%(url)s">%(url)s</a>' % ({'url':url_full})
742 return '<a href="%(url)s">%(url)s</a>' % ({'url':url_full})
740
743
741 return literal(url_pat.sub(url_func, text))
744 return literal(url_pat.sub(url_func, text))
742
745
746 def urlify_commit(text):
747 import re
748 import traceback
749
750 try:
751 conf = config['app_conf']
752
753 URL_PAT = re.compile(r'%s' % conf.get('url_pat'))
754
755 if URL_PAT:
756 ISSUE_SERVER = conf.get('issue_server')
757 ISSUE_PREFIX = conf.get('issue_prefix')
758 def url_func(match_obj):
759 issue_id = match_obj.groups()[0]
760 return ' <a href="%(url)s">%(issue-prefix)s%(id-repr)s</a>' % (
761 {'url':ISSUE_SERVER.replace('{id}',issue_id),
762 'id-repr':issue_id,
763 'issue-prefix':ISSUE_PREFIX,
764 'serv':ISSUE_SERVER,
765 }
766 )
767 return literal(URL_PAT.sub(url_func, text))
768 except:
769 log.error(traceback.format_exc())
770 pass
771
772 return text
743
773
744 def rst(source):
774 def rst(source):
745 return literal('<div class="rst-block">%s</div>' %
775 return literal('<div class="rst-block">%s</div>' %
746 MarkupRenderer.rst(source))
776 MarkupRenderer.rst(source))
747
777
748 def rst_w_mentions(source):
778 def rst_w_mentions(source):
749 """
779 """
750 Wrapped rst renderer with @mention highlighting
780 Wrapped rst renderer with @mention highlighting
751
781
752 :param source:
782 :param source:
753 """
783 """
754 return literal('<div class="rst-block">%s</div>' %
784 return literal('<div class="rst-block">%s</div>' %
755 MarkupRenderer.rst_with_mentions(source))
785 MarkupRenderer.rst_with_mentions(source))
@@ -1,4094 +1,4092 b''
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
2 {
2 {
3 border: 0;
3 border: 0;
4 outline: 0;
4 outline: 0;
5 font-size: 100%;
5 font-size: 100%;
6 vertical-align: baseline;
6 vertical-align: baseline;
7 background: transparent;
7 background: transparent;
8 margin: 0;
8 margin: 0;
9 padding: 0;
9 padding: 0;
10 }
10 }
11
11
12 body {
12 body {
13 line-height: 1;
13 line-height: 1;
14 height: 100%;
14 height: 100%;
15 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
16 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
16 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
17 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
17 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
18 color: #000;
18 color: #000;
19 margin: 0;
19 margin: 0;
20 padding: 0;
20 padding: 0;
21 font-size: 12px;
21 font-size: 12px;
22 }
22 }
23
23
24 ol,ul {
24 ol,ul {
25 list-style: none;
25 list-style: none;
26 }
26 }
27
27
28 blockquote,q {
28 blockquote,q {
29 quotes: none;
29 quotes: none;
30 }
30 }
31
31
32 blockquote:before,blockquote:after,q:before,q:after {
32 blockquote:before,blockquote:after,q:before,q:after {
33 content: none;
33 content: none;
34 }
34 }
35
35
36 :focus {
36 :focus {
37 outline: 0;
37 outline: 0;
38 }
38 }
39
39
40 del {
40 del {
41 text-decoration: line-through;
41 text-decoration: line-through;
42 }
42 }
43
43
44 table {
44 table {
45 border-collapse: collapse;
45 border-collapse: collapse;
46 border-spacing: 0;
46 border-spacing: 0;
47 }
47 }
48
48
49 html {
49 html {
50 height: 100%;
50 height: 100%;
51 }
51 }
52
52
53 a {
53 a {
54 color: #003367;
54 color: #003367;
55 text-decoration: none;
55 text-decoration: none;
56 cursor: pointer;
56 cursor: pointer;
57 }
57 }
58
58
59 a:hover {
59 a:hover {
60 color: #316293;
60 color: #316293;
61 text-decoration: underline;
61 text-decoration: underline;
62 }
62 }
63
63
64 h1,h2,h3,h4,h5,h6 {
64 h1,h2,h3,h4,h5,h6 {
65 color: #292929;
65 color: #292929;
66 font-weight: 700;
66 font-weight: 700;
67 }
67 }
68
68
69 h1 {
69 h1 {
70 font-size: 22px;
70 font-size: 22px;
71 }
71 }
72
72
73 h2 {
73 h2 {
74 font-size: 20px;
74 font-size: 20px;
75 }
75 }
76
76
77 h3 {
77 h3 {
78 font-size: 18px;
78 font-size: 18px;
79 }
79 }
80
80
81 h4 {
81 h4 {
82 font-size: 16px;
82 font-size: 16px;
83 }
83 }
84
84
85 h5 {
85 h5 {
86 font-size: 14px;
86 font-size: 14px;
87 }
87 }
88
88
89 h6 {
89 h6 {
90 font-size: 11px;
90 font-size: 11px;
91 }
91 }
92
92
93 ul.circle {
93 ul.circle {
94 list-style-type: circle;
94 list-style-type: circle;
95 }
95 }
96
96
97 ul.disc {
97 ul.disc {
98 list-style-type: disc;
98 list-style-type: disc;
99 }
99 }
100
100
101 ul.square {
101 ul.square {
102 list-style-type: square;
102 list-style-type: square;
103 }
103 }
104
104
105 ol.lower-roman {
105 ol.lower-roman {
106 list-style-type: lower-roman;
106 list-style-type: lower-roman;
107 }
107 }
108
108
109 ol.upper-roman {
109 ol.upper-roman {
110 list-style-type: upper-roman;
110 list-style-type: upper-roman;
111 }
111 }
112
112
113 ol.lower-alpha {
113 ol.lower-alpha {
114 list-style-type: lower-alpha;
114 list-style-type: lower-alpha;
115 }
115 }
116
116
117 ol.upper-alpha {
117 ol.upper-alpha {
118 list-style-type: upper-alpha;
118 list-style-type: upper-alpha;
119 }
119 }
120
120
121 ol.decimal {
121 ol.decimal {
122 list-style-type: decimal;
122 list-style-type: decimal;
123 }
123 }
124
124
125 div.color {
125 div.color {
126 clear: both;
126 clear: both;
127 overflow: hidden;
127 overflow: hidden;
128 position: absolute;
128 position: absolute;
129 background: #FFF;
129 background: #FFF;
130 margin: 7px 0 0 60px;
130 margin: 7px 0 0 60px;
131 padding: 1px 1px 1px 0;
131 padding: 1px 1px 1px 0;
132 }
132 }
133
133
134 div.color a {
134 div.color a {
135 width: 15px;
135 width: 15px;
136 height: 15px;
136 height: 15px;
137 display: block;
137 display: block;
138 float: left;
138 float: left;
139 margin: 0 0 0 1px;
139 margin: 0 0 0 1px;
140 padding: 0;
140 padding: 0;
141 }
141 }
142
142
143 div.options {
143 div.options {
144 clear: both;
144 clear: both;
145 overflow: hidden;
145 overflow: hidden;
146 position: absolute;
146 position: absolute;
147 background: #FFF;
147 background: #FFF;
148 margin: 7px 0 0 162px;
148 margin: 7px 0 0 162px;
149 padding: 0;
149 padding: 0;
150 }
150 }
151
151
152 div.options a {
152 div.options a {
153 height: 1%;
153 height: 1%;
154 display: block;
154 display: block;
155 text-decoration: none;
155 text-decoration: none;
156 margin: 0;
156 margin: 0;
157 padding: 3px 8px;
157 padding: 3px 8px;
158 }
158 }
159
159
160 .top-left-rounded-corner {
160 .top-left-rounded-corner {
161 -webkit-border-top-left-radius: 8px;
161 -webkit-border-top-left-radius: 8px;
162 -khtml-border-radius-topleft: 8px;
162 -khtml-border-radius-topleft: 8px;
163 -moz-border-radius-topleft: 8px;
163 -moz-border-radius-topleft: 8px;
164 border-top-left-radius: 8px;
164 border-top-left-radius: 8px;
165 }
165 }
166
166
167 .top-right-rounded-corner {
167 .top-right-rounded-corner {
168 -webkit-border-top-right-radius: 8px;
168 -webkit-border-top-right-radius: 8px;
169 -khtml-border-radius-topright: 8px;
169 -khtml-border-radius-topright: 8px;
170 -moz-border-radius-topright: 8px;
170 -moz-border-radius-topright: 8px;
171 border-top-right-radius: 8px;
171 border-top-right-radius: 8px;
172 }
172 }
173
173
174 .bottom-left-rounded-corner {
174 .bottom-left-rounded-corner {
175 -webkit-border-bottom-left-radius: 8px;
175 -webkit-border-bottom-left-radius: 8px;
176 -khtml-border-radius-bottomleft: 8px;
176 -khtml-border-radius-bottomleft: 8px;
177 -moz-border-radius-bottomleft: 8px;
177 -moz-border-radius-bottomleft: 8px;
178 border-bottom-left-radius: 8px;
178 border-bottom-left-radius: 8px;
179 }
179 }
180
180
181 .bottom-right-rounded-corner {
181 .bottom-right-rounded-corner {
182 -webkit-border-bottom-right-radius: 8px;
182 -webkit-border-bottom-right-radius: 8px;
183 -khtml-border-radius-bottomright: 8px;
183 -khtml-border-radius-bottomright: 8px;
184 -moz-border-radius-bottomright: 8px;
184 -moz-border-radius-bottomright: 8px;
185 border-bottom-right-radius: 8px;
185 border-bottom-right-radius: 8px;
186 }
186 }
187
187
188 #header {
188 #header {
189 margin: 0;
189 margin: 0;
190 padding: 0 10px;
190 padding: 0 10px;
191 }
191 }
192
192
193 #header ul#logged-user {
193 #header ul#logged-user {
194 margin-bottom: 5px !important;
194 margin-bottom: 5px !important;
195 -webkit-border-radius: 0px 0px 8px 8px;
195 -webkit-border-radius: 0px 0px 8px 8px;
196 -khtml-border-radius: 0px 0px 8px 8px;
196 -khtml-border-radius: 0px 0px 8px 8px;
197 -moz-border-radius: 0px 0px 8px 8px;
197 -moz-border-radius: 0px 0px 8px 8px;
198 border-radius: 0px 0px 8px 8px;
198 border-radius: 0px 0px 8px 8px;
199 height: 37px;
199 height: 37px;
200 background-color: #eedc94;
200 background-color: #eedc94;
201 background-repeat: repeat-x;
201 background-repeat: repeat-x;
202 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
202 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
203 to(#eedc94) );
203 to(#eedc94) );
204 background-image: -moz-linear-gradient(top, #003b76, #00376e);
204 background-image: -moz-linear-gradient(top, #003b76, #00376e);
205 background-image: -ms-linear-gradient(top, #003b76, #00376e);
205 background-image: -ms-linear-gradient(top, #003b76, #00376e);
206 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
206 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
207 color-stop(100%, #00376e) );
207 color-stop(100%, #00376e) );
208 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
208 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
209 background-image: -o-linear-gradient(top, #003b76, #00376e) );
209 background-image: -o-linear-gradient(top, #003b76, #00376e) );
210 background-image: linear-gradient(top, #003b76, #00376e);
210 background-image: linear-gradient(top, #003b76, #00376e);
211 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
211 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
212 endColorstr='#00376e', GradientType=0 );
212 endColorstr='#00376e', GradientType=0 );
213 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
213 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
214 }
214 }
215
215
216 #header ul#logged-user li {
216 #header ul#logged-user li {
217 list-style: none;
217 list-style: none;
218 float: left;
218 float: left;
219 margin: 8px 0 0;
219 margin: 8px 0 0;
220 padding: 4px 12px;
220 padding: 4px 12px;
221 border-left: 1px solid #316293;
221 border-left: 1px solid #316293;
222 }
222 }
223
223
224 #header ul#logged-user li.first {
224 #header ul#logged-user li.first {
225 border-left: none;
225 border-left: none;
226 margin: 4px;
226 margin: 4px;
227 }
227 }
228
228
229 #header ul#logged-user li.first div.gravatar {
229 #header ul#logged-user li.first div.gravatar {
230 margin-top: -2px;
230 margin-top: -2px;
231 }
231 }
232
232
233 #header ul#logged-user li.first div.account {
233 #header ul#logged-user li.first div.account {
234 padding-top: 4px;
234 padding-top: 4px;
235 float: left;
235 float: left;
236 }
236 }
237
237
238 #header ul#logged-user li.last {
238 #header ul#logged-user li.last {
239 border-right: none;
239 border-right: none;
240 }
240 }
241
241
242 #header ul#logged-user li a {
242 #header ul#logged-user li a {
243 color: #fff;
243 color: #fff;
244 font-weight: 700;
244 font-weight: 700;
245 text-decoration: none;
245 text-decoration: none;
246 }
246 }
247
247
248 #header ul#logged-user li a:hover {
248 #header ul#logged-user li a:hover {
249 text-decoration: underline;
249 text-decoration: underline;
250 }
250 }
251
251
252 #header ul#logged-user li.highlight a {
252 #header ul#logged-user li.highlight a {
253 color: #fff;
253 color: #fff;
254 }
254 }
255
255
256 #header ul#logged-user li.highlight a:hover {
256 #header ul#logged-user li.highlight a:hover {
257 color: #FFF;
257 color: #FFF;
258 }
258 }
259
259
260 #header #header-inner {
260 #header #header-inner {
261 min-height: 40px;
261 min-height: 40px;
262 clear: both;
262 clear: both;
263 position: relative;
263 position: relative;
264 background-color: #eedc94;
264 background-color: #eedc94;
265 background-repeat: repeat-x;
265 background-repeat: repeat-x;
266 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
266 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
267 to(#eedc94) );
267 to(#eedc94) );
268 background-image: -moz-linear-gradient(top, #003b76, #00376e);
268 background-image: -moz-linear-gradient(top, #003b76, #00376e);
269 background-image: -ms-linear-gradient(top, #003b76, #00376e);
269 background-image: -ms-linear-gradient(top, #003b76, #00376e);
270 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
270 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
271 color-stop(100%, #00376e) );
271 color-stop(100%, #00376e) );
272 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
272 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
273 background-image: -o-linear-gradient(top, #003b76, #00376e) );
273 background-image: -o-linear-gradient(top, #003b76, #00376e) );
274 background-image: linear-gradient(top, #003b76, #00376e);
274 background-image: linear-gradient(top, #003b76, #00376e);
275 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
275 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
276 endColorstr='#00376e', GradientType=0 );
276 endColorstr='#00376e', GradientType=0 );
277 margin: 0;
277 margin: 0;
278 padding: 0;
278 padding: 0;
279 display: block;
279 display: block;
280 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
280 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
281 -webkit-border-radius: 4px 4px 4px 4px;
281 -webkit-border-radius: 4px 4px 4px 4px;
282 -khtml-border-radius: 4px 4px 4px 4px;
282 -khtml-border-radius: 4px 4px 4px 4px;
283 -moz-border-radius: 4px 4px 4px 4px;
283 -moz-border-radius: 4px 4px 4px 4px;
284 border-radius: 4px 4px 4px 4px;
284 border-radius: 4px 4px 4px 4px;
285 }
285 }
286 #header #header-inner.hover{
286 #header #header-inner.hover{
287 position: fixed !important;
287 position: fixed !important;
288 width: 100% !important;
288 width: 100% !important;
289 margin-left: -10px !important;
289 margin-left: -10px !important;
290 z-index: 10000;
290 z-index: 10000;
291 border-radius: 0px 0px 4px 4px;
291 border-radius: 0px 0px 4px 4px;
292 }
292 }
293 #header #header-inner #home a {
293 #header #header-inner #home a {
294 height: 40px;
294 height: 40px;
295 width: 46px;
295 width: 46px;
296 display: block;
296 display: block;
297 background: url("../images/button_home.png");
297 background: url("../images/button_home.png");
298 background-position: 0 0;
298 background-position: 0 0;
299 margin: 0;
299 margin: 0;
300 padding: 0;
300 padding: 0;
301 }
301 }
302
302
303 #header #header-inner #home a:hover {
303 #header #header-inner #home a:hover {
304 background-position: 0 -40px;
304 background-position: 0 -40px;
305 }
305 }
306
306
307 #header #header-inner #logo {
307 #header #header-inner #logo {
308 float: left;
308 float: left;
309 position: absolute;
309 position: absolute;
310 }
310 }
311
311
312 #header #header-inner #logo h1 {
312 #header #header-inner #logo h1 {
313 color: #FFF;
313 color: #FFF;
314 font-size: 18px;
314 font-size: 18px;
315 margin: 10px 0 0 13px;
315 margin: 10px 0 0 13px;
316 padding: 0;
316 padding: 0;
317 }
317 }
318
318
319 #header #header-inner #logo a {
319 #header #header-inner #logo a {
320 color: #fff;
320 color: #fff;
321 text-decoration: none;
321 text-decoration: none;
322 }
322 }
323
323
324 #header #header-inner #logo a:hover {
324 #header #header-inner #logo a:hover {
325 color: #bfe3ff;
325 color: #bfe3ff;
326 }
326 }
327
327
328 #header #header-inner #quick,#header #header-inner #quick ul {
328 #header #header-inner #quick,#header #header-inner #quick ul {
329 position: relative;
329 position: relative;
330 float: right;
330 float: right;
331 list-style-type: none;
331 list-style-type: none;
332 list-style-position: outside;
332 list-style-position: outside;
333 margin: 6px 5px 0 0;
333 margin: 6px 5px 0 0;
334 padding: 0;
334 padding: 0;
335 }
335 }
336
336
337 #header #header-inner #quick li {
337 #header #header-inner #quick li {
338 position: relative;
338 position: relative;
339 float: left;
339 float: left;
340 margin: 0 5px 0 0;
340 margin: 0 5px 0 0;
341 padding: 0;
341 padding: 0;
342 }
342 }
343
343
344 #header #header-inner #quick li a {
344 #header #header-inner #quick li a {
345 top: 0;
345 top: 0;
346 left: 0;
346 left: 0;
347 height: 1%;
347 height: 1%;
348 display: block;
348 display: block;
349 clear: both;
349 clear: both;
350 overflow: hidden;
350 overflow: hidden;
351 color: #FFF;
351 color: #FFF;
352 font-weight: 700;
352 font-weight: 700;
353 text-decoration: none;
353 text-decoration: none;
354 background: #369;
354 background: #369;
355 padding: 0;
355 padding: 0;
356 -webkit-border-radius: 4px 4px 4px 4px;
356 -webkit-border-radius: 4px 4px 4px 4px;
357 -khtml-border-radius: 4px 4px 4px 4px;
357 -khtml-border-radius: 4px 4px 4px 4px;
358 -moz-border-radius: 4px 4px 4px 4px;
358 -moz-border-radius: 4px 4px 4px 4px;
359 border-radius: 4px 4px 4px 4px;
359 border-radius: 4px 4px 4px 4px;
360 }
360 }
361
361
362 #header #header-inner #quick li span.short {
362 #header #header-inner #quick li span.short {
363 padding: 9px 6px 8px 6px;
363 padding: 9px 6px 8px 6px;
364 }
364 }
365
365
366 #header #header-inner #quick li span {
366 #header #header-inner #quick li span {
367 top: 0;
367 top: 0;
368 right: 0;
368 right: 0;
369 height: 1%;
369 height: 1%;
370 display: block;
370 display: block;
371 float: left;
371 float: left;
372 border-left: 1px solid #3f6f9f;
372 border-left: 1px solid #3f6f9f;
373 margin: 0;
373 margin: 0;
374 padding: 10px 12px 8px 10px;
374 padding: 10px 12px 8px 10px;
375 }
375 }
376
376
377 #header #header-inner #quick li span.normal {
377 #header #header-inner #quick li span.normal {
378 border: none;
378 border: none;
379 padding: 10px 12px 8px;
379 padding: 10px 12px 8px;
380 }
380 }
381
381
382 #header #header-inner #quick li span.icon {
382 #header #header-inner #quick li span.icon {
383 top: 0;
383 top: 0;
384 left: 0;
384 left: 0;
385 border-left: none;
385 border-left: none;
386 border-right: 1px solid #2e5c89;
386 border-right: 1px solid #2e5c89;
387 padding: 8px 6px 4px;
387 padding: 8px 6px 4px;
388 }
388 }
389
389
390 #header #header-inner #quick li span.icon_short {
390 #header #header-inner #quick li span.icon_short {
391 top: 0;
391 top: 0;
392 left: 0;
392 left: 0;
393 border-left: none;
393 border-left: none;
394 border-right: 1px solid #2e5c89;
394 border-right: 1px solid #2e5c89;
395 padding: 8px 6px 4px;
395 padding: 8px 6px 4px;
396 }
396 }
397
397
398 #header #header-inner #quick li span.icon img,#header #header-inner #quick li span.icon_short img
398 #header #header-inner #quick li span.icon img,#header #header-inner #quick li span.icon_short img
399 {
399 {
400 margin: 0px -2px 0px 0px;
400 margin: 0px -2px 0px 0px;
401 }
401 }
402
402
403 #header #header-inner #quick li a:hover {
403 #header #header-inner #quick li a:hover {
404 background: #4e4e4e no-repeat top left;
404 background: #4e4e4e no-repeat top left;
405 }
405 }
406
406
407 #header #header-inner #quick li a:hover span {
407 #header #header-inner #quick li a:hover span {
408 border-left: 1px solid #545454;
408 border-left: 1px solid #545454;
409 }
409 }
410
410
411 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short
411 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short
412 {
412 {
413 border-left: none;
413 border-left: none;
414 border-right: 1px solid #464646;
414 border-right: 1px solid #464646;
415 }
415 }
416
416
417 #header #header-inner #quick ul {
417 #header #header-inner #quick ul {
418 top: 29px;
418 top: 29px;
419 right: 0;
419 right: 0;
420 min-width: 200px;
420 min-width: 200px;
421 display: none;
421 display: none;
422 position: absolute;
422 position: absolute;
423 background: #FFF;
423 background: #FFF;
424 border: 1px solid #666;
424 border: 1px solid #666;
425 border-top: 1px solid #003367;
425 border-top: 1px solid #003367;
426 z-index: 100;
426 z-index: 100;
427 margin: 0;
427 margin: 0;
428 padding: 0;
428 padding: 0;
429 }
429 }
430
430
431 #header #header-inner #quick ul.repo_switcher {
431 #header #header-inner #quick ul.repo_switcher {
432 max-height: 275px;
432 max-height: 275px;
433 overflow-x: hidden;
433 overflow-x: hidden;
434 overflow-y: auto;
434 overflow-y: auto;
435 }
435 }
436
436
437 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
437 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
438 float: none;
438 float: none;
439 margin: 0;
439 margin: 0;
440 border-bottom: 2px solid #003367;
440 border-bottom: 2px solid #003367;
441 }
441 }
442
442
443 #header #header-inner #quick .repo_switcher_type {
443 #header #header-inner #quick .repo_switcher_type {
444 position: absolute;
444 position: absolute;
445 left: 0;
445 left: 0;
446 top: 9px;
446 top: 9px;
447 }
447 }
448
448
449 #header #header-inner #quick li ul li {
449 #header #header-inner #quick li ul li {
450 border-bottom: 1px solid #ddd;
450 border-bottom: 1px solid #ddd;
451 }
451 }
452
452
453 #header #header-inner #quick li ul li a {
453 #header #header-inner #quick li ul li a {
454 width: 182px;
454 width: 182px;
455 height: auto;
455 height: auto;
456 display: block;
456 display: block;
457 float: left;
457 float: left;
458 background: #FFF;
458 background: #FFF;
459 color: #003367;
459 color: #003367;
460 font-weight: 400;
460 font-weight: 400;
461 margin: 0;
461 margin: 0;
462 padding: 7px 9px;
462 padding: 7px 9px;
463 }
463 }
464
464
465 #header #header-inner #quick li ul li a:hover {
465 #header #header-inner #quick li ul li a:hover {
466 color: #000;
466 color: #000;
467 background: #FFF;
467 background: #FFF;
468 }
468 }
469
469
470 #header #header-inner #quick ul ul {
470 #header #header-inner #quick ul ul {
471 top: auto;
471 top: auto;
472 }
472 }
473
473
474 #header #header-inner #quick li ul ul {
474 #header #header-inner #quick li ul ul {
475 right: 200px;
475 right: 200px;
476 max-height: 275px;
476 max-height: 275px;
477 overflow: auto;
477 overflow: auto;
478 overflow-x: hidden;
478 overflow-x: hidden;
479 white-space: normal;
479 white-space: normal;
480 }
480 }
481
481
482 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover
482 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover
483 {
483 {
484 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
484 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
485 #FFF;
485 #FFF;
486 width: 167px;
486 width: 167px;
487 margin: 0;
487 margin: 0;
488 padding: 12px 9px 7px 24px;
488 padding: 12px 9px 7px 24px;
489 }
489 }
490
490
491 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover
491 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover
492 {
492 {
493 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
493 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
494 #FFF;
494 #FFF;
495 min-width: 167px;
495 min-width: 167px;
496 margin: 0;
496 margin: 0;
497 padding: 12px 9px 7px 24px;
497 padding: 12px 9px 7px 24px;
498 }
498 }
499
499
500 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover
500 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover
501 {
501 {
502 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
502 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
503 9px #FFF;
503 9px #FFF;
504 min-width: 167px;
504 min-width: 167px;
505 margin: 0;
505 margin: 0;
506 padding: 12px 9px 7px 24px;
506 padding: 12px 9px 7px 24px;
507 }
507 }
508
508
509 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover
509 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover
510 {
510 {
511 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
511 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
512 #FFF;
512 #FFF;
513 min-width: 167px;
513 min-width: 167px;
514 margin: 0 0 0 14px;
514 margin: 0 0 0 14px;
515 padding: 12px 9px 7px 24px;
515 padding: 12px 9px 7px 24px;
516 }
516 }
517
517
518 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover
518 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover
519 {
519 {
520 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
520 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
521 #FFF;
521 #FFF;
522 min-width: 167px;
522 min-width: 167px;
523 margin: 0 0 0 14px;
523 margin: 0 0 0 14px;
524 padding: 12px 9px 7px 24px;
524 padding: 12px 9px 7px 24px;
525 }
525 }
526
526
527 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
527 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
528 {
528 {
529 background: url("../images/icons/database_edit.png") no-repeat scroll
529 background: url("../images/icons/database_edit.png") no-repeat scroll
530 4px 9px #FFF;
530 4px 9px #FFF;
531 width: 167px;
531 width: 167px;
532 margin: 0;
532 margin: 0;
533 padding: 12px 9px 7px 24px;
533 padding: 12px 9px 7px 24px;
534 }
534 }
535
535
536 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover
536 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover
537 {
537 {
538 background: url("../images/icons/database_link.png") no-repeat scroll
538 background: url("../images/icons/database_link.png") no-repeat scroll
539 4px 9px #FFF;
539 4px 9px #FFF;
540 width: 167px;
540 width: 167px;
541 margin: 0;
541 margin: 0;
542 padding: 12px 9px 7px 24px;
542 padding: 12px 9px 7px 24px;
543 }
543 }
544
544
545 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
545 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
546 {
546 {
547 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
547 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
548 width: 167px;
548 width: 167px;
549 margin: 0;
549 margin: 0;
550 padding: 12px 9px 7px 24px;
550 padding: 12px 9px 7px 24px;
551 }
551 }
552
552
553 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover
553 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover
554 {
554 {
555 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
555 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
556 width: 167px;
556 width: 167px;
557 margin: 0;
557 margin: 0;
558 padding: 12px 9px 7px 24px;
558 padding: 12px 9px 7px 24px;
559 }
559 }
560
560
561 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
561 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
562 {
562 {
563 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
563 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
564 width: 167px;
564 width: 167px;
565 margin: 0;
565 margin: 0;
566 padding: 12px 9px 7px 24px;
566 padding: 12px 9px 7px 24px;
567 }
567 }
568
568
569 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
569 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
570 {
570 {
571 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
571 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
572 width: 167px;
572 width: 167px;
573 margin: 0;
573 margin: 0;
574 padding: 12px 9px 7px 24px;
574 padding: 12px 9px 7px 24px;
575 }
575 }
576
576
577 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover
577 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover
578 {
578 {
579 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
579 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
580 width: 167px;
580 width: 167px;
581 margin: 0;
581 margin: 0;
582 padding: 12px 9px 7px 24px;
582 padding: 12px 9px 7px 24px;
583 }
583 }
584
584
585 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover
585 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover
586 {
586 {
587 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
587 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
588 9px;
588 9px;
589 width: 167px;
589 width: 167px;
590 margin: 0;
590 margin: 0;
591 padding: 12px 9px 7px 24px;
591 padding: 12px 9px 7px 24px;
592 }
592 }
593
593
594 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover
594 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover
595 {
595 {
596 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
596 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
597 width: 167px;
597 width: 167px;
598 margin: 0;
598 margin: 0;
599 padding: 12px 9px 7px 24px;
599 padding: 12px 9px 7px 24px;
600 }
600 }
601
601
602 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover
602 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover
603 {
603 {
604 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
604 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
605 width: 167px;
605 width: 167px;
606 margin: 0;
606 margin: 0;
607 padding: 12px 9px 7px 24px;
607 padding: 12px 9px 7px 24px;
608 }
608 }
609
609
610 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover
610 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover
611 {
611 {
612 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
612 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
613 9px;
613 9px;
614 width: 167px;
614 width: 167px;
615 margin: 0;
615 margin: 0;
616 padding: 12px 9px 7px 24px;
616 padding: 12px 9px 7px 24px;
617 }
617 }
618
618
619 #header #header-inner #quick li ul li a.tags,
619 #header #header-inner #quick li ul li a.tags,
620 #header #header-inner #quick li ul li a.tags:hover{
620 #header #header-inner #quick li ul li a.tags:hover{
621 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
621 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
622 width: 167px;
622 width: 167px;
623 margin: 0;
623 margin: 0;
624 padding: 12px 9px 7px 24px;
624 padding: 12px 9px 7px 24px;
625 }
625 }
626
626
627 #header #header-inner #quick li ul li a.bookmarks,
627 #header #header-inner #quick li ul li a.bookmarks,
628 #header #header-inner #quick li ul li a.bookmarks:hover{
628 #header #header-inner #quick li ul li a.bookmarks:hover{
629 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
629 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
630 width: 167px;
630 width: 167px;
631 margin: 0;
631 margin: 0;
632 padding: 12px 9px 7px 24px;
632 padding: 12px 9px 7px 24px;
633 }
633 }
634
634
635 #header #header-inner #quick li ul li a.admin,
635 #header #header-inner #quick li ul li a.admin,
636 #header #header-inner #quick li ul li a.admin:hover{
636 #header #header-inner #quick li ul li a.admin:hover{
637 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
637 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
638 width: 167px;
638 width: 167px;
639 margin: 0;
639 margin: 0;
640 padding: 12px 9px 7px 24px;
640 padding: 12px 9px 7px 24px;
641 }
641 }
642
642
643 .groups_breadcrumbs a {
643 .groups_breadcrumbs a {
644 color: #fff;
644 color: #fff;
645 }
645 }
646
646
647 .groups_breadcrumbs a:hover {
647 .groups_breadcrumbs a:hover {
648 color: #bfe3ff;
648 color: #bfe3ff;
649 text-decoration: none;
649 text-decoration: none;
650 }
650 }
651
651
652 td.quick_repo_menu {
652 td.quick_repo_menu {
653 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
653 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
654 cursor: pointer;
654 cursor: pointer;
655 width: 8px;
655 width: 8px;
656 border: 1px solid transparent;
656 border: 1px solid transparent;
657 }
657 }
658
658
659 td.quick_repo_menu.active {
659 td.quick_repo_menu.active {
660 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
660 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
661 border: 1px solid #003367;
661 border: 1px solid #003367;
662 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
662 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
663 cursor: pointer;
663 cursor: pointer;
664 }
664 }
665
665
666 td.quick_repo_menu .menu_items {
666 td.quick_repo_menu .menu_items {
667 margin-top: 10px;
667 margin-top: 10px;
668 margin-left:-6px;
668 margin-left:-6px;
669 width: 150px;
669 width: 150px;
670 position: absolute;
670 position: absolute;
671 background-color: #FFF;
671 background-color: #FFF;
672 background: none repeat scroll 0 0 #FFFFFF;
672 background: none repeat scroll 0 0 #FFFFFF;
673 border-color: #003367 #666666 #666666;
673 border-color: #003367 #666666 #666666;
674 border-right: 1px solid #666666;
674 border-right: 1px solid #666666;
675 border-style: solid;
675 border-style: solid;
676 border-width: 1px;
676 border-width: 1px;
677 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
677 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
678 border-top-style: none;
678 border-top-style: none;
679 }
679 }
680
680
681 td.quick_repo_menu .menu_items li {
681 td.quick_repo_menu .menu_items li {
682 padding: 0 !important;
682 padding: 0 !important;
683 }
683 }
684
684
685 td.quick_repo_menu .menu_items a {
685 td.quick_repo_menu .menu_items a {
686 display: block;
686 display: block;
687 padding: 4px 12px 4px 8px;
687 padding: 4px 12px 4px 8px;
688 }
688 }
689
689
690 td.quick_repo_menu .menu_items a:hover {
690 td.quick_repo_menu .menu_items a:hover {
691 background-color: #EEE;
691 background-color: #EEE;
692 text-decoration: none;
692 text-decoration: none;
693 }
693 }
694
694
695 td.quick_repo_menu .menu_items .icon img {
695 td.quick_repo_menu .menu_items .icon img {
696 margin-bottom: -2px;
696 margin-bottom: -2px;
697 }
697 }
698
698
699 td.quick_repo_menu .menu_items.hidden {
699 td.quick_repo_menu .menu_items.hidden {
700 display: none;
700 display: none;
701 }
701 }
702
702
703 .yui-dt-first th {
703 .yui-dt-first th {
704 text-align: left;
704 text-align: left;
705 }
705 }
706
706
707 /*
707 /*
708 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
708 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
709 Code licensed under the BSD License:
709 Code licensed under the BSD License:
710 http://developer.yahoo.com/yui/license.html
710 http://developer.yahoo.com/yui/license.html
711 version: 2.9.0
711 version: 2.9.0
712 */
712 */
713 .yui-skin-sam .yui-dt-mask {
713 .yui-skin-sam .yui-dt-mask {
714 position: absolute;
714 position: absolute;
715 z-index: 9500;
715 z-index: 9500;
716 }
716 }
717 .yui-dt-tmp {
717 .yui-dt-tmp {
718 position: absolute;
718 position: absolute;
719 left: -9000px;
719 left: -9000px;
720 }
720 }
721 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
721 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
722 .yui-dt-scrollable .yui-dt-hd {
722 .yui-dt-scrollable .yui-dt-hd {
723 overflow: hidden;
723 overflow: hidden;
724 position: relative;
724 position: relative;
725 }
725 }
726 .yui-dt-scrollable .yui-dt-bd thead tr,
726 .yui-dt-scrollable .yui-dt-bd thead tr,
727 .yui-dt-scrollable .yui-dt-bd thead th {
727 .yui-dt-scrollable .yui-dt-bd thead th {
728 position: absolute;
728 position: absolute;
729 left: -1500px;
729 left: -1500px;
730 }
730 }
731 .yui-dt-scrollable tbody { -moz-outline: 0 }
731 .yui-dt-scrollable tbody { -moz-outline: 0 }
732 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
732 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
733 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
733 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
734 .yui-dt-coltarget {
734 .yui-dt-coltarget {
735 position: absolute;
735 position: absolute;
736 z-index: 999;
736 z-index: 999;
737 }
737 }
738 .yui-dt-hd { zoom: 1 }
738 .yui-dt-hd { zoom: 1 }
739 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
739 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
740 .yui-dt-resizer {
740 .yui-dt-resizer {
741 position: absolute;
741 position: absolute;
742 right: 0;
742 right: 0;
743 bottom: 0;
743 bottom: 0;
744 height: 100%;
744 height: 100%;
745 cursor: e-resize;
745 cursor: e-resize;
746 cursor: col-resize;
746 cursor: col-resize;
747 background-color: #CCC;
747 background-color: #CCC;
748 opacity: 0;
748 opacity: 0;
749 filter: alpha(opacity=0);
749 filter: alpha(opacity=0);
750 }
750 }
751 .yui-dt-resizerproxy {
751 .yui-dt-resizerproxy {
752 visibility: hidden;
752 visibility: hidden;
753 position: absolute;
753 position: absolute;
754 z-index: 9000;
754 z-index: 9000;
755 background-color: #CCC;
755 background-color: #CCC;
756 opacity: 0;
756 opacity: 0;
757 filter: alpha(opacity=0);
757 filter: alpha(opacity=0);
758 }
758 }
759 th.yui-dt-hidden .yui-dt-liner,
759 th.yui-dt-hidden .yui-dt-liner,
760 td.yui-dt-hidden .yui-dt-liner,
760 td.yui-dt-hidden .yui-dt-liner,
761 th.yui-dt-hidden .yui-dt-resizer { display: none }
761 th.yui-dt-hidden .yui-dt-resizer { display: none }
762 .yui-dt-editor,
762 .yui-dt-editor,
763 .yui-dt-editor-shim {
763 .yui-dt-editor-shim {
764 position: absolute;
764 position: absolute;
765 z-index: 9000;
765 z-index: 9000;
766 }
766 }
767 .yui-skin-sam .yui-dt table {
767 .yui-skin-sam .yui-dt table {
768 margin: 0;
768 margin: 0;
769 padding: 0;
769 padding: 0;
770 font-family: arial;
770 font-family: arial;
771 font-size: inherit;
771 font-size: inherit;
772 border-collapse: separate;
772 border-collapse: separate;
773 *border-collapse: collapse;
773 *border-collapse: collapse;
774 border-spacing: 0;
774 border-spacing: 0;
775 border: 1px solid #7f7f7f;
775 border: 1px solid #7f7f7f;
776 }
776 }
777 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
777 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
778 .yui-skin-sam .yui-dt caption {
778 .yui-skin-sam .yui-dt caption {
779 color: #000;
779 color: #000;
780 font-size: 85%;
780 font-size: 85%;
781 font-weight: normal;
781 font-weight: normal;
782 font-style: italic;
782 font-style: italic;
783 line-height: 1;
783 line-height: 1;
784 padding: 1em 0;
784 padding: 1em 0;
785 text-align: center;
785 text-align: center;
786 }
786 }
787 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
787 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
788 .yui-skin-sam .yui-dt th,
788 .yui-skin-sam .yui-dt th,
789 .yui-skin-sam .yui-dt th a {
789 .yui-skin-sam .yui-dt th a {
790 font-weight: normal;
790 font-weight: normal;
791 text-decoration: none;
791 text-decoration: none;
792 color: #000;
792 color: #000;
793 vertical-align: bottom;
793 vertical-align: bottom;
794 }
794 }
795 .yui-skin-sam .yui-dt th {
795 .yui-skin-sam .yui-dt th {
796 margin: 0;
796 margin: 0;
797 padding: 0;
797 padding: 0;
798 border: 0;
798 border: 0;
799 border-right: 1px solid #cbcbcb;
799 border-right: 1px solid #cbcbcb;
800 }
800 }
801 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
801 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
802 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
802 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
803 .yui-skin-sam .yui-dt-liner {
803 .yui-skin-sam .yui-dt-liner {
804 margin: 0;
804 margin: 0;
805 padding: 0;
805 padding: 0;
806 }
806 }
807 .yui-skin-sam .yui-dt-coltarget {
807 .yui-skin-sam .yui-dt-coltarget {
808 width: 5px;
808 width: 5px;
809 background-color: red;
809 background-color: red;
810 }
810 }
811 .yui-skin-sam .yui-dt td {
811 .yui-skin-sam .yui-dt td {
812 margin: 0;
812 margin: 0;
813 padding: 0;
813 padding: 0;
814 border: 0;
814 border: 0;
815 border-right: 1px solid #cbcbcb;
815 border-right: 1px solid #cbcbcb;
816 text-align: left;
816 text-align: left;
817 }
817 }
818 .yui-skin-sam .yui-dt-list td { border-right: 0 }
818 .yui-skin-sam .yui-dt-list td { border-right: 0 }
819 .yui-skin-sam .yui-dt-resizer { width: 6px }
819 .yui-skin-sam .yui-dt-resizer { width: 6px }
820 .yui-skin-sam .yui-dt-mask {
820 .yui-skin-sam .yui-dt-mask {
821 background-color: #000;
821 background-color: #000;
822 opacity: .25;
822 opacity: .25;
823 filter: alpha(opacity=25);
823 filter: alpha(opacity=25);
824 }
824 }
825 .yui-skin-sam .yui-dt-message { background-color: #FFF }
825 .yui-skin-sam .yui-dt-message { background-color: #FFF }
826 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
826 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
827 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
827 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
828 border-left: 1px solid #7f7f7f;
828 border-left: 1px solid #7f7f7f;
829 border-top: 1px solid #7f7f7f;
829 border-top: 1px solid #7f7f7f;
830 border-right: 1px solid #7f7f7f;
830 border-right: 1px solid #7f7f7f;
831 }
831 }
832 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
832 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
833 border-left: 1px solid #7f7f7f;
833 border-left: 1px solid #7f7f7f;
834 border-bottom: 1px solid #7f7f7f;
834 border-bottom: 1px solid #7f7f7f;
835 border-right: 1px solid #7f7f7f;
835 border-right: 1px solid #7f7f7f;
836 background-color: #FFF;
836 background-color: #FFF;
837 }
837 }
838 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
838 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
839 .yui-skin-sam th.yui-dt-asc,
839 .yui-skin-sam th.yui-dt-asc,
840 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
840 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
841 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
841 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
842 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
842 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
843 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
843 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
844 tbody .yui-dt-editable { cursor: pointer }
844 tbody .yui-dt-editable { cursor: pointer }
845 .yui-dt-editor {
845 .yui-dt-editor {
846 text-align: left;
846 text-align: left;
847 background-color: #f2f2f2;
847 background-color: #f2f2f2;
848 border: 1px solid #808080;
848 border: 1px solid #808080;
849 padding: 6px;
849 padding: 6px;
850 }
850 }
851 .yui-dt-editor label {
851 .yui-dt-editor label {
852 padding-left: 4px;
852 padding-left: 4px;
853 padding-right: 6px;
853 padding-right: 6px;
854 }
854 }
855 .yui-dt-editor .yui-dt-button {
855 .yui-dt-editor .yui-dt-button {
856 padding-top: 6px;
856 padding-top: 6px;
857 text-align: right;
857 text-align: right;
858 }
858 }
859 .yui-dt-editor .yui-dt-button button {
859 .yui-dt-editor .yui-dt-button button {
860 background: url(../images/sprite.png) repeat-x 0 0;
860 background: url(../images/sprite.png) repeat-x 0 0;
861 border: 1px solid #999;
861 border: 1px solid #999;
862 width: 4em;
862 width: 4em;
863 height: 1.8em;
863 height: 1.8em;
864 margin-left: 6px;
864 margin-left: 6px;
865 }
865 }
866 .yui-dt-editor .yui-dt-button button.yui-dt-default {
866 .yui-dt-editor .yui-dt-button button.yui-dt-default {
867 background: url(../images/sprite.png) repeat-x 0 -1400px;
867 background: url(../images/sprite.png) repeat-x 0 -1400px;
868 background-color: #5584e0;
868 background-color: #5584e0;
869 border: 1px solid #304369;
869 border: 1px solid #304369;
870 color: #FFF;
870 color: #FFF;
871 }
871 }
872 .yui-dt-editor .yui-dt-button button:hover {
872 .yui-dt-editor .yui-dt-button button:hover {
873 background: url(../images/sprite.png) repeat-x 0 -1300px;
873 background: url(../images/sprite.png) repeat-x 0 -1300px;
874 color: #000;
874 color: #000;
875 }
875 }
876 .yui-dt-editor .yui-dt-button button:active {
876 .yui-dt-editor .yui-dt-button button:active {
877 background: url(../images/sprite.png) repeat-x 0 -1700px;
877 background: url(../images/sprite.png) repeat-x 0 -1700px;
878 color: #000;
878 color: #000;
879 }
879 }
880 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
880 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
881 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
881 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
882 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
882 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
883 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
883 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
884 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
884 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
885 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
885 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
886 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
886 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
887 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
887 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
888 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
888 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
889 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
889 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
890 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
890 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
891 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
891 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
892 .yui-skin-sam th.yui-dt-highlighted,
892 .yui-skin-sam th.yui-dt-highlighted,
893 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
893 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
894 .yui-skin-sam tr.yui-dt-highlighted,
894 .yui-skin-sam tr.yui-dt-highlighted,
895 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
895 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
896 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
896 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
897 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
897 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
898 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
898 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
899 cursor: pointer;
899 cursor: pointer;
900 background-color: #b2d2ff;
900 background-color: #b2d2ff;
901 }
901 }
902 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
902 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
903 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
903 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
904 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
904 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
905 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
905 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
906 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
906 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
907 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
907 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
908 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
908 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
909 cursor: pointer;
909 cursor: pointer;
910 background-color: #b2d2ff;
910 background-color: #b2d2ff;
911 }
911 }
912 .yui-skin-sam th.yui-dt-selected,
912 .yui-skin-sam th.yui-dt-selected,
913 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
913 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
914 .yui-skin-sam tr.yui-dt-selected td,
914 .yui-skin-sam tr.yui-dt-selected td,
915 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
915 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
916 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
916 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
917 background-color: #426fd9;
917 background-color: #426fd9;
918 color: #FFF;
918 color: #FFF;
919 }
919 }
920 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
920 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
921 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
921 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
922 background-color: #446cd7;
922 background-color: #446cd7;
923 color: #FFF;
923 color: #FFF;
924 }
924 }
925 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
925 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
926 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
926 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
927 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
927 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
928 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
928 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
929 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
929 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
930 background-color: #426fd9;
930 background-color: #426fd9;
931 color: #FFF;
931 color: #FFF;
932 }
932 }
933 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
933 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
934 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
934 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
935 background-color: #446cd7;
935 background-color: #446cd7;
936 color: #FFF;
936 color: #FFF;
937 }
937 }
938 .yui-skin-sam .yui-dt-paginator {
938 .yui-skin-sam .yui-dt-paginator {
939 display: block;
939 display: block;
940 margin: 6px 0;
940 margin: 6px 0;
941 white-space: nowrap;
941 white-space: nowrap;
942 }
942 }
943 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
943 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
944 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
944 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
945 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
945 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
946 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
946 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
947 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
947 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
948 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
948 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
949 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
949 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
950 .yui-skin-sam a.yui-dt-page {
950 .yui-skin-sam a.yui-dt-page {
951 border: 1px solid #cbcbcb;
951 border: 1px solid #cbcbcb;
952 padding: 2px 6px;
952 padding: 2px 6px;
953 text-decoration: none;
953 text-decoration: none;
954 background-color: #fff;
954 background-color: #fff;
955 }
955 }
956 .yui-skin-sam .yui-dt-selected {
956 .yui-skin-sam .yui-dt-selected {
957 border: 1px solid #fff;
957 border: 1px solid #fff;
958 background-color: #fff;
958 background-color: #fff;
959 }
959 }
960
960
961 #content #left {
961 #content #left {
962 left: 0;
962 left: 0;
963 width: 280px;
963 width: 280px;
964 position: absolute;
964 position: absolute;
965 }
965 }
966
966
967 #content #right {
967 #content #right {
968 margin: 0 60px 10px 290px;
968 margin: 0 60px 10px 290px;
969 }
969 }
970
970
971 #content div.box {
971 #content div.box {
972 clear: both;
972 clear: both;
973 overflow: hidden;
973 overflow: hidden;
974 background: #fff;
974 background: #fff;
975 margin: 0 0 10px;
975 margin: 0 0 10px;
976 padding: 0 0 10px;
976 padding: 0 0 10px;
977 -webkit-border-radius: 4px 4px 4px 4px;
977 -webkit-border-radius: 4px 4px 4px 4px;
978 -khtml-border-radius: 4px 4px 4px 4px;
978 -khtml-border-radius: 4px 4px 4px 4px;
979 -moz-border-radius: 4px 4px 4px 4px;
979 -moz-border-radius: 4px 4px 4px 4px;
980 border-radius: 4px 4px 4px 4px;
980 border-radius: 4px 4px 4px 4px;
981 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
981 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
982 }
982 }
983
983
984 #content div.box-left {
984 #content div.box-left {
985 width: 49%;
985 width: 49%;
986 clear: none;
986 clear: none;
987 float: left;
987 float: left;
988 margin: 0 0 10px;
988 margin: 0 0 10px;
989 }
989 }
990
990
991 #content div.box-right {
991 #content div.box-right {
992 width: 49%;
992 width: 49%;
993 clear: none;
993 clear: none;
994 float: right;
994 float: right;
995 margin: 0 0 10px;
995 margin: 0 0 10px;
996 }
996 }
997
997
998 #content div.box div.title {
998 #content div.box div.title {
999 clear: both;
999 clear: both;
1000 overflow: hidden;
1000 overflow: hidden;
1001 background-color: #eedc94;
1001 background-color: #eedc94;
1002 background-repeat: repeat-x;
1002 background-repeat: repeat-x;
1003 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1003 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1004 to(#eedc94) );
1004 to(#eedc94) );
1005 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1005 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1006 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1006 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1007 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1007 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1008 color-stop(100%, #00376e) );
1008 color-stop(100%, #00376e) );
1009 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1009 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1010 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1010 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1011 background-image: linear-gradient(top, #003b76, #00376e);
1011 background-image: linear-gradient(top, #003b76, #00376e);
1012 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1012 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1013 endColorstr='#00376e', GradientType=0 );
1013 endColorstr='#00376e', GradientType=0 );
1014 margin: 0 0 20px;
1014 margin: 0 0 20px;
1015 padding: 0;
1015 padding: 0;
1016 }
1016 }
1017
1017
1018 #content div.box div.title h5 {
1018 #content div.box div.title h5 {
1019 float: left;
1019 float: left;
1020 border: none;
1020 border: none;
1021 color: #fff;
1021 color: #fff;
1022 text-transform: uppercase;
1022 text-transform: uppercase;
1023 margin: 0;
1023 margin: 0;
1024 padding: 11px 0 11px 10px;
1024 padding: 11px 0 11px 10px;
1025 }
1025 }
1026
1026
1027 #content div.box div.title .link-white{
1027 #content div.box div.title .link-white{
1028 color: #FFFFFF;
1028 color: #FFFFFF;
1029 }
1029 }
1030
1030
1031 #content div.box div.title ul.links li {
1031 #content div.box div.title ul.links li {
1032 list-style: none;
1032 list-style: none;
1033 float: left;
1033 float: left;
1034 margin: 0;
1034 margin: 0;
1035 padding: 0;
1035 padding: 0;
1036 }
1036 }
1037
1037
1038 #content div.box div.title ul.links li a {
1038 #content div.box div.title ul.links li a {
1039 border-left: 1px solid #316293;
1039 border-left: 1px solid #316293;
1040 color: #FFFFFF;
1040 color: #FFFFFF;
1041 display: block;
1041 display: block;
1042 float: left;
1042 float: left;
1043 font-size: 13px;
1043 font-size: 13px;
1044 font-weight: 700;
1044 font-weight: 700;
1045 height: 1%;
1045 height: 1%;
1046 margin: 0;
1046 margin: 0;
1047 padding: 11px 22px 12px;
1047 padding: 11px 22px 12px;
1048 text-decoration: none;
1048 text-decoration: none;
1049 }
1049 }
1050
1050
1051 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6
1051 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6
1052 {
1052 {
1053 clear: both;
1053 clear: both;
1054 overflow: hidden;
1054 overflow: hidden;
1055 border-bottom: 1px solid #DDD;
1055 border-bottom: 1px solid #DDD;
1056 margin: 10px 20px;
1056 margin: 10px 20px;
1057 padding: 0 0 15px;
1057 padding: 0 0 15px;
1058 }
1058 }
1059
1059
1060 #content div.box p {
1060 #content div.box p {
1061 color: #5f5f5f;
1061 color: #5f5f5f;
1062 font-size: 12px;
1062 font-size: 12px;
1063 line-height: 150%;
1063 line-height: 150%;
1064 margin: 0 24px 10px;
1064 margin: 0 24px 10px;
1065 padding: 0;
1065 padding: 0;
1066 }
1066 }
1067
1067
1068 #content div.box blockquote {
1068 #content div.box blockquote {
1069 border-left: 4px solid #DDD;
1069 border-left: 4px solid #DDD;
1070 color: #5f5f5f;
1070 color: #5f5f5f;
1071 font-size: 11px;
1071 font-size: 11px;
1072 line-height: 150%;
1072 line-height: 150%;
1073 margin: 0 34px;
1073 margin: 0 34px;
1074 padding: 0 0 0 14px;
1074 padding: 0 0 0 14px;
1075 }
1075 }
1076
1076
1077 #content div.box blockquote p {
1077 #content div.box blockquote p {
1078 margin: 10px 0;
1078 margin: 10px 0;
1079 padding: 0;
1079 padding: 0;
1080 }
1080 }
1081
1081
1082 #content div.box dl {
1082 #content div.box dl {
1083 margin: 10px 0px;
1083 margin: 10px 0px;
1084 }
1084 }
1085
1085
1086 #content div.box dt {
1086 #content div.box dt {
1087 font-size: 12px;
1087 font-size: 12px;
1088 margin: 0;
1088 margin: 0;
1089 }
1089 }
1090
1090
1091 #content div.box dd {
1091 #content div.box dd {
1092 font-size: 12px;
1092 font-size: 12px;
1093 margin: 0;
1093 margin: 0;
1094 padding: 8px 0 8px 15px;
1094 padding: 8px 0 8px 15px;
1095 }
1095 }
1096
1096
1097 #content div.box li {
1097 #content div.box li {
1098 font-size: 12px;
1098 font-size: 12px;
1099 padding: 4px 0;
1099 padding: 4px 0;
1100 }
1100 }
1101
1101
1102 #content div.box ul.disc,#content div.box ul.circle {
1102 #content div.box ul.disc,#content div.box ul.circle {
1103 margin: 10px 24px 10px 38px;
1103 margin: 10px 24px 10px 38px;
1104 }
1104 }
1105
1105
1106 #content div.box ul.square {
1106 #content div.box ul.square {
1107 margin: 10px 24px 10px 40px;
1107 margin: 10px 24px 10px 40px;
1108 }
1108 }
1109
1109
1110 #content div.box img.left {
1110 #content div.box img.left {
1111 border: none;
1111 border: none;
1112 float: left;
1112 float: left;
1113 margin: 10px 10px 10px 0;
1113 margin: 10px 10px 10px 0;
1114 }
1114 }
1115
1115
1116 #content div.box img.right {
1116 #content div.box img.right {
1117 border: none;
1117 border: none;
1118 float: right;
1118 float: right;
1119 margin: 10px 0 10px 10px;
1119 margin: 10px 0 10px 10px;
1120 }
1120 }
1121
1121
1122 #content div.box div.messages {
1122 #content div.box div.messages {
1123 clear: both;
1123 clear: both;
1124 overflow: hidden;
1124 overflow: hidden;
1125 margin: 0 20px;
1125 margin: 0 20px;
1126 padding: 0;
1126 padding: 0;
1127 }
1127 }
1128
1128
1129 #content div.box div.message {
1129 #content div.box div.message {
1130 clear: both;
1130 clear: both;
1131 overflow: hidden;
1131 overflow: hidden;
1132 margin: 0;
1132 margin: 0;
1133 padding: 10px 0;
1133 padding: 10px 0;
1134 }
1134 }
1135
1135
1136 #content div.box div.message a {
1136 #content div.box div.message a {
1137 font-weight: 400 !important;
1137 font-weight: 400 !important;
1138 }
1138 }
1139
1139
1140 #content div.box div.message div.image {
1140 #content div.box div.message div.image {
1141 float: left;
1141 float: left;
1142 margin: 9px 0 0 5px;
1142 margin: 9px 0 0 5px;
1143 padding: 6px;
1143 padding: 6px;
1144 }
1144 }
1145
1145
1146 #content div.box div.message div.image img {
1146 #content div.box div.message div.image img {
1147 vertical-align: middle;
1147 vertical-align: middle;
1148 margin: 0;
1148 margin: 0;
1149 }
1149 }
1150
1150
1151 #content div.box div.message div.text {
1151 #content div.box div.message div.text {
1152 float: left;
1152 float: left;
1153 margin: 0;
1153 margin: 0;
1154 padding: 9px 6px;
1154 padding: 9px 6px;
1155 }
1155 }
1156
1156
1157 #content div.box div.message div.dismiss a {
1157 #content div.box div.message div.dismiss a {
1158 height: 16px;
1158 height: 16px;
1159 width: 16px;
1159 width: 16px;
1160 display: block;
1160 display: block;
1161 background: url("../images/icons/cross.png") no-repeat;
1161 background: url("../images/icons/cross.png") no-repeat;
1162 margin: 15px 14px 0 0;
1162 margin: 15px 14px 0 0;
1163 padding: 0;
1163 padding: 0;
1164 }
1164 }
1165
1165
1166 #content div.box div.message div.text h1,#content div.box div.message div.text h2,#content div.box div.message div.text h3,#content div.box div.message div.text h4,#content div.box div.message div.text h5,#content div.box div.message div.text h6
1166 #content div.box div.message div.text h1,#content div.box div.message div.text h2,#content div.box div.message div.text h3,#content div.box div.message div.text h4,#content div.box div.message div.text h5,#content div.box div.message div.text h6
1167 {
1167 {
1168 border: none;
1168 border: none;
1169 margin: 0;
1169 margin: 0;
1170 padding: 0;
1170 padding: 0;
1171 }
1171 }
1172
1172
1173 #content div.box div.message div.text span {
1173 #content div.box div.message div.text span {
1174 height: 1%;
1174 height: 1%;
1175 display: block;
1175 display: block;
1176 margin: 0;
1176 margin: 0;
1177 padding: 5px 0 0;
1177 padding: 5px 0 0;
1178 }
1178 }
1179
1179
1180 #content div.box div.message-error {
1180 #content div.box div.message-error {
1181 height: 1%;
1181 height: 1%;
1182 clear: both;
1182 clear: both;
1183 overflow: hidden;
1183 overflow: hidden;
1184 background: #FBE3E4;
1184 background: #FBE3E4;
1185 border: 1px solid #FBC2C4;
1185 border: 1px solid #FBC2C4;
1186 color: #860006;
1186 color: #860006;
1187 }
1187 }
1188
1188
1189 #content div.box div.message-error h6 {
1189 #content div.box div.message-error h6 {
1190 color: #860006;
1190 color: #860006;
1191 }
1191 }
1192
1192
1193 #content div.box div.message-warning {
1193 #content div.box div.message-warning {
1194 height: 1%;
1194 height: 1%;
1195 clear: both;
1195 clear: both;
1196 overflow: hidden;
1196 overflow: hidden;
1197 background: #FFF6BF;
1197 background: #FFF6BF;
1198 border: 1px solid #FFD324;
1198 border: 1px solid #FFD324;
1199 color: #5f5200;
1199 color: #5f5200;
1200 }
1200 }
1201
1201
1202 #content div.box div.message-warning h6 {
1202 #content div.box div.message-warning h6 {
1203 color: #5f5200;
1203 color: #5f5200;
1204 }
1204 }
1205
1205
1206 #content div.box div.message-notice {
1206 #content div.box div.message-notice {
1207 height: 1%;
1207 height: 1%;
1208 clear: both;
1208 clear: both;
1209 overflow: hidden;
1209 overflow: hidden;
1210 background: #8FBDE0;
1210 background: #8FBDE0;
1211 border: 1px solid #6BACDE;
1211 border: 1px solid #6BACDE;
1212 color: #003863;
1212 color: #003863;
1213 }
1213 }
1214
1214
1215 #content div.box div.message-notice h6 {
1215 #content div.box div.message-notice h6 {
1216 color: #003863;
1216 color: #003863;
1217 }
1217 }
1218
1218
1219 #content div.box div.message-success {
1219 #content div.box div.message-success {
1220 height: 1%;
1220 height: 1%;
1221 clear: both;
1221 clear: both;
1222 overflow: hidden;
1222 overflow: hidden;
1223 background: #E6EFC2;
1223 background: #E6EFC2;
1224 border: 1px solid #C6D880;
1224 border: 1px solid #C6D880;
1225 color: #4e6100;
1225 color: #4e6100;
1226 }
1226 }
1227
1227
1228 #content div.box div.message-success h6 {
1228 #content div.box div.message-success h6 {
1229 color: #4e6100;
1229 color: #4e6100;
1230 }
1230 }
1231
1231
1232 #content div.box div.form div.fields div.field {
1232 #content div.box div.form div.fields div.field {
1233 height: 1%;
1233 height: 1%;
1234 border-bottom: 1px solid #DDD;
1234 border-bottom: 1px solid #DDD;
1235 clear: both;
1235 clear: both;
1236 margin: 0;
1236 margin: 0;
1237 padding: 10px 0;
1237 padding: 10px 0;
1238 }
1238 }
1239
1239
1240 #content div.box div.form div.fields div.field-first {
1240 #content div.box div.form div.fields div.field-first {
1241 padding: 0 0 10px;
1241 padding: 0 0 10px;
1242 }
1242 }
1243
1243
1244 #content div.box div.form div.fields div.field-noborder {
1244 #content div.box div.form div.fields div.field-noborder {
1245 border-bottom: 0 !important;
1245 border-bottom: 0 !important;
1246 }
1246 }
1247
1247
1248 #content div.box div.form div.fields div.field span.error-message {
1248 #content div.box div.form div.fields div.field span.error-message {
1249 height: 1%;
1249 height: 1%;
1250 display: inline-block;
1250 display: inline-block;
1251 color: red;
1251 color: red;
1252 margin: 8px 0 0 4px;
1252 margin: 8px 0 0 4px;
1253 padding: 0;
1253 padding: 0;
1254 }
1254 }
1255
1255
1256 #content div.box div.form div.fields div.field span.success {
1256 #content div.box div.form div.fields div.field span.success {
1257 height: 1%;
1257 height: 1%;
1258 display: block;
1258 display: block;
1259 color: #316309;
1259 color: #316309;
1260 margin: 8px 0 0;
1260 margin: 8px 0 0;
1261 padding: 0;
1261 padding: 0;
1262 }
1262 }
1263
1263
1264 #content div.box div.form div.fields div.field div.label {
1264 #content div.box div.form div.fields div.field div.label {
1265 left: 70px;
1265 left: 70px;
1266 width: 155px;
1266 width: 155px;
1267 position: absolute;
1267 position: absolute;
1268 margin: 0;
1268 margin: 0;
1269 padding: 5px 0 0 0px;
1269 padding: 5px 0 0 0px;
1270 }
1270 }
1271
1271
1272 #content div.box div.form div.fields div.field div.label-summary {
1272 #content div.box div.form div.fields div.field div.label-summary {
1273 left: 30px;
1273 left: 30px;
1274 width: 155px;
1274 width: 155px;
1275 position: absolute;
1275 position: absolute;
1276 margin: 0;
1276 margin: 0;
1277 padding: 0px 0 0 0px;
1277 padding: 0px 0 0 0px;
1278 }
1278 }
1279
1279
1280 #content div.box-left div.form div.fields div.field div.label,
1280 #content div.box-left div.form div.fields div.field div.label,
1281 #content div.box-right div.form div.fields div.field div.label,
1281 #content div.box-right div.form div.fields div.field div.label,
1282 #content div.box-left div.form div.fields div.field div.label,
1282 #content div.box-left div.form div.fields div.field div.label,
1283 #content div.box-left div.form div.fields div.field div.label-summary,
1283 #content div.box-left div.form div.fields div.field div.label-summary,
1284 #content div.box-right div.form div.fields div.field div.label-summary,
1284 #content div.box-right div.form div.fields div.field div.label-summary,
1285 #content div.box-left div.form div.fields div.field div.label-summary
1285 #content div.box-left div.form div.fields div.field div.label-summary
1286 {
1286 {
1287 clear: both;
1287 clear: both;
1288 overflow: hidden;
1288 overflow: hidden;
1289 left: 0;
1289 left: 0;
1290 width: auto;
1290 width: auto;
1291 position: relative;
1291 position: relative;
1292 margin: 0;
1292 margin: 0;
1293 padding: 0 0 8px;
1293 padding: 0 0 8px;
1294 }
1294 }
1295
1295
1296 #content div.box div.form div.fields div.field div.label-select {
1296 #content div.box div.form div.fields div.field div.label-select {
1297 padding: 5px 0 0 5px;
1297 padding: 5px 0 0 5px;
1298 }
1298 }
1299
1299
1300 #content div.box-left div.form div.fields div.field div.label-select,
1300 #content div.box-left div.form div.fields div.field div.label-select,
1301 #content div.box-right div.form div.fields div.field div.label-select
1301 #content div.box-right div.form div.fields div.field div.label-select
1302 {
1302 {
1303 padding: 0 0 8px;
1303 padding: 0 0 8px;
1304 }
1304 }
1305
1305
1306 #content div.box-left div.form div.fields div.field div.label-textarea,
1306 #content div.box-left div.form div.fields div.field div.label-textarea,
1307 #content div.box-right div.form div.fields div.field div.label-textarea
1307 #content div.box-right div.form div.fields div.field div.label-textarea
1308 {
1308 {
1309 padding: 0 0 8px !important;
1309 padding: 0 0 8px !important;
1310 }
1310 }
1311
1311
1312 #content div.box div.form div.fields div.field div.label label,div.label label
1312 #content div.box div.form div.fields div.field div.label label,div.label label
1313 {
1313 {
1314 color: #393939;
1314 color: #393939;
1315 font-weight: 700;
1315 font-weight: 700;
1316 }
1316 }
1317 #content div.box div.form div.fields div.field div.label label,div.label-summary label
1317 #content div.box div.form div.fields div.field div.label label,div.label-summary label
1318 {
1318 {
1319 color: #393939;
1319 color: #393939;
1320 font-weight: 700;
1320 font-weight: 700;
1321 }
1321 }
1322 #content div.box div.form div.fields div.field div.input {
1322 #content div.box div.form div.fields div.field div.input {
1323 margin: 0 0 0 200px;
1323 margin: 0 0 0 200px;
1324 }
1324 }
1325
1325
1326 #content div.box div.form div.fields div.field div.input.summary {
1326 #content div.box div.form div.fields div.field div.input.summary {
1327 margin: 0 0 0 110px;
1327 margin: 0 0 0 110px;
1328 }
1328 }
1329 #content div.box div.form div.fields div.field div.input.summary-short {
1329 #content div.box div.form div.fields div.field div.input.summary-short {
1330 margin: 0 0 0 110px;
1330 margin: 0 0 0 110px;
1331 }
1331 }
1332 #content div.box div.form div.fields div.field div.file {
1332 #content div.box div.form div.fields div.field div.file {
1333 margin: 0 0 0 200px;
1333 margin: 0 0 0 200px;
1334 }
1334 }
1335
1335
1336 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input
1336 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input
1337 {
1337 {
1338 margin: 0 0 0 0px;
1338 margin: 0 0 0 0px;
1339 }
1339 }
1340
1340
1341 #content div.box div.form div.fields div.field div.input input {
1341 #content div.box div.form div.fields div.field div.input input {
1342 background: #FFF;
1342 background: #FFF;
1343 border-top: 1px solid #b3b3b3;
1343 border-top: 1px solid #b3b3b3;
1344 border-left: 1px solid #b3b3b3;
1344 border-left: 1px solid #b3b3b3;
1345 border-right: 1px solid #eaeaea;
1345 border-right: 1px solid #eaeaea;
1346 border-bottom: 1px solid #eaeaea;
1346 border-bottom: 1px solid #eaeaea;
1347 color: #000;
1347 color: #000;
1348 font-size: 11px;
1348 font-size: 11px;
1349 margin: 0;
1349 margin: 0;
1350 padding: 7px 7px 6px;
1350 padding: 7px 7px 6px;
1351 }
1351 }
1352
1352
1353 #content div.box div.form div.fields div.field div.input input#clone_url,
1353 #content div.box div.form div.fields div.field div.input input#clone_url,
1354 #content div.box div.form div.fields div.field div.input input#clone_url_id
1354 #content div.box div.form div.fields div.field div.input input#clone_url_id
1355 {
1355 {
1356 font-size: 16px;
1356 font-size: 16px;
1357 padding: 2px;
1357 padding: 2px;
1358 }
1358 }
1359
1359
1360 #content div.box div.form div.fields div.field div.file input {
1360 #content div.box div.form div.fields div.field div.file input {
1361 background: none repeat scroll 0 0 #FFFFFF;
1361 background: none repeat scroll 0 0 #FFFFFF;
1362 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1362 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1363 border-style: solid;
1363 border-style: solid;
1364 border-width: 1px;
1364 border-width: 1px;
1365 color: #000000;
1365 color: #000000;
1366 font-size: 11px;
1366 font-size: 11px;
1367 margin: 0;
1367 margin: 0;
1368 padding: 7px 7px 6px;
1368 padding: 7px 7px 6px;
1369 }
1369 }
1370
1370
1371 #content div.box div.form div.fields div.field div.input input.small {
1371 #content div.box div.form div.fields div.field div.input input.small {
1372 width: 30%;
1372 width: 30%;
1373 }
1373 }
1374
1374
1375 #content div.box div.form div.fields div.field div.input input.medium {
1375 #content div.box div.form div.fields div.field div.input input.medium {
1376 width: 55%;
1376 width: 55%;
1377 }
1377 }
1378
1378
1379 #content div.box div.form div.fields div.field div.input input.large {
1379 #content div.box div.form div.fields div.field div.input input.large {
1380 width: 85%;
1380 width: 85%;
1381 }
1381 }
1382
1382
1383 #content div.box div.form div.fields div.field div.input input.date {
1383 #content div.box div.form div.fields div.field div.input input.date {
1384 width: 177px;
1384 width: 177px;
1385 }
1385 }
1386
1386
1387 #content div.box div.form div.fields div.field div.input input.button {
1387 #content div.box div.form div.fields div.field div.input input.button {
1388 background: #D4D0C8;
1388 background: #D4D0C8;
1389 border-top: 1px solid #FFF;
1389 border-top: 1px solid #FFF;
1390 border-left: 1px solid #FFF;
1390 border-left: 1px solid #FFF;
1391 border-right: 1px solid #404040;
1391 border-right: 1px solid #404040;
1392 border-bottom: 1px solid #404040;
1392 border-bottom: 1px solid #404040;
1393 color: #000;
1393 color: #000;
1394 margin: 0;
1394 margin: 0;
1395 padding: 4px 8px;
1395 padding: 4px 8px;
1396 }
1396 }
1397
1397
1398 #content div.box div.form div.fields div.field div.textarea {
1398 #content div.box div.form div.fields div.field div.textarea {
1399 border-top: 1px solid #b3b3b3;
1399 border-top: 1px solid #b3b3b3;
1400 border-left: 1px solid #b3b3b3;
1400 border-left: 1px solid #b3b3b3;
1401 border-right: 1px solid #eaeaea;
1401 border-right: 1px solid #eaeaea;
1402 border-bottom: 1px solid #eaeaea;
1402 border-bottom: 1px solid #eaeaea;
1403 margin: 0 0 0 200px;
1403 margin: 0 0 0 200px;
1404 padding: 10px;
1404 padding: 10px;
1405 }
1405 }
1406
1406
1407 #content div.box div.form div.fields div.field div.textarea-editor {
1407 #content div.box div.form div.fields div.field div.textarea-editor {
1408 border: 1px solid #ddd;
1408 border: 1px solid #ddd;
1409 padding: 0;
1409 padding: 0;
1410 }
1410 }
1411
1411
1412 #content div.box div.form div.fields div.field div.textarea textarea {
1412 #content div.box div.form div.fields div.field div.textarea textarea {
1413 width: 100%;
1413 width: 100%;
1414 height: 220px;
1414 height: 220px;
1415 overflow: hidden;
1415 overflow: hidden;
1416 background: #FFF;
1416 background: #FFF;
1417 color: #000;
1417 color: #000;
1418 font-size: 11px;
1418 font-size: 11px;
1419 outline: none;
1419 outline: none;
1420 border-width: 0;
1420 border-width: 0;
1421 margin: 0;
1421 margin: 0;
1422 padding: 0;
1422 padding: 0;
1423 }
1423 }
1424
1424
1425 #content div.box-left div.form div.fields div.field div.textarea textarea,#content div.box-right div.form div.fields div.field div.textarea textarea
1425 #content div.box-left div.form div.fields div.field div.textarea textarea,#content div.box-right div.form div.fields div.field div.textarea textarea
1426 {
1426 {
1427 width: 100%;
1427 width: 100%;
1428 height: 100px;
1428 height: 100px;
1429 }
1429 }
1430
1430
1431 #content div.box div.form div.fields div.field div.textarea table {
1431 #content div.box div.form div.fields div.field div.textarea table {
1432 width: 100%;
1432 width: 100%;
1433 border: none;
1433 border: none;
1434 margin: 0;
1434 margin: 0;
1435 padding: 0;
1435 padding: 0;
1436 }
1436 }
1437
1437
1438 #content div.box div.form div.fields div.field div.textarea table td {
1438 #content div.box div.form div.fields div.field div.textarea table td {
1439 background: #DDD;
1439 background: #DDD;
1440 border: none;
1440 border: none;
1441 padding: 0;
1441 padding: 0;
1442 }
1442 }
1443
1443
1444 #content div.box div.form div.fields div.field div.textarea table td table
1444 #content div.box div.form div.fields div.field div.textarea table td table
1445 {
1445 {
1446 width: auto;
1446 width: auto;
1447 border: none;
1447 border: none;
1448 margin: 0;
1448 margin: 0;
1449 padding: 0;
1449 padding: 0;
1450 }
1450 }
1451
1451
1452 #content div.box div.form div.fields div.field div.textarea table td table td
1452 #content div.box div.form div.fields div.field div.textarea table td table td
1453 {
1453 {
1454 font-size: 11px;
1454 font-size: 11px;
1455 padding: 5px 5px 5px 0;
1455 padding: 5px 5px 5px 0;
1456 }
1456 }
1457
1457
1458 #content div.box div.form div.fields div.field input[type=text]:focus,#content div.box div.form div.fields div.field input[type=password]:focus,#content div.box div.form div.fields div.field input[type=file]:focus,#content div.box div.form div.fields div.field textarea:focus,#content div.box div.form div.fields div.field select:focus
1458 #content div.box div.form div.fields div.field input[type=text]:focus,#content div.box div.form div.fields div.field input[type=password]:focus,#content div.box div.form div.fields div.field input[type=file]:focus,#content div.box div.form div.fields div.field textarea:focus,#content div.box div.form div.fields div.field select:focus
1459 {
1459 {
1460 background: #f6f6f6;
1460 background: #f6f6f6;
1461 border-color: #666;
1461 border-color: #666;
1462 }
1462 }
1463
1463
1464 div.form div.fields div.field div.button {
1464 div.form div.fields div.field div.button {
1465 margin: 0;
1465 margin: 0;
1466 padding: 0 0 0 8px;
1466 padding: 0 0 0 8px;
1467 }
1467 }
1468 #content div.box table.noborder {
1468 #content div.box table.noborder {
1469 border: 1px solid transparent;
1469 border: 1px solid transparent;
1470 }
1470 }
1471
1471
1472 #content div.box table {
1472 #content div.box table {
1473 width: 100%;
1473 width: 100%;
1474 border-collapse: separate;
1474 border-collapse: separate;
1475 margin: 0;
1475 margin: 0;
1476 padding: 0;
1476 padding: 0;
1477 border: 1px solid #eee;
1477 border: 1px solid #eee;
1478 -webkit-border-radius: 4px;
1478 -webkit-border-radius: 4px;
1479 -moz-border-radius: 4px;
1479 -moz-border-radius: 4px;
1480 border-radius: 4px;
1480 border-radius: 4px;
1481 }
1481 }
1482
1482
1483 #content div.box table th {
1483 #content div.box table th {
1484 background: #eee;
1484 background: #eee;
1485 border-bottom: 1px solid #ddd;
1485 border-bottom: 1px solid #ddd;
1486 padding: 5px 0px 5px 5px;
1486 padding: 5px 0px 5px 5px;
1487 }
1487 }
1488
1488
1489 #content div.box table th.left {
1489 #content div.box table th.left {
1490 text-align: left;
1490 text-align: left;
1491 }
1491 }
1492
1492
1493 #content div.box table th.right {
1493 #content div.box table th.right {
1494 text-align: right;
1494 text-align: right;
1495 }
1495 }
1496
1496
1497 #content div.box table th.center {
1497 #content div.box table th.center {
1498 text-align: center;
1498 text-align: center;
1499 }
1499 }
1500
1500
1501 #content div.box table th.selected {
1501 #content div.box table th.selected {
1502 vertical-align: middle;
1502 vertical-align: middle;
1503 padding: 0;
1503 padding: 0;
1504 }
1504 }
1505
1505
1506 #content div.box table td {
1506 #content div.box table td {
1507 background: #fff;
1507 background: #fff;
1508 border-bottom: 1px solid #cdcdcd;
1508 border-bottom: 1px solid #cdcdcd;
1509 vertical-align: middle;
1509 vertical-align: middle;
1510 padding: 5px;
1510 padding: 5px;
1511 }
1511 }
1512
1512
1513 #content div.box table tr.selected td {
1513 #content div.box table tr.selected td {
1514 background: #FFC;
1514 background: #FFC;
1515 }
1515 }
1516
1516
1517 #content div.box table td.selected {
1517 #content div.box table td.selected {
1518 width: 3%;
1518 width: 3%;
1519 text-align: center;
1519 text-align: center;
1520 vertical-align: middle;
1520 vertical-align: middle;
1521 padding: 0;
1521 padding: 0;
1522 }
1522 }
1523
1523
1524 #content div.box table td.action {
1524 #content div.box table td.action {
1525 width: 45%;
1525 width: 45%;
1526 text-align: left;
1526 text-align: left;
1527 }
1527 }
1528
1528
1529 #content div.box table td.date {
1529 #content div.box table td.date {
1530 width: 33%;
1530 width: 33%;
1531 text-align: center;
1531 text-align: center;
1532 }
1532 }
1533
1533
1534 #content div.box div.action {
1534 #content div.box div.action {
1535 float: right;
1535 float: right;
1536 background: #FFF;
1536 background: #FFF;
1537 text-align: right;
1537 text-align: right;
1538 margin: 10px 0 0;
1538 margin: 10px 0 0;
1539 padding: 0;
1539 padding: 0;
1540 }
1540 }
1541
1541
1542 #content div.box div.action select {
1542 #content div.box div.action select {
1543 font-size: 11px;
1543 font-size: 11px;
1544 margin: 0;
1544 margin: 0;
1545 }
1545 }
1546
1546
1547 #content div.box div.action .ui-selectmenu {
1547 #content div.box div.action .ui-selectmenu {
1548 margin: 0;
1548 margin: 0;
1549 padding: 0;
1549 padding: 0;
1550 }
1550 }
1551
1551
1552 #content div.box div.pagination {
1552 #content div.box div.pagination {
1553 height: 1%;
1553 height: 1%;
1554 clear: both;
1554 clear: both;
1555 overflow: hidden;
1555 overflow: hidden;
1556 margin: 10px 0 0;
1556 margin: 10px 0 0;
1557 padding: 0;
1557 padding: 0;
1558 }
1558 }
1559
1559
1560 #content div.box div.pagination ul.pager {
1560 #content div.box div.pagination ul.pager {
1561 float: right;
1561 float: right;
1562 text-align: right;
1562 text-align: right;
1563 margin: 0;
1563 margin: 0;
1564 padding: 0;
1564 padding: 0;
1565 }
1565 }
1566
1566
1567 #content div.box div.pagination ul.pager li {
1567 #content div.box div.pagination ul.pager li {
1568 height: 1%;
1568 height: 1%;
1569 float: left;
1569 float: left;
1570 list-style: none;
1570 list-style: none;
1571 background: #ebebeb url("../images/pager.png") repeat-x;
1571 background: #ebebeb url("../images/pager.png") repeat-x;
1572 border-top: 1px solid #dedede;
1572 border-top: 1px solid #dedede;
1573 border-left: 1px solid #cfcfcf;
1573 border-left: 1px solid #cfcfcf;
1574 border-right: 1px solid #c4c4c4;
1574 border-right: 1px solid #c4c4c4;
1575 border-bottom: 1px solid #c4c4c4;
1575 border-bottom: 1px solid #c4c4c4;
1576 color: #4A4A4A;
1576 color: #4A4A4A;
1577 font-weight: 700;
1577 font-weight: 700;
1578 margin: 0 0 0 4px;
1578 margin: 0 0 0 4px;
1579 padding: 0;
1579 padding: 0;
1580 }
1580 }
1581
1581
1582 #content div.box div.pagination ul.pager li.separator {
1582 #content div.box div.pagination ul.pager li.separator {
1583 padding: 6px;
1583 padding: 6px;
1584 }
1584 }
1585
1585
1586 #content div.box div.pagination ul.pager li.current {
1586 #content div.box div.pagination ul.pager li.current {
1587 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1587 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1588 border-top: 1px solid #ccc;
1588 border-top: 1px solid #ccc;
1589 border-left: 1px solid #bebebe;
1589 border-left: 1px solid #bebebe;
1590 border-right: 1px solid #b1b1b1;
1590 border-right: 1px solid #b1b1b1;
1591 border-bottom: 1px solid #afafaf;
1591 border-bottom: 1px solid #afafaf;
1592 color: #515151;
1592 color: #515151;
1593 padding: 6px;
1593 padding: 6px;
1594 }
1594 }
1595
1595
1596 #content div.box div.pagination ul.pager li a {
1596 #content div.box div.pagination ul.pager li a {
1597 height: 1%;
1597 height: 1%;
1598 display: block;
1598 display: block;
1599 float: left;
1599 float: left;
1600 color: #515151;
1600 color: #515151;
1601 text-decoration: none;
1601 text-decoration: none;
1602 margin: 0;
1602 margin: 0;
1603 padding: 6px;
1603 padding: 6px;
1604 }
1604 }
1605
1605
1606 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active
1606 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active
1607 {
1607 {
1608 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1608 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1609 border-top: 1px solid #ccc;
1609 border-top: 1px solid #ccc;
1610 border-left: 1px solid #bebebe;
1610 border-left: 1px solid #bebebe;
1611 border-right: 1px solid #b1b1b1;
1611 border-right: 1px solid #b1b1b1;
1612 border-bottom: 1px solid #afafaf;
1612 border-bottom: 1px solid #afafaf;
1613 margin: -1px;
1613 margin: -1px;
1614 }
1614 }
1615
1615
1616 #content div.box div.pagination-wh {
1616 #content div.box div.pagination-wh {
1617 height: 1%;
1617 height: 1%;
1618 clear: both;
1618 clear: both;
1619 overflow: hidden;
1619 overflow: hidden;
1620 text-align: right;
1620 text-align: right;
1621 margin: 10px 0 0;
1621 margin: 10px 0 0;
1622 padding: 0;
1622 padding: 0;
1623 }
1623 }
1624
1624
1625 #content div.box div.pagination-right {
1625 #content div.box div.pagination-right {
1626 float: right;
1626 float: right;
1627 }
1627 }
1628
1628
1629 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot
1629 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot
1630 {
1630 {
1631 height: 1%;
1631 height: 1%;
1632 float: left;
1632 float: left;
1633 background: #ebebeb url("../images/pager.png") repeat-x;
1633 background: #ebebeb url("../images/pager.png") repeat-x;
1634 border-top: 1px solid #dedede;
1634 border-top: 1px solid #dedede;
1635 border-left: 1px solid #cfcfcf;
1635 border-left: 1px solid #cfcfcf;
1636 border-right: 1px solid #c4c4c4;
1636 border-right: 1px solid #c4c4c4;
1637 border-bottom: 1px solid #c4c4c4;
1637 border-bottom: 1px solid #c4c4c4;
1638 color: #4A4A4A;
1638 color: #4A4A4A;
1639 font-weight: 700;
1639 font-weight: 700;
1640 margin: 0 0 0 4px;
1640 margin: 0 0 0 4px;
1641 padding: 6px;
1641 padding: 6px;
1642 }
1642 }
1643
1643
1644 #content div.box div.pagination-wh span.pager_curpage {
1644 #content div.box div.pagination-wh span.pager_curpage {
1645 height: 1%;
1645 height: 1%;
1646 float: left;
1646 float: left;
1647 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1647 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1648 border-top: 1px solid #ccc;
1648 border-top: 1px solid #ccc;
1649 border-left: 1px solid #bebebe;
1649 border-left: 1px solid #bebebe;
1650 border-right: 1px solid #b1b1b1;
1650 border-right: 1px solid #b1b1b1;
1651 border-bottom: 1px solid #afafaf;
1651 border-bottom: 1px solid #afafaf;
1652 color: #515151;
1652 color: #515151;
1653 font-weight: 700;
1653 font-weight: 700;
1654 margin: 0 0 0 4px;
1654 margin: 0 0 0 4px;
1655 padding: 6px;
1655 padding: 6px;
1656 }
1656 }
1657
1657
1658 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active
1658 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active
1659 {
1659 {
1660 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1660 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1661 border-top: 1px solid #ccc;
1661 border-top: 1px solid #ccc;
1662 border-left: 1px solid #bebebe;
1662 border-left: 1px solid #bebebe;
1663 border-right: 1px solid #b1b1b1;
1663 border-right: 1px solid #b1b1b1;
1664 border-bottom: 1px solid #afafaf;
1664 border-bottom: 1px solid #afafaf;
1665 text-decoration: none;
1665 text-decoration: none;
1666 }
1666 }
1667
1667
1668 #content div.box div.traffic div.legend {
1668 #content div.box div.traffic div.legend {
1669 clear: both;
1669 clear: both;
1670 overflow: hidden;
1670 overflow: hidden;
1671 border-bottom: 1px solid #ddd;
1671 border-bottom: 1px solid #ddd;
1672 margin: 0 0 10px;
1672 margin: 0 0 10px;
1673 padding: 0 0 10px;
1673 padding: 0 0 10px;
1674 }
1674 }
1675
1675
1676 #content div.box div.traffic div.legend h6 {
1676 #content div.box div.traffic div.legend h6 {
1677 float: left;
1677 float: left;
1678 border: none;
1678 border: none;
1679 margin: 0;
1679 margin: 0;
1680 padding: 0;
1680 padding: 0;
1681 }
1681 }
1682
1682
1683 #content div.box div.traffic div.legend li {
1683 #content div.box div.traffic div.legend li {
1684 list-style: none;
1684 list-style: none;
1685 float: left;
1685 float: left;
1686 font-size: 11px;
1686 font-size: 11px;
1687 margin: 0;
1687 margin: 0;
1688 padding: 0 8px 0 4px;
1688 padding: 0 8px 0 4px;
1689 }
1689 }
1690
1690
1691 #content div.box div.traffic div.legend li.visits {
1691 #content div.box div.traffic div.legend li.visits {
1692 border-left: 12px solid #edc240;
1692 border-left: 12px solid #edc240;
1693 }
1693 }
1694
1694
1695 #content div.box div.traffic div.legend li.pageviews {
1695 #content div.box div.traffic div.legend li.pageviews {
1696 border-left: 12px solid #afd8f8;
1696 border-left: 12px solid #afd8f8;
1697 }
1697 }
1698
1698
1699 #content div.box div.traffic table {
1699 #content div.box div.traffic table {
1700 width: auto;
1700 width: auto;
1701 }
1701 }
1702
1702
1703 #content div.box div.traffic table td {
1703 #content div.box div.traffic table td {
1704 background: transparent;
1704 background: transparent;
1705 border: none;
1705 border: none;
1706 padding: 2px 3px 3px;
1706 padding: 2px 3px 3px;
1707 }
1707 }
1708
1708
1709 #content div.box div.traffic table td.legendLabel {
1709 #content div.box div.traffic table td.legendLabel {
1710 padding: 0 3px 2px;
1710 padding: 0 3px 2px;
1711 }
1711 }
1712
1712
1713 #summary {
1713 #summary {
1714
1714
1715 }
1715 }
1716
1716
1717 #summary .desc {
1717 #summary .desc {
1718 white-space: pre;
1718 white-space: pre;
1719 width: 100%;
1719 width: 100%;
1720 }
1720 }
1721
1721
1722 #summary .repo_name {
1722 #summary .repo_name {
1723 font-size: 1.6em;
1723 font-size: 1.6em;
1724 font-weight: bold;
1724 font-weight: bold;
1725 vertical-align: baseline;
1725 vertical-align: baseline;
1726 clear: right
1726 clear: right
1727 }
1727 }
1728
1728
1729 #footer {
1729 #footer {
1730 clear: both;
1730 clear: both;
1731 overflow: hidden;
1731 overflow: hidden;
1732 text-align: right;
1732 text-align: right;
1733 margin: 0;
1733 margin: 0;
1734 padding: 0 10px 4px;
1734 padding: 0 10px 4px;
1735 margin: -10px 0 0;
1735 margin: -10px 0 0;
1736 }
1736 }
1737
1737
1738 #footer div#footer-inner {
1738 #footer div#footer-inner {
1739 background-color: #eedc94; background-repeat : repeat-x;
1739 background-color: #eedc94; background-repeat : repeat-x;
1740 background-image : -khtml-gradient( linear, left top, left bottom,
1740 background-image : -khtml-gradient( linear, left top, left bottom,
1741 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1741 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1742 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1742 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1743 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1743 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1744 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1744 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1745 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1745 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1746 background-image : -o-linear-gradient( top, #003b76, #00376e));
1746 background-image : -o-linear-gradient( top, #003b76, #00376e));
1747 background-image : linear-gradient( top, #003b76, #00376e); filter :
1747 background-image : linear-gradient( top, #003b76, #00376e); filter :
1748 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1748 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1749 '#003b76', endColorstr = '#00376e', GradientType = 0);
1749 '#003b76', endColorstr = '#00376e', GradientType = 0);
1750 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1750 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1751 -webkit-border-radius: 4px 4px 4px 4px;
1751 -webkit-border-radius: 4px 4px 4px 4px;
1752 -khtml-border-radius: 4px 4px 4px 4px;
1752 -khtml-border-radius: 4px 4px 4px 4px;
1753 -moz-border-radius: 4px 4px 4px 4px;
1753 -moz-border-radius: 4px 4px 4px 4px;
1754 border-radius: 4px 4px 4px 4px;
1754 border-radius: 4px 4px 4px 4px;
1755 background-repeat: repeat-x;
1755 background-repeat: repeat-x;
1756 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1756 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1757 to(#eedc94) );
1757 to(#eedc94) );
1758 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1758 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1759 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1759 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1760 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1760 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1761 color-stop(100%, #00376e) );
1761 color-stop(100%, #00376e) );
1762 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1762 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1763 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1763 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1764 background-image: linear-gradient(top, #003b76, #00376e);
1764 background-image: linear-gradient(top, #003b76, #00376e);
1765 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1765 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1766 endColorstr='#00376e', GradientType=0 );
1766 endColorstr='#00376e', GradientType=0 );
1767 }
1767 }
1768
1768
1769 #footer div#footer-inner p {
1769 #footer div#footer-inner p {
1770 padding: 15px 25px 15px 0;
1770 padding: 15px 25px 15px 0;
1771 color: #FFF;
1771 color: #FFF;
1772 font-weight: 700;
1772 font-weight: 700;
1773 }
1773 }
1774
1774
1775 #footer div#footer-inner .footer-link {
1775 #footer div#footer-inner .footer-link {
1776 float: left;
1776 float: left;
1777 padding-left: 10px;
1777 padding-left: 10px;
1778 }
1778 }
1779
1779
1780 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a
1780 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a
1781 {
1781 {
1782 color: #FFF;
1782 color: #FFF;
1783 }
1783 }
1784
1784
1785 #login div.title {
1785 #login div.title {
1786 width: 420px;
1786 width: 420px;
1787 clear: both;
1787 clear: both;
1788 overflow: hidden;
1788 overflow: hidden;
1789 position: relative;
1789 position: relative;
1790 background-color: #eedc94; background-repeat : repeat-x;
1790 background-color: #eedc94; background-repeat : repeat-x;
1791 background-image : -khtml-gradient( linear, left top, left bottom,
1791 background-image : -khtml-gradient( linear, left top, left bottom,
1792 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1792 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1793 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1793 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1794 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1794 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1795 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1795 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1796 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1796 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1797 background-image : -o-linear-gradient( top, #003b76, #00376e));
1797 background-image : -o-linear-gradient( top, #003b76, #00376e));
1798 background-image : linear-gradient( top, #003b76, #00376e); filter :
1798 background-image : linear-gradient( top, #003b76, #00376e); filter :
1799 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1799 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1800 '#003b76', endColorstr = '#00376e', GradientType = 0);
1800 '#003b76', endColorstr = '#00376e', GradientType = 0);
1801 margin: 0 auto;
1801 margin: 0 auto;
1802 padding: 0;
1802 padding: 0;
1803 background-repeat: repeat-x;
1803 background-repeat: repeat-x;
1804 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1804 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1805 to(#eedc94) );
1805 to(#eedc94) );
1806 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1806 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1807 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1807 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1808 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1808 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1809 color-stop(100%, #00376e) );
1809 color-stop(100%, #00376e) );
1810 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1810 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1811 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1811 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1812 background-image: linear-gradient(top, #003b76, #00376e);
1812 background-image: linear-gradient(top, #003b76, #00376e);
1813 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1813 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1814 endColorstr='#00376e', GradientType=0 );
1814 endColorstr='#00376e', GradientType=0 );
1815 }
1815 }
1816
1816
1817 #login div.inner {
1817 #login div.inner {
1818 width: 380px;
1818 width: 380px;
1819 background: #FFF url("../images/login.png") no-repeat top left;
1819 background: #FFF url("../images/login.png") no-repeat top left;
1820 border-top: none;
1820 border-top: none;
1821 border-bottom: none;
1821 border-bottom: none;
1822 margin: 0 auto;
1822 margin: 0 auto;
1823 padding: 20px;
1823 padding: 20px;
1824 }
1824 }
1825
1825
1826 #login div.form div.fields div.field div.label {
1826 #login div.form div.fields div.field div.label {
1827 width: 173px;
1827 width: 173px;
1828 float: left;
1828 float: left;
1829 text-align: right;
1829 text-align: right;
1830 margin: 2px 10px 0 0;
1830 margin: 2px 10px 0 0;
1831 padding: 5px 0 0 5px;
1831 padding: 5px 0 0 5px;
1832 }
1832 }
1833
1833
1834 #login div.form div.fields div.field div.input input {
1834 #login div.form div.fields div.field div.input input {
1835 width: 176px;
1835 width: 176px;
1836 background: #FFF;
1836 background: #FFF;
1837 border-top: 1px solid #b3b3b3;
1837 border-top: 1px solid #b3b3b3;
1838 border-left: 1px solid #b3b3b3;
1838 border-left: 1px solid #b3b3b3;
1839 border-right: 1px solid #eaeaea;
1839 border-right: 1px solid #eaeaea;
1840 border-bottom: 1px solid #eaeaea;
1840 border-bottom: 1px solid #eaeaea;
1841 color: #000;
1841 color: #000;
1842 font-size: 11px;
1842 font-size: 11px;
1843 margin: 0;
1843 margin: 0;
1844 padding: 7px 7px 6px;
1844 padding: 7px 7px 6px;
1845 }
1845 }
1846
1846
1847 #login div.form div.fields div.buttons {
1847 #login div.form div.fields div.buttons {
1848 clear: both;
1848 clear: both;
1849 overflow: hidden;
1849 overflow: hidden;
1850 border-top: 1px solid #DDD;
1850 border-top: 1px solid #DDD;
1851 text-align: right;
1851 text-align: right;
1852 margin: 0;
1852 margin: 0;
1853 padding: 10px 0 0;
1853 padding: 10px 0 0;
1854 }
1854 }
1855
1855
1856 #login div.form div.links {
1856 #login div.form div.links {
1857 clear: both;
1857 clear: both;
1858 overflow: hidden;
1858 overflow: hidden;
1859 margin: 10px 0 0;
1859 margin: 10px 0 0;
1860 padding: 0 0 2px;
1860 padding: 0 0 2px;
1861 }
1861 }
1862
1862
1863 #quick_login {
1863 #quick_login {
1864 top: 31px;
1864 top: 31px;
1865 background-color: rgb(0, 51, 103);
1865 background-color: rgb(0, 51, 103);
1866 z-index: 999;
1866 z-index: 999;
1867 height: 150px;
1867 height: 150px;
1868 position: absolute;
1868 position: absolute;
1869 margin-left: -16px;
1869 margin-left: -16px;
1870 width: 281px;
1870 width: 281px;
1871 -webkit-border-radius: 0px 0px 4px 4px;
1871 -webkit-border-radius: 0px 0px 4px 4px;
1872 -khtml-border-radius: 0px 0px 4px 4px;
1872 -khtml-border-radius: 0px 0px 4px 4px;
1873 -moz-border-radius: 0px 0px 4px 4px;
1873 -moz-border-radius: 0px 0px 4px 4px;
1874 border-radius: 0px 0px 4px 4px;
1874 border-radius: 0px 0px 4px 4px;
1875 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1875 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1876 }
1876 }
1877
1877
1878 #quick_login .password_forgoten {
1878 #quick_login .password_forgoten {
1879 padding-right: 10px;
1879 padding-right: 10px;
1880 padding-top: 0px;
1880 padding-top: 0px;
1881 float: left;
1881 float: left;
1882 }
1882 }
1883
1883
1884 #quick_login .password_forgoten a {
1884 #quick_login .password_forgoten a {
1885 font-size: 10px
1885 font-size: 10px
1886 }
1886 }
1887
1887
1888 #quick_login .register {
1888 #quick_login .register {
1889 padding-right: 10px;
1889 padding-right: 10px;
1890 padding-top: 5px;
1890 padding-top: 5px;
1891 float: left;
1891 float: left;
1892 }
1892 }
1893
1893
1894 #quick_login .register a {
1894 #quick_login .register a {
1895 font-size: 10px
1895 font-size: 10px
1896 }
1896 }
1897
1897
1898 #quick_login div.form div.fields {
1898 #quick_login div.form div.fields {
1899 padding-top: 2px;
1899 padding-top: 2px;
1900 padding-left: 10px;
1900 padding-left: 10px;
1901 }
1901 }
1902
1902
1903 #quick_login div.form div.fields div.field {
1903 #quick_login div.form div.fields div.field {
1904 padding: 5px;
1904 padding: 5px;
1905 }
1905 }
1906
1906
1907 #quick_login div.form div.fields div.field div.label label {
1907 #quick_login div.form div.fields div.field div.label label {
1908 color: #fff;
1908 color: #fff;
1909 padding-bottom: 3px;
1909 padding-bottom: 3px;
1910 }
1910 }
1911
1911
1912 #quick_login div.form div.fields div.field div.input input {
1912 #quick_login div.form div.fields div.field div.input input {
1913 width: 236px;
1913 width: 236px;
1914 background: #FFF;
1914 background: #FFF;
1915 border-top: 1px solid #b3b3b3;
1915 border-top: 1px solid #b3b3b3;
1916 border-left: 1px solid #b3b3b3;
1916 border-left: 1px solid #b3b3b3;
1917 border-right: 1px solid #eaeaea;
1917 border-right: 1px solid #eaeaea;
1918 border-bottom: 1px solid #eaeaea;
1918 border-bottom: 1px solid #eaeaea;
1919 color: #000;
1919 color: #000;
1920 font-size: 11px;
1920 font-size: 11px;
1921 margin: 0;
1921 margin: 0;
1922 padding: 5px 7px 4px;
1922 padding: 5px 7px 4px;
1923 }
1923 }
1924
1924
1925 #quick_login div.form div.fields div.buttons {
1925 #quick_login div.form div.fields div.buttons {
1926 clear: both;
1926 clear: both;
1927 overflow: hidden;
1927 overflow: hidden;
1928 text-align: right;
1928 text-align: right;
1929 margin: 0;
1929 margin: 0;
1930 padding: 10px 14px 0px 5px;
1930 padding: 10px 14px 0px 5px;
1931 }
1931 }
1932
1932
1933 #quick_login div.form div.links {
1933 #quick_login div.form div.links {
1934 clear: both;
1934 clear: both;
1935 overflow: hidden;
1935 overflow: hidden;
1936 margin: 10px 0 0;
1936 margin: 10px 0 0;
1937 padding: 0 0 2px;
1937 padding: 0 0 2px;
1938 }
1938 }
1939
1939
1940 #register div.title {
1940 #register div.title {
1941 clear: both;
1941 clear: both;
1942 overflow: hidden;
1942 overflow: hidden;
1943 position: relative;
1943 position: relative;
1944 background-color: #eedc94;
1944 background-color: #eedc94;
1945 background-repeat: repeat-x;
1945 background-repeat: repeat-x;
1946 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1946 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1947 to(#eedc94) );
1947 to(#eedc94) );
1948 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1948 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1949 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1949 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1950 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1950 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1951 color-stop(100%, #00376e) );
1951 color-stop(100%, #00376e) );
1952 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1952 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1953 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1953 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1954 background-image: linear-gradient(top, #003b76, #00376e);
1954 background-image: linear-gradient(top, #003b76, #00376e);
1955 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1955 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1956 endColorstr='#00376e', GradientType=0 );
1956 endColorstr='#00376e', GradientType=0 );
1957 margin: 0 auto;
1957 margin: 0 auto;
1958 padding: 0;
1958 padding: 0;
1959 }
1959 }
1960
1960
1961 #register div.inner {
1961 #register div.inner {
1962 background: #FFF;
1962 background: #FFF;
1963 border-top: none;
1963 border-top: none;
1964 border-bottom: none;
1964 border-bottom: none;
1965 margin: 0 auto;
1965 margin: 0 auto;
1966 padding: 20px;
1966 padding: 20px;
1967 }
1967 }
1968
1968
1969 #register div.form div.fields div.field div.label {
1969 #register div.form div.fields div.field div.label {
1970 width: 135px;
1970 width: 135px;
1971 float: left;
1971 float: left;
1972 text-align: right;
1972 text-align: right;
1973 margin: 2px 10px 0 0;
1973 margin: 2px 10px 0 0;
1974 padding: 5px 0 0 5px;
1974 padding: 5px 0 0 5px;
1975 }
1975 }
1976
1976
1977 #register div.form div.fields div.field div.input input {
1977 #register div.form div.fields div.field div.input input {
1978 width: 300px;
1978 width: 300px;
1979 background: #FFF;
1979 background: #FFF;
1980 border-top: 1px solid #b3b3b3;
1980 border-top: 1px solid #b3b3b3;
1981 border-left: 1px solid #b3b3b3;
1981 border-left: 1px solid #b3b3b3;
1982 border-right: 1px solid #eaeaea;
1982 border-right: 1px solid #eaeaea;
1983 border-bottom: 1px solid #eaeaea;
1983 border-bottom: 1px solid #eaeaea;
1984 color: #000;
1984 color: #000;
1985 font-size: 11px;
1985 font-size: 11px;
1986 margin: 0;
1986 margin: 0;
1987 padding: 7px 7px 6px;
1987 padding: 7px 7px 6px;
1988 }
1988 }
1989
1989
1990 #register div.form div.fields div.buttons {
1990 #register div.form div.fields div.buttons {
1991 clear: both;
1991 clear: both;
1992 overflow: hidden;
1992 overflow: hidden;
1993 border-top: 1px solid #DDD;
1993 border-top: 1px solid #DDD;
1994 text-align: left;
1994 text-align: left;
1995 margin: 0;
1995 margin: 0;
1996 padding: 10px 0 0 150px;
1996 padding: 10px 0 0 150px;
1997 }
1997 }
1998
1998
1999 #register div.form div.activation_msg {
1999 #register div.form div.activation_msg {
2000 padding-top: 4px;
2000 padding-top: 4px;
2001 padding-bottom: 4px;
2001 padding-bottom: 4px;
2002 }
2002 }
2003
2003
2004 #journal .journal_day {
2004 #journal .journal_day {
2005 font-size: 20px;
2005 font-size: 20px;
2006 padding: 10px 0px;
2006 padding: 10px 0px;
2007 border-bottom: 2px solid #DDD;
2007 border-bottom: 2px solid #DDD;
2008 margin-left: 10px;
2008 margin-left: 10px;
2009 margin-right: 10px;
2009 margin-right: 10px;
2010 }
2010 }
2011
2011
2012 #journal .journal_container {
2012 #journal .journal_container {
2013 padding: 5px;
2013 padding: 5px;
2014 clear: both;
2014 clear: both;
2015 margin: 0px 5px 0px 10px;
2015 margin: 0px 5px 0px 10px;
2016 }
2016 }
2017
2017
2018 #journal .journal_action_container {
2018 #journal .journal_action_container {
2019 padding-left: 38px;
2019 padding-left: 38px;
2020 }
2020 }
2021
2021
2022 #journal .journal_user {
2022 #journal .journal_user {
2023 color: #747474;
2023 color: #747474;
2024 font-size: 14px;
2024 font-size: 14px;
2025 font-weight: bold;
2025 font-weight: bold;
2026 height: 30px;
2026 height: 30px;
2027 }
2027 }
2028
2028
2029 #journal .journal_icon {
2029 #journal .journal_icon {
2030 clear: both;
2030 clear: both;
2031 float: left;
2031 float: left;
2032 padding-right: 4px;
2032 padding-right: 4px;
2033 padding-top: 3px;
2033 padding-top: 3px;
2034 }
2034 }
2035
2035
2036 #journal .journal_action {
2036 #journal .journal_action {
2037 padding-top: 4px;
2037 padding-top: 4px;
2038 min-height: 2px;
2038 min-height: 2px;
2039 float: left
2039 float: left
2040 }
2040 }
2041
2041
2042 #journal .journal_action_params {
2042 #journal .journal_action_params {
2043 clear: left;
2043 clear: left;
2044 padding-left: 22px;
2044 padding-left: 22px;
2045 }
2045 }
2046
2046
2047 #journal .journal_repo {
2047 #journal .journal_repo {
2048 float: left;
2048 float: left;
2049 margin-left: 6px;
2049 margin-left: 6px;
2050 padding-top: 3px;
2050 padding-top: 3px;
2051 }
2051 }
2052
2052
2053 #journal .date {
2053 #journal .date {
2054 clear: both;
2054 clear: both;
2055 color: #777777;
2055 color: #777777;
2056 font-size: 11px;
2056 font-size: 11px;
2057 padding-left: 22px;
2057 padding-left: 22px;
2058 }
2058 }
2059
2059
2060 #journal .journal_repo .journal_repo_name {
2060 #journal .journal_repo .journal_repo_name {
2061 font-weight: bold;
2061 font-weight: bold;
2062 font-size: 1.1em;
2062 font-size: 1.1em;
2063 }
2063 }
2064
2064
2065 #journal .compare_view {
2065 #journal .compare_view {
2066 padding: 5px 0px 5px 0px;
2066 padding: 5px 0px 5px 0px;
2067 width: 95px;
2067 width: 95px;
2068 }
2068 }
2069
2069
2070 .journal_highlight {
2070 .journal_highlight {
2071 font-weight: bold;
2071 font-weight: bold;
2072 padding: 0 2px;
2072 padding: 0 2px;
2073 vertical-align: bottom;
2073 vertical-align: bottom;
2074 }
2074 }
2075
2075
2076 .trending_language_tbl,.trending_language_tbl td {
2076 .trending_language_tbl,.trending_language_tbl td {
2077 border: 0 !important;
2077 border: 0 !important;
2078 margin: 0 !important;
2078 margin: 0 !important;
2079 padding: 0 !important;
2079 padding: 0 !important;
2080 }
2080 }
2081
2081
2082 .trending_language_tbl,.trending_language_tbl tr {
2082 .trending_language_tbl,.trending_language_tbl tr {
2083 border-spacing: 1px;
2083 border-spacing: 1px;
2084 }
2084 }
2085
2085
2086 .trending_language {
2086 .trending_language {
2087 background-color: #003367;
2087 background-color: #003367;
2088 color: #FFF;
2088 color: #FFF;
2089 display: block;
2089 display: block;
2090 min-width: 20px;
2090 min-width: 20px;
2091 text-decoration: none;
2091 text-decoration: none;
2092 height: 12px;
2092 height: 12px;
2093 margin-bottom: 0px;
2093 margin-bottom: 0px;
2094 margin-left: 5px;
2094 margin-left: 5px;
2095 white-space: pre;
2095 white-space: pre;
2096 padding: 3px;
2096 padding: 3px;
2097 }
2097 }
2098
2098
2099 h3.files_location {
2099 h3.files_location {
2100 font-size: 1.8em;
2100 font-size: 1.8em;
2101 font-weight: 700;
2101 font-weight: 700;
2102 border-bottom: none !important;
2102 border-bottom: none !important;
2103 margin: 10px 0 !important;
2103 margin: 10px 0 !important;
2104 }
2104 }
2105
2105
2106 #files_data dl dt {
2106 #files_data dl dt {
2107 float: left;
2107 float: left;
2108 width: 60px;
2108 width: 60px;
2109 margin: 0 !important;
2109 margin: 0 !important;
2110 padding: 5px;
2110 padding: 5px;
2111 }
2111 }
2112
2112
2113 #files_data dl dd {
2113 #files_data dl dd {
2114 margin: 0 !important;
2114 margin: 0 !important;
2115 padding: 5px !important;
2115 padding: 5px !important;
2116 }
2116 }
2117
2117
2118 #changeset_content {
2118 #changeset_content {
2119 border: 1px solid #CCC;
2119 border: 1px solid #CCC;
2120 padding: 5px;
2120 padding: 5px;
2121 }
2121 }
2122
2122
2123 #changeset_compare_view_content {
2123 #changeset_compare_view_content {
2124 border: 1px solid #CCC;
2124 border: 1px solid #CCC;
2125 padding: 5px;
2125 padding: 5px;
2126 }
2126 }
2127
2127
2128 #changeset_content .container {
2128 #changeset_content .container {
2129 min-height: 120px;
2129 min-height: 120px;
2130 font-size: 1.2em;
2130 font-size: 1.2em;
2131 overflow: hidden;
2131 overflow: hidden;
2132 }
2132 }
2133
2133
2134 #changeset_compare_view_content .compare_view_commits {
2134 #changeset_compare_view_content .compare_view_commits {
2135 width: auto !important;
2135 width: auto !important;
2136 }
2136 }
2137
2137
2138 #changeset_compare_view_content .compare_view_commits td {
2138 #changeset_compare_view_content .compare_view_commits td {
2139 padding: 0px 0px 0px 12px !important;
2139 padding: 0px 0px 0px 12px !important;
2140 }
2140 }
2141
2141
2142 #changeset_content .container .right {
2142 #changeset_content .container .right {
2143 float: right;
2143 float: right;
2144 width: 25%;
2144 width: 25%;
2145 text-align: right;
2145 text-align: right;
2146 }
2146 }
2147
2147
2148 #changeset_content .container .left .message {
2148 #changeset_content .container .left .message {
2149 font-style: italic;
2150 color: #556CB5;
2151 white-space: pre-wrap;
2149 white-space: pre-wrap;
2152 }
2150 }
2153 #changeset_content .container .left .message a:hover {
2151 #changeset_content .container .left .message a:hover {
2154 text-decoration: none;
2152 text-decoration: none;
2155 }
2153 }
2156 .cs_files .cur_cs {
2154 .cs_files .cur_cs {
2157 margin: 10px 2px;
2155 margin: 10px 2px;
2158 font-weight: bold;
2156 font-weight: bold;
2159 }
2157 }
2160
2158
2161 .cs_files .node {
2159 .cs_files .node {
2162 float: left;
2160 float: left;
2163 }
2161 }
2164
2162
2165 .cs_files .changes {
2163 .cs_files .changes {
2166 float: right;
2164 float: right;
2167 color:#003367;
2165 color:#003367;
2168
2166
2169 }
2167 }
2170
2168
2171 .cs_files .changes .added {
2169 .cs_files .changes .added {
2172 background-color: #BBFFBB;
2170 background-color: #BBFFBB;
2173 float: left;
2171 float: left;
2174 text-align: center;
2172 text-align: center;
2175 font-size: 9px;
2173 font-size: 9px;
2176 padding: 2px 0px 2px 0px;
2174 padding: 2px 0px 2px 0px;
2177 }
2175 }
2178
2176
2179 .cs_files .changes .deleted {
2177 .cs_files .changes .deleted {
2180 background-color: #FF8888;
2178 background-color: #FF8888;
2181 float: left;
2179 float: left;
2182 text-align: center;
2180 text-align: center;
2183 font-size: 9px;
2181 font-size: 9px;
2184 padding: 2px 0px 2px 0px;
2182 padding: 2px 0px 2px 0px;
2185 }
2183 }
2186
2184
2187 .cs_files .cs_added {
2185 .cs_files .cs_added {
2188 background: url("../images/icons/page_white_add.png") no-repeat scroll
2186 background: url("../images/icons/page_white_add.png") no-repeat scroll
2189 3px;
2187 3px;
2190 height: 16px;
2188 height: 16px;
2191 padding-left: 20px;
2189 padding-left: 20px;
2192 margin-top: 7px;
2190 margin-top: 7px;
2193 text-align: left;
2191 text-align: left;
2194 }
2192 }
2195
2193
2196 .cs_files .cs_changed {
2194 .cs_files .cs_changed {
2197 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2195 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2198 3px;
2196 3px;
2199 height: 16px;
2197 height: 16px;
2200 padding-left: 20px;
2198 padding-left: 20px;
2201 margin-top: 7px;
2199 margin-top: 7px;
2202 text-align: left;
2200 text-align: left;
2203 }
2201 }
2204
2202
2205 .cs_files .cs_removed {
2203 .cs_files .cs_removed {
2206 background: url("../images/icons/page_white_delete.png") no-repeat
2204 background: url("../images/icons/page_white_delete.png") no-repeat
2207 scroll 3px;
2205 scroll 3px;
2208 height: 16px;
2206 height: 16px;
2209 padding-left: 20px;
2207 padding-left: 20px;
2210 margin-top: 7px;
2208 margin-top: 7px;
2211 text-align: left;
2209 text-align: left;
2212 }
2210 }
2213
2211
2214 #graph {
2212 #graph {
2215 overflow: hidden;
2213 overflow: hidden;
2216 }
2214 }
2217
2215
2218 #graph_nodes {
2216 #graph_nodes {
2219 float: left;
2217 float: left;
2220 margin-right: -6px;
2218 margin-right: -6px;
2221 margin-top: 0px;
2219 margin-top: 0px;
2222 }
2220 }
2223
2221
2224 #graph_content {
2222 #graph_content {
2225 width: 800px;
2223 width: 800px;
2226 float: left;
2224 float: left;
2227 }
2225 }
2228
2226
2229 #graph_content .container_header {
2227 #graph_content .container_header {
2230 border: 1px solid #CCC;
2228 border: 1px solid #CCC;
2231 padding: 10px;
2229 padding: 10px;
2232 height: 45px;
2230 height: 45px;
2233 -webkit-border-radius: 6px 6px 0px 0px;
2231 -webkit-border-radius: 6px 6px 0px 0px;
2234 -moz-border-radius: 6px 6px 0px 0px;
2232 -moz-border-radius: 6px 6px 0px 0px;
2235 border-radius: 6px 6px 0px 0px;
2233 border-radius: 6px 6px 0px 0px;
2236 }
2234 }
2237
2235
2238 #graph_content #rev_range_container {
2236 #graph_content #rev_range_container {
2239 padding: 10px 0px;
2237 padding: 10px 0px;
2240 clear: both;
2238 clear: both;
2241 }
2239 }
2242
2240
2243 #graph_content .container {
2241 #graph_content .container {
2244 border-bottom: 1px solid #CCC;
2242 border-bottom: 1px solid #CCC;
2245 border-left: 1px solid #CCC;
2243 border-left: 1px solid #CCC;
2246 border-right: 1px solid #CCC;
2244 border-right: 1px solid #CCC;
2247 min-height: 70px;
2245 min-height: 70px;
2248 overflow: hidden;
2246 overflow: hidden;
2249 font-size: 1.2em;
2247 font-size: 1.2em;
2250 }
2248 }
2251
2249
2252 #graph_content .container .right {
2250 #graph_content .container .right {
2253 float: right;
2251 float: right;
2254 width: 28%;
2252 width: 28%;
2255 text-align: right;
2253 text-align: right;
2256 padding-bottom: 5px;
2254 padding-bottom: 5px;
2257 }
2255 }
2258
2256
2259 #graph_content .container .left .date {
2257 #graph_content .container .left .date {
2260 font-weight: 700;
2258 font-weight: 700;
2261 padding-bottom: 5px;
2259 padding-bottom: 5px;
2262 }
2260 }
2263
2261
2264 #graph_content .container .left .date span {
2262 #graph_content .container .left .date span {
2265 vertical-align: text-top;
2263 vertical-align: text-top;
2266 }
2264 }
2267
2265
2268 #graph_content .container .left .author {
2266 #graph_content .container .left .author {
2269 height: 22px;
2267 height: 22px;
2270 }
2268 }
2271
2269
2272 #graph_content .container .left .author .user {
2270 #graph_content .container .left .author .user {
2273 color: #444444;
2271 color: #444444;
2274 float: left;
2272 float: left;
2275 font-size: 12px;
2273 font-size: 12px;
2276 margin-left: -4px;
2274 margin-left: -4px;
2277 margin-top: 4px;
2275 margin-top: 4px;
2278 }
2276 }
2279
2277
2280 #graph_content .container .left .message {
2278 #graph_content .container .left .message {
2281 font-size: 100%;
2279 font-size: 100%;
2282 padding-top: 3px;
2280 padding-top: 3px;
2283 white-space: pre-wrap;
2281 white-space: pre-wrap;
2284 }
2282 }
2285
2283
2286 #graph_content .container .left .message a:hover{
2284 #graph_content .container .left .message a:hover{
2287 text-decoration: none;
2285 text-decoration: none;
2288 }
2286 }
2289
2287
2290 .right div {
2288 .right div {
2291 clear: both;
2289 clear: both;
2292 }
2290 }
2293
2291
2294 .right .changes .changed_total {
2292 .right .changes .changed_total {
2295 border: 0px solid #DDD;
2293 border: 0px solid #DDD;
2296 display: block;
2294 display: block;
2297 float: right;
2295 float: right;
2298 text-align: center;
2296 text-align: center;
2299 min-width: 45px;
2297 min-width: 45px;
2300 cursor: pointer;
2298 cursor: pointer;
2301 background: #FD8;
2299 background: #FD8;
2302 font-weight: bold;
2300 font-weight: bold;
2303 -webkit-border-radius: 0px 0px 0px 6px;
2301 -webkit-border-radius: 0px 0px 0px 6px;
2304 -moz-border-radius: 0px 0px 0px 6px;
2302 -moz-border-radius: 0px 0px 0px 6px;
2305 border-radius: 0px 0px 0px 6px;
2303 border-radius: 0px 0px 0px 6px;
2306 padding: 2px;
2304 padding: 2px;
2307 }
2305 }
2308
2306
2309 .right .changes .added,.changed,.removed {
2307 .right .changes .added,.changed,.removed {
2310 border: 1px solid #DDD;
2308 border: 1px solid #DDD;
2311 display: block;
2309 display: block;
2312 float: right;
2310 float: right;
2313 text-align: center;
2311 text-align: center;
2314 min-width: 15px;
2312 min-width: 15px;
2315 cursor: help;
2313 cursor: help;
2316 }
2314 }
2317
2315
2318 .right .changes .large {
2316 .right .changes .large {
2319 border: 1px solid #DDD;
2317 border: 1px solid #DDD;
2320 display: block;
2318 display: block;
2321 float: right;
2319 float: right;
2322 text-align: center;
2320 text-align: center;
2323 min-width: 45px;
2321 min-width: 45px;
2324 cursor: help;
2322 cursor: help;
2325 background: #54A9F7;
2323 background: #54A9F7;
2326 }
2324 }
2327
2325
2328 .right .changes .added {
2326 .right .changes .added {
2329 background: #BFB;
2327 background: #BFB;
2330 }
2328 }
2331
2329
2332 .right .changes .changed {
2330 .right .changes .changed {
2333 background: #FD8;
2331 background: #FD8;
2334 }
2332 }
2335
2333
2336 .right .changes .removed {
2334 .right .changes .removed {
2337 background: #F88;
2335 background: #F88;
2338 }
2336 }
2339
2337
2340 .right .merge {
2338 .right .merge {
2341 vertical-align: top;
2339 vertical-align: top;
2342 font-size: 0.75em;
2340 font-size: 0.75em;
2343 font-weight: 700;
2341 font-weight: 700;
2344 }
2342 }
2345
2343
2346 .right .parent {
2344 .right .parent {
2347 font-size: 90%;
2345 font-size: 90%;
2348 font-family: monospace;
2346 font-family: monospace;
2349 padding: 2px 2px 2px 2px;
2347 padding: 2px 2px 2px 2px;
2350 }
2348 }
2351 .right .logtags{
2349 .right .logtags{
2352 padding: 2px 2px 2px 2px;
2350 padding: 2px 2px 2px 2px;
2353 }
2351 }
2354 .right .logtags .branchtag,.logtags .branchtag {
2352 .right .logtags .branchtag,.logtags .branchtag {
2355 padding: 1px 3px 2px;
2353 padding: 1px 3px 2px;
2356 background-color: #bfbfbf;
2354 background-color: #bfbfbf;
2357 font-size: 9.75px;
2355 font-size: 9.75px;
2358 font-weight: bold;
2356 font-weight: bold;
2359 color: #ffffff;
2357 color: #ffffff;
2360 text-transform: uppercase;
2358 text-transform: uppercase;
2361 white-space: nowrap;
2359 white-space: nowrap;
2362 -webkit-border-radius: 3px;
2360 -webkit-border-radius: 3px;
2363 -moz-border-radius: 3px;
2361 -moz-border-radius: 3px;
2364 border-radius: 3px;
2362 border-radius: 3px;
2365 padding-left:4px;
2363 padding-left:4px;
2366 }
2364 }
2367 .right .logtags .branchtag a:hover,.logtags .branchtag a{
2365 .right .logtags .branchtag a:hover,.logtags .branchtag a{
2368 color: #ffffff;
2366 color: #ffffff;
2369 }
2367 }
2370 .right .logtags .branchtag a:hover,.logtags .branchtag a:hover{
2368 .right .logtags .branchtag a:hover,.logtags .branchtag a:hover{
2371 text-decoration: none;
2369 text-decoration: none;
2372 color: #ffffff;
2370 color: #ffffff;
2373 }
2371 }
2374 .right .logtags .tagtag,.logtags .tagtag {
2372 .right .logtags .tagtag,.logtags .tagtag {
2375 padding: 1px 3px 2px;
2373 padding: 1px 3px 2px;
2376 background-color: #62cffc;
2374 background-color: #62cffc;
2377 font-size: 9.75px;
2375 font-size: 9.75px;
2378 font-weight: bold;
2376 font-weight: bold;
2379 color: #ffffff;
2377 color: #ffffff;
2380 text-transform: uppercase;
2378 text-transform: uppercase;
2381 white-space: nowrap;
2379 white-space: nowrap;
2382 -webkit-border-radius: 3px;
2380 -webkit-border-radius: 3px;
2383 -moz-border-radius: 3px;
2381 -moz-border-radius: 3px;
2384 border-radius: 3px;
2382 border-radius: 3px;
2385 }
2383 }
2386 .right .logtags .tagtag a:hover,.logtags .tagtag a{
2384 .right .logtags .tagtag a:hover,.logtags .tagtag a{
2387 color: #ffffff;
2385 color: #ffffff;
2388 }
2386 }
2389 .right .logtags .tagtag a:hover,.logtags .tagtag a:hover{
2387 .right .logtags .tagtag a:hover,.logtags .tagtag a:hover{
2390 text-decoration: none;
2388 text-decoration: none;
2391 color: #ffffff;
2389 color: #ffffff;
2392 }
2390 }
2393 .right .logbooks .bookbook,.logbooks .bookbook {
2391 .right .logbooks .bookbook,.logbooks .bookbook {
2394 padding: 1px 3px 2px;
2392 padding: 1px 3px 2px;
2395 background-color: #46A546;
2393 background-color: #46A546;
2396 font-size: 9.75px;
2394 font-size: 9.75px;
2397 font-weight: bold;
2395 font-weight: bold;
2398 color: #ffffff;
2396 color: #ffffff;
2399 text-transform: uppercase;
2397 text-transform: uppercase;
2400 white-space: nowrap;
2398 white-space: nowrap;
2401 -webkit-border-radius: 3px;
2399 -webkit-border-radius: 3px;
2402 -moz-border-radius: 3px;
2400 -moz-border-radius: 3px;
2403 border-radius: 3px;
2401 border-radius: 3px;
2404 }
2402 }
2405 .right .logbooks .bookbook,.logbooks .bookbook a{
2403 .right .logbooks .bookbook,.logbooks .bookbook a{
2406 color: #ffffff;
2404 color: #ffffff;
2407 }
2405 }
2408 .right .logbooks .bookbook,.logbooks .bookbook a:hover{
2406 .right .logbooks .bookbook,.logbooks .bookbook a:hover{
2409 text-decoration: none;
2407 text-decoration: none;
2410 color: #ffffff;
2408 color: #ffffff;
2411 }
2409 }
2412 div.browserblock {
2410 div.browserblock {
2413 overflow: hidden;
2411 overflow: hidden;
2414 border: 1px solid #ccc;
2412 border: 1px solid #ccc;
2415 background: #f8f8f8;
2413 background: #f8f8f8;
2416 font-size: 100%;
2414 font-size: 100%;
2417 line-height: 125%;
2415 line-height: 125%;
2418 padding: 0;
2416 padding: 0;
2419 -webkit-border-radius: 6px 6px 0px 0px;
2417 -webkit-border-radius: 6px 6px 0px 0px;
2420 -moz-border-radius: 6px 6px 0px 0px;
2418 -moz-border-radius: 6px 6px 0px 0px;
2421 border-radius: 6px 6px 0px 0px;
2419 border-radius: 6px 6px 0px 0px;
2422 }
2420 }
2423
2421
2424 div.browserblock .browser-header {
2422 div.browserblock .browser-header {
2425 background: #FFF;
2423 background: #FFF;
2426 padding: 10px 0px 15px 0px;
2424 padding: 10px 0px 15px 0px;
2427 width: 100%;
2425 width: 100%;
2428 }
2426 }
2429
2427
2430 div.browserblock .browser-nav {
2428 div.browserblock .browser-nav {
2431 float: left
2429 float: left
2432 }
2430 }
2433
2431
2434 div.browserblock .browser-branch {
2432 div.browserblock .browser-branch {
2435 float: left;
2433 float: left;
2436 }
2434 }
2437
2435
2438 div.browserblock .browser-branch label {
2436 div.browserblock .browser-branch label {
2439 color: #4A4A4A;
2437 color: #4A4A4A;
2440 vertical-align: text-top;
2438 vertical-align: text-top;
2441 }
2439 }
2442
2440
2443 div.browserblock .browser-header span {
2441 div.browserblock .browser-header span {
2444 margin-left: 5px;
2442 margin-left: 5px;
2445 font-weight: 700;
2443 font-weight: 700;
2446 }
2444 }
2447
2445
2448 div.browserblock .browser-search {
2446 div.browserblock .browser-search {
2449 clear: both;
2447 clear: both;
2450 padding: 8px 8px 0px 5px;
2448 padding: 8px 8px 0px 5px;
2451 height: 20px;
2449 height: 20px;
2452 }
2450 }
2453
2451
2454 div.browserblock #node_filter_box {
2452 div.browserblock #node_filter_box {
2455
2453
2456 }
2454 }
2457
2455
2458 div.browserblock .search_activate {
2456 div.browserblock .search_activate {
2459 float: left
2457 float: left
2460 }
2458 }
2461
2459
2462 div.browserblock .add_node {
2460 div.browserblock .add_node {
2463 float: left;
2461 float: left;
2464 padding-left: 5px;
2462 padding-left: 5px;
2465 }
2463 }
2466
2464
2467 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover
2465 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover
2468 {
2466 {
2469 text-decoration: none !important;
2467 text-decoration: none !important;
2470 }
2468 }
2471
2469
2472 div.browserblock .browser-body {
2470 div.browserblock .browser-body {
2473 background: #EEE;
2471 background: #EEE;
2474 border-top: 1px solid #CCC;
2472 border-top: 1px solid #CCC;
2475 }
2473 }
2476
2474
2477 table.code-browser {
2475 table.code-browser {
2478 border-collapse: collapse;
2476 border-collapse: collapse;
2479 width: 100%;
2477 width: 100%;
2480 }
2478 }
2481
2479
2482 table.code-browser tr {
2480 table.code-browser tr {
2483 margin: 3px;
2481 margin: 3px;
2484 }
2482 }
2485
2483
2486 table.code-browser thead th {
2484 table.code-browser thead th {
2487 background-color: #EEE;
2485 background-color: #EEE;
2488 height: 20px;
2486 height: 20px;
2489 font-size: 1.1em;
2487 font-size: 1.1em;
2490 font-weight: 700;
2488 font-weight: 700;
2491 text-align: left;
2489 text-align: left;
2492 padding-left: 10px;
2490 padding-left: 10px;
2493 }
2491 }
2494
2492
2495 table.code-browser tbody td {
2493 table.code-browser tbody td {
2496 padding-left: 10px;
2494 padding-left: 10px;
2497 height: 20px;
2495 height: 20px;
2498 }
2496 }
2499
2497
2500 table.code-browser .browser-file {
2498 table.code-browser .browser-file {
2501 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2499 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2502 height: 16px;
2500 height: 16px;
2503 padding-left: 20px;
2501 padding-left: 20px;
2504 text-align: left;
2502 text-align: left;
2505 }
2503 }
2506 .diffblock .changeset_header {
2504 .diffblock .changeset_header {
2507 height: 16px;
2505 height: 16px;
2508 }
2506 }
2509 .diffblock .changeset_file {
2507 .diffblock .changeset_file {
2510 background: url("../images/icons/file.png") no-repeat scroll 3px;
2508 background: url("../images/icons/file.png") no-repeat scroll 3px;
2511 text-align: left;
2509 text-align: left;
2512 float: left;
2510 float: left;
2513 padding: 2px 0px 2px 22px;
2511 padding: 2px 0px 2px 22px;
2514 }
2512 }
2515 .diffblock .diff-menu-wrapper{
2513 .diffblock .diff-menu-wrapper{
2516 float: left;
2514 float: left;
2517 }
2515 }
2518
2516
2519 .diffblock .diff-menu{
2517 .diffblock .diff-menu{
2520 position: absolute;
2518 position: absolute;
2521 background: none repeat scroll 0 0 #FFFFFF;
2519 background: none repeat scroll 0 0 #FFFFFF;
2522 border-color: #003367 #666666 #666666;
2520 border-color: #003367 #666666 #666666;
2523 border-right: 1px solid #666666;
2521 border-right: 1px solid #666666;
2524 border-style: solid solid solid;
2522 border-style: solid solid solid;
2525 border-width: 1px;
2523 border-width: 1px;
2526 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2524 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2527 margin-top:5px;
2525 margin-top:5px;
2528 margin-left:1px;
2526 margin-left:1px;
2529
2527
2530 }
2528 }
2531
2529
2532 .diffblock .diff-menu ul li {
2530 .diffblock .diff-menu ul li {
2533 padding: 0px 0px 0px 0px !important;
2531 padding: 0px 0px 0px 0px !important;
2534 }
2532 }
2535 .diffblock .diff-menu ul li a{
2533 .diffblock .diff-menu ul li a{
2536 display: block;
2534 display: block;
2537 padding: 3px 8px 3px 8px !important;
2535 padding: 3px 8px 3px 8px !important;
2538 }
2536 }
2539 .diffblock .diff-menu ul li a:hover{
2537 .diffblock .diff-menu ul li a:hover{
2540 text-decoration: none;
2538 text-decoration: none;
2541 background-color: #EEEEEE;
2539 background-color: #EEEEEE;
2542 }
2540 }
2543 table.code-browser .browser-dir {
2541 table.code-browser .browser-dir {
2544 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2542 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2545 height: 16px;
2543 height: 16px;
2546 padding-left: 20px;
2544 padding-left: 20px;
2547 text-align: left;
2545 text-align: left;
2548 }
2546 }
2549
2547
2550 .box .search {
2548 .box .search {
2551 clear: both;
2549 clear: both;
2552 overflow: hidden;
2550 overflow: hidden;
2553 margin: 0;
2551 margin: 0;
2554 padding: 0 20px 10px;
2552 padding: 0 20px 10px;
2555 }
2553 }
2556
2554
2557 .box .search div.search_path {
2555 .box .search div.search_path {
2558 background: none repeat scroll 0 0 #EEE;
2556 background: none repeat scroll 0 0 #EEE;
2559 border: 1px solid #CCC;
2557 border: 1px solid #CCC;
2560 color: blue;
2558 color: blue;
2561 margin-bottom: 10px;
2559 margin-bottom: 10px;
2562 padding: 10px 0;
2560 padding: 10px 0;
2563 }
2561 }
2564
2562
2565 .box .search div.search_path div.link {
2563 .box .search div.search_path div.link {
2566 font-weight: 700;
2564 font-weight: 700;
2567 margin-left: 25px;
2565 margin-left: 25px;
2568 }
2566 }
2569
2567
2570 .box .search div.search_path div.link a {
2568 .box .search div.search_path div.link a {
2571 color: #003367;
2569 color: #003367;
2572 cursor: pointer;
2570 cursor: pointer;
2573 text-decoration: none;
2571 text-decoration: none;
2574 }
2572 }
2575
2573
2576 #path_unlock {
2574 #path_unlock {
2577 color: red;
2575 color: red;
2578 font-size: 1.2em;
2576 font-size: 1.2em;
2579 padding-left: 4px;
2577 padding-left: 4px;
2580 }
2578 }
2581
2579
2582 .info_box span {
2580 .info_box span {
2583 margin-left: 3px;
2581 margin-left: 3px;
2584 margin-right: 3px;
2582 margin-right: 3px;
2585 }
2583 }
2586
2584
2587 .info_box .rev {
2585 .info_box .rev {
2588 color: #003367;
2586 color: #003367;
2589 font-size: 1.6em;
2587 font-size: 1.6em;
2590 font-weight: bold;
2588 font-weight: bold;
2591 vertical-align: sub;
2589 vertical-align: sub;
2592 }
2590 }
2593
2591
2594 .info_box input#at_rev,.info_box input#size {
2592 .info_box input#at_rev,.info_box input#size {
2595 background: #FFF;
2593 background: #FFF;
2596 border-top: 1px solid #b3b3b3;
2594 border-top: 1px solid #b3b3b3;
2597 border-left: 1px solid #b3b3b3;
2595 border-left: 1px solid #b3b3b3;
2598 border-right: 1px solid #eaeaea;
2596 border-right: 1px solid #eaeaea;
2599 border-bottom: 1px solid #eaeaea;
2597 border-bottom: 1px solid #eaeaea;
2600 color: #000;
2598 color: #000;
2601 font-size: 12px;
2599 font-size: 12px;
2602 margin: 0;
2600 margin: 0;
2603 padding: 1px 5px 1px;
2601 padding: 1px 5px 1px;
2604 }
2602 }
2605
2603
2606 .info_box input#view {
2604 .info_box input#view {
2607 text-align: center;
2605 text-align: center;
2608 padding: 4px 3px 2px 2px;
2606 padding: 4px 3px 2px 2px;
2609 }
2607 }
2610
2608
2611 .yui-overlay,.yui-panel-container {
2609 .yui-overlay,.yui-panel-container {
2612 visibility: hidden;
2610 visibility: hidden;
2613 position: absolute;
2611 position: absolute;
2614 z-index: 2;
2612 z-index: 2;
2615 }
2613 }
2616
2614
2617 .yui-tt {
2615 .yui-tt {
2618 visibility: hidden;
2616 visibility: hidden;
2619 position: absolute;
2617 position: absolute;
2620 color: #666;
2618 color: #666;
2621 background-color: #FFF;
2619 background-color: #FFF;
2622 border: 2px solid #003367;
2620 border: 2px solid #003367;
2623 font: 100% sans-serif;
2621 font: 100% sans-serif;
2624 width: auto;
2622 width: auto;
2625 opacity: 1px;
2623 opacity: 1px;
2626 padding: 8px;
2624 padding: 8px;
2627 white-space: pre-wrap;
2625 white-space: pre-wrap;
2628 -webkit-border-radius: 8px 8px 8px 8px;
2626 -webkit-border-radius: 8px 8px 8px 8px;
2629 -khtml-border-radius: 8px 8px 8px 8px;
2627 -khtml-border-radius: 8px 8px 8px 8px;
2630 -moz-border-radius: 8px 8px 8px 8px;
2628 -moz-border-radius: 8px 8px 8px 8px;
2631 border-radius: 8px 8px 8px 8px;
2629 border-radius: 8px 8px 8px 8px;
2632 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2630 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2633 }
2631 }
2634
2632
2635 .ac {
2633 .ac {
2636 vertical-align: top;
2634 vertical-align: top;
2637 }
2635 }
2638
2636
2639 .ac .yui-ac {
2637 .ac .yui-ac {
2640 position: relative;
2638 position: relative;
2641 font-size: 100%;
2639 font-size: 100%;
2642 }
2640 }
2643
2641
2644 .ac .perm_ac {
2642 .ac .perm_ac {
2645 width: 15em;
2643 width: 15em;
2646 }
2644 }
2647
2645
2648 .ac .yui-ac-input {
2646 .ac .yui-ac-input {
2649 width: 100%;
2647 width: 100%;
2650 }
2648 }
2651
2649
2652 .ac .yui-ac-container {
2650 .ac .yui-ac-container {
2653 position: absolute;
2651 position: absolute;
2654 top: 1.6em;
2652 top: 1.6em;
2655 width: 100%;
2653 width: 100%;
2656 }
2654 }
2657
2655
2658 .ac .yui-ac-content {
2656 .ac .yui-ac-content {
2659 position: absolute;
2657 position: absolute;
2660 width: 100%;
2658 width: 100%;
2661 border: 1px solid gray;
2659 border: 1px solid gray;
2662 background: #fff;
2660 background: #fff;
2663 overflow: hidden;
2661 overflow: hidden;
2664 z-index: 9050;
2662 z-index: 9050;
2665 }
2663 }
2666
2664
2667 .ac .yui-ac-shadow {
2665 .ac .yui-ac-shadow {
2668 position: absolute;
2666 position: absolute;
2669 width: 100%;
2667 width: 100%;
2670 background: #000;
2668 background: #000;
2671 -moz-opacity: 0.1px;
2669 -moz-opacity: 0.1px;
2672 opacity: .10;
2670 opacity: .10;
2673 filter: alpha(opacity = 10);
2671 filter: alpha(opacity = 10);
2674 z-index: 9049;
2672 z-index: 9049;
2675 margin: .3em;
2673 margin: .3em;
2676 }
2674 }
2677
2675
2678 .ac .yui-ac-content ul {
2676 .ac .yui-ac-content ul {
2679 width: 100%;
2677 width: 100%;
2680 margin: 0;
2678 margin: 0;
2681 padding: 0;
2679 padding: 0;
2682 }
2680 }
2683
2681
2684 .ac .yui-ac-content li {
2682 .ac .yui-ac-content li {
2685 cursor: default;
2683 cursor: default;
2686 white-space: nowrap;
2684 white-space: nowrap;
2687 margin: 0;
2685 margin: 0;
2688 padding: 2px 5px;
2686 padding: 2px 5px;
2689 }
2687 }
2690
2688
2691 .ac .yui-ac-content li.yui-ac-prehighlight {
2689 .ac .yui-ac-content li.yui-ac-prehighlight {
2692 background: #B3D4FF;
2690 background: #B3D4FF;
2693 }
2691 }
2694
2692
2695 .ac .yui-ac-content li.yui-ac-highlight {
2693 .ac .yui-ac-content li.yui-ac-highlight {
2696 background: #556CB5;
2694 background: #556CB5;
2697 color: #FFF;
2695 color: #FFF;
2698 }
2696 }
2699
2697
2700 .follow {
2698 .follow {
2701 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2699 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2702 height: 16px;
2700 height: 16px;
2703 width: 20px;
2701 width: 20px;
2704 cursor: pointer;
2702 cursor: pointer;
2705 display: block;
2703 display: block;
2706 float: right;
2704 float: right;
2707 margin-top: 2px;
2705 margin-top: 2px;
2708 }
2706 }
2709
2707
2710 .following {
2708 .following {
2711 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2709 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2712 height: 16px;
2710 height: 16px;
2713 width: 20px;
2711 width: 20px;
2714 cursor: pointer;
2712 cursor: pointer;
2715 display: block;
2713 display: block;
2716 float: right;
2714 float: right;
2717 margin-top: 2px;
2715 margin-top: 2px;
2718 }
2716 }
2719
2717
2720 .currently_following {
2718 .currently_following {
2721 padding-left: 10px;
2719 padding-left: 10px;
2722 padding-bottom: 5px;
2720 padding-bottom: 5px;
2723 }
2721 }
2724
2722
2725 .add_icon {
2723 .add_icon {
2726 background: url("../images/icons/add.png") no-repeat scroll 3px;
2724 background: url("../images/icons/add.png") no-repeat scroll 3px;
2727 padding-left: 20px;
2725 padding-left: 20px;
2728 padding-top: 0px;
2726 padding-top: 0px;
2729 text-align: left;
2727 text-align: left;
2730 }
2728 }
2731
2729
2732 .edit_icon {
2730 .edit_icon {
2733 background: url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2731 background: url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2734 padding-left: 20px;
2732 padding-left: 20px;
2735 padding-top: 0px;
2733 padding-top: 0px;
2736 text-align: left;
2734 text-align: left;
2737 }
2735 }
2738
2736
2739 .delete_icon {
2737 .delete_icon {
2740 background: url("../images/icons/delete.png") no-repeat scroll 3px;
2738 background: url("../images/icons/delete.png") no-repeat scroll 3px;
2741 padding-left: 20px;
2739 padding-left: 20px;
2742 padding-top: 0px;
2740 padding-top: 0px;
2743 text-align: left;
2741 text-align: left;
2744 }
2742 }
2745
2743
2746 .refresh_icon {
2744 .refresh_icon {
2747 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
2745 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
2748 3px;
2746 3px;
2749 padding-left: 20px;
2747 padding-left: 20px;
2750 padding-top: 0px;
2748 padding-top: 0px;
2751 text-align: left;
2749 text-align: left;
2752 }
2750 }
2753
2751
2754 .pull_icon {
2752 .pull_icon {
2755 background: url("../images/icons/connect.png") no-repeat scroll 3px;
2753 background: url("../images/icons/connect.png") no-repeat scroll 3px;
2756 padding-left: 20px;
2754 padding-left: 20px;
2757 padding-top: 0px;
2755 padding-top: 0px;
2758 text-align: left;
2756 text-align: left;
2759 }
2757 }
2760
2758
2761 .rss_icon {
2759 .rss_icon {
2762 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
2760 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
2763 padding-left: 20px;
2761 padding-left: 20px;
2764 padding-top: 4px;
2762 padding-top: 4px;
2765 text-align: left;
2763 text-align: left;
2766 font-size: 8px
2764 font-size: 8px
2767 }
2765 }
2768
2766
2769 .atom_icon {
2767 .atom_icon {
2770 background: url("../images/icons/atom.png") no-repeat scroll 3px;
2768 background: url("../images/icons/atom.png") no-repeat scroll 3px;
2771 padding-left: 20px;
2769 padding-left: 20px;
2772 padding-top: 4px;
2770 padding-top: 4px;
2773 text-align: left;
2771 text-align: left;
2774 font-size: 8px
2772 font-size: 8px
2775 }
2773 }
2776
2774
2777 .archive_icon {
2775 .archive_icon {
2778 background: url("../images/icons/compress.png") no-repeat scroll 3px;
2776 background: url("../images/icons/compress.png") no-repeat scroll 3px;
2779 padding-left: 20px;
2777 padding-left: 20px;
2780 text-align: left;
2778 text-align: left;
2781 padding-top: 1px;
2779 padding-top: 1px;
2782 }
2780 }
2783
2781
2784 .start_following_icon {
2782 .start_following_icon {
2785 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2783 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2786 padding-left: 20px;
2784 padding-left: 20px;
2787 text-align: left;
2785 text-align: left;
2788 padding-top: 0px;
2786 padding-top: 0px;
2789 }
2787 }
2790
2788
2791 .stop_following_icon {
2789 .stop_following_icon {
2792 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2790 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2793 padding-left: 20px;
2791 padding-left: 20px;
2794 text-align: left;
2792 text-align: left;
2795 padding-top: 0px;
2793 padding-top: 0px;
2796 }
2794 }
2797
2795
2798 .action_button {
2796 .action_button {
2799 border: 0;
2797 border: 0;
2800 display: inline;
2798 display: inline;
2801 }
2799 }
2802
2800
2803 .action_button:hover {
2801 .action_button:hover {
2804 border: 0;
2802 border: 0;
2805 text-decoration: underline;
2803 text-decoration: underline;
2806 cursor: pointer;
2804 cursor: pointer;
2807 }
2805 }
2808
2806
2809 #switch_repos {
2807 #switch_repos {
2810 position: absolute;
2808 position: absolute;
2811 height: 25px;
2809 height: 25px;
2812 z-index: 1;
2810 z-index: 1;
2813 }
2811 }
2814
2812
2815 #switch_repos select {
2813 #switch_repos select {
2816 min-width: 150px;
2814 min-width: 150px;
2817 max-height: 250px;
2815 max-height: 250px;
2818 z-index: 1;
2816 z-index: 1;
2819 }
2817 }
2820
2818
2821 .breadcrumbs {
2819 .breadcrumbs {
2822 border: medium none;
2820 border: medium none;
2823 color: #FFF;
2821 color: #FFF;
2824 float: left;
2822 float: left;
2825 text-transform: uppercase;
2823 text-transform: uppercase;
2826 font-weight: 700;
2824 font-weight: 700;
2827 font-size: 14px;
2825 font-size: 14px;
2828 margin: 0;
2826 margin: 0;
2829 padding: 11px 0 11px 10px;
2827 padding: 11px 0 11px 10px;
2830 }
2828 }
2831
2829
2832 .breadcrumbs a {
2830 .breadcrumbs a {
2833 color: #FFF;
2831 color: #FFF;
2834 }
2832 }
2835
2833
2836 .flash_msg {
2834 .flash_msg {
2837
2835
2838 }
2836 }
2839
2837
2840 .flash_msg ul {
2838 .flash_msg ul {
2841
2839
2842 }
2840 }
2843
2841
2844 .error_msg {
2842 .error_msg {
2845 background-color: #c43c35;
2843 background-color: #c43c35;
2846 background-repeat: repeat-x;
2844 background-repeat: repeat-x;
2847 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b),
2845 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b),
2848 to(#c43c35) );
2846 to(#c43c35) );
2849 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
2847 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
2850 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
2848 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
2851 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b),
2849 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b),
2852 color-stop(100%, #c43c35) );
2850 color-stop(100%, #c43c35) );
2853 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
2851 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
2854 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
2852 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
2855 background-image: linear-gradient(top, #ee5f5b, #c43c35);
2853 background-image: linear-gradient(top, #ee5f5b, #c43c35);
2856 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',
2854 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',
2857 endColorstr='#c43c35', GradientType=0 );
2855 endColorstr='#c43c35', GradientType=0 );
2858 border-color: #c43c35 #c43c35 #882a25;
2856 border-color: #c43c35 #c43c35 #882a25;
2859 }
2857 }
2860
2858
2861 .warning_msg {
2859 .warning_msg {
2862 color: #404040 !important;
2860 color: #404040 !important;
2863 background-color: #eedc94;
2861 background-color: #eedc94;
2864 background-repeat: repeat-x;
2862 background-repeat: repeat-x;
2865 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
2863 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
2866 to(#eedc94) );
2864 to(#eedc94) );
2867 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
2865 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
2868 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
2866 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
2869 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1),
2867 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1),
2870 color-stop(100%, #eedc94) );
2868 color-stop(100%, #eedc94) );
2871 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
2869 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
2872 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
2870 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
2873 background-image: linear-gradient(top, #fceec1, #eedc94);
2871 background-image: linear-gradient(top, #fceec1, #eedc94);
2874 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1',
2872 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1',
2875 endColorstr='#eedc94', GradientType=0 );
2873 endColorstr='#eedc94', GradientType=0 );
2876 border-color: #eedc94 #eedc94 #e4c652;
2874 border-color: #eedc94 #eedc94 #e4c652;
2877 }
2875 }
2878
2876
2879 .success_msg {
2877 .success_msg {
2880 background-color: #57a957;
2878 background-color: #57a957;
2881 background-repeat: repeat-x !important;
2879 background-repeat: repeat-x !important;
2882 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462),
2880 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462),
2883 to(#57a957) );
2881 to(#57a957) );
2884 background-image: -moz-linear-gradient(top, #62c462, #57a957);
2882 background-image: -moz-linear-gradient(top, #62c462, #57a957);
2885 background-image: -ms-linear-gradient(top, #62c462, #57a957);
2883 background-image: -ms-linear-gradient(top, #62c462, #57a957);
2886 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462),
2884 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462),
2887 color-stop(100%, #57a957) );
2885 color-stop(100%, #57a957) );
2888 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
2886 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
2889 background-image: -o-linear-gradient(top, #62c462, #57a957);
2887 background-image: -o-linear-gradient(top, #62c462, #57a957);
2890 background-image: linear-gradient(top, #62c462, #57a957);
2888 background-image: linear-gradient(top, #62c462, #57a957);
2891 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',
2889 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',
2892 endColorstr='#57a957', GradientType=0 );
2890 endColorstr='#57a957', GradientType=0 );
2893 border-color: #57a957 #57a957 #3d773d;
2891 border-color: #57a957 #57a957 #3d773d;
2894 }
2892 }
2895
2893
2896 .notice_msg {
2894 .notice_msg {
2897 background-color: #339bb9;
2895 background-color: #339bb9;
2898 background-repeat: repeat-x;
2896 background-repeat: repeat-x;
2899 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de),
2897 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de),
2900 to(#339bb9) );
2898 to(#339bb9) );
2901 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
2899 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
2902 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
2900 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
2903 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de),
2901 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de),
2904 color-stop(100%, #339bb9) );
2902 color-stop(100%, #339bb9) );
2905 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
2903 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
2906 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
2904 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
2907 background-image: linear-gradient(top, #5bc0de, #339bb9);
2905 background-image: linear-gradient(top, #5bc0de, #339bb9);
2908 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de',
2906 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de',
2909 endColorstr='#339bb9', GradientType=0 );
2907 endColorstr='#339bb9', GradientType=0 );
2910 border-color: #339bb9 #339bb9 #22697d;
2908 border-color: #339bb9 #339bb9 #22697d;
2911 }
2909 }
2912
2910
2913 .success_msg,.error_msg,.notice_msg,.warning_msg {
2911 .success_msg,.error_msg,.notice_msg,.warning_msg {
2914 font-size: 12px;
2912 font-size: 12px;
2915 font-weight: 700;
2913 font-weight: 700;
2916 min-height: 14px;
2914 min-height: 14px;
2917 line-height: 14px;
2915 line-height: 14px;
2918 margin-bottom: 10px;
2916 margin-bottom: 10px;
2919 margin-top: 0;
2917 margin-top: 0;
2920 display: block;
2918 display: block;
2921 overflow: auto;
2919 overflow: auto;
2922 padding: 6px 10px 6px 10px;
2920 padding: 6px 10px 6px 10px;
2923 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
2921 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
2924 position: relative;
2922 position: relative;
2925 color: #FFF;
2923 color: #FFF;
2926 border-width: 1px;
2924 border-width: 1px;
2927 border-style: solid;
2925 border-style: solid;
2928 -webkit-border-radius: 4px;
2926 -webkit-border-radius: 4px;
2929 -moz-border-radius: 4px;
2927 -moz-border-radius: 4px;
2930 border-radius: 4px;
2928 border-radius: 4px;
2931 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2929 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2932 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2930 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2933 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2931 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2934 }
2932 }
2935
2933
2936 #msg_close {
2934 #msg_close {
2937 background: transparent url("../icons/cross_grey_small.png") no-repeat
2935 background: transparent url("../icons/cross_grey_small.png") no-repeat
2938 scroll 0 0;
2936 scroll 0 0;
2939 cursor: pointer;
2937 cursor: pointer;
2940 height: 16px;
2938 height: 16px;
2941 position: absolute;
2939 position: absolute;
2942 right: 5px;
2940 right: 5px;
2943 top: 5px;
2941 top: 5px;
2944 width: 16px;
2942 width: 16px;
2945 }
2943 }
2946
2944
2947 div#legend_container table,div#legend_choices table {
2945 div#legend_container table,div#legend_choices table {
2948 width: auto !important;
2946 width: auto !important;
2949 }
2947 }
2950
2948
2951 table#permissions_manage {
2949 table#permissions_manage {
2952 width: 0 !important;
2950 width: 0 !important;
2953 }
2951 }
2954
2952
2955 table#permissions_manage span.private_repo_msg {
2953 table#permissions_manage span.private_repo_msg {
2956 font-size: 0.8em;
2954 font-size: 0.8em;
2957 opacity: 0.6px;
2955 opacity: 0.6px;
2958 }
2956 }
2959
2957
2960 table#permissions_manage td.private_repo_msg {
2958 table#permissions_manage td.private_repo_msg {
2961 font-size: 0.8em;
2959 font-size: 0.8em;
2962 }
2960 }
2963
2961
2964 table#permissions_manage tr#add_perm_input td {
2962 table#permissions_manage tr#add_perm_input td {
2965 vertical-align: middle;
2963 vertical-align: middle;
2966 }
2964 }
2967
2965
2968 div.gravatar {
2966 div.gravatar {
2969 background-color: #FFF;
2967 background-color: #FFF;
2970 border: 0px solid #D0D0D0;
2968 border: 0px solid #D0D0D0;
2971 float: left;
2969 float: left;
2972 margin-right: 0.7em;
2970 margin-right: 0.7em;
2973 padding: 2px 2px 2px 2px;
2971 padding: 2px 2px 2px 2px;
2974 line-height:0;
2972 line-height:0;
2975 -webkit-border-radius: 6px;
2973 -webkit-border-radius: 6px;
2976 -khtml-border-radius: 6px;
2974 -khtml-border-radius: 6px;
2977 -moz-border-radius: 6px;
2975 -moz-border-radius: 6px;
2978 border-radius: 6px;
2976 border-radius: 6px;
2979 }
2977 }
2980
2978
2981 div.gravatar img {
2979 div.gravatar img {
2982 -webkit-border-radius: 4px;
2980 -webkit-border-radius: 4px;
2983 -khtml-border-radius: 4px;
2981 -khtml-border-radius: 4px;
2984 -moz-border-radius: 4px;
2982 -moz-border-radius: 4px;
2985 border-radius: 4px;
2983 border-radius: 4px;
2986 }
2984 }
2987
2985
2988 #header,#content,#footer {
2986 #header,#content,#footer {
2989 min-width: 978px;
2987 min-width: 978px;
2990 }
2988 }
2991
2989
2992 #content {
2990 #content {
2993 clear: both;
2991 clear: both;
2994 overflow: hidden;
2992 overflow: hidden;
2995 padding: 14px 10px;
2993 padding: 14px 10px;
2996 }
2994 }
2997
2995
2998 #content div.box div.title div.search {
2996 #content div.box div.title div.search {
2999
2997
3000 border-left: 1px solid #316293;
2998 border-left: 1px solid #316293;
3001 }
2999 }
3002
3000
3003 #content div.box div.title div.search div.input input {
3001 #content div.box div.title div.search div.input input {
3004 border: 1px solid #316293;
3002 border: 1px solid #316293;
3005 }
3003 }
3006
3004
3007 .ui-btn{
3005 .ui-btn{
3008 color: #515151;
3006 color: #515151;
3009 background-color: #DADADA;
3007 background-color: #DADADA;
3010 background-repeat: repeat-x;
3008 background-repeat: repeat-x;
3011 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3009 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3012 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3010 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3013 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3011 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3014 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3012 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3015 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3013 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3016 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3014 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3017 background-image: linear-gradient(top, #F4F4F4, #DADADA);
3015 background-image: linear-gradient(top, #F4F4F4, #DADADA);
3018 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3016 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3019
3017
3020 border-top: 1px solid #DDD;
3018 border-top: 1px solid #DDD;
3021 border-left: 1px solid #c6c6c6;
3019 border-left: 1px solid #c6c6c6;
3022 border-right: 1px solid #DDD;
3020 border-right: 1px solid #DDD;
3023 border-bottom: 1px solid #c6c6c6;
3021 border-bottom: 1px solid #c6c6c6;
3024 color: #515151;
3022 color: #515151;
3025 outline: none;
3023 outline: none;
3026 margin: 0px 3px 3px 0px;
3024 margin: 0px 3px 3px 0px;
3027 -webkit-border-radius: 4px 4px 4px 4px !important;
3025 -webkit-border-radius: 4px 4px 4px 4px !important;
3028 -khtml-border-radius: 4px 4px 4px 4px !important;
3026 -khtml-border-radius: 4px 4px 4px 4px !important;
3029 -moz-border-radius: 4px 4px 4px 4px !important;
3027 -moz-border-radius: 4px 4px 4px 4px !important;
3030 border-radius: 4px 4px 4px 4px !important;
3028 border-radius: 4px 4px 4px 4px !important;
3031 cursor: pointer !important;
3029 cursor: pointer !important;
3032 padding: 3px 3px 3px 3px;
3030 padding: 3px 3px 3px 3px;
3033 background-position: 0 -15px;
3031 background-position: 0 -15px;
3034
3032
3035 }
3033 }
3036 .ui-btn.xsmall{
3034 .ui-btn.xsmall{
3037 padding: 1px 2px 1px 1px;
3035 padding: 1px 2px 1px 1px;
3038 }
3036 }
3039 .ui-btn.clone{
3037 .ui-btn.clone{
3040 padding: 5px 2px 6px 1px;
3038 padding: 5px 2px 6px 1px;
3041 margin: 0px -4px 3px 0px;
3039 margin: 0px -4px 3px 0px;
3042 -webkit-border-radius: 4px 0px 0px 4px !important;
3040 -webkit-border-radius: 4px 0px 0px 4px !important;
3043 -khtml-border-radius: 4px 0px 0px 4px !important;
3041 -khtml-border-radius: 4px 0px 0px 4px !important;
3044 -moz-border-radius: 4px 0px 0px 4px !important;
3042 -moz-border-radius: 4px 0px 0px 4px !important;
3045 border-radius: 4px 0px 0px 4px !important;
3043 border-radius: 4px 0px 0px 4px !important;
3046 width: 100px;
3044 width: 100px;
3047 text-align: center;
3045 text-align: center;
3048 float: left;
3046 float: left;
3049 position: absolute;
3047 position: absolute;
3050 }
3048 }
3051 .ui-btn:focus {
3049 .ui-btn:focus {
3052 outline: none;
3050 outline: none;
3053 }
3051 }
3054 .ui-btn:hover{
3052 .ui-btn:hover{
3055 background-position: 0 0px;
3053 background-position: 0 0px;
3056 text-decoration: none;
3054 text-decoration: none;
3057 color: #515151;
3055 color: #515151;
3058 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3056 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3059 }
3057 }
3060
3058
3061 .ui-btn.red{
3059 .ui-btn.red{
3062 color:#fff;
3060 color:#fff;
3063 background-color: #c43c35;
3061 background-color: #c43c35;
3064 background-repeat: repeat-x;
3062 background-repeat: repeat-x;
3065 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3063 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3066 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3064 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3067 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3065 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3068 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3066 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3069 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3067 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3070 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3068 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3071 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3069 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3072 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3070 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3073 border-color: #c43c35 #c43c35 #882a25;
3071 border-color: #c43c35 #c43c35 #882a25;
3074 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3072 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3075 }
3073 }
3076
3074
3077
3075
3078 .ui-btn.blue{
3076 .ui-btn.blue{
3079 background-color: #339bb9;
3077 background-color: #339bb9;
3080 background-repeat: repeat-x;
3078 background-repeat: repeat-x;
3081 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3079 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3082 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3080 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3083 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3081 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3084 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3082 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3085 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3083 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3086 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3084 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3087 background-image: linear-gradient(top, #5bc0de, #339bb9);
3085 background-image: linear-gradient(top, #5bc0de, #339bb9);
3088 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3086 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3089 border-color: #339bb9 #339bb9 #22697d;
3087 border-color: #339bb9 #339bb9 #22697d;
3090 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3088 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3091 }
3089 }
3092
3090
3093 .ui-btn.green{
3091 .ui-btn.green{
3094 background-color: #57a957;
3092 background-color: #57a957;
3095 background-repeat: repeat-x;
3093 background-repeat: repeat-x;
3096 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3094 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3097 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3095 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3098 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3096 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3099 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3097 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3100 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3098 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3101 background-image: -o-linear-gradient(top, #62c462, #57a957);
3099 background-image: -o-linear-gradient(top, #62c462, #57a957);
3102 background-image: linear-gradient(top, #62c462, #57a957);
3100 background-image: linear-gradient(top, #62c462, #57a957);
3103 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3101 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3104 border-color: #57a957 #57a957 #3d773d;
3102 border-color: #57a957 #57a957 #3d773d;
3105 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3103 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3106 }
3104 }
3107
3105
3108 ins,div.options a:hover {
3106 ins,div.options a:hover {
3109 text-decoration: none;
3107 text-decoration: none;
3110 }
3108 }
3111
3109
3112 img,
3110 img,
3113 #header #header-inner #quick li a:hover span.normal,
3111 #header #header-inner #quick li a:hover span.normal,
3114 #header #header-inner #quick li ul li.last,
3112 #header #header-inner #quick li ul li.last,
3115 #content div.box div.form div.fields div.field div.textarea table td table td a,
3113 #content div.box div.form div.fields div.field div.textarea table td table td a,
3116 #clone_url,
3114 #clone_url,
3117 #clone_url_id
3115 #clone_url_id
3118 {
3116 {
3119 border: none;
3117 border: none;
3120 }
3118 }
3121
3119
3122 img.icon,.right .merge img {
3120 img.icon,.right .merge img {
3123 vertical-align: bottom;
3121 vertical-align: bottom;
3124 }
3122 }
3125
3123
3126 #header ul#logged-user,#content div.box div.title ul.links,
3124 #header ul#logged-user,#content div.box div.title ul.links,
3127 #content div.box div.message div.dismiss,
3125 #content div.box div.message div.dismiss,
3128 #content div.box div.traffic div.legend ul
3126 #content div.box div.traffic div.legend ul
3129 {
3127 {
3130 float: right;
3128 float: right;
3131 margin: 0;
3129 margin: 0;
3132 padding: 0;
3130 padding: 0;
3133 }
3131 }
3134
3132
3135 #header #header-inner #home,#header #header-inner #logo,
3133 #header #header-inner #home,#header #header-inner #logo,
3136 #content div.box ul.left,#content div.box ol.left,
3134 #content div.box ul.left,#content div.box ol.left,
3137 #content div.box div.pagination-left,div#commit_history,
3135 #content div.box div.pagination-left,div#commit_history,
3138 div#legend_data,div#legend_container,div#legend_choices
3136 div#legend_data,div#legend_container,div#legend_choices
3139 {
3137 {
3140 float: left;
3138 float: left;
3141 }
3139 }
3142
3140
3143 #header #header-inner #quick li:hover ul ul,
3141 #header #header-inner #quick li:hover ul ul,
3144 #header #header-inner #quick li:hover ul ul ul,
3142 #header #header-inner #quick li:hover ul ul ul,
3145 #header #header-inner #quick li:hover ul ul ul ul,
3143 #header #header-inner #quick li:hover ul ul ul ul,
3146 #content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow
3144 #content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow
3147 {
3145 {
3148 display: none;
3146 display: none;
3149 }
3147 }
3150
3148
3151 #header #header-inner #quick li:hover ul,#header #header-inner #quick li li:hover ul,#header #header-inner #quick li li li:hover ul,#header #header-inner #quick li li li li:hover ul,#content #left #menu ul.opened,#content #left #menu li ul.expanded
3149 #header #header-inner #quick li:hover ul,#header #header-inner #quick li li:hover ul,#header #header-inner #quick li li li:hover ul,#header #header-inner #quick li li li li:hover ul,#content #left #menu ul.opened,#content #left #menu li ul.expanded
3152 {
3150 {
3153 display: block;
3151 display: block;
3154 }
3152 }
3155
3153
3156 #content div.graph {
3154 #content div.graph {
3157 padding: 0 10px 10px;
3155 padding: 0 10px 10px;
3158 }
3156 }
3159
3157
3160 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a
3158 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a
3161 {
3159 {
3162 color: #bfe3ff;
3160 color: #bfe3ff;
3163 }
3161 }
3164
3162
3165 #content div.box ol.lower-roman,#content div.box ol.upper-roman,#content div.box ol.lower-alpha,#content div.box ol.upper-alpha,#content div.box ol.decimal
3163 #content div.box ol.lower-roman,#content div.box ol.upper-roman,#content div.box ol.lower-alpha,#content div.box ol.upper-alpha,#content div.box ol.decimal
3166 {
3164 {
3167 margin: 10px 24px 10px 44px;
3165 margin: 10px 24px 10px 44px;
3168 }
3166 }
3169
3167
3170 #content div.box div.form,#content div.box div.table,#content div.box div.traffic
3168 #content div.box div.form,#content div.box div.table,#content div.box div.traffic
3171 {
3169 {
3172 clear: both;
3170 clear: both;
3173 overflow: hidden;
3171 overflow: hidden;
3174 margin: 0;
3172 margin: 0;
3175 padding: 0 20px 10px;
3173 padding: 0 20px 10px;
3176 }
3174 }
3177
3175
3178 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields
3176 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields
3179 {
3177 {
3180 clear: both;
3178 clear: both;
3181 overflow: hidden;
3179 overflow: hidden;
3182 margin: 0;
3180 margin: 0;
3183 padding: 0;
3181 padding: 0;
3184 }
3182 }
3185
3183
3186 #content div.box div.form div.fields div.field div.label span,#login div.form div.fields div.field div.label span,#register div.form div.fields div.field div.label span
3184 #content div.box div.form div.fields div.field div.label span,#login div.form div.fields div.field div.label span,#register div.form div.fields div.field div.label span
3187 {
3185 {
3188 height: 1%;
3186 height: 1%;
3189 display: block;
3187 display: block;
3190 color: #363636;
3188 color: #363636;
3191 margin: 0;
3189 margin: 0;
3192 padding: 2px 0 0;
3190 padding: 2px 0 0;
3193 }
3191 }
3194
3192
3195 #content div.box div.form div.fields div.field div.input input.error,#login div.form div.fields div.field div.input input.error,#register div.form div.fields div.field div.input input.error
3193 #content div.box div.form div.fields div.field div.input input.error,#login div.form div.fields div.field div.input input.error,#register div.form div.fields div.field div.input input.error
3196 {
3194 {
3197 background: #FBE3E4;
3195 background: #FBE3E4;
3198 border-top: 1px solid #e1b2b3;
3196 border-top: 1px solid #e1b2b3;
3199 border-left: 1px solid #e1b2b3;
3197 border-left: 1px solid #e1b2b3;
3200 border-right: 1px solid #FBC2C4;
3198 border-right: 1px solid #FBC2C4;
3201 border-bottom: 1px solid #FBC2C4;
3199 border-bottom: 1px solid #FBC2C4;
3202 }
3200 }
3203
3201
3204 #content div.box div.form div.fields div.field div.input input.success,#login div.form div.fields div.field div.input input.success,#register div.form div.fields div.field div.input input.success
3202 #content div.box div.form div.fields div.field div.input input.success,#login div.form div.fields div.field div.input input.success,#register div.form div.fields div.field div.input input.success
3205 {
3203 {
3206 background: #E6EFC2;
3204 background: #E6EFC2;
3207 border-top: 1px solid #cebb98;
3205 border-top: 1px solid #cebb98;
3208 border-left: 1px solid #cebb98;
3206 border-left: 1px solid #cebb98;
3209 border-right: 1px solid #c6d880;
3207 border-right: 1px solid #c6d880;
3210 border-bottom: 1px solid #c6d880;
3208 border-bottom: 1px solid #c6d880;
3211 }
3209 }
3212
3210
3213 #content div.box-left div.form div.fields div.field div.textarea,#content div.box-right div.form div.fields div.field div.textarea,#content div.box div.form div.fields div.field div.select select,#content div.box table th.selected input,#content div.box table td.selected input
3211 #content div.box-left div.form div.fields div.field div.textarea,#content div.box-right div.form div.fields div.field div.textarea,#content div.box div.form div.fields div.field div.select select,#content div.box table th.selected input,#content div.box table td.selected input
3214 {
3212 {
3215 margin: 0;
3213 margin: 0;
3216 }
3214 }
3217
3215
3218 #content div.box-left div.form div.fields div.field div.select,#content div.box-left div.form div.fields div.field div.checkboxes,#content div.box-left div.form div.fields div.field div.radios,#content div.box-right div.form div.fields div.field div.select,#content div.box-right div.form div.fields div.field div.checkboxes,#content div.box-right div.form div.fields div.field div.radios
3216 #content div.box-left div.form div.fields div.field div.select,#content div.box-left div.form div.fields div.field div.checkboxes,#content div.box-left div.form div.fields div.field div.radios,#content div.box-right div.form div.fields div.field div.select,#content div.box-right div.form div.fields div.field div.checkboxes,#content div.box-right div.form div.fields div.field div.radios
3219 {
3217 {
3220 margin: 0 0 0 0px !important;
3218 margin: 0 0 0 0px !important;
3221 padding: 0;
3219 padding: 0;
3222 }
3220 }
3223
3221
3224 #content div.box div.form div.fields div.field div.select,#content div.box div.form div.fields div.field div.checkboxes,#content div.box div.form div.fields div.field div.radios
3222 #content div.box div.form div.fields div.field div.select,#content div.box div.form div.fields div.field div.checkboxes,#content div.box div.form div.fields div.field div.radios
3225 {
3223 {
3226 margin: 0 0 0 200px;
3224 margin: 0 0 0 200px;
3227 padding: 0;
3225 padding: 0;
3228 }
3226 }
3229
3227
3230 #content div.box div.form div.fields div.field div.select a:hover,#content div.box div.form div.fields div.field div.select a.ui-selectmenu:hover,#content div.box div.action a:hover
3228 #content div.box div.form div.fields div.field div.select a:hover,#content div.box div.form div.fields div.field div.select a.ui-selectmenu:hover,#content div.box div.action a:hover
3231 {
3229 {
3232 color: #000;
3230 color: #000;
3233 text-decoration: none;
3231 text-decoration: none;
3234 }
3232 }
3235
3233
3236 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus
3234 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus
3237 {
3235 {
3238 border: 1px solid #666;
3236 border: 1px solid #666;
3239 }
3237 }
3240
3238
3241 #content div.box div.form div.fields div.field div.checkboxes div.checkbox,#content div.box div.form div.fields div.field div.radios div.radio
3239 #content div.box div.form div.fields div.field div.checkboxes div.checkbox,#content div.box div.form div.fields div.field div.radios div.radio
3242 {
3240 {
3243 clear: both;
3241 clear: both;
3244 overflow: hidden;
3242 overflow: hidden;
3245 margin: 0;
3243 margin: 0;
3246 padding: 8px 0 2px;
3244 padding: 8px 0 2px;
3247 }
3245 }
3248
3246
3249 #content div.box div.form div.fields div.field div.checkboxes div.checkbox input,#content div.box div.form div.fields div.field div.radios div.radio input
3247 #content div.box div.form div.fields div.field div.checkboxes div.checkbox input,#content div.box div.form div.fields div.field div.radios div.radio input
3250 {
3248 {
3251 float: left;
3249 float: left;
3252 margin: 0;
3250 margin: 0;
3253 }
3251 }
3254
3252
3255 #content div.box div.form div.fields div.field div.checkboxes div.checkbox label,#content div.box div.form div.fields div.field div.radios div.radio label
3253 #content div.box div.form div.fields div.field div.checkboxes div.checkbox label,#content div.box div.form div.fields div.field div.radios div.radio label
3256 {
3254 {
3257 height: 1%;
3255 height: 1%;
3258 display: block;
3256 display: block;
3259 float: left;
3257 float: left;
3260 margin: 2px 0 0 4px;
3258 margin: 2px 0 0 4px;
3261 }
3259 }
3262
3260
3263 div.form div.fields div.field div.button input,#content div.box div.form div.fields div.buttons input,div.form div.fields div.buttons input,#content div.box div.action div.button input
3261 div.form div.fields div.field div.button input,#content div.box div.form div.fields div.buttons input,div.form div.fields div.buttons input,#content div.box div.action div.button input
3264 {
3262 {
3265 color: #000;
3263 color: #000;
3266 font-size: 11px;
3264 font-size: 11px;
3267 font-weight: 700;
3265 font-weight: 700;
3268 margin: 0;
3266 margin: 0;
3269 }
3267 }
3270
3268
3271 input.ui-button {
3269 input.ui-button {
3272 background: #e5e3e3 url("../images/button.png") repeat-x;
3270 background: #e5e3e3 url("../images/button.png") repeat-x;
3273 border-top: 1px solid #DDD;
3271 border-top: 1px solid #DDD;
3274 border-left: 1px solid #c6c6c6;
3272 border-left: 1px solid #c6c6c6;
3275 border-right: 1px solid #DDD;
3273 border-right: 1px solid #DDD;
3276 border-bottom: 1px solid #c6c6c6;
3274 border-bottom: 1px solid #c6c6c6;
3277 color: #515151 !important;
3275 color: #515151 !important;
3278 outline: none;
3276 outline: none;
3279 margin: 0;
3277 margin: 0;
3280 padding: 6px 12px;
3278 padding: 6px 12px;
3281 -webkit-border-radius: 4px 4px 4px 4px;
3279 -webkit-border-radius: 4px 4px 4px 4px;
3282 -khtml-border-radius: 4px 4px 4px 4px;
3280 -khtml-border-radius: 4px 4px 4px 4px;
3283 -moz-border-radius: 4px 4px 4px 4px;
3281 -moz-border-radius: 4px 4px 4px 4px;
3284 border-radius: 4px 4px 4px 4px;
3282 border-radius: 4px 4px 4px 4px;
3285 box-shadow: 0 1px 0 #ececec;
3283 box-shadow: 0 1px 0 #ececec;
3286 cursor: pointer;
3284 cursor: pointer;
3287 }
3285 }
3288
3286
3289 input.ui-button:hover {
3287 input.ui-button:hover {
3290 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3288 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3291 border-top: 1px solid #ccc;
3289 border-top: 1px solid #ccc;
3292 border-left: 1px solid #bebebe;
3290 border-left: 1px solid #bebebe;
3293 border-right: 1px solid #b1b1b1;
3291 border-right: 1px solid #b1b1b1;
3294 border-bottom: 1px solid #afafaf;
3292 border-bottom: 1px solid #afafaf;
3295 }
3293 }
3296
3294
3297 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight
3295 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight
3298 {
3296 {
3299 display: inline;
3297 display: inline;
3300 }
3298 }
3301
3299
3302 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons
3300 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons
3303 {
3301 {
3304 margin: 10px 0 0 200px;
3302 margin: 10px 0 0 200px;
3305 padding: 0;
3303 padding: 0;
3306 }
3304 }
3307
3305
3308 #content div.box-left div.form div.fields div.buttons,#content div.box-right div.form div.fields div.buttons,div.box-left div.form div.fields div.buttons,div.box-right div.form div.fields div.buttons
3306 #content div.box-left div.form div.fields div.buttons,#content div.box-right div.form div.fields div.buttons,div.box-left div.form div.fields div.buttons,div.box-right div.form div.fields div.buttons
3309 {
3307 {
3310 margin: 10px 0 0;
3308 margin: 10px 0 0;
3311 }
3309 }
3312
3310
3313 #content div.box table td.user,#content div.box table td.address {
3311 #content div.box table td.user,#content div.box table td.address {
3314 width: 10%;
3312 width: 10%;
3315 text-align: center;
3313 text-align: center;
3316 }
3314 }
3317
3315
3318 #content div.box div.action div.button,#login div.form div.fields div.field div.input div.link,#register div.form div.fields div.field div.input div.link
3316 #content div.box div.action div.button,#login div.form div.fields div.field div.input div.link,#register div.form div.fields div.field div.input div.link
3319 {
3317 {
3320 text-align: right;
3318 text-align: right;
3321 margin: 6px 0 0;
3319 margin: 6px 0 0;
3322 padding: 0;
3320 padding: 0;
3323 }
3321 }
3324
3322
3325 #content div.box div.action div.button input.ui-state-hover,#login div.form div.fields div.buttons input.ui-state-hover,#register div.form div.fields div.buttons input.ui-state-hover
3323 #content div.box div.action div.button input.ui-state-hover,#login div.form div.fields div.buttons input.ui-state-hover,#register div.form div.fields div.buttons input.ui-state-hover
3326 {
3324 {
3327 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3325 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3328 border-top: 1px solid #ccc;
3326 border-top: 1px solid #ccc;
3329 border-left: 1px solid #bebebe;
3327 border-left: 1px solid #bebebe;
3330 border-right: 1px solid #b1b1b1;
3328 border-right: 1px solid #b1b1b1;
3331 border-bottom: 1px solid #afafaf;
3329 border-bottom: 1px solid #afafaf;
3332 color: #515151;
3330 color: #515151;
3333 margin: 0;
3331 margin: 0;
3334 padding: 6px 12px;
3332 padding: 6px 12px;
3335 }
3333 }
3336
3334
3337 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results
3335 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results
3338 {
3336 {
3339 text-align: left;
3337 text-align: left;
3340 float: left;
3338 float: left;
3341 margin: 0;
3339 margin: 0;
3342 padding: 0;
3340 padding: 0;
3343 }
3341 }
3344
3342
3345 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span
3343 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span
3346 {
3344 {
3347 height: 1%;
3345 height: 1%;
3348 display: block;
3346 display: block;
3349 float: left;
3347 float: left;
3350 background: #ebebeb url("../images/pager.png") repeat-x;
3348 background: #ebebeb url("../images/pager.png") repeat-x;
3351 border-top: 1px solid #dedede;
3349 border-top: 1px solid #dedede;
3352 border-left: 1px solid #cfcfcf;
3350 border-left: 1px solid #cfcfcf;
3353 border-right: 1px solid #c4c4c4;
3351 border-right: 1px solid #c4c4c4;
3354 border-bottom: 1px solid #c4c4c4;
3352 border-bottom: 1px solid #c4c4c4;
3355 color: #4A4A4A;
3353 color: #4A4A4A;
3356 font-weight: 700;
3354 font-weight: 700;
3357 margin: 0;
3355 margin: 0;
3358 padding: 6px 8px;
3356 padding: 6px 8px;
3359 }
3357 }
3360
3358
3361 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled
3359 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled
3362 {
3360 {
3363 color: #B4B4B4;
3361 color: #B4B4B4;
3364 padding: 6px;
3362 padding: 6px;
3365 }
3363 }
3366
3364
3367 #login,#register {
3365 #login,#register {
3368 width: 520px;
3366 width: 520px;
3369 margin: 10% auto 0;
3367 margin: 10% auto 0;
3370 padding: 0;
3368 padding: 0;
3371 }
3369 }
3372
3370
3373 #login div.color,#register div.color {
3371 #login div.color,#register div.color {
3374 clear: both;
3372 clear: both;
3375 overflow: hidden;
3373 overflow: hidden;
3376 background: #FFF;
3374 background: #FFF;
3377 margin: 10px auto 0;
3375 margin: 10px auto 0;
3378 padding: 3px 3px 3px 0;
3376 padding: 3px 3px 3px 0;
3379 }
3377 }
3380
3378
3381 #login div.color a,#register div.color a {
3379 #login div.color a,#register div.color a {
3382 width: 20px;
3380 width: 20px;
3383 height: 20px;
3381 height: 20px;
3384 display: block;
3382 display: block;
3385 float: left;
3383 float: left;
3386 margin: 0 0 0 3px;
3384 margin: 0 0 0 3px;
3387 padding: 0;
3385 padding: 0;
3388 }
3386 }
3389
3387
3390 #login div.title h5,#register div.title h5 {
3388 #login div.title h5,#register div.title h5 {
3391 color: #fff;
3389 color: #fff;
3392 margin: 10px;
3390 margin: 10px;
3393 padding: 0;
3391 padding: 0;
3394 }
3392 }
3395
3393
3396 #login div.form div.fields div.field,#register div.form div.fields div.field
3394 #login div.form div.fields div.field,#register div.form div.fields div.field
3397 {
3395 {
3398 clear: both;
3396 clear: both;
3399 overflow: hidden;
3397 overflow: hidden;
3400 margin: 0;
3398 margin: 0;
3401 padding: 0 0 10px;
3399 padding: 0 0 10px;
3402 }
3400 }
3403
3401
3404 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message
3402 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message
3405 {
3403 {
3406 height: 1%;
3404 height: 1%;
3407 display: block;
3405 display: block;
3408 color: red;
3406 color: red;
3409 margin: 8px 0 0;
3407 margin: 8px 0 0;
3410 padding: 0;
3408 padding: 0;
3411 max-width: 320px;
3409 max-width: 320px;
3412 }
3410 }
3413
3411
3414 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label
3412 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label
3415 {
3413 {
3416 color: #000;
3414 color: #000;
3417 font-weight: 700;
3415 font-weight: 700;
3418 }
3416 }
3419
3417
3420 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input
3418 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input
3421 {
3419 {
3422 float: left;
3420 float: left;
3423 margin: 0;
3421 margin: 0;
3424 padding: 0;
3422 padding: 0;
3425 }
3423 }
3426
3424
3427 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox
3425 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox
3428 {
3426 {
3429 margin: 0 0 0 184px;
3427 margin: 0 0 0 184px;
3430 padding: 0;
3428 padding: 0;
3431 }
3429 }
3432
3430
3433 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label
3431 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label
3434 {
3432 {
3435 color: #565656;
3433 color: #565656;
3436 font-weight: 700;
3434 font-weight: 700;
3437 }
3435 }
3438
3436
3439 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input
3437 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input
3440 {
3438 {
3441 color: #000;
3439 color: #000;
3442 font-size: 1em;
3440 font-size: 1em;
3443 font-weight: 700;
3441 font-weight: 700;
3444 margin: 0;
3442 margin: 0;
3445 }
3443 }
3446
3444
3447 #changeset_content .container .wrapper,#graph_content .container .wrapper
3445 #changeset_content .container .wrapper,#graph_content .container .wrapper
3448 {
3446 {
3449 width: 600px;
3447 width: 600px;
3450 }
3448 }
3451
3449
3452 #changeset_content .container .left,#graph_content .container .left {
3450 #changeset_content .container .left,#graph_content .container .left {
3453 float: left;
3451 float: left;
3454 width: 70%;
3452 width: 70%;
3455 padding-left: 5px;
3453 padding-left: 5px;
3456 }
3454 }
3457
3455
3458 #changeset_content .container .left .date,.ac .match {
3456 #changeset_content .container .left .date,.ac .match {
3459 font-weight: 700;
3457 font-weight: 700;
3460 padding-top: 5px;
3458 padding-top: 5px;
3461 padding-bottom: 5px;
3459 padding-bottom: 5px;
3462 }
3460 }
3463
3461
3464 div#legend_container table td,div#legend_choices table td {
3462 div#legend_container table td,div#legend_choices table td {
3465 border: none !important;
3463 border: none !important;
3466 height: 20px !important;
3464 height: 20px !important;
3467 padding: 0 !important;
3465 padding: 0 !important;
3468 }
3466 }
3469
3467
3470 .q_filter_box {
3468 .q_filter_box {
3471 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3469 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3472 -webkit-border-radius: 4px;
3470 -webkit-border-radius: 4px;
3473 -moz-border-radius: 4px;
3471 -moz-border-radius: 4px;
3474 border-radius: 4px;
3472 border-radius: 4px;
3475 border: 0 none;
3473 border: 0 none;
3476 color: #AAAAAA;
3474 color: #AAAAAA;
3477 margin-bottom: -4px;
3475 margin-bottom: -4px;
3478 margin-top: -4px;
3476 margin-top: -4px;
3479 padding-left: 3px;
3477 padding-left: 3px;
3480 }
3478 }
3481
3479
3482 #node_filter {
3480 #node_filter {
3483 border: 0px solid #545454;
3481 border: 0px solid #545454;
3484 color: #AAAAAA;
3482 color: #AAAAAA;
3485 padding-left: 3px;
3483 padding-left: 3px;
3486 }
3484 }
3487
3485
3488 /*README STYLE*/
3486 /*README STYLE*/
3489
3487
3490 div.readme {
3488 div.readme {
3491 padding:0px;
3489 padding:0px;
3492 }
3490 }
3493
3491
3494 div.readme h2 {
3492 div.readme h2 {
3495 font-weight: normal;
3493 font-weight: normal;
3496 }
3494 }
3497
3495
3498 div.readme .readme_box {
3496 div.readme .readme_box {
3499 background-color: #fafafa;
3497 background-color: #fafafa;
3500 }
3498 }
3501
3499
3502 div.readme .readme_box {
3500 div.readme .readme_box {
3503 clear:both;
3501 clear:both;
3504 overflow:hidden;
3502 overflow:hidden;
3505 margin:0;
3503 margin:0;
3506 padding:0 20px 10px;
3504 padding:0 20px 10px;
3507 }
3505 }
3508
3506
3509 div.readme .readme_box h1, div.readme .readme_box h2, div.readme .readme_box h3, div.readme .readme_box h4, div.readme .readme_box h5, div.readme .readme_box h6 {
3507 div.readme .readme_box h1, div.readme .readme_box h2, div.readme .readme_box h3, div.readme .readme_box h4, div.readme .readme_box h5, div.readme .readme_box h6 {
3510 border-bottom: 0 !important;
3508 border-bottom: 0 !important;
3511 margin: 0 !important;
3509 margin: 0 !important;
3512 padding: 0 !important;
3510 padding: 0 !important;
3513 line-height: 1.5em !important;
3511 line-height: 1.5em !important;
3514 }
3512 }
3515
3513
3516
3514
3517 div.readme .readme_box h1:first-child {
3515 div.readme .readme_box h1:first-child {
3518 padding-top: .25em !important;
3516 padding-top: .25em !important;
3519 }
3517 }
3520
3518
3521 div.readme .readme_box h2, div.readme .readme_box h3 {
3519 div.readme .readme_box h2, div.readme .readme_box h3 {
3522 margin: 1em 0 !important;
3520 margin: 1em 0 !important;
3523 }
3521 }
3524
3522
3525 div.readme .readme_box h2 {
3523 div.readme .readme_box h2 {
3526 margin-top: 1.5em !important;
3524 margin-top: 1.5em !important;
3527 border-top: 4px solid #e0e0e0 !important;
3525 border-top: 4px solid #e0e0e0 !important;
3528 padding-top: .5em !important;
3526 padding-top: .5em !important;
3529 }
3527 }
3530
3528
3531 div.readme .readme_box p {
3529 div.readme .readme_box p {
3532 color: black !important;
3530 color: black !important;
3533 margin: 1em 0 !important;
3531 margin: 1em 0 !important;
3534 line-height: 1.5em !important;
3532 line-height: 1.5em !important;
3535 }
3533 }
3536
3534
3537 div.readme .readme_box ul {
3535 div.readme .readme_box ul {
3538 list-style: disc !important;
3536 list-style: disc !important;
3539 margin: 1em 0 1em 2em !important;
3537 margin: 1em 0 1em 2em !important;
3540 }
3538 }
3541
3539
3542 div.readme .readme_box ol {
3540 div.readme .readme_box ol {
3543 list-style: decimal;
3541 list-style: decimal;
3544 margin: 1em 0 1em 2em !important;
3542 margin: 1em 0 1em 2em !important;
3545 }
3543 }
3546
3544
3547 div.readme .readme_box pre, code {
3545 div.readme .readme_box pre, code {
3548 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3546 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3549 }
3547 }
3550
3548
3551 div.readme .readme_box code {
3549 div.readme .readme_box code {
3552 font-size: 12px !important;
3550 font-size: 12px !important;
3553 background-color: ghostWhite !important;
3551 background-color: ghostWhite !important;
3554 color: #444 !important;
3552 color: #444 !important;
3555 padding: 0 .2em !important;
3553 padding: 0 .2em !important;
3556 border: 1px solid #dedede !important;
3554 border: 1px solid #dedede !important;
3557 }
3555 }
3558
3556
3559 div.readme .readme_box pre code {
3557 div.readme .readme_box pre code {
3560 padding: 0 !important;
3558 padding: 0 !important;
3561 font-size: 12px !important;
3559 font-size: 12px !important;
3562 background-color: #eee !important;
3560 background-color: #eee !important;
3563 border: none !important;
3561 border: none !important;
3564 }
3562 }
3565
3563
3566 div.readme .readme_box pre {
3564 div.readme .readme_box pre {
3567 margin: 1em 0;
3565 margin: 1em 0;
3568 font-size: 12px;
3566 font-size: 12px;
3569 background-color: #eee;
3567 background-color: #eee;
3570 border: 1px solid #ddd;
3568 border: 1px solid #ddd;
3571 padding: 5px;
3569 padding: 5px;
3572 color: #444;
3570 color: #444;
3573 overflow: auto;
3571 overflow: auto;
3574 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3572 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3575 -webkit-border-radius: 3px;
3573 -webkit-border-radius: 3px;
3576 -moz-border-radius: 3px;
3574 -moz-border-radius: 3px;
3577 border-radius: 3px;
3575 border-radius: 3px;
3578 }
3576 }
3579
3577
3580
3578
3581 /** RST STYLE **/
3579 /** RST STYLE **/
3582
3580
3583
3581
3584 div.rst-block {
3582 div.rst-block {
3585 padding:0px;
3583 padding:0px;
3586 }
3584 }
3587
3585
3588 div.rst-block h2 {
3586 div.rst-block h2 {
3589 font-weight: normal;
3587 font-weight: normal;
3590 }
3588 }
3591
3589
3592 div.rst-block {
3590 div.rst-block {
3593 background-color: #fafafa;
3591 background-color: #fafafa;
3594 }
3592 }
3595
3593
3596 div.rst-block {
3594 div.rst-block {
3597 clear:both;
3595 clear:both;
3598 overflow:hidden;
3596 overflow:hidden;
3599 margin:0;
3597 margin:0;
3600 padding:0 20px 10px;
3598 padding:0 20px 10px;
3601 }
3599 }
3602
3600
3603 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
3601 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
3604 border-bottom: 0 !important;
3602 border-bottom: 0 !important;
3605 margin: 0 !important;
3603 margin: 0 !important;
3606 padding: 0 !important;
3604 padding: 0 !important;
3607 line-height: 1.5em !important;
3605 line-height: 1.5em !important;
3608 }
3606 }
3609
3607
3610
3608
3611 div.rst-block h1:first-child {
3609 div.rst-block h1:first-child {
3612 padding-top: .25em !important;
3610 padding-top: .25em !important;
3613 }
3611 }
3614
3612
3615 div.rst-block h2, div.rst-block h3 {
3613 div.rst-block h2, div.rst-block h3 {
3616 margin: 1em 0 !important;
3614 margin: 1em 0 !important;
3617 }
3615 }
3618
3616
3619 div.rst-block h2 {
3617 div.rst-block h2 {
3620 margin-top: 1.5em !important;
3618 margin-top: 1.5em !important;
3621 border-top: 4px solid #e0e0e0 !important;
3619 border-top: 4px solid #e0e0e0 !important;
3622 padding-top: .5em !important;
3620 padding-top: .5em !important;
3623 }
3621 }
3624
3622
3625 div.rst-block p {
3623 div.rst-block p {
3626 color: black !important;
3624 color: black !important;
3627 margin: 1em 0 !important;
3625 margin: 1em 0 !important;
3628 line-height: 1.5em !important;
3626 line-height: 1.5em !important;
3629 }
3627 }
3630
3628
3631 div.rst-block ul {
3629 div.rst-block ul {
3632 list-style: disc !important;
3630 list-style: disc !important;
3633 margin: 1em 0 1em 2em !important;
3631 margin: 1em 0 1em 2em !important;
3634 }
3632 }
3635
3633
3636 div.rst-block ol {
3634 div.rst-block ol {
3637 list-style: decimal;
3635 list-style: decimal;
3638 margin: 1em 0 1em 2em !important;
3636 margin: 1em 0 1em 2em !important;
3639 }
3637 }
3640
3638
3641 div.rst-block pre, code {
3639 div.rst-block pre, code {
3642 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3640 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3643 }
3641 }
3644
3642
3645 div.rst-block code {
3643 div.rst-block code {
3646 font-size: 12px !important;
3644 font-size: 12px !important;
3647 background-color: ghostWhite !important;
3645 background-color: ghostWhite !important;
3648 color: #444 !important;
3646 color: #444 !important;
3649 padding: 0 .2em !important;
3647 padding: 0 .2em !important;
3650 border: 1px solid #dedede !important;
3648 border: 1px solid #dedede !important;
3651 }
3649 }
3652
3650
3653 div.rst-block pre code {
3651 div.rst-block pre code {
3654 padding: 0 !important;
3652 padding: 0 !important;
3655 font-size: 12px !important;
3653 font-size: 12px !important;
3656 background-color: #eee !important;
3654 background-color: #eee !important;
3657 border: none !important;
3655 border: none !important;
3658 }
3656 }
3659
3657
3660 div.rst-block pre {
3658 div.rst-block pre {
3661 margin: 1em 0;
3659 margin: 1em 0;
3662 font-size: 12px;
3660 font-size: 12px;
3663 background-color: #eee;
3661 background-color: #eee;
3664 border: 1px solid #ddd;
3662 border: 1px solid #ddd;
3665 padding: 5px;
3663 padding: 5px;
3666 color: #444;
3664 color: #444;
3667 overflow: auto;
3665 overflow: auto;
3668 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3666 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3669 -webkit-border-radius: 3px;
3667 -webkit-border-radius: 3px;
3670 -moz-border-radius: 3px;
3668 -moz-border-radius: 3px;
3671 border-radius: 3px;
3669 border-radius: 3px;
3672 }
3670 }
3673
3671
3674
3672
3675 /** comment main **/
3673 /** comment main **/
3676 .comments {
3674 .comments {
3677 padding:10px 20px;
3675 padding:10px 20px;
3678 }
3676 }
3679
3677
3680 .comments .comment {
3678 .comments .comment {
3681 border: 1px solid #ddd;
3679 border: 1px solid #ddd;
3682 margin-top: 10px;
3680 margin-top: 10px;
3683 -webkit-border-radius: 4px;
3681 -webkit-border-radius: 4px;
3684 -moz-border-radius: 4px;
3682 -moz-border-radius: 4px;
3685 border-radius: 4px;
3683 border-radius: 4px;
3686 }
3684 }
3687
3685
3688 .comments .comment .meta {
3686 .comments .comment .meta {
3689 background: #f8f8f8;
3687 background: #f8f8f8;
3690 padding: 6px;
3688 padding: 6px;
3691 border-bottom: 1px solid #ddd;
3689 border-bottom: 1px solid #ddd;
3692 }
3690 }
3693
3691
3694 .comments .comment .meta img {
3692 .comments .comment .meta img {
3695 vertical-align: middle;
3693 vertical-align: middle;
3696 }
3694 }
3697
3695
3698 .comments .comment .meta .user {
3696 .comments .comment .meta .user {
3699 font-weight: bold;
3697 font-weight: bold;
3700 }
3698 }
3701
3699
3702 .comments .comment .meta .date {
3700 .comments .comment .meta .date {
3703 float: right;
3701 float: right;
3704 }
3702 }
3705
3703
3706 .comments .comment .text {
3704 .comments .comment .text {
3707 padding: 8px 6px 6px 14px;
3705 padding: 8px 6px 6px 14px;
3708 background-color: #FAFAFA;
3706 background-color: #FAFAFA;
3709 }
3707 }
3710
3708
3711 .comments .comments-number{
3709 .comments .comments-number{
3712 padding:0px 0px 10px 0px;
3710 padding:0px 0px 10px 0px;
3713 font-weight: bold;
3711 font-weight: bold;
3714 color: #666;
3712 color: #666;
3715 font-size: 16px;
3713 font-size: 16px;
3716 }
3714 }
3717
3715
3718 /** comment form **/
3716 /** comment form **/
3719
3717
3720 .comment-form .clearfix{
3718 .comment-form .clearfix{
3721 background: #EEE;
3719 background: #EEE;
3722 -webkit-border-radius: 4px;
3720 -webkit-border-radius: 4px;
3723 -moz-border-radius: 4px;
3721 -moz-border-radius: 4px;
3724 border-radius: 4px;
3722 border-radius: 4px;
3725 padding: 10px;
3723 padding: 10px;
3726 }
3724 }
3727
3725
3728 div.comment-form {
3726 div.comment-form {
3729 margin-top: 20px;
3727 margin-top: 20px;
3730 }
3728 }
3731
3729
3732 .comment-form strong {
3730 .comment-form strong {
3733 display: block;
3731 display: block;
3734 margin-bottom: 15px;
3732 margin-bottom: 15px;
3735 }
3733 }
3736
3734
3737 .comment-form textarea {
3735 .comment-form textarea {
3738 width: 100%;
3736 width: 100%;
3739 height: 100px;
3737 height: 100px;
3740 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3738 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3741 }
3739 }
3742
3740
3743 form.comment-form {
3741 form.comment-form {
3744 margin-top: 10px;
3742 margin-top: 10px;
3745 margin-left: 10px;
3743 margin-left: 10px;
3746 }
3744 }
3747
3745
3748 .comment-form-submit {
3746 .comment-form-submit {
3749 margin-top: 5px;
3747 margin-top: 5px;
3750 margin-left: 525px;
3748 margin-left: 525px;
3751 }
3749 }
3752
3750
3753 .file-comments {
3751 .file-comments {
3754 display: none;
3752 display: none;
3755 }
3753 }
3756
3754
3757 .comment-form .comment {
3755 .comment-form .comment {
3758 margin-left: 10px;
3756 margin-left: 10px;
3759 }
3757 }
3760
3758
3761 .comment-form .comment-help{
3759 .comment-form .comment-help{
3762 padding: 0px 0px 5px 0px;
3760 padding: 0px 0px 5px 0px;
3763 color: #666;
3761 color: #666;
3764 }
3762 }
3765
3763
3766 .comment-form .comment-button{
3764 .comment-form .comment-button{
3767 padding-top:5px;
3765 padding-top:5px;
3768 }
3766 }
3769
3767
3770 .add-another-button {
3768 .add-another-button {
3771 margin-left: 10px;
3769 margin-left: 10px;
3772 margin-top: 10px;
3770 margin-top: 10px;
3773 margin-bottom: 10px;
3771 margin-bottom: 10px;
3774 }
3772 }
3775
3773
3776 .comment .buttons {
3774 .comment .buttons {
3777 position: absolute;
3775 position: absolute;
3778 right:40px;
3776 right:40px;
3779 }
3777 }
3780
3778
3781
3779
3782 .show-inline-comments{
3780 .show-inline-comments{
3783 position: relative;
3781 position: relative;
3784 top:1px
3782 top:1px
3785 }
3783 }
3786
3784
3787 /** comment inline form **/
3785 /** comment inline form **/
3788
3786
3789 .comment-inline-form .clearfix{
3787 .comment-inline-form .clearfix{
3790 background: #EEE;
3788 background: #EEE;
3791 -webkit-border-radius: 4px;
3789 -webkit-border-radius: 4px;
3792 -moz-border-radius: 4px;
3790 -moz-border-radius: 4px;
3793 border-radius: 4px;
3791 border-radius: 4px;
3794 padding: 5px;
3792 padding: 5px;
3795 }
3793 }
3796
3794
3797 div.comment-inline-form {
3795 div.comment-inline-form {
3798 margin-top: 5px;
3796 margin-top: 5px;
3799 padding:2px 6px 8px 6px;
3797 padding:2px 6px 8px 6px;
3800 }
3798 }
3801
3799
3802 .comment-inline-form strong {
3800 .comment-inline-form strong {
3803 display: block;
3801 display: block;
3804 margin-bottom: 15px;
3802 margin-bottom: 15px;
3805 }
3803 }
3806
3804
3807 .comment-inline-form textarea {
3805 .comment-inline-form textarea {
3808 width: 100%;
3806 width: 100%;
3809 height: 100px;
3807 height: 100px;
3810 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3808 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3811 }
3809 }
3812
3810
3813 form.comment-inline-form {
3811 form.comment-inline-form {
3814 margin-top: 10px;
3812 margin-top: 10px;
3815 margin-left: 10px;
3813 margin-left: 10px;
3816 }
3814 }
3817
3815
3818 .comment-inline-form-submit {
3816 .comment-inline-form-submit {
3819 margin-top: 5px;
3817 margin-top: 5px;
3820 margin-left: 525px;
3818 margin-left: 525px;
3821 }
3819 }
3822
3820
3823 .file-comments {
3821 .file-comments {
3824 display: none;
3822 display: none;
3825 }
3823 }
3826
3824
3827 .comment-inline-form .comment {
3825 .comment-inline-form .comment {
3828 margin-left: 10px;
3826 margin-left: 10px;
3829 }
3827 }
3830
3828
3831 .comment-inline-form .comment-help{
3829 .comment-inline-form .comment-help{
3832 padding: 0px 0px 2px 0px;
3830 padding: 0px 0px 2px 0px;
3833 color: #666666;
3831 color: #666666;
3834 font-size: 10px;
3832 font-size: 10px;
3835 }
3833 }
3836
3834
3837 .comment-inline-form .comment-button{
3835 .comment-inline-form .comment-button{
3838 padding-top:5px;
3836 padding-top:5px;
3839 }
3837 }
3840
3838
3841 /** comment inline **/
3839 /** comment inline **/
3842 .inline-comments {
3840 .inline-comments {
3843 padding:10px 20px;
3841 padding:10px 20px;
3844 }
3842 }
3845
3843
3846 .inline-comments div.rst-block {
3844 .inline-comments div.rst-block {
3847 clear:both;
3845 clear:both;
3848 overflow:hidden;
3846 overflow:hidden;
3849 margin:0;
3847 margin:0;
3850 padding:0 20px 0px;
3848 padding:0 20px 0px;
3851 }
3849 }
3852 .inline-comments .comment {
3850 .inline-comments .comment {
3853 border: 1px solid #ddd;
3851 border: 1px solid #ddd;
3854 -webkit-border-radius: 4px;
3852 -webkit-border-radius: 4px;
3855 -moz-border-radius: 4px;
3853 -moz-border-radius: 4px;
3856 border-radius: 4px;
3854 border-radius: 4px;
3857 margin: 3px 3px 5px 5px;
3855 margin: 3px 3px 5px 5px;
3858 background-color: #FAFAFA;
3856 background-color: #FAFAFA;
3859 }
3857 }
3860 .inline-comments .comment-wrapp{
3858 .inline-comments .comment-wrapp{
3861 padding:1px;
3859 padding:1px;
3862 }
3860 }
3863 .inline-comments .comment .meta {
3861 .inline-comments .comment .meta {
3864 background: #f8f8f8;
3862 background: #f8f8f8;
3865 padding: 6px;
3863 padding: 6px;
3866 border-bottom: 1px solid #ddd;
3864 border-bottom: 1px solid #ddd;
3867 }
3865 }
3868
3866
3869 .inline-comments .comment .meta img {
3867 .inline-comments .comment .meta img {
3870 vertical-align: middle;
3868 vertical-align: middle;
3871 }
3869 }
3872
3870
3873 .inline-comments .comment .meta .user {
3871 .inline-comments .comment .meta .user {
3874 font-weight: bold;
3872 font-weight: bold;
3875 }
3873 }
3876
3874
3877 .inline-comments .comment .meta .date {
3875 .inline-comments .comment .meta .date {
3878 float: right;
3876 float: right;
3879 }
3877 }
3880
3878
3881 .inline-comments .comment .text {
3879 .inline-comments .comment .text {
3882 padding: 8px 6px 6px 14px;
3880 padding: 8px 6px 6px 14px;
3883 background-color: #FAFAFA;
3881 background-color: #FAFAFA;
3884 }
3882 }
3885
3883
3886 .inline-comments .comments-number{
3884 .inline-comments .comments-number{
3887 padding:0px 0px 10px 0px;
3885 padding:0px 0px 10px 0px;
3888 font-weight: bold;
3886 font-weight: bold;
3889 color: #666;
3887 color: #666;
3890 font-size: 16px;
3888 font-size: 16px;
3891 }
3889 }
3892 .inline-comments-button .add-comment{
3890 .inline-comments-button .add-comment{
3893 margin:10px 5px !important;
3891 margin:10px 5px !important;
3894 }
3892 }
3895 .notifications{
3893 .notifications{
3896 width:22px;
3894 width:22px;
3897 padding:2px;
3895 padding:2px;
3898 float:right;
3896 float:right;
3899 -webkit-border-radius: 4px;
3897 -webkit-border-radius: 4px;
3900 -moz-border-radius: 4px;
3898 -moz-border-radius: 4px;
3901 border-radius: 4px;
3899 border-radius: 4px;
3902 text-align: center;
3900 text-align: center;
3903 margin: 0px -10px 0px 5px;
3901 margin: 0px -10px 0px 5px;
3904 background-color: #DEDEDE;
3902 background-color: #DEDEDE;
3905 }
3903 }
3906 .notifications a{
3904 .notifications a{
3907 color:#888 !important;
3905 color:#888 !important;
3908 display: block;
3906 display: block;
3909 font-size: 10px
3907 font-size: 10px
3910 }
3908 }
3911 .notifications a:hover{
3909 .notifications a:hover{
3912 text-decoration: none !important;
3910 text-decoration: none !important;
3913 }
3911 }
3914 .notification-header{
3912 .notification-header{
3915 padding-top:6px;
3913 padding-top:6px;
3916 }
3914 }
3917 .notification-header .desc{
3915 .notification-header .desc{
3918 font-size: 16px;
3916 font-size: 16px;
3919 height: 24px;
3917 height: 24px;
3920 float: left
3918 float: left
3921 }
3919 }
3922 .notification-list .container.unread{
3920 .notification-list .container.unread{
3923
3921
3924 }
3922 }
3925 .notification-header .gravatar{
3923 .notification-header .gravatar{
3926
3924
3927 }
3925 }
3928 .notification-header .desc.unread{
3926 .notification-header .desc.unread{
3929 font-weight: bold;
3927 font-weight: bold;
3930 font-size: 17px;
3928 font-size: 17px;
3931 }
3929 }
3932
3930
3933 .notification-header .delete-notifications{
3931 .notification-header .delete-notifications{
3934 float: right;
3932 float: right;
3935 padding-top: 8px;
3933 padding-top: 8px;
3936 cursor: pointer;
3934 cursor: pointer;
3937 }
3935 }
3938 .notification-subject{
3936 .notification-subject{
3939 clear:both;
3937 clear:both;
3940 border-bottom: 1px solid #eee;
3938 border-bottom: 1px solid #eee;
3941 padding:5px 0px 5px 38px;
3939 padding:5px 0px 5px 38px;
3942 }
3940 }
3943
3941
3944
3942
3945 /*****************************************************************************
3943 /*****************************************************************************
3946 DIFFS CSS
3944 DIFFS CSS
3947 ******************************************************************************/
3945 ******************************************************************************/
3948
3946
3949 div.diffblock {
3947 div.diffblock {
3950 overflow: auto;
3948 overflow: auto;
3951 padding: 0px;
3949 padding: 0px;
3952 border: 1px solid #ccc;
3950 border: 1px solid #ccc;
3953 background: #f8f8f8;
3951 background: #f8f8f8;
3954 font-size: 100%;
3952 font-size: 100%;
3955 line-height: 100%;
3953 line-height: 100%;
3956 /* new */
3954 /* new */
3957 line-height: 125%;
3955 line-height: 125%;
3958 -webkit-border-radius: 6px 6px 0px 0px;
3956 -webkit-border-radius: 6px 6px 0px 0px;
3959 -moz-border-radius: 6px 6px 0px 0px;
3957 -moz-border-radius: 6px 6px 0px 0px;
3960 border-radius: 6px 6px 0px 0px;
3958 border-radius: 6px 6px 0px 0px;
3961 }
3959 }
3962 div.diffblock.margined{
3960 div.diffblock.margined{
3963 margin: 0px 20px 0px 20px;
3961 margin: 0px 20px 0px 20px;
3964 }
3962 }
3965 div.diffblock .code-header{
3963 div.diffblock .code-header{
3966 border-bottom: 1px solid #CCCCCC;
3964 border-bottom: 1px solid #CCCCCC;
3967 background: #EEEEEE;
3965 background: #EEEEEE;
3968 padding:10px 0 10px 0;
3966 padding:10px 0 10px 0;
3969 height: 14px;
3967 height: 14px;
3970 }
3968 }
3971 div.diffblock .code-header.cv{
3969 div.diffblock .code-header.cv{
3972 height: 34px;
3970 height: 34px;
3973 }
3971 }
3974 div.diffblock .code-header-title{
3972 div.diffblock .code-header-title{
3975 padding: 0px 0px 10px 5px !important;
3973 padding: 0px 0px 10px 5px !important;
3976 margin: 0 !important;
3974 margin: 0 !important;
3977 }
3975 }
3978
3976
3979 div.diffblock .code-header .date{
3977 div.diffblock .code-header .date{
3980 float:left;
3978 float:left;
3981 text-transform: uppercase;
3979 text-transform: uppercase;
3982 }
3980 }
3983 div.diffblock .code-header div{
3981 div.diffblock .code-header div{
3984 margin-left:4px;
3982 margin-left:4px;
3985 font-weight: bold;
3983 font-weight: bold;
3986 font-size: 14px;
3984 font-size: 14px;
3987 }
3985 }
3988 div.diffblock .code-body{
3986 div.diffblock .code-body{
3989 background: #FFFFFF;
3987 background: #FFFFFF;
3990 }
3988 }
3991 div.diffblock pre.raw{
3989 div.diffblock pre.raw{
3992 background: #FFFFFF;
3990 background: #FFFFFF;
3993 color:#000000;
3991 color:#000000;
3994 }
3992 }
3995 table.code-difftable{
3993 table.code-difftable{
3996 border-collapse: collapse;
3994 border-collapse: collapse;
3997 width: 99%;
3995 width: 99%;
3998 }
3996 }
3999 table.code-difftable td {
3997 table.code-difftable td {
4000 padding: 0 !important;
3998 padding: 0 !important;
4001 background: none !important;
3999 background: none !important;
4002 border:0 !important;
4000 border:0 !important;
4003 vertical-align: none !important;
4001 vertical-align: none !important;
4004 }
4002 }
4005 table.code-difftable .context{
4003 table.code-difftable .context{
4006 background:none repeat scroll 0 0 #DDE7EF;
4004 background:none repeat scroll 0 0 #DDE7EF;
4007 }
4005 }
4008 table.code-difftable .add{
4006 table.code-difftable .add{
4009 background:none repeat scroll 0 0 #DDFFDD;
4007 background:none repeat scroll 0 0 #DDFFDD;
4010 }
4008 }
4011 table.code-difftable .add ins{
4009 table.code-difftable .add ins{
4012 background:none repeat scroll 0 0 #AAFFAA;
4010 background:none repeat scroll 0 0 #AAFFAA;
4013 text-decoration:none;
4011 text-decoration:none;
4014 }
4012 }
4015 table.code-difftable .del{
4013 table.code-difftable .del{
4016 background:none repeat scroll 0 0 #FFDDDD;
4014 background:none repeat scroll 0 0 #FFDDDD;
4017 }
4015 }
4018 table.code-difftable .del del{
4016 table.code-difftable .del del{
4019 background:none repeat scroll 0 0 #FFAAAA;
4017 background:none repeat scroll 0 0 #FFAAAA;
4020 text-decoration:none;
4018 text-decoration:none;
4021 }
4019 }
4022
4020
4023 /** LINE NUMBERS **/
4021 /** LINE NUMBERS **/
4024 table.code-difftable .lineno{
4022 table.code-difftable .lineno{
4025
4023
4026 padding-left:2px;
4024 padding-left:2px;
4027 padding-right:2px;
4025 padding-right:2px;
4028 text-align:right;
4026 text-align:right;
4029 width:32px;
4027 width:32px;
4030 -moz-user-select:none;
4028 -moz-user-select:none;
4031 -webkit-user-select: none;
4029 -webkit-user-select: none;
4032 border-right: 1px solid #CCC !important;
4030 border-right: 1px solid #CCC !important;
4033 border-left: 0px solid #CCC !important;
4031 border-left: 0px solid #CCC !important;
4034 border-top: 0px solid #CCC !important;
4032 border-top: 0px solid #CCC !important;
4035 border-bottom: none !important;
4033 border-bottom: none !important;
4036 vertical-align: middle !important;
4034 vertical-align: middle !important;
4037
4035
4038 }
4036 }
4039 table.code-difftable .lineno.new {
4037 table.code-difftable .lineno.new {
4040 }
4038 }
4041 table.code-difftable .lineno.old {
4039 table.code-difftable .lineno.old {
4042 }
4040 }
4043 table.code-difftable .lineno a{
4041 table.code-difftable .lineno a{
4044 color:#747474 !important;
4042 color:#747474 !important;
4045 font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4043 font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4046 letter-spacing:-1px;
4044 letter-spacing:-1px;
4047 text-align:right;
4045 text-align:right;
4048 padding-right: 2px;
4046 padding-right: 2px;
4049 cursor: pointer;
4047 cursor: pointer;
4050 display: block;
4048 display: block;
4051 width: 32px;
4049 width: 32px;
4052 }
4050 }
4053
4051
4054 table.code-difftable .lineno-inline{
4052 table.code-difftable .lineno-inline{
4055 background:none repeat scroll 0 0 #FFF !important;
4053 background:none repeat scroll 0 0 #FFF !important;
4056 padding-left:2px;
4054 padding-left:2px;
4057 padding-right:2px;
4055 padding-right:2px;
4058 text-align:right;
4056 text-align:right;
4059 width:30px;
4057 width:30px;
4060 -moz-user-select:none;
4058 -moz-user-select:none;
4061 -webkit-user-select: none;
4059 -webkit-user-select: none;
4062 }
4060 }
4063
4061
4064 /** CODE **/
4062 /** CODE **/
4065 table.code-difftable .code {
4063 table.code-difftable .code {
4066 display: block;
4064 display: block;
4067 width: 100%;
4065 width: 100%;
4068 }
4066 }
4069 table.code-difftable .code td{
4067 table.code-difftable .code td{
4070 margin:0;
4068 margin:0;
4071 padding:0;
4069 padding:0;
4072 }
4070 }
4073 table.code-difftable .code pre{
4071 table.code-difftable .code pre{
4074 margin:0;
4072 margin:0;
4075 padding:0;
4073 padding:0;
4076 height: 17px;
4074 height: 17px;
4077 line-height: 17px;
4075 line-height: 17px;
4078 }
4076 }
4079
4077
4080
4078
4081 .diffblock.margined.comm .line .code:hover{
4079 .diffblock.margined.comm .line .code:hover{
4082 background-color:#FFFFCC !important;
4080 background-color:#FFFFCC !important;
4083 cursor: pointer !important;
4081 cursor: pointer !important;
4084 background-image:url("../images/icons/comment_add.png") !important;
4082 background-image:url("../images/icons/comment_add.png") !important;
4085 background-repeat:no-repeat !important;
4083 background-repeat:no-repeat !important;
4086 background-position: right !important;
4084 background-position: right !important;
4087 background-position: 0% 50% !important;
4085 background-position: 0% 50% !important;
4088 }
4086 }
4089 .diffblock.margined.comm .line .code.no-comment:hover{
4087 .diffblock.margined.comm .line .code.no-comment:hover{
4090 background-image: none !important;
4088 background-image: none !important;
4091 cursor: auto !important;
4089 cursor: auto !important;
4092 background-color: inherit !important;
4090 background-color: inherit !important;
4093
4091
4094 } No newline at end of file
4092 }
@@ -1,188 +1,188 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2
2
3 <%inherit file="/base/base.html"/>
3 <%inherit file="/base/base.html"/>
4
4
5 <%def name="title()">
5 <%def name="title()">
6 ${c.repo_name} ${_('Changelog')} - ${c.rhodecode_name}
6 ${c.repo_name} ${_('Changelog')} - ${c.rhodecode_name}
7 </%def>
7 </%def>
8
8
9 <%def name="breadcrumbs_links()">
9 <%def name="breadcrumbs_links()">
10 ${h.link_to(u'Home',h.url('/'))}
10 ${h.link_to(u'Home',h.url('/'))}
11 &raquo;
11 &raquo;
12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
13 &raquo;
13 &raquo;
14 ${_('Changelog')} - ${_('showing ')} ${c.size if c.size <= c.total_cs else c.total_cs} ${_('out of')} ${c.total_cs} ${_('revisions')}
14 ${_('Changelog')} - ${_('showing ')} ${c.size if c.size <= c.total_cs else c.total_cs} ${_('out of')} ${c.total_cs} ${_('revisions')}
15 </%def>
15 </%def>
16
16
17 <%def name="page_nav()">
17 <%def name="page_nav()">
18 ${self.menu('changelog')}
18 ${self.menu('changelog')}
19 </%def>
19 </%def>
20
20
21 <%def name="main()">
21 <%def name="main()">
22 <div class="box">
22 <div class="box">
23 <!-- box / title -->
23 <!-- box / title -->
24 <div class="title">
24 <div class="title">
25 ${self.breadcrumbs()}
25 ${self.breadcrumbs()}
26 </div>
26 </div>
27 <div class="table">
27 <div class="table">
28 % if c.pagination:
28 % if c.pagination:
29 <div id="graph">
29 <div id="graph">
30 <div id="graph_nodes">
30 <div id="graph_nodes">
31 <canvas id="graph_canvas"></canvas>
31 <canvas id="graph_canvas"></canvas>
32 </div>
32 </div>
33 <div id="graph_content">
33 <div id="graph_content">
34 <div class="container_header">
34 <div class="container_header">
35 ${h.form(h.url.current(),method='get')}
35 ${h.form(h.url.current(),method='get')}
36 <div class="info_box" style="float:left">
36 <div class="info_box" style="float:left">
37 ${h.submit('set',_('Show'),class_="ui-btn")}
37 ${h.submit('set',_('Show'),class_="ui-btn")}
38 ${h.text('size',size=1,value=c.size)}
38 ${h.text('size',size=1,value=c.size)}
39 <span class="rev">${_('revisions')}</span>
39 <span class="rev">${_('revisions')}</span>
40 </div>
40 </div>
41 ${h.end_form()}
41 ${h.end_form()}
42 <div style="float:right">${h.select('branch_filter',c.branch_name,c.branch_filters)}</div>
42 <div style="float:right">${h.select('branch_filter',c.branch_name,c.branch_filters)}</div>
43 <div id="rev_range_container" style="display:none"></div>
43 <div id="rev_range_container" style="display:none"></div>
44 </div>
44 </div>
45
45
46 %for cnt,cs in enumerate(c.pagination):
46 %for cnt,cs in enumerate(c.pagination):
47 <div id="chg_${cnt+1}" class="container">
47 <div id="chg_${cnt+1}" class="container">
48 <div class="left">
48 <div class="left">
49 <div class="date">
49 <div class="date">
50 ${h.checkbox(cs.short_id,class_="changeset_range")}
50 ${h.checkbox(cs.short_id,class_="changeset_range")}
51 <span>${_('commit')} ${cs.revision}: ${h.short_id(cs.raw_id)}@${cs.date}</span>
51 <span class="tooltip" title="${cs.date}"><a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}">${cs.revision}:${h.short_id(cs.raw_id)}</a></span>
52 </div>
52 </div>
53 <div class="author">
53 <div class="author">
54 <div class="gravatar">
54 <div class="gravatar">
55 <img alt="gravatar" src="${h.gravatar_url(h.email(cs.author),16)}"/>
55 <img alt="gravatar" src="${h.gravatar_url(h.email(cs.author),16)}"/>
56 </div>
56 </div>
57 <div title="${cs.author}" class="user">${h.person(cs.author)}</div>
57 <div title="${cs.author}" class="user">${h.person(cs.author)}</div>
58 </div>
58 </div>
59 <div class="message">${h.link_to(h.wrap_paragraphs(cs.message),h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div>
59 <div class="message">${h.urlify_commit(h.wrap_paragraphs(cs.message))}</div>
60 </div>
60 </div>
61 <div class="right">
61 <div class="right">
62 <div id="${cs.raw_id}_changes_info" class="changes">
62 <div id="${cs.raw_id}_changes_info" class="changes">
63 <span id="${cs.raw_id}" class="changed_total tooltip" title="${_('Affected number of files, click to show more details')}">${len(cs.affected_files)}</span>
63 <span id="${cs.raw_id}" class="changed_total tooltip" title="${_('Affected number of files, click to show more details')}">${len(cs.affected_files)}</span>
64 </div>
64 </div>
65 %if len(cs.parents)>1:
65 %if len(cs.parents)>1:
66 <div class="merge">${_('merge')}</div>
66 <div class="merge">${_('merge')}</div>
67 %endif
67 %endif
68 %if cs.parents:
68 %if cs.parents:
69 %for p_cs in reversed(cs.parents):
69 %for p_cs in reversed(cs.parents):
70 <div class="parent">${_('Parent')} ${p_cs.revision}: ${h.link_to(h.short_id(p_cs.raw_id),
70 <div class="parent">${_('Parent')} ${p_cs.revision}: ${h.link_to(h.short_id(p_cs.raw_id),
71 h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}
71 h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}
72 </div>
72 </div>
73 %endfor
73 %endfor
74 %else:
74 %else:
75 <div class="parent">${_('No parents')}</div>
75 <div class="parent">${_('No parents')}</div>
76 %endif
76 %endif
77
77
78 <span class="logtags">
78 <span class="logtags">
79 %if cs.branch:
79 %if cs.branch:
80 <span class="branchtag" title="${'%s %s' % (_('branch'),cs.branch)}">
80 <span class="branchtag" title="${'%s %s' % (_('branch'),cs.branch)}">
81 ${h.link_to(cs.branch,h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span>
81 ${h.link_to(cs.branch,h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span>
82 %endif
82 %endif
83 %for tag in cs.tags:
83 %for tag in cs.tags:
84 <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
84 <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
85 ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span>
85 ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span>
86 %endfor
86 %endfor
87 </span>
87 </span>
88 </div>
88 </div>
89 </div>
89 </div>
90
90
91 %endfor
91 %endfor
92 <div class="pagination-wh pagination-left">
92 <div class="pagination-wh pagination-left">
93 ${c.pagination.pager('$link_previous ~2~ $link_next')}
93 ${c.pagination.pager('$link_previous ~2~ $link_next')}
94 </div>
94 </div>
95 </div>
95 </div>
96 </div>
96 </div>
97
97
98 <script type="text/javascript" src="${h.url('/js/graph.js')}"></script>
98 <script type="text/javascript" src="${h.url('/js/graph.js')}"></script>
99 <script type="text/javascript">
99 <script type="text/javascript">
100 YAHOO.util.Event.onDOMReady(function(){
100 YAHOO.util.Event.onDOMReady(function(){
101
101
102 //Monitor range checkboxes and build a link to changesets
102 //Monitor range checkboxes and build a link to changesets
103 //ranges
103 //ranges
104 var checkboxes = YUD.getElementsByClassName('changeset_range');
104 var checkboxes = YUD.getElementsByClassName('changeset_range');
105 var url_tmpl = "${h.url('changeset_home',repo_name=c.repo_name,revision='__REVRANGE__')}";
105 var url_tmpl = "${h.url('changeset_home',repo_name=c.repo_name,revision='__REVRANGE__')}";
106 YUE.on(checkboxes,'click',function(e){
106 YUE.on(checkboxes,'click',function(e){
107 var checked_checkboxes = [];
107 var checked_checkboxes = [];
108 for (pos in checkboxes){
108 for (pos in checkboxes){
109 if(checkboxes[pos].checked){
109 if(checkboxes[pos].checked){
110 checked_checkboxes.push(checkboxes[pos]);
110 checked_checkboxes.push(checkboxes[pos]);
111 }
111 }
112 }
112 }
113 if(checked_checkboxes.length>1){
113 if(checked_checkboxes.length>1){
114 var rev_end = checked_checkboxes[0].name;
114 var rev_end = checked_checkboxes[0].name;
115 var rev_start = checked_checkboxes[checked_checkboxes.length-1].name;
115 var rev_start = checked_checkboxes[checked_checkboxes.length-1].name;
116
116
117 var url = url_tmpl.replace('__REVRANGE__',
117 var url = url_tmpl.replace('__REVRANGE__',
118 rev_start+'...'+rev_end);
118 rev_start+'...'+rev_end);
119
119
120 var link = "<a href="+url+">${_('Show selected changes __S -> __E')}</a>"
120 var link = "<a href="+url+">${_('Show selected changes __S -> __E')}</a>"
121 link = link.replace('__S',rev_start);
121 link = link.replace('__S',rev_start);
122 link = link.replace('__E',rev_end);
122 link = link.replace('__E',rev_end);
123 YUD.get('rev_range_container').innerHTML = link;
123 YUD.get('rev_range_container').innerHTML = link;
124 YUD.setStyle('rev_range_container','display','');
124 YUD.setStyle('rev_range_container','display','');
125 }
125 }
126 else{
126 else{
127 YUD.setStyle('rev_range_container','display','none');
127 YUD.setStyle('rev_range_container','display','none');
128
128
129 }
129 }
130 });
130 });
131
131
132 // Fetch changeset details
132 // Fetch changeset details
133 YUE.on(YUD.getElementsByClassName('changed_total'),'click',function(e){
133 YUE.on(YUD.getElementsByClassName('changed_total'),'click',function(e){
134 var id = e.currentTarget.id
134 var id = e.currentTarget.id
135 var url = "${h.url('changelog_details',repo_name=c.repo_name,cs='__CS__')}"
135 var url = "${h.url('changelog_details',repo_name=c.repo_name,cs='__CS__')}"
136 var url = url.replace('__CS__',id);
136 var url = url.replace('__CS__',id);
137 ypjax(url,id+'_changes_info',function(){tooltip_activate()});
137 ypjax(url,id+'_changes_info',function(){tooltip_activate()});
138 });
138 });
139
139
140 // change branch filter
140 // change branch filter
141 YUE.on(YUD.get('branch_filter'),'change',function(e){
141 YUE.on(YUD.get('branch_filter'),'change',function(e){
142 var selected_branch = e.currentTarget.options[e.currentTarget.selectedIndex].value;
142 var selected_branch = e.currentTarget.options[e.currentTarget.selectedIndex].value;
143 console.log(selected_branch);
143 console.log(selected_branch);
144 var url_main = "${h.url('changelog_home',repo_name=c.repo_name)}";
144 var url_main = "${h.url('changelog_home',repo_name=c.repo_name)}";
145 var url = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}";
145 var url = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}";
146 var url = url.replace('__BRANCH__',selected_branch);
146 var url = url.replace('__BRANCH__',selected_branch);
147 if(selected_branch != ''){
147 if(selected_branch != ''){
148 window.location = url;
148 window.location = url;
149 }else{
149 }else{
150 window.location = url_main;
150 window.location = url_main;
151 }
151 }
152
152
153 });
153 });
154
154
155 function set_canvas(heads) {
155 function set_canvas(heads) {
156 var c = document.getElementById('graph_nodes');
156 var c = document.getElementById('graph_nodes');
157 var t = document.getElementById('graph_content');
157 var t = document.getElementById('graph_content');
158 canvas = document.getElementById('graph_canvas');
158 canvas = document.getElementById('graph_canvas');
159 var div_h = t.clientHeight;
159 var div_h = t.clientHeight;
160 c.style.height=div_h+'px';
160 c.style.height=div_h+'px';
161 canvas.setAttribute('height',div_h);
161 canvas.setAttribute('height',div_h);
162 c.style.height=max_w+'px';
162 c.style.height=max_w+'px';
163 canvas.setAttribute('width',max_w);
163 canvas.setAttribute('width',max_w);
164 };
164 };
165 var heads = 1;
165 var heads = 1;
166 var max_heads = 0;
166 var max_heads = 0;
167 var jsdata = ${c.jsdata|n};
167 var jsdata = ${c.jsdata|n};
168
168
169 for( var i=0;i<jsdata.length;i++){
169 for( var i=0;i<jsdata.length;i++){
170 var m = Math.max.apply(Math, jsdata[i][1]);
170 var m = Math.max.apply(Math, jsdata[i][1]);
171 if (m>max_heads){
171 if (m>max_heads){
172 max_heads = m;
172 max_heads = m;
173 }
173 }
174 }
174 }
175 var max_w = Math.max(100,max_heads*25);
175 var max_w = Math.max(100,max_heads*25);
176 set_canvas(max_w);
176 set_canvas(max_w);
177
177
178 var r = new BranchRenderer();
178 var r = new BranchRenderer();
179 r.render(jsdata,max_w);
179 r.render(jsdata,max_w);
180
180
181 });
181 });
182 </script>
182 </script>
183 %else:
183 %else:
184 ${_('There are no changes yet')}
184 ${_('There are no changes yet')}
185 %endif
185 %endif
186 </div>
186 </div>
187 </div>
187 </div>
188 </%def> No newline at end of file
188 </%def>
@@ -1,205 +1,205 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2
2
3 <%inherit file="/base/base.html"/>
3 <%inherit file="/base/base.html"/>
4
4
5 <%def name="title()">
5 <%def name="title()">
6 ${c.repo_name} ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} - ${c.rhodecode_name}
6 ${c.repo_name} ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} - ${c.rhodecode_name}
7 </%def>
7 </%def>
8
8
9 <%def name="breadcrumbs_links()">
9 <%def name="breadcrumbs_links()">
10 ${h.link_to(u'Home',h.url('/'))}
10 ${h.link_to(u'Home',h.url('/'))}
11 &raquo;
11 &raquo;
12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
13 &raquo;
13 &raquo;
14 ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
14 ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
15 </%def>
15 </%def>
16
16
17 <%def name="page_nav()">
17 <%def name="page_nav()">
18 ${self.menu('changelog')}
18 ${self.menu('changelog')}
19 </%def>
19 </%def>
20
20
21 <%def name="main()">
21 <%def name="main()">
22 <div class="box">
22 <div class="box">
23 <!-- box / title -->
23 <!-- box / title -->
24 <div class="title">
24 <div class="title">
25 ${self.breadcrumbs()}
25 ${self.breadcrumbs()}
26 </div>
26 </div>
27 <div class="table">
27 <div class="table">
28 <div class="diffblock">
28 <div class="diffblock">
29 <div class="code-header">
29 <div class="code-header">
30 <div class="date">${_('commit')} ${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} ${c.changeset.date}</div>
30 <div class="date">${_('commit')} ${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} ${c.changeset.date}</div>
31 <div class="diff-menu-wrapper">
31 <div class="diff-menu-wrapper">
32 <img class="diff-menu-activate" style="cursor: pointer" alt="diff-menu" src="${h.url('/images/icons/script_gear.png')}" />
32 <img class="diff-menu-activate" style="cursor: pointer" alt="diff-menu" src="${h.url('/images/icons/script_gear.png')}" />
33 <div class="diff-menu" style="display:none">
33 <div class="diff-menu" style="display:none">
34 <ul>
34 <ul>
35 <li>${h.link_to(_('raw diff'),h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show'))}</li>
35 <li>${h.link_to(_('raw diff'),h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show'))}</li>
36 <li>${h.link_to(_('download diff'),h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download'))}</li>
36 <li>${h.link_to(_('download diff'),h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download'))}</li>
37 <li>${c.ignorews_url()}</li>
37 <li>${c.ignorews_url()}</li>
38 <li>${c.context_url()}</li>
38 <li>${c.context_url()}</li>
39 </ul>
39 </ul>
40 </div>
40 </div>
41 </div>
41 </div>
42 <div class="comments-number" style="float:right;padding-right:5px">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
42 <div class="comments-number" style="float:right;padding-right:5px">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
43 </div>
43 </div>
44 </div>
44 </div>
45 <div id="changeset_content">
45 <div id="changeset_content">
46 <div class="container">
46 <div class="container">
47 <div class="left">
47 <div class="left">
48 <div class="author">
48 <div class="author">
49 <div class="gravatar">
49 <div class="gravatar">
50 <img alt="gravatar" src="${h.gravatar_url(h.email(c.changeset.author),20)}"/>
50 <img alt="gravatar" src="${h.gravatar_url(h.email(c.changeset.author),20)}"/>
51 </div>
51 </div>
52 <span>${h.person(c.changeset.author)}</span><br/>
52 <span>${h.person(c.changeset.author)}</span><br/>
53 <span><a href="mailto:${h.email_or_none(c.changeset.author)}">${h.email_or_none(c.changeset.author)}</a></span><br/>
53 <span><a href="mailto:${h.email_or_none(c.changeset.author)}">${h.email_or_none(c.changeset.author)}</a></span><br/>
54 </div>
54 </div>
55 <div class="message">${h.link_to(h.wrap_paragraphs(c.changeset.message),h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</div>
55 <div class="message">${h.urlify_commit(h.wrap_paragraphs(c.changeset.message))}</div>
56 </div>
56 </div>
57 <div class="right">
57 <div class="right">
58 <div class="changes">
58 <div class="changes">
59 % if len(c.changeset.affected_files) <= c.affected_files_cut_off:
59 % if len(c.changeset.affected_files) <= c.affected_files_cut_off:
60 <span class="removed" title="${_('removed')}">${len(c.changeset.removed)}</span>
60 <span class="removed" title="${_('removed')}">${len(c.changeset.removed)}</span>
61 <span class="changed" title="${_('changed')}">${len(c.changeset.changed)}</span>
61 <span class="changed" title="${_('changed')}">${len(c.changeset.changed)}</span>
62 <span class="added" title="${_('added')}">${len(c.changeset.added)}</span>
62 <span class="added" title="${_('added')}">${len(c.changeset.added)}</span>
63 % else:
63 % else:
64 <span class="removed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
64 <span class="removed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
65 <span class="changed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
65 <span class="changed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
66 <span class="added" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
66 <span class="added" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
67 % endif
67 % endif
68 </div>
68 </div>
69 %if len(c.changeset.parents)>1:
69 %if len(c.changeset.parents)>1:
70 <div class="merge">
70 <div class="merge">
71 ${_('merge')}<img alt="merge" src="${h.url('/images/icons/arrow_join.png')}"/>
71 ${_('merge')}<img alt="merge" src="${h.url('/images/icons/arrow_join.png')}"/>
72 </div>
72 </div>
73 %endif
73 %endif
74
74
75 %if c.changeset.parents:
75 %if c.changeset.parents:
76 %for p_cs in reversed(c.changeset.parents):
76 %for p_cs in reversed(c.changeset.parents):
77 <div class="parent">${_('Parent')} ${p_cs.revision}: ${h.link_to(h.short_id(p_cs.raw_id),
77 <div class="parent">${_('Parent')} ${p_cs.revision}: ${h.link_to(h.short_id(p_cs.raw_id),
78 h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}
78 h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}
79 </div>
79 </div>
80 %endfor
80 %endfor
81 %else:
81 %else:
82 <div class="parent">${_('No parents')}</div>
82 <div class="parent">${_('No parents')}</div>
83 %endif
83 %endif
84 <span class="logtags">
84 <span class="logtags">
85 <span class="branchtag" title="${'%s %s' % (_('branch'),c.changeset.branch)}">
85 <span class="branchtag" title="${'%s %s' % (_('branch'),c.changeset.branch)}">
86 ${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
86 ${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
87 %for tag in c.changeset.tags:
87 %for tag in c.changeset.tags:
88 <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
88 <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
89 ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
89 ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
90 %endfor
90 %endfor
91 </span>
91 </span>
92 </div>
92 </div>
93 </div>
93 </div>
94 <span style="font-size:1.1em;font-weight: bold">
94 <span style="font-size:1.1em;font-weight: bold">
95 ${_('%s files affected with %s additions and %s deletions.') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
95 ${_('%s files affected with %s additions and %s deletions.') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
96 </span>
96 </span>
97 <div class="cs_files">
97 <div class="cs_files">
98 %for change,filenode,diff,cs1,cs2,stat in c.changes:
98 %for change,filenode,diff,cs1,cs2,stat in c.changes:
99 <div class="cs_${change}">
99 <div class="cs_${change}">
100 <div class="node">
100 <div class="node">
101 %if change != 'removed':
101 %if change != 'removed':
102 ${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path))}
102 ${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path))}
103 %else:
103 %else:
104 ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID('',filenode.path)))}
104 ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID('',filenode.path)))}
105 %endif
105 %endif
106 </div>
106 </div>
107 <div class="changes">${h.fancy_file_stats(stat)}</div>
107 <div class="changes">${h.fancy_file_stats(stat)}</div>
108 </div>
108 </div>
109 %endfor
109 %endfor
110 % if c.cut_off:
110 % if c.cut_off:
111 ${_('Changeset was too big and was cut off...')}
111 ${_('Changeset was too big and was cut off...')}
112 % endif
112 % endif
113 </div>
113 </div>
114 </div>
114 </div>
115
115
116 </div>
116 </div>
117
117
118 ## diff block
118 ## diff block
119 <%namespace name="diff_block" file="/changeset/diff_block.html"/>
119 <%namespace name="diff_block" file="/changeset/diff_block.html"/>
120 ${diff_block.diff_block(c.changes)}
120 ${diff_block.diff_block(c.changes)}
121
121
122 ## template for inline comment form
122 ## template for inline comment form
123 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
123 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
124 ${comment.comment_inline_form(c.changeset)}
124 ${comment.comment_inline_form(c.changeset)}
125
125
126 ${comment.comments(c.changeset)}
126 ${comment.comments(c.changeset)}
127
127
128 <script type="text/javascript">
128 <script type="text/javascript">
129 var deleteComment = function(comment_id){
129 var deleteComment = function(comment_id){
130
130
131 var url = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}".replace('__COMMENT_ID__',comment_id);
131 var url = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}".replace('__COMMENT_ID__',comment_id);
132 var postData = '_method=delete';
132 var postData = '_method=delete';
133 var success = function(o){
133 var success = function(o){
134 var n = YUD.get('comment-'+comment_id);
134 var n = YUD.get('comment-'+comment_id);
135 n.parentNode.removeChild(n);
135 n.parentNode.removeChild(n);
136 }
136 }
137 ajaxPOST(url,postData,success);
137 ajaxPOST(url,postData,success);
138 }
138 }
139
139
140 YUE.onDOMReady(function(){
140 YUE.onDOMReady(function(){
141
141
142 YUE.on(YUQ('.diff-menu-activate'),'click',function(e){
142 YUE.on(YUQ('.diff-menu-activate'),'click',function(e){
143 var act = e.currentTarget.nextElementSibling;
143 var act = e.currentTarget.nextElementSibling;
144
144
145 if(YUD.hasClass(act,'active')){
145 if(YUD.hasClass(act,'active')){
146 YUD.removeClass(act,'active');
146 YUD.removeClass(act,'active');
147 YUD.setStyle(act,'display','none');
147 YUD.setStyle(act,'display','none');
148 }else{
148 }else{
149 YUD.addClass(act,'active');
149 YUD.addClass(act,'active');
150 YUD.setStyle(act,'display','');
150 YUD.setStyle(act,'display','');
151 }
151 }
152 });
152 });
153
153
154 YUE.on(YUQ('.show-inline-comments'),'change',function(e){
154 YUE.on(YUQ('.show-inline-comments'),'change',function(e){
155 var show = 'none';
155 var show = 'none';
156 var target = e.currentTarget;
156 var target = e.currentTarget;
157 if(target.checked){
157 if(target.checked){
158 var show = ''
158 var show = ''
159 }
159 }
160 var boxid = YUD.getAttribute(target,'id_for');
160 var boxid = YUD.getAttribute(target,'id_for');
161 var comments = YUQ('#{0} .inline-comments'.format(boxid));
161 var comments = YUQ('#{0} .inline-comments'.format(boxid));
162 for(c in comments){
162 for(c in comments){
163 YUD.setStyle(comments[c],'display',show);
163 YUD.setStyle(comments[c],'display',show);
164 }
164 }
165 var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
165 var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
166 for(c in btns){
166 for(c in btns){
167 YUD.setStyle(btns[c],'display',show);
167 YUD.setStyle(btns[c],'display',show);
168 }
168 }
169 })
169 })
170
170
171 YUE.on(YUQ('.line'),'click',function(e){
171 YUE.on(YUQ('.line'),'click',function(e){
172 var tr = e.currentTarget;
172 var tr = e.currentTarget;
173 injectInlineForm(tr);
173 injectInlineForm(tr);
174 });
174 });
175
175
176 // inject comments into they proper positions
176 // inject comments into they proper positions
177 var file_comments = YUQ('.inline-comment-placeholder');
177 var file_comments = YUQ('.inline-comment-placeholder');
178
178
179 for (f in file_comments){
179 for (f in file_comments){
180 var box = file_comments[f];
180 var box = file_comments[f];
181 var inlines = box.children;
181 var inlines = box.children;
182 for(var i=0; i<inlines.length; i++){
182 for(var i=0; i<inlines.length; i++){
183 try{
183 try{
184
184
185 var inline = inlines[i];
185 var inline = inlines[i];
186 var lineno = YUD.getAttribute(inlines[i],'line');
186 var lineno = YUD.getAttribute(inlines[i],'line');
187 var lineid = "{0}_{1}".format(YUD.getAttribute(inline,'target_id'),lineno);
187 var lineid = "{0}_{1}".format(YUD.getAttribute(inline,'target_id'),lineno);
188 var target_line = YUD.get(lineid);
188 var target_line = YUD.get(lineid);
189
189
190 var add = createInlineAddButton(target_line.parentNode,'${_("add another comment")}');
190 var add = createInlineAddButton(target_line.parentNode,'${_("add another comment")}');
191 YUD.insertAfter(add,target_line.parentNode);
191 YUD.insertAfter(add,target_line.parentNode);
192
192
193 var comment = new YAHOO.util.Element(tableTr('inline-comments',inline.innerHTML))
193 var comment = new YAHOO.util.Element(tableTr('inline-comments',inline.innerHTML))
194 YUD.insertAfter(comment,target_line.parentNode);
194 YUD.insertAfter(comment,target_line.parentNode);
195 }catch(e){
195 }catch(e){
196 console.log(e);
196 console.log(e);
197 }
197 }
198 }
198 }
199 }
199 }
200 })
200 })
201
201
202 </script>
202 </script>
203
203
204 </div>
204 </div>
205 </%def>
205 </%def>
@@ -1,89 +1,89 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
2 <%inherit file="/base/base.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${c.repo_name} ${_('Changesets')} - r${c.cs_ranges[0].revision}:${h.short_id(c.cs_ranges[0].raw_id)} -> r${c.cs_ranges[-1].revision}:${h.short_id(c.cs_ranges[-1].raw_id)} - ${c.rhodecode_name}
5 ${c.repo_name} ${_('Changesets')} - r${c.cs_ranges[0].revision}:${h.short_id(c.cs_ranges[0].raw_id)} -> r${c.cs_ranges[-1].revision}:${h.short_id(c.cs_ranges[-1].raw_id)} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7
7
8 <%def name="breadcrumbs_links()">
8 <%def name="breadcrumbs_links()">
9 ${h.link_to(u'Home',h.url('/'))}
9 ${h.link_to(u'Home',h.url('/'))}
10 &raquo;
10 &raquo;
11 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
11 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
12 &raquo;
12 &raquo;
13 ${_('Changesets')} - r${c.cs_ranges[0].revision}:${h.short_id(c.cs_ranges[0].raw_id)} -> r${c.cs_ranges[-1].revision}:${h.short_id(c.cs_ranges[-1].raw_id)}
13 ${_('Changesets')} - r${c.cs_ranges[0].revision}:${h.short_id(c.cs_ranges[0].raw_id)} -> r${c.cs_ranges[-1].revision}:${h.short_id(c.cs_ranges[-1].raw_id)}
14 </%def>
14 </%def>
15
15
16 <%def name="page_nav()">
16 <%def name="page_nav()">
17 ${self.menu('changelog')}
17 ${self.menu('changelog')}
18 </%def>
18 </%def>
19
19
20 <%def name="main()">
20 <%def name="main()">
21 <div class="box">
21 <div class="box">
22 <!-- box / title -->
22 <!-- box / title -->
23 <div class="title">
23 <div class="title">
24 ${self.breadcrumbs()}
24 ${self.breadcrumbs()}
25 </div>
25 </div>
26 <div class="table">
26 <div class="table">
27 <div id="body" class="diffblock">
27 <div id="body" class="diffblock">
28 <div class="code-header cv">
28 <div class="code-header cv">
29 <h3 class="code-header-title">${_('Compare View')}</h3>
29 <h3 class="code-header-title">${_('Compare View')}</h3>
30 <div>
30 <div>
31 ${_('Changesets')} - r${c.cs_ranges[0].revision}:${h.short_id(c.cs_ranges[0].raw_id)} -> r${c.cs_ranges[-1].revision}:${h.short_id(c.cs_ranges[-1].raw_id)}
31 ${_('Changesets')} - r${c.cs_ranges[0].revision}:${h.short_id(c.cs_ranges[0].raw_id)} -> r${c.cs_ranges[-1].revision}:${h.short_id(c.cs_ranges[-1].raw_id)}
32 </div>
32 </div>
33 </div>
33 </div>
34 </div>
34 </div>
35 <div id="changeset_compare_view_content">
35 <div id="changeset_compare_view_content">
36 <div class="container">
36 <div class="container">
37 <table class="compare_view_commits noborder">
37 <table class="compare_view_commits noborder">
38 %for cs in c.cs_ranges:
38 %for cs in c.cs_ranges:
39 <tr>
39 <tr>
40 <td><div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(h.email(cs.author),14)}"/></div></td>
40 <td><div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(h.email(cs.author),14)}"/></div></td>
41 <td>${h.link_to('r%s:%s' % (cs.revision,h.short_id(cs.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</td>
41 <td>${h.link_to('r%s:%s' % (cs.revision,h.short_id(cs.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</td>
42 <td><div class="author">${h.person(cs.author)}</div></td>
42 <td><div class="author">${h.person(cs.author)}</div></td>
43 <td><span class="tooltip" title="${h.age(cs.date)}">${cs.date}</span></td>
43 <td><span class="tooltip" title="${h.age(cs.date)}">${cs.date}</span></td>
44 <td><div class="message">${h.link_to(h.wrap_paragraphs(cs.message),h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div></td>
44 <td><div class="message">${h.urlify_commit(h.wrap_paragraphs(c.changeset.message))}</div></td>
45 </tr>
45 </tr>
46 %endfor
46 %endfor
47 </table>
47 </table>
48 </div>
48 </div>
49 <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">${_('Files affected')}</div>
49 <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">${_('Files affected')}</div>
50 <div class="cs_files">
50 <div class="cs_files">
51 %for cs in c.cs_ranges:
51 %for cs in c.cs_ranges:
52 <div class="cur_cs">r${cs}</div>
52 <div class="cur_cs">r${cs}</div>
53 %for change,filenode,diff,cs1,cs2,st in c.changes[cs.raw_id]:
53 %for change,filenode,diff,cs1,cs2,st in c.changes[cs.raw_id]:
54 <div class="cs_${change}">${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID(cs.raw_id,filenode.path)))}</div>
54 <div class="cs_${change}">${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID(cs.raw_id,filenode.path)))}</div>
55 %endfor
55 %endfor
56 %endfor
56 %endfor
57 </div>
57 </div>
58 </div>
58 </div>
59
59
60 </div>
60 </div>
61 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
61 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
62 <%namespace name="diff_block" file="/changeset/diff_block.html"/>
62 <%namespace name="diff_block" file="/changeset/diff_block.html"/>
63 %for cs in c.cs_ranges:
63 %for cs in c.cs_ranges:
64 ##${comment.comment_inline_form(cs)}
64 ##${comment.comment_inline_form(cs)}
65 ## diff block
65 ## diff block
66 <h3 style="border:none;padding-top:8px;">${'r%s:%s' % (cs.revision,h.short_id(cs.raw_id))}</h3>
66 <h3 style="border:none;padding-top:8px;">${'r%s:%s' % (cs.revision,h.short_id(cs.raw_id))}</h3>
67 ${diff_block.diff_block(c.changes[cs.raw_id])}
67 ${diff_block.diff_block(c.changes[cs.raw_id])}
68 ##${comment.comments(cs)}
68 ##${comment.comments(cs)}
69
69
70 %endfor
70 %endfor
71 <script type="text/javascript">
71 <script type="text/javascript">
72
72
73 YUE.onDOMReady(function(){
73 YUE.onDOMReady(function(){
74
74
75 YUE.on(YUQ('.diff-menu-activate'),'click',function(e){
75 YUE.on(YUQ('.diff-menu-activate'),'click',function(e){
76 var act = e.currentTarget.nextElementSibling;
76 var act = e.currentTarget.nextElementSibling;
77
77
78 if(YUD.hasClass(act,'active')){
78 if(YUD.hasClass(act,'active')){
79 YUD.removeClass(act,'active');
79 YUD.removeClass(act,'active');
80 YUD.setStyle(act,'display','none');
80 YUD.setStyle(act,'display','none');
81 }else{
81 }else{
82 YUD.addClass(act,'active');
82 YUD.addClass(act,'active');
83 YUD.setStyle(act,'display','');
83 YUD.setStyle(act,'display','');
84 }
84 }
85 });
85 });
86 })
86 })
87 </script>
87 </script>
88 </div>
88 </div>
89 </%def> No newline at end of file
89 </%def>
@@ -1,77 +1,79 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 %if c.repo_changesets:
2 %if c.repo_changesets:
3 <table class="table_disp">
3 <table class="table_disp">
4 <tr>
4 <tr>
5 <th class="left">${_('commit message')}</th>
5 <th class="left">${_('revision')}</th>
6 <th class="left">${_('commit message')}</th>
6 <th class="left">${_('age')}</th>
7 <th class="left">${_('age')}</th>
7 <th class="left">${_('author')}</th>
8 <th class="left">${_('author')}</th>
8 <th class="left">${_('revision')}</th>
9 <th class="left">${_('branch')}</th>
9 <th class="left">${_('branch')}</th>
10 <th class="left">${_('tags')}</th>
10 <th class="left">${_('tags')}</th>
11 </tr>
11 </tr>
12 %for cnt,cs in enumerate(c.repo_changesets):
12 %for cnt,cs in enumerate(c.repo_changesets):
13 <tr class="parity${cnt%2}">
13 <tr class="parity${cnt%2}">
14 <td>
14 <td>
15 <div><pre><a href="${h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id)}">r${cs.revision}:${h.short_id(cs.raw_id)}</a></pre></div>
16 </td>
17 <td>
15 ${h.link_to(h.truncate(cs.message,50),
18 ${h.link_to(h.truncate(cs.message,50),
16 h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id),
19 h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id),
17 title=cs.message)}
20 title=cs.message)}
18 </td>
21 </td>
19 <td><span class="tooltip" title="${cs.date}">
22 <td><span class="tooltip" title="${cs.date}">
20 ${h.age(cs.date)}</span>
23 ${h.age(cs.date)}</span>
21 </td>
24 </td>
22 <td title="${cs.author}">${h.person(cs.author)}</td>
25 <td title="${cs.author}">${h.person(cs.author)}</td>
23 <td><div><pre><a href="${h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id)}">r${cs.revision}:${h.short_id(cs.raw_id)}</a></pre></div></td>
24 <td>
26 <td>
25 <span class="logtags">
27 <span class="logtags">
26 <span class="branchtag">${cs.branch}</span>
28 <span class="branchtag">${cs.branch}</span>
27 </span>
29 </span>
28 </td>
30 </td>
29 <td>
31 <td>
30 <span class="logtags">
32 <span class="logtags">
31 %for tag in cs.tags:
33 %for tag in cs.tags:
32 <span class="tagtag">${tag}</span>
34 <span class="tagtag">${tag}</span>
33 %endfor
35 %endfor
34 </span>
36 </span>
35 </td>
37 </td>
36 </tr>
38 </tr>
37 %endfor
39 %endfor
38
40
39 </table>
41 </table>
40
42
41 <script type="text/javascript">
43 <script type="text/javascript">
42 YUE.onDOMReady(function(){
44 YUE.onDOMReady(function(){
43 YUE.delegate("shortlog_data","click",function(e, matchedEl, container){
45 YUE.delegate("shortlog_data","click",function(e, matchedEl, container){
44 ypjax(e.target.href,"shortlog_data",function(){tooltip_activate();});
46 ypjax(e.target.href,"shortlog_data",function(){tooltip_activate();});
45 YUE.preventDefault(e);
47 YUE.preventDefault(e);
46 },'.pager_link');
48 },'.pager_link');
47 });
49 });
48 </script>
50 </script>
49
51
50 <div class="pagination-wh pagination-left">
52 <div class="pagination-wh pagination-left">
51 ${c.repo_changesets.pager('$link_previous ~2~ $link_next')}
53 ${c.repo_changesets.pager('$link_previous ~2~ $link_next')}
52 </div>
54 </div>
53 %else:
55 %else:
54
56
55 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
57 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
56 <h4>${_('Add or upload files directly via RhodeCode')}</h4>
58 <h4>${_('Add or upload files directly via RhodeCode')}</h4>
57 <div style="margin: 20px 30px;">
59 <div style="margin: 20px 30px;">
58 <div id="add_node_id" class="add_node">
60 <div id="add_node_id" class="add_node">
59 <a class="ui-btn" href="${h.url('files_add_home',repo_name=c.repo_name,revision=0,f_path='')}">${_('add new file')}</a>
61 <a class="ui-btn" href="${h.url('files_add_home',repo_name=c.repo_name,revision=0,f_path='')}">${_('add new file')}</a>
60 </div>
62 </div>
61 </div>
63 </div>
62 %endif
64 %endif
63
65
64
66
65 <h4>${_('Push new repo')}</h4>
67 <h4>${_('Push new repo')}</h4>
66 <pre>
68 <pre>
67 ${c.rhodecode_repo.alias} clone ${c.clone_repo_url}
69 ${c.rhodecode_repo.alias} clone ${c.clone_repo_url}
68 ${c.rhodecode_repo.alias} add README # add first file
70 ${c.rhodecode_repo.alias} add README # add first file
69 ${c.rhodecode_repo.alias} commit -m "Initial" # commit with message
71 ${c.rhodecode_repo.alias} commit -m "Initial" # commit with message
70 ${c.rhodecode_repo.alias} push # push changes back
72 ${c.rhodecode_repo.alias} push # push changes back
71 </pre>
73 </pre>
72
74
73 <h4>${_('Existing repository?')}</h4>
75 <h4>${_('Existing repository?')}</h4>
74 <pre>
76 <pre>
75 ${c.rhodecode_repo.alias} push ${c.clone_repo_url}
77 ${c.rhodecode_repo.alias} push ${c.clone_repo_url}
76 </pre>
78 </pre>
77 %endif
79 %endif
General Comments 0
You need to be logged in to leave comments. Login now