##// END OF EJS Templates
UI fixes...
marcink -
r1865:37b3c324 beta
parent child Browse files
Show More
@@ -1,288 +1,288 b''
1 1 ################################################################################
2 2 ################################################################################
3 3 # RhodeCode - Pylons environment configuration #
4 4 # #
5 5 # The %(here)s variable will be replaced with the parent directory of this file#
6 6 ################################################################################
7 7
8 8 [DEFAULT]
9 9 debug = true
10 10 pdebug = false
11 11 ################################################################################
12 12 ## Uncomment and replace with the address which should receive ##
13 13 ## any error reports after application crash ##
14 14 ## Additionally those settings will be used by RhodeCode mailing system ##
15 15 ################################################################################
16 16 #email_to = admin@localhost
17 17 #error_email_from = paste_error@localhost
18 18 #app_email_from = rhodecode-noreply@localhost
19 19 #error_message =
20 20 #email_prefix = [RhodeCode]
21 21
22 22 #smtp_server = mail.server.com
23 23 #smtp_username =
24 24 #smtp_password =
25 25 #smtp_port =
26 26 #smtp_use_tls = false
27 27 #smtp_use_ssl = true
28 28 # Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
29 29 #smtp_auth =
30 30
31 31 [server:main]
32 32 ##nr of threads to spawn
33 33 threadpool_workers = 5
34 34
35 35 ##max request before thread respawn
36 36 threadpool_max_requests = 10
37 37
38 38 ##option to use threads of process
39 39 use_threadpool = true
40 40
41 41 use = egg:Paste#http
42 42 host = 0.0.0.0
43 43 port = 5000
44 44
45 45 [app:main]
46 46 use = egg:rhodecode
47 47 full_stack = true
48 48 static_files = true
49 49 lang=en
50 50 cache_dir = %(here)s/data
51 51 index_dir = %(here)s/data/index
52 52 app_instance_uuid = develop
53 53 cut_off_limit = 256000
54 54 force_https = false
55 55 commit_parse_limit = 25
56 56 use_gravatar = true
57 57 container_auth_enabled = false
58 58 proxypass_auth_enabled = false
59 59
60 60 ## overwrite schema of clone url
61 61 ## available vars:
62 62 ## scheme - http/https
63 63 ## user - current user
64 64 ## pass - password
65 65 ## netloc - network location
66 66 ## path - usually repo_name
67 67
68 68 #clone_uri = {scheme}://{user}{pass}{netloc}{path}
69 69
70 70 ## issue tracking mapping for commits messages
71 71 ## uncomment url_pat, issue_server, issue_prefix to enable
72 72
73 73
74 74 ## pattern to get the issues from commit messages
75 75 ## default one used here is #1234
76 76
77 #url_pat = (?:^#|\s#)(\w+)
77 url_pat = (?:^#|\s#)(\w+)
78 78
79 79 ## server url to the issue, each {id} will be replaced with id
80 80 ## fetched from the regex
81 81
82 #issue_server = https://myissueserver.com/issue/{id}
82 issue_server = https://myissueserver.com/issue/{id}
83 83
84 84 ## prefix to add to link to indicate it's an url
85 85 ## #314 will be replaced by <issue_prefix><id>
86 86
87 #issue_prefix = #
87 issue_prefix = #
88 88
89 89
90 90 ####################################
91 91 ### CELERY CONFIG ####
92 92 ####################################
93 93 use_celery = false
94 94 broker.host = localhost
95 95 broker.vhost = rabbitmqhost
96 96 broker.port = 5672
97 97 broker.user = rabbitmq
98 98 broker.password = qweqwe
99 99
100 100 celery.imports = rhodecode.lib.celerylib.tasks
101 101
102 102 celery.result.backend = amqp
103 103 celery.result.dburi = amqp://
104 104 celery.result.serialier = json
105 105
106 106 #celery.send.task.error.emails = true
107 107 #celery.amqp.task.result.expires = 18000
108 108
109 109 celeryd.concurrency = 2
110 110 #celeryd.log.file = celeryd.log
111 111 celeryd.log.level = debug
112 112 celeryd.max.tasks.per.child = 1
113 113
114 114 #tasks will never be sent to the queue, but executed locally instead.
115 115 celery.always.eager = false
116 116
117 117 ####################################
118 118 ### BEAKER CACHE ####
119 119 ####################################
120 120 beaker.cache.data_dir=%(here)s/data/cache/data
121 121 beaker.cache.lock_dir=%(here)s/data/cache/lock
122 122
123 123 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
124 124
125 125 beaker.cache.super_short_term.type=memory
126 126 beaker.cache.super_short_term.expire=10
127 127 beaker.cache.super_short_term.key_length = 256
128 128
129 129 beaker.cache.short_term.type=memory
130 130 beaker.cache.short_term.expire=60
131 131 beaker.cache.short_term.key_length = 256
132 132
133 133 beaker.cache.long_term.type=memory
134 134 beaker.cache.long_term.expire=36000
135 135 beaker.cache.long_term.key_length = 256
136 136
137 137 beaker.cache.sql_cache_short.type=memory
138 138 beaker.cache.sql_cache_short.expire=10
139 139 beaker.cache.sql_cache_short.key_length = 256
140 140
141 141 beaker.cache.sql_cache_med.type=memory
142 142 beaker.cache.sql_cache_med.expire=360
143 143 beaker.cache.sql_cache_med.key_length = 256
144 144
145 145 beaker.cache.sql_cache_long.type=file
146 146 beaker.cache.sql_cache_long.expire=3600
147 147 beaker.cache.sql_cache_long.key_length = 256
148 148
149 149 ####################################
150 150 ### BEAKER SESSION ####
151 151 ####################################
152 152 ## Type of storage used for the session, current types are
153 153 ## dbm, file, memcached, database, and memory.
154 154 ## The storage uses the Container API
155 155 ## that is also used by the cache system.
156 156
157 157 ## db session example
158 158
159 159 #beaker.session.type = ext:database
160 160 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/rhodecode
161 161 #beaker.session.table_name = db_session
162 162
163 163 ## encrypted cookie session, good for many instances
164 164 #beaker.session.type = cookie
165 165
166 166 beaker.session.type = file
167 167 beaker.session.key = rhodecode
168 168 #beaker.session.encrypt_key = g654dcno0-9873jhgfreyu
169 169 #beaker.session.validate_key = 9712sds2212c--zxc123
170 170 beaker.session.timeout = 36000
171 171 beaker.session.httponly = true
172 172
173 173 ## uncomment for https secure cookie
174 174 beaker.session.secure = false
175 175
176 176 ##auto save the session to not to use .save()
177 177 beaker.session.auto = False
178 178
179 179 ##true exire at browser close
180 180 #beaker.session.cookie_expires = 3600
181 181
182 182
183 183 ################################################################################
184 184 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
185 185 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
186 186 ## execute malicious code after an exception is raised. ##
187 187 ################################################################################
188 188 #set debug = false
189 189
190 190 ##################################
191 191 ### LOGVIEW CONFIG ###
192 192 ##################################
193 193 logview.sqlalchemy = #faa
194 194 logview.pylons.templating = #bfb
195 195 logview.pylons.util = #eee
196 196
197 197 #########################################################
198 198 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
199 199 #########################################################
200 200 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
201 201 sqlalchemy.db1.url = postgresql://postgres:qwe@localhost/rhodecode
202 202 sqlalchemy.db1.echo = false
203 203 sqlalchemy.db1.pool_recycle = 3600
204 204 sqlalchemy.convert_unicode = true
205 205
206 206 ################################
207 207 ### LOGGING CONFIGURATION ####
208 208 ################################
209 209 [loggers]
210 210 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
211 211
212 212 [handlers]
213 213 keys = console, console_sql
214 214
215 215 [formatters]
216 216 keys = generic, color_formatter, color_formatter_sql
217 217
218 218 #############
219 219 ## LOGGERS ##
220 220 #############
221 221 [logger_root]
222 222 level = NOTSET
223 223 handlers = console
224 224
225 225 [logger_routes]
226 226 level = DEBUG
227 227 handlers =
228 228 qualname = routes.middleware
229 229 # "level = DEBUG" logs the route matched and routing variables.
230 230 propagate = 1
231 231
232 232 [logger_beaker]
233 233 level = DEBUG
234 234 handlers =
235 235 qualname = beaker.container
236 236 propagate = 1
237 237
238 238 [logger_templates]
239 239 level = INFO
240 240 handlers =
241 241 qualname = pylons.templating
242 242 propagate = 1
243 243
244 244 [logger_rhodecode]
245 245 level = DEBUG
246 246 handlers =
247 247 qualname = rhodecode
248 248 propagate = 1
249 249
250 250 [logger_sqlalchemy]
251 251 level = INFO
252 252 handlers = console_sql
253 253 qualname = sqlalchemy.engine
254 254 propagate = 0
255 255
256 256 ##############
257 257 ## HANDLERS ##
258 258 ##############
259 259
260 260 [handler_console]
261 261 class = StreamHandler
262 262 args = (sys.stderr,)
263 263 level = DEBUG
264 264 formatter = color_formatter
265 265
266 266 [handler_console_sql]
267 267 class = StreamHandler
268 268 args = (sys.stderr,)
269 269 level = DEBUG
270 270 formatter = color_formatter_sql
271 271
272 272 ################
273 273 ## FORMATTERS ##
274 274 ################
275 275
276 276 [formatter_generic]
277 277 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
278 278 datefmt = %Y-%m-%d %H:%M:%S
279 279
280 280 [formatter_color_formatter]
281 281 class=rhodecode.lib.colored_formatter.ColorFormatter
282 282 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
283 283 datefmt = %Y-%m-%d %H:%M:%S
284 284
285 285 [formatter_color_formatter_sql]
286 286 class=rhodecode.lib.colored_formatter.ColorFormatterSql
287 287 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
288 288 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,792 +1,792 b''
1 1 """Helper functions
2 2
3 3 Consists of functions to typically be used within templates, but also
4 4 available to Controllers. This module is available to both as 'h'.
5 5 """
6 6 import random
7 7 import hashlib
8 8 import StringIO
9 9 import urllib
10 10 import math
11 11 import logging
12 12
13 13 from datetime import datetime
14 14 from pygments.formatters.html import HtmlFormatter
15 15 from pygments import highlight as code_highlight
16 16 from pylons import url, request, config
17 17 from pylons.i18n.translation import _, ungettext
18 18 from hashlib import md5
19 19
20 20 from webhelpers.html import literal, HTML, escape
21 21 from webhelpers.html.tools import *
22 22 from webhelpers.html.builder import make_tag
23 23 from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \
24 24 end_form, file, form, hidden, image, javascript_link, link_to, \
25 25 link_to_if, link_to_unless, ol, required_legend, select, stylesheet_link, \
26 26 submit, text, password, textarea, title, ul, xml_declaration, radio
27 27 from webhelpers.html.tools import auto_link, button_to, highlight, \
28 28 js_obfuscate, mail_to, strip_links, strip_tags, tag_re
29 29 from webhelpers.number import format_byte_size, format_bit_size
30 30 from webhelpers.pylonslib import Flash as _Flash
31 31 from webhelpers.pylonslib.secure_form import secure_form
32 32 from webhelpers.text import chop_at, collapse, convert_accented_entities, \
33 33 convert_misc_entities, lchop, plural, rchop, remove_formatting, \
34 34 replace_whitespace, urlify, truncate, wrap_paragraphs
35 35 from webhelpers.date import time_ago_in_words
36 36 from webhelpers.paginate import Page
37 37 from webhelpers.html.tags import _set_input_attrs, _set_id_attr, \
38 38 convert_boolean_attrs, NotGiven, _make_safe_id_component
39 39
40 40 from rhodecode.lib.annotate import annotate_highlight
41 41 from rhodecode.lib.utils import repo_name_slug
42 42 from rhodecode.lib import str2bool, safe_unicode, safe_str, get_changeset_safe
43 43 from rhodecode.lib.markup_renderer import MarkupRenderer
44 44
45 45 log = logging.getLogger(__name__)
46 46
47 47
48 48 def _reset(name, value=None, id=NotGiven, type="reset", **attrs):
49 49 """
50 50 Reset button
51 51 """
52 52 _set_input_attrs(attrs, type, name, value)
53 53 _set_id_attr(attrs, id, name)
54 54 convert_boolean_attrs(attrs, ["disabled"])
55 55 return HTML.input(**attrs)
56 56
57 57 reset = _reset
58 58 safeid = _make_safe_id_component
59 59
60 60
61 61 def FID(raw_id, path):
62 62 """
63 63 Creates a uniqe ID for filenode based on it's hash of path and revision
64 64 it's safe to use in urls
65 65
66 66 :param raw_id:
67 67 :param path:
68 68 """
69 69
70 70 return 'C-%s-%s' % (short_id(raw_id), md5(path).hexdigest()[:12])
71 71
72 72
73 73 def get_token():
74 74 """Return the current authentication token, creating one if one doesn't
75 75 already exist.
76 76 """
77 77 token_key = "_authentication_token"
78 78 from pylons import session
79 79 if not token_key in session:
80 80 try:
81 81 token = hashlib.sha1(str(random.getrandbits(128))).hexdigest()
82 82 except AttributeError: # Python < 2.4
83 83 token = hashlib.sha1(str(random.randrange(2 ** 128))).hexdigest()
84 84 session[token_key] = token
85 85 if hasattr(session, 'save'):
86 86 session.save()
87 87 return session[token_key]
88 88
89 89 class _GetError(object):
90 90 """Get error from form_errors, and represent it as span wrapped error
91 91 message
92 92
93 93 :param field_name: field to fetch errors for
94 94 :param form_errors: form errors dict
95 95 """
96 96
97 97 def __call__(self, field_name, form_errors):
98 98 tmpl = """<span class="error_msg">%s</span>"""
99 99 if form_errors and form_errors.has_key(field_name):
100 100 return literal(tmpl % form_errors.get(field_name))
101 101
102 102 get_error = _GetError()
103 103
104 104 class _ToolTip(object):
105 105
106 106 def __call__(self, tooltip_title, trim_at=50):
107 107 """Special function just to wrap our text into nice formatted
108 108 autowrapped text
109 109
110 110 :param tooltip_title:
111 111 """
112 112 return escape(tooltip_title)
113 113 tooltip = _ToolTip()
114 114
115 115 class _FilesBreadCrumbs(object):
116 116
117 117 def __call__(self, repo_name, rev, paths):
118 118 if isinstance(paths, str):
119 119 paths = safe_unicode(paths)
120 120 url_l = [link_to(repo_name, url('files_home',
121 121 repo_name=repo_name,
122 122 revision=rev, f_path=''))]
123 123 paths_l = paths.split('/')
124 124 for cnt, p in enumerate(paths_l):
125 125 if p != '':
126 126 url_l.append(link_to(p,
127 127 url('files_home',
128 128 repo_name=repo_name,
129 129 revision=rev,
130 130 f_path='/'.join(paths_l[:cnt + 1])
131 131 )
132 132 )
133 133 )
134 134
135 135 return literal('/'.join(url_l))
136 136
137 137 files_breadcrumbs = _FilesBreadCrumbs()
138 138
139 139 class CodeHtmlFormatter(HtmlFormatter):
140 140 """My code Html Formatter for source codes
141 141 """
142 142
143 143 def wrap(self, source, outfile):
144 144 return self._wrap_div(self._wrap_pre(self._wrap_code(source)))
145 145
146 146 def _wrap_code(self, source):
147 147 for cnt, it in enumerate(source):
148 148 i, t = it
149 149 t = '<div id="L%s">%s</div>' % (cnt + 1, t)
150 150 yield i, t
151 151
152 152 def _wrap_tablelinenos(self, inner):
153 153 dummyoutfile = StringIO.StringIO()
154 154 lncount = 0
155 155 for t, line in inner:
156 156 if t:
157 157 lncount += 1
158 158 dummyoutfile.write(line)
159 159
160 160 fl = self.linenostart
161 161 mw = len(str(lncount + fl - 1))
162 162 sp = self.linenospecial
163 163 st = self.linenostep
164 164 la = self.lineanchors
165 165 aln = self.anchorlinenos
166 166 nocls = self.noclasses
167 167 if sp:
168 168 lines = []
169 169
170 170 for i in range(fl, fl + lncount):
171 171 if i % st == 0:
172 172 if i % sp == 0:
173 173 if aln:
174 174 lines.append('<a href="#%s%d" class="special">%*d</a>' %
175 175 (la, i, mw, i))
176 176 else:
177 177 lines.append('<span class="special">%*d</span>' % (mw, i))
178 178 else:
179 179 if aln:
180 180 lines.append('<a href="#%s%d">%*d</a>' % (la, i, mw, i))
181 181 else:
182 182 lines.append('%*d' % (mw, i))
183 183 else:
184 184 lines.append('')
185 185 ls = '\n'.join(lines)
186 186 else:
187 187 lines = []
188 188 for i in range(fl, fl + lncount):
189 189 if i % st == 0:
190 190 if aln:
191 191 lines.append('<a href="#%s%d">%*d</a>' % (la, i, mw, i))
192 192 else:
193 193 lines.append('%*d' % (mw, i))
194 194 else:
195 195 lines.append('')
196 196 ls = '\n'.join(lines)
197 197
198 198 # in case you wonder about the seemingly redundant <div> here: since the
199 199 # content in the other cell also is wrapped in a div, some browsers in
200 200 # some configurations seem to mess up the formatting...
201 201 if nocls:
202 202 yield 0, ('<table class="%stable">' % self.cssclass +
203 203 '<tr><td><div class="linenodiv" '
204 204 'style="background-color: #f0f0f0; padding-right: 10px">'
205 205 '<pre style="line-height: 125%">' +
206 206 ls + '</pre></div></td><td id="hlcode" class="code">')
207 207 else:
208 208 yield 0, ('<table class="%stable">' % self.cssclass +
209 209 '<tr><td class="linenos"><div class="linenodiv"><pre>' +
210 210 ls + '</pre></div></td><td id="hlcode" class="code">')
211 211 yield 0, dummyoutfile.getvalue()
212 212 yield 0, '</td></tr></table>'
213 213
214 214
215 215 def pygmentize(filenode, **kwargs):
216 216 """pygmentize function using pygments
217 217
218 218 :param filenode:
219 219 """
220 220
221 221 return literal(code_highlight(filenode.content,
222 222 filenode.lexer, CodeHtmlFormatter(**kwargs)))
223 223
224 224
225 225 def pygmentize_annotation(repo_name, filenode, **kwargs):
226 226 """
227 227 pygmentize function for annotation
228 228
229 229 :param filenode:
230 230 """
231 231
232 232 color_dict = {}
233 233
234 234 def gen_color(n=10000):
235 235 """generator for getting n of evenly distributed colors using
236 236 hsv color and golden ratio. It always return same order of colors
237 237
238 238 :returns: RGB tuple
239 239 """
240 240
241 241 def hsv_to_rgb(h, s, v):
242 242 if s == 0.0:
243 243 return v, v, v
244 244 i = int(h * 6.0) # XXX assume int() truncates!
245 245 f = (h * 6.0) - i
246 246 p = v * (1.0 - s)
247 247 q = v * (1.0 - s * f)
248 248 t = v * (1.0 - s * (1.0 - f))
249 249 i = i % 6
250 250 if i == 0:
251 251 return v, t, p
252 252 if i == 1:
253 253 return q, v, p
254 254 if i == 2:
255 255 return p, v, t
256 256 if i == 3:
257 257 return p, q, v
258 258 if i == 4:
259 259 return t, p, v
260 260 if i == 5:
261 261 return v, p, q
262 262
263 263 golden_ratio = 0.618033988749895
264 264 h = 0.22717784590367374
265 265
266 266 for _ in xrange(n):
267 267 h += golden_ratio
268 268 h %= 1
269 269 HSV_tuple = [h, 0.95, 0.95]
270 270 RGB_tuple = hsv_to_rgb(*HSV_tuple)
271 271 yield map(lambda x: str(int(x * 256)), RGB_tuple)
272 272
273 273 cgenerator = gen_color()
274 274
275 275 def get_color_string(cs):
276 276 if cs in color_dict:
277 277 col = color_dict[cs]
278 278 else:
279 279 col = color_dict[cs] = cgenerator.next()
280 280 return "color: rgb(%s)! important;" % (', '.join(col))
281 281
282 282 def url_func(repo_name):
283 283
284 284 def _url_func(changeset):
285 285 author = changeset.author
286 286 date = changeset.date
287 287 message = tooltip(changeset.message)
288 288
289 289 tooltip_html = ("<div style='font-size:0.8em'><b>Author:</b>"
290 290 " %s<br/><b>Date:</b> %s</b><br/><b>Message:"
291 291 "</b> %s<br/></div>")
292 292
293 293 tooltip_html = tooltip_html % (author, date, message)
294 294 lnk_format = '%5s:%s' % ('r%s' % changeset.revision,
295 295 short_id(changeset.raw_id))
296 296 uri = link_to(
297 297 lnk_format,
298 298 url('changeset_home', repo_name=repo_name,
299 299 revision=changeset.raw_id),
300 300 style=get_color_string(changeset.raw_id),
301 301 class_='tooltip',
302 302 title=tooltip_html
303 303 )
304 304
305 305 uri += '\n'
306 306 return uri
307 307 return _url_func
308 308
309 309 return literal(annotate_highlight(filenode, url_func(repo_name), **kwargs))
310 310
311 311
312 312 def is_following_repo(repo_name, user_id):
313 313 from rhodecode.model.scm import ScmModel
314 314 return ScmModel().is_following_repo(repo_name, user_id)
315 315
316 316 flash = _Flash()
317 317
318 318 #==============================================================================
319 319 # SCM FILTERS available via h.
320 320 #==============================================================================
321 321 from vcs.utils import author_name, author_email
322 322 from rhodecode.lib import credentials_filter, age as _age
323 323 from rhodecode.model.db import User
324 324
325 325 age = lambda x: _age(x)
326 326 capitalize = lambda x: x.capitalize()
327 327 email = author_email
328 328 short_id = lambda x: x[:12]
329 329 hide_credentials = lambda x: ''.join(credentials_filter(x))
330 330
331 331
332 332 def email_or_none(author):
333 333 _email = email(author)
334 334 if _email != '':
335 335 return _email
336 336
337 337 # See if it contains a username we can get an email from
338 338 user = User.get_by_username(author_name(author), case_insensitive=True,
339 339 cache=True)
340 340 if user is not None:
341 341 return user.email
342 342
343 343 # No valid email, not a valid user in the system, none!
344 344 return None
345 345
346 346
347 347 def person(author):
348 348 # attr to return from fetched user
349 349 person_getter = lambda usr: usr.username
350 350
351 351 # Valid email in the attribute passed, see if they're in the system
352 352 _email = email(author)
353 353 if _email != '':
354 354 user = User.get_by_email(_email, case_insensitive=True, cache=True)
355 355 if user is not None:
356 356 return person_getter(user)
357 357 return _email
358 358
359 359 # Maybe it's a username?
360 360 _author = author_name(author)
361 361 user = User.get_by_username(_author, case_insensitive=True,
362 362 cache=True)
363 363 if user is not None:
364 364 return person_getter(user)
365 365
366 366 # Still nothing? Just pass back the author name then
367 367 return _author
368 368
369 369 def bool2icon(value):
370 370 """Returns True/False values represented as small html image of true/false
371 371 icons
372 372
373 373 :param value: bool value
374 374 """
375 375
376 376 if value is True:
377 377 return HTML.tag('img', src=url("/images/icons/accept.png"),
378 378 alt=_('True'))
379 379
380 380 if value is False:
381 381 return HTML.tag('img', src=url("/images/icons/cancel.png"),
382 382 alt=_('False'))
383 383
384 384 return value
385 385
386 386
387 387 def action_parser(user_log, feed=False):
388 388 """This helper will action_map the specified string action into translated
389 389 fancy names with icons and links
390 390
391 391 :param user_log: user log instance
392 392 :param feed: use output for feeds (no html and fancy icons)
393 393 """
394 394
395 395 action = user_log.action
396 396 action_params = ' '
397 397
398 398 x = action.split(':')
399 399
400 400 if len(x) > 1:
401 401 action, action_params = x
402 402
403 403 def get_cs_links():
404 404 revs_limit = 3 #display this amount always
405 405 revs_top_limit = 50 #show upto this amount of changesets hidden
406 406 revs = action_params.split(',')
407 407 repo_name = user_log.repository.repo_name
408 408
409 409 from rhodecode.model.scm import ScmModel
410 410 repo = user_log.repository.scm_instance
411 411
412 412 message = lambda rev: get_changeset_safe(repo, rev).message
413 413 cs_links = []
414 414 cs_links.append(" " + ', '.join ([link_to(rev,
415 415 url('changeset_home',
416 416 repo_name=repo_name,
417 417 revision=rev), title=tooltip(message(rev)),
418 418 class_='tooltip') for rev in revs[:revs_limit] ]))
419 419
420 420 compare_view = (' <div class="compare_view tooltip" title="%s">'
421 421 '<a href="%s">%s</a> '
422 422 '</div>' % (_('Show all combined changesets %s->%s' \
423 423 % (revs[0], revs[-1])),
424 424 url('changeset_home', repo_name=repo_name,
425 425 revision='%s...%s' % (revs[0], revs[-1])
426 426 ),
427 427 _('compare view'))
428 428 )
429 429
430 430 if len(revs) > revs_limit:
431 431 uniq_id = revs[0]
432 432 html_tmpl = ('<span> %s '
433 433 '<a class="show_more" id="_%s" href="#more">%s</a> '
434 434 '%s</span>')
435 435 if not feed:
436 436 cs_links.append(html_tmpl % (_('and'), uniq_id, _('%s more') \
437 437 % (len(revs) - revs_limit),
438 438 _('revisions')))
439 439
440 440 if not feed:
441 441 html_tmpl = '<span id="%s" style="display:none"> %s </span>'
442 442 else:
443 443 html_tmpl = '<span id="%s"> %s </span>'
444 444
445 445 cs_links.append(html_tmpl % (uniq_id, ', '.join([link_to(rev,
446 446 url('changeset_home',
447 447 repo_name=repo_name, revision=rev),
448 448 title=message(rev), class_='tooltip')
449 449 for rev in revs[revs_limit:revs_top_limit]])))
450 450 if len(revs) > 1:
451 451 cs_links.append(compare_view)
452 452 return ''.join(cs_links)
453 453
454 454 def get_fork_name():
455 455 repo_name = action_params
456 456 return _('fork name ') + str(link_to(action_params, url('summary_home',
457 457 repo_name=repo_name,)))
458 458
459 459 action_map = {'user_deleted_repo':(_('[deleted] repository'), None),
460 460 'user_created_repo':(_('[created] repository'), None),
461 461 'user_created_fork':(_('[created] repository as fork'), None),
462 462 'user_forked_repo':(_('[forked] repository'), get_fork_name),
463 463 'user_updated_repo':(_('[updated] repository'), None),
464 464 'admin_deleted_repo':(_('[delete] repository'), None),
465 465 'admin_created_repo':(_('[created] repository'), None),
466 466 'admin_forked_repo':(_('[forked] repository'), None),
467 467 'admin_updated_repo':(_('[updated] repository'), None),
468 468 'push':(_('[pushed] into'), get_cs_links),
469 469 'push_local':(_('[committed via RhodeCode] into'), get_cs_links),
470 470 'push_remote':(_('[pulled from remote] into'), get_cs_links),
471 471 'pull':(_('[pulled] from'), None),
472 472 'started_following_repo':(_('[started following] repository'), None),
473 473 'stopped_following_repo':(_('[stopped following] repository'), None),
474 474 }
475 475
476 476 action_str = action_map.get(action, action)
477 477 if feed:
478 478 action = action_str[0].replace('[', '').replace(']', '')
479 479 else:
480 480 action = action_str[0].replace('[', '<span class="journal_highlight">')\
481 481 .replace(']', '</span>')
482 482
483 483 action_params_func = lambda :""
484 484
485 485 if callable(action_str[1]):
486 486 action_params_func = action_str[1]
487 487
488 488 return [literal(action), action_params_func]
489 489
490 490 def action_parser_icon(user_log):
491 491 action = user_log.action
492 492 action_params = None
493 493 x = action.split(':')
494 494
495 495 if len(x) > 1:
496 496 action, action_params = x
497 497
498 498 tmpl = """<img src="%s%s" alt="%s"/>"""
499 499 map = {'user_deleted_repo':'database_delete.png',
500 500 'user_created_repo':'database_add.png',
501 501 'user_created_fork':'arrow_divide.png',
502 502 'user_forked_repo':'arrow_divide.png',
503 503 'user_updated_repo':'database_edit.png',
504 504 'admin_deleted_repo':'database_delete.png',
505 505 'admin_created_repo':'database_add.png',
506 506 'admin_forked_repo':'arrow_divide.png',
507 507 'admin_updated_repo':'database_edit.png',
508 508 'push':'script_add.png',
509 509 'push_local':'script_edit.png',
510 510 'push_remote':'connect.png',
511 511 'pull':'down_16.png',
512 512 'started_following_repo':'heart_add.png',
513 513 'stopped_following_repo':'heart_delete.png',
514 514 }
515 515 return literal(tmpl % ((url('/images/icons/')),
516 516 map.get(action, action), action))
517 517
518 518
519 519 #==============================================================================
520 520 # PERMS
521 521 #==============================================================================
522 522 from rhodecode.lib.auth import HasPermissionAny, HasPermissionAll, \
523 523 HasRepoPermissionAny, HasRepoPermissionAll
524 524
525 525 #==============================================================================
526 526 # GRAVATAR URL
527 527 #==============================================================================
528 528
529 529 def gravatar_url(email_address, size=30):
530 530 if (not str2bool(config['app_conf'].get('use_gravatar')) or
531 531 not email_address or email_address == 'anonymous@rhodecode.org'):
532 532 return url("/images/user%s.png" % size)
533 533
534 534 ssl_enabled = 'https' == request.environ.get('wsgi.url_scheme')
535 535 default = 'identicon'
536 536 baseurl_nossl = "http://www.gravatar.com/avatar/"
537 537 baseurl_ssl = "https://secure.gravatar.com/avatar/"
538 538 baseurl = baseurl_ssl if ssl_enabled else baseurl_nossl
539 539
540 540 if isinstance(email_address, unicode):
541 541 #hashlib crashes on unicode items
542 542 email_address = safe_str(email_address)
543 543 # construct the url
544 544 gravatar_url = baseurl + hashlib.md5(email_address.lower()).hexdigest() + "?"
545 545 gravatar_url += urllib.urlencode({'d':default, 's':str(size)})
546 546
547 547 return gravatar_url
548 548
549 549
550 550 #==============================================================================
551 551 # REPO PAGER, PAGER FOR REPOSITORY
552 552 #==============================================================================
553 553 class RepoPage(Page):
554 554
555 555 def __init__(self, collection, page=1, items_per_page=20,
556 556 item_count=None, url=None, **kwargs):
557 557
558 558 """Create a "RepoPage" instance. special pager for paging
559 559 repository
560 560 """
561 561 self._url_generator = url
562 562
563 563 # Safe the kwargs class-wide so they can be used in the pager() method
564 564 self.kwargs = kwargs
565 565
566 566 # Save a reference to the collection
567 567 self.original_collection = collection
568 568
569 569 self.collection = collection
570 570
571 571 # The self.page is the number of the current page.
572 572 # The first page has the number 1!
573 573 try:
574 574 self.page = int(page) # make it int() if we get it as a string
575 575 except (ValueError, TypeError):
576 576 self.page = 1
577 577
578 578 self.items_per_page = items_per_page
579 579
580 580 # Unless the user tells us how many items the collections has
581 581 # we calculate that ourselves.
582 582 if item_count is not None:
583 583 self.item_count = item_count
584 584 else:
585 585 self.item_count = len(self.collection)
586 586
587 587 # Compute the number of the first and last available page
588 588 if self.item_count > 0:
589 589 self.first_page = 1
590 590 self.page_count = int(math.ceil(float(self.item_count) /
591 591 self.items_per_page))
592 592 self.last_page = self.first_page + self.page_count - 1
593 593
594 594 # Make sure that the requested page number is the range of
595 595 # valid pages
596 596 if self.page > self.last_page:
597 597 self.page = self.last_page
598 598 elif self.page < self.first_page:
599 599 self.page = self.first_page
600 600
601 601 # Note: the number of items on this page can be less than
602 602 # items_per_page if the last page is not full
603 603 self.first_item = max(0, (self.item_count) - (self.page *
604 604 items_per_page))
605 605 self.last_item = ((self.item_count - 1) - items_per_page *
606 606 (self.page - 1))
607 607
608 608 self.items = list(self.collection[self.first_item:self.last_item + 1])
609 609
610 610
611 611 # Links to previous and next page
612 612 if self.page > self.first_page:
613 613 self.previous_page = self.page - 1
614 614 else:
615 615 self.previous_page = None
616 616
617 617 if self.page < self.last_page:
618 618 self.next_page = self.page + 1
619 619 else:
620 620 self.next_page = None
621 621
622 622 # No items available
623 623 else:
624 624 self.first_page = None
625 625 self.page_count = 0
626 626 self.last_page = None
627 627 self.first_item = None
628 628 self.last_item = None
629 629 self.previous_page = None
630 630 self.next_page = None
631 631 self.items = []
632 632
633 633 # This is a subclass of the 'list' type. Initialise the list now.
634 634 list.__init__(self, reversed(self.items))
635 635
636 636
637 637 def changed_tooltip(nodes):
638 638 """
639 639 Generates a html string for changed nodes in changeset page.
640 640 It limits the output to 30 entries
641 641
642 642 :param nodes: LazyNodesGenerator
643 643 """
644 644 if nodes:
645 645 pref = ': <br/> '
646 646 suf = ''
647 647 if len(nodes) > 30:
648 648 suf = '<br/>' + _(' and %s more') % (len(nodes) - 30)
649 649 return literal(pref + '<br/> '.join([safe_unicode(x.path)
650 650 for x in nodes[:30]]) + suf)
651 651 else:
652 652 return ': ' + _('No Files')
653 653
654 654
655 655
656 656 def repo_link(groups_and_repos):
657 657 """
658 658 Makes a breadcrumbs link to repo within a group
659 659 joins &raquo; on each group to create a fancy link
660 660
661 661 ex::
662 662 group >> subgroup >> repo
663 663
664 664 :param groups_and_repos:
665 665 """
666 666 groups, repo_name = groups_and_repos
667 667
668 668 if not groups:
669 669 return repo_name
670 670 else:
671 671 def make_link(group):
672 672 return link_to(group.name, url('repos_group_home',
673 673 group_name=group.group_name))
674 674 return literal(' &raquo; '.join(map(make_link, groups)) + \
675 675 " &raquo; " + repo_name)
676 676
677 677 def fancy_file_stats(stats):
678 678 """
679 679 Displays a fancy two colored bar for number of added/deleted
680 680 lines of code on file
681 681
682 682 :param stats: two element list of added/deleted lines of code
683 683 """
684 684
685 685 a, d, t = stats[0], stats[1], stats[0] + stats[1]
686 686 width = 100
687 687 unit = float(width) / (t or 1)
688 688
689 689 # needs > 9% of width to be visible or 0 to be hidden
690 690 a_p = max(9, unit * a) if a > 0 else 0
691 691 d_p = max(9, unit * d) if d > 0 else 0
692 692 p_sum = a_p + d_p
693 693
694 694 if p_sum > width:
695 695 #adjust the percentage to be == 100% since we adjusted to 9
696 696 if a_p > d_p:
697 697 a_p = a_p - (p_sum - width)
698 698 else:
699 699 d_p = d_p - (p_sum - width)
700 700
701 701 a_v = a if a > 0 else ''
702 702 d_v = d if d > 0 else ''
703 703
704 704
705 705 def cgen(l_type):
706 706 mapping = {'tr':'top-right-rounded-corner',
707 707 'tl':'top-left-rounded-corner',
708 708 'br':'bottom-right-rounded-corner',
709 709 'bl':'bottom-left-rounded-corner'}
710 710 map_getter = lambda x:mapping[x]
711 711
712 712 if l_type == 'a' and d_v:
713 713 #case when added and deleted are present
714 714 return ' '.join(map(map_getter, ['tl', 'bl']))
715 715
716 716 if l_type == 'a' and not d_v:
717 717 return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
718 718
719 719 if l_type == 'd' and a_v:
720 720 return ' '.join(map(map_getter, ['tr', 'br']))
721 721
722 722 if l_type == 'd' and not a_v:
723 723 return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
724 724
725 725
726 726
727 727 d_a = '<div class="added %s" style="width:%s%%">%s</div>' % (cgen('a'),
728 728 a_p, a_v)
729 729 d_d = '<div class="deleted %s" style="width:%s%%">%s</div>' % (cgen('d'),
730 730 d_p, d_v)
731 731 return literal('<div style="width:%spx">%s%s</div>' % (width, d_a, d_d))
732 732
733 733
734 734 def urlify_text(text_):
735 735 import re
736 736
737 737 url_pat = re.compile(r'''(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]'''
738 738 '''|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)''')
739 739
740 740 def url_func(match_obj):
741 741 url_full = match_obj.groups()[0]
742 742 return '<a href="%(url)s">%(url)s</a>' % ({'url':url_full})
743 743
744 744 return literal(url_pat.sub(url_func, text_))
745 745
746 746 def urlify_commit(text_):
747 747 import re
748 748 import traceback
749 749
750 750 try:
751 751 conf = config['app_conf']
752 752
753 753 URL_PAT = re.compile(r'%s' % conf.get('url_pat'))
754 754
755 755 if URL_PAT:
756 756 ISSUE_SERVER = conf.get('issue_server')
757 757 ISSUE_PREFIX = conf.get('issue_prefix')
758 758 def url_func(match_obj):
759 759 issue_id = match_obj.groups()[0]
760 760 tmpl = (
761 '<a class="%(cls)s" href="%(url)s">'
762 ' %(issue-prefix)s%(id-repr)s'
761 ' <a class="%(cls)s" href="%(url)s">'
762 '%(issue-prefix)s%(id-repr)s'
763 763 '</a>'
764 764 )
765 765 return tmpl % (
766 766 {
767 767 'cls':'issue-tracker-link',
768 768 'url':ISSUE_SERVER.replace('{id}',issue_id),
769 769 'id-repr':issue_id,
770 770 'issue-prefix':ISSUE_PREFIX,
771 771 'serv':ISSUE_SERVER,
772 772 }
773 773 )
774 774 return literal(URL_PAT.sub(url_func, text_))
775 775 except:
776 776 log.error(traceback.format_exc())
777 777 pass
778 778
779 779 return text_
780 780
781 781 def rst(source):
782 782 return literal('<div class="rst-block">%s</div>' %
783 783 MarkupRenderer.rst(source))
784 784
785 785 def rst_w_mentions(source):
786 786 """
787 787 Wrapped rst renderer with @mention highlighting
788 788
789 789 :param source:
790 790 """
791 791 return literal('<div class="rst-block">%s</div>' %
792 792 MarkupRenderer.rst_with_mentions(source))
@@ -1,4102 +1,4131 b''
1 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 3 border: 0;
4 4 outline: 0;
5 5 font-size: 100%;
6 6 vertical-align: baseline;
7 7 background: transparent;
8 8 margin: 0;
9 9 padding: 0;
10 10 }
11 11
12 12 body {
13 13 line-height: 1;
14 14 height: 100%;
15 15 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
16 16 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
17 17 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
18 18 color: #000;
19 19 margin: 0;
20 20 padding: 0;
21 21 font-size: 12px;
22 22 }
23 23
24 24 ol,ul {
25 25 list-style: none;
26 26 }
27 27
28 28 blockquote,q {
29 29 quotes: none;
30 30 }
31 31
32 32 blockquote:before,blockquote:after,q:before,q:after {
33 33 content: none;
34 34 }
35 35
36 36 :focus {
37 37 outline: 0;
38 38 }
39 39
40 40 del {
41 41 text-decoration: line-through;
42 42 }
43 43
44 44 table {
45 45 border-collapse: collapse;
46 46 border-spacing: 0;
47 47 }
48 48
49 49 html {
50 50 height: 100%;
51 51 }
52 52
53 53 a {
54 54 color: #003367;
55 55 text-decoration: none;
56 56 cursor: pointer;
57 57 }
58 58
59 59 a:hover {
60 60 color: #316293;
61 61 text-decoration: underline;
62 62 }
63 63
64 64 h1,h2,h3,h4,h5,h6 {
65 65 color: #292929;
66 66 font-weight: 700;
67 67 }
68 68
69 69 h1 {
70 70 font-size: 22px;
71 71 }
72 72
73 73 h2 {
74 74 font-size: 20px;
75 75 }
76 76
77 77 h3 {
78 78 font-size: 18px;
79 79 }
80 80
81 81 h4 {
82 82 font-size: 16px;
83 83 }
84 84
85 85 h5 {
86 86 font-size: 14px;
87 87 }
88 88
89 89 h6 {
90 90 font-size: 11px;
91 91 }
92 92
93 93 ul.circle {
94 94 list-style-type: circle;
95 95 }
96 96
97 97 ul.disc {
98 98 list-style-type: disc;
99 99 }
100 100
101 101 ul.square {
102 102 list-style-type: square;
103 103 }
104 104
105 105 ol.lower-roman {
106 106 list-style-type: lower-roman;
107 107 }
108 108
109 109 ol.upper-roman {
110 110 list-style-type: upper-roman;
111 111 }
112 112
113 113 ol.lower-alpha {
114 114 list-style-type: lower-alpha;
115 115 }
116 116
117 117 ol.upper-alpha {
118 118 list-style-type: upper-alpha;
119 119 }
120 120
121 121 ol.decimal {
122 122 list-style-type: decimal;
123 123 }
124 124
125 125 div.color {
126 126 clear: both;
127 127 overflow: hidden;
128 128 position: absolute;
129 129 background: #FFF;
130 130 margin: 7px 0 0 60px;
131 131 padding: 1px 1px 1px 0;
132 132 }
133 133
134 134 div.color a {
135 135 width: 15px;
136 136 height: 15px;
137 137 display: block;
138 138 float: left;
139 139 margin: 0 0 0 1px;
140 140 padding: 0;
141 141 }
142 142
143 143 div.options {
144 144 clear: both;
145 145 overflow: hidden;
146 146 position: absolute;
147 147 background: #FFF;
148 148 margin: 7px 0 0 162px;
149 149 padding: 0;
150 150 }
151 151
152 152 div.options a {
153 153 height: 1%;
154 154 display: block;
155 155 text-decoration: none;
156 156 margin: 0;
157 157 padding: 3px 8px;
158 158 }
159 159
160 160 .top-left-rounded-corner {
161 161 -webkit-border-top-left-radius: 8px;
162 162 -khtml-border-radius-topleft: 8px;
163 163 -moz-border-radius-topleft: 8px;
164 164 border-top-left-radius: 8px;
165 165 }
166 166
167 167 .top-right-rounded-corner {
168 168 -webkit-border-top-right-radius: 8px;
169 169 -khtml-border-radius-topright: 8px;
170 170 -moz-border-radius-topright: 8px;
171 171 border-top-right-radius: 8px;
172 172 }
173 173
174 174 .bottom-left-rounded-corner {
175 175 -webkit-border-bottom-left-radius: 8px;
176 176 -khtml-border-radius-bottomleft: 8px;
177 177 -moz-border-radius-bottomleft: 8px;
178 178 border-bottom-left-radius: 8px;
179 179 }
180 180
181 181 .bottom-right-rounded-corner {
182 182 -webkit-border-bottom-right-radius: 8px;
183 183 -khtml-border-radius-bottomright: 8px;
184 184 -moz-border-radius-bottomright: 8px;
185 185 border-bottom-right-radius: 8px;
186 186 }
187 187
188 188 #header {
189 189 margin: 0;
190 190 padding: 0 10px;
191 191 }
192 192
193 193 #header ul#logged-user {
194 194 margin-bottom: 5px !important;
195 195 -webkit-border-radius: 0px 0px 8px 8px;
196 196 -khtml-border-radius: 0px 0px 8px 8px;
197 197 -moz-border-radius: 0px 0px 8px 8px;
198 198 border-radius: 0px 0px 8px 8px;
199 199 height: 37px;
200 200 background-color: #eedc94;
201 201 background-repeat: repeat-x;
202 202 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
203 203 to(#eedc94) );
204 204 background-image: -moz-linear-gradient(top, #003b76, #00376e);
205 205 background-image: -ms-linear-gradient(top, #003b76, #00376e);
206 206 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
207 207 color-stop(100%, #00376e) );
208 208 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
209 209 background-image: -o-linear-gradient(top, #003b76, #00376e) );
210 210 background-image: linear-gradient(top, #003b76, #00376e);
211 211 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
212 212 endColorstr='#00376e', GradientType=0 );
213 213 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
214 214 }
215 215
216 216 #header ul#logged-user li {
217 217 list-style: none;
218 218 float: left;
219 219 margin: 8px 0 0;
220 220 padding: 4px 12px;
221 221 border-left: 1px solid #316293;
222 222 }
223 223
224 224 #header ul#logged-user li.first {
225 225 border-left: none;
226 226 margin: 4px;
227 227 }
228 228
229 229 #header ul#logged-user li.first div.gravatar {
230 230 margin-top: -2px;
231 231 }
232 232
233 233 #header ul#logged-user li.first div.account {
234 234 padding-top: 4px;
235 235 float: left;
236 236 }
237 237
238 238 #header ul#logged-user li.last {
239 239 border-right: none;
240 240 }
241 241
242 242 #header ul#logged-user li a {
243 243 color: #fff;
244 244 font-weight: 700;
245 245 text-decoration: none;
246 246 }
247 247
248 248 #header ul#logged-user li a:hover {
249 249 text-decoration: underline;
250 250 }
251 251
252 252 #header ul#logged-user li.highlight a {
253 253 color: #fff;
254 254 }
255 255
256 256 #header ul#logged-user li.highlight a:hover {
257 257 color: #FFF;
258 258 }
259 259
260 260 #header #header-inner {
261 261 min-height: 40px;
262 262 clear: both;
263 263 position: relative;
264 264 background-color: #eedc94;
265 265 background-repeat: repeat-x;
266 266 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
267 267 to(#eedc94) );
268 268 background-image: -moz-linear-gradient(top, #003b76, #00376e);
269 269 background-image: -ms-linear-gradient(top, #003b76, #00376e);
270 270 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
271 271 color-stop(100%, #00376e) );
272 272 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
273 273 background-image: -o-linear-gradient(top, #003b76, #00376e) );
274 274 background-image: linear-gradient(top, #003b76, #00376e);
275 275 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
276 276 endColorstr='#00376e', GradientType=0 );
277 277 margin: 0;
278 278 padding: 0;
279 279 display: block;
280 280 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
281 281 -webkit-border-radius: 4px 4px 4px 4px;
282 282 -khtml-border-radius: 4px 4px 4px 4px;
283 283 -moz-border-radius: 4px 4px 4px 4px;
284 284 border-radius: 4px 4px 4px 4px;
285 285 }
286 286 #header #header-inner.hover{
287 287 position: fixed !important;
288 288 width: 100% !important;
289 289 margin-left: -10px !important;
290 290 z-index: 10000;
291 291 border-radius: 0px 0px 4px 4px;
292 292 }
293 293 #header #header-inner #home a {
294 294 height: 40px;
295 295 width: 46px;
296 296 display: block;
297 297 background: url("../images/button_home.png");
298 298 background-position: 0 0;
299 299 margin: 0;
300 300 padding: 0;
301 301 }
302 302
303 303 #header #header-inner #home a:hover {
304 304 background-position: 0 -40px;
305 305 }
306 306
307 307 #header #header-inner #logo {
308 308 float: left;
309 309 position: absolute;
310 310 }
311 311
312 312 #header #header-inner #logo h1 {
313 313 color: #FFF;
314 314 font-size: 18px;
315 315 margin: 10px 0 0 13px;
316 316 padding: 0;
317 317 }
318 318
319 319 #header #header-inner #logo a {
320 320 color: #fff;
321 321 text-decoration: none;
322 322 }
323 323
324 324 #header #header-inner #logo a:hover {
325 325 color: #bfe3ff;
326 326 }
327 327
328 328 #header #header-inner #quick,#header #header-inner #quick ul {
329 329 position: relative;
330 330 float: right;
331 331 list-style-type: none;
332 332 list-style-position: outside;
333 333 margin: 6px 5px 0 0;
334 334 padding: 0;
335 335 }
336 336
337 337 #header #header-inner #quick li {
338 338 position: relative;
339 339 float: left;
340 340 margin: 0 5px 0 0;
341 341 padding: 0;
342 342 }
343 343
344 344 #header #header-inner #quick li a {
345 345 top: 0;
346 346 left: 0;
347 347 height: 1%;
348 348 display: block;
349 349 clear: both;
350 350 overflow: hidden;
351 351 color: #FFF;
352 352 font-weight: 700;
353 353 text-decoration: none;
354 354 background: #369;
355 355 padding: 0;
356 356 -webkit-border-radius: 4px 4px 4px 4px;
357 357 -khtml-border-radius: 4px 4px 4px 4px;
358 358 -moz-border-radius: 4px 4px 4px 4px;
359 359 border-radius: 4px 4px 4px 4px;
360 360 }
361 361
362 362 #header #header-inner #quick li span.short {
363 363 padding: 9px 6px 8px 6px;
364 364 }
365 365
366 366 #header #header-inner #quick li span {
367 367 top: 0;
368 368 right: 0;
369 369 height: 1%;
370 370 display: block;
371 371 float: left;
372 372 border-left: 1px solid #3f6f9f;
373 373 margin: 0;
374 374 padding: 10px 12px 8px 10px;
375 375 }
376 376
377 377 #header #header-inner #quick li span.normal {
378 378 border: none;
379 379 padding: 10px 12px 8px;
380 380 }
381 381
382 382 #header #header-inner #quick li span.icon {
383 383 top: 0;
384 384 left: 0;
385 385 border-left: none;
386 386 border-right: 1px solid #2e5c89;
387 387 padding: 8px 6px 4px;
388 388 }
389 389
390 390 #header #header-inner #quick li span.icon_short {
391 391 top: 0;
392 392 left: 0;
393 393 border-left: none;
394 394 border-right: 1px solid #2e5c89;
395 395 padding: 8px 6px 4px;
396 396 }
397 397
398 398 #header #header-inner #quick li span.icon img,#header #header-inner #quick li span.icon_short img
399 399 {
400 400 margin: 0px -2px 0px 0px;
401 401 }
402 402
403 403 #header #header-inner #quick li a:hover {
404 404 background: #4e4e4e no-repeat top left;
405 405 }
406 406
407 407 #header #header-inner #quick li a:hover span {
408 408 border-left: 1px solid #545454;
409 409 }
410 410
411 411 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short
412 412 {
413 413 border-left: none;
414 414 border-right: 1px solid #464646;
415 415 }
416 416
417 417 #header #header-inner #quick ul {
418 418 top: 29px;
419 419 right: 0;
420 420 min-width: 200px;
421 421 display: none;
422 422 position: absolute;
423 423 background: #FFF;
424 424 border: 1px solid #666;
425 425 border-top: 1px solid #003367;
426 426 z-index: 100;
427 427 margin: 0;
428 428 padding: 0;
429 429 }
430 430
431 431 #header #header-inner #quick ul.repo_switcher {
432 432 max-height: 275px;
433 433 overflow-x: hidden;
434 434 overflow-y: auto;
435 435 }
436 436
437 437 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
438 438 float: none;
439 439 margin: 0;
440 440 border-bottom: 2px solid #003367;
441 441 }
442 442
443 443 #header #header-inner #quick .repo_switcher_type {
444 444 position: absolute;
445 445 left: 0;
446 446 top: 9px;
447 447 }
448 448
449 449 #header #header-inner #quick li ul li {
450 450 border-bottom: 1px solid #ddd;
451 451 }
452 452
453 453 #header #header-inner #quick li ul li a {
454 454 width: 182px;
455 455 height: auto;
456 456 display: block;
457 457 float: left;
458 458 background: #FFF;
459 459 color: #003367;
460 460 font-weight: 400;
461 461 margin: 0;
462 462 padding: 7px 9px;
463 463 }
464 464
465 465 #header #header-inner #quick li ul li a:hover {
466 466 color: #000;
467 467 background: #FFF;
468 468 }
469 469
470 470 #header #header-inner #quick ul ul {
471 471 top: auto;
472 472 }
473 473
474 474 #header #header-inner #quick li ul ul {
475 475 right: 200px;
476 476 max-height: 275px;
477 477 overflow: auto;
478 478 overflow-x: hidden;
479 479 white-space: normal;
480 480 }
481 481
482 482 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover
483 483 {
484 484 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
485 485 #FFF;
486 486 width: 167px;
487 487 margin: 0;
488 488 padding: 12px 9px 7px 24px;
489 489 }
490 490
491 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 493 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
494 494 #FFF;
495 495 min-width: 167px;
496 496 margin: 0;
497 497 padding: 12px 9px 7px 24px;
498 498 }
499 499
500 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 502 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
503 503 9px #FFF;
504 504 min-width: 167px;
505 505 margin: 0;
506 506 padding: 12px 9px 7px 24px;
507 507 }
508 508
509 509 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover
510 510 {
511 511 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
512 512 #FFF;
513 513 min-width: 167px;
514 514 margin: 0 0 0 14px;
515 515 padding: 12px 9px 7px 24px;
516 516 }
517 517
518 518 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover
519 519 {
520 520 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
521 521 #FFF;
522 522 min-width: 167px;
523 523 margin: 0 0 0 14px;
524 524 padding: 12px 9px 7px 24px;
525 525 }
526 526
527 527 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
528 528 {
529 529 background: url("../images/icons/database_edit.png") no-repeat scroll
530 530 4px 9px #FFF;
531 531 width: 167px;
532 532 margin: 0;
533 533 padding: 12px 9px 7px 24px;
534 534 }
535 535
536 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 538 background: url("../images/icons/database_link.png") no-repeat scroll
539 539 4px 9px #FFF;
540 540 width: 167px;
541 541 margin: 0;
542 542 padding: 12px 9px 7px 24px;
543 543 }
544 544
545 545 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
546 546 {
547 547 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
548 548 width: 167px;
549 549 margin: 0;
550 550 padding: 12px 9px 7px 24px;
551 551 }
552 552
553 553 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover
554 554 {
555 555 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
556 556 width: 167px;
557 557 margin: 0;
558 558 padding: 12px 9px 7px 24px;
559 559 }
560 560
561 561 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
562 562 {
563 563 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
564 564 width: 167px;
565 565 margin: 0;
566 566 padding: 12px 9px 7px 24px;
567 567 }
568 568
569 569 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
570 570 {
571 571 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
572 572 width: 167px;
573 573 margin: 0;
574 574 padding: 12px 9px 7px 24px;
575 575 }
576 576
577 577 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover
578 578 {
579 579 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
580 580 width: 167px;
581 581 margin: 0;
582 582 padding: 12px 9px 7px 24px;
583 583 }
584 584
585 585 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover
586 586 {
587 587 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
588 588 9px;
589 589 width: 167px;
590 590 margin: 0;
591 591 padding: 12px 9px 7px 24px;
592 592 }
593 593
594 594 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover
595 595 {
596 596 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
597 597 width: 167px;
598 598 margin: 0;
599 599 padding: 12px 9px 7px 24px;
600 600 }
601 601
602 602 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover
603 603 {
604 604 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
605 605 width: 167px;
606 606 margin: 0;
607 607 padding: 12px 9px 7px 24px;
608 608 }
609 609
610 610 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover
611 611 {
612 612 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
613 613 9px;
614 614 width: 167px;
615 615 margin: 0;
616 616 padding: 12px 9px 7px 24px;
617 617 }
618 618
619 619 #header #header-inner #quick li ul li a.tags,
620 620 #header #header-inner #quick li ul li a.tags:hover{
621 621 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
622 622 width: 167px;
623 623 margin: 0;
624 624 padding: 12px 9px 7px 24px;
625 625 }
626 626
627 627 #header #header-inner #quick li ul li a.bookmarks,
628 628 #header #header-inner #quick li ul li a.bookmarks:hover{
629 629 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
630 630 width: 167px;
631 631 margin: 0;
632 632 padding: 12px 9px 7px 24px;
633 633 }
634 634
635 635 #header #header-inner #quick li ul li a.admin,
636 636 #header #header-inner #quick li ul li a.admin:hover{
637 637 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
638 638 width: 167px;
639 639 margin: 0;
640 640 padding: 12px 9px 7px 24px;
641 641 }
642 642
643 643 .groups_breadcrumbs a {
644 644 color: #fff;
645 645 }
646 646
647 647 .groups_breadcrumbs a:hover {
648 648 color: #bfe3ff;
649 649 text-decoration: none;
650 650 }
651 651
652 652 td.quick_repo_menu {
653 653 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
654 654 cursor: pointer;
655 655 width: 8px;
656 656 border: 1px solid transparent;
657 657 }
658 658
659 659 td.quick_repo_menu.active {
660 660 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
661 661 border: 1px solid #003367;
662 662 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
663 663 cursor: pointer;
664 664 }
665 665
666 666 td.quick_repo_menu .menu_items {
667 667 margin-top: 10px;
668 668 margin-left:-6px;
669 669 width: 150px;
670 670 position: absolute;
671 671 background-color: #FFF;
672 672 background: none repeat scroll 0 0 #FFFFFF;
673 673 border-color: #003367 #666666 #666666;
674 674 border-right: 1px solid #666666;
675 675 border-style: solid;
676 676 border-width: 1px;
677 677 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
678 678 border-top-style: none;
679 679 }
680 680
681 681 td.quick_repo_menu .menu_items li {
682 682 padding: 0 !important;
683 683 }
684 684
685 685 td.quick_repo_menu .menu_items a {
686 686 display: block;
687 687 padding: 4px 12px 4px 8px;
688 688 }
689 689
690 690 td.quick_repo_menu .menu_items a:hover {
691 691 background-color: #EEE;
692 692 text-decoration: none;
693 693 }
694 694
695 695 td.quick_repo_menu .menu_items .icon img {
696 696 margin-bottom: -2px;
697 697 }
698 698
699 699 td.quick_repo_menu .menu_items.hidden {
700 700 display: none;
701 701 }
702 702
703 703 .yui-dt-first th {
704 704 text-align: left;
705 705 }
706 706
707 707 /*
708 708 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
709 709 Code licensed under the BSD License:
710 710 http://developer.yahoo.com/yui/license.html
711 711 version: 2.9.0
712 712 */
713 713 .yui-skin-sam .yui-dt-mask {
714 714 position: absolute;
715 715 z-index: 9500;
716 716 }
717 717 .yui-dt-tmp {
718 718 position: absolute;
719 719 left: -9000px;
720 720 }
721 721 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
722 722 .yui-dt-scrollable .yui-dt-hd {
723 723 overflow: hidden;
724 724 position: relative;
725 725 }
726 726 .yui-dt-scrollable .yui-dt-bd thead tr,
727 727 .yui-dt-scrollable .yui-dt-bd thead th {
728 728 position: absolute;
729 729 left: -1500px;
730 730 }
731 731 .yui-dt-scrollable tbody { -moz-outline: 0 }
732 732 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
733 733 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
734 734 .yui-dt-coltarget {
735 735 position: absolute;
736 736 z-index: 999;
737 737 }
738 738 .yui-dt-hd { zoom: 1 }
739 739 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
740 740 .yui-dt-resizer {
741 741 position: absolute;
742 742 right: 0;
743 743 bottom: 0;
744 744 height: 100%;
745 745 cursor: e-resize;
746 746 cursor: col-resize;
747 747 background-color: #CCC;
748 748 opacity: 0;
749 749 filter: alpha(opacity=0);
750 750 }
751 751 .yui-dt-resizerproxy {
752 752 visibility: hidden;
753 753 position: absolute;
754 754 z-index: 9000;
755 755 background-color: #CCC;
756 756 opacity: 0;
757 757 filter: alpha(opacity=0);
758 758 }
759 759 th.yui-dt-hidden .yui-dt-liner,
760 760 td.yui-dt-hidden .yui-dt-liner,
761 761 th.yui-dt-hidden .yui-dt-resizer { display: none }
762 762 .yui-dt-editor,
763 763 .yui-dt-editor-shim {
764 764 position: absolute;
765 765 z-index: 9000;
766 766 }
767 767 .yui-skin-sam .yui-dt table {
768 768 margin: 0;
769 769 padding: 0;
770 770 font-family: arial;
771 771 font-size: inherit;
772 772 border-collapse: separate;
773 773 *border-collapse: collapse;
774 774 border-spacing: 0;
775 775 border: 1px solid #7f7f7f;
776 776 }
777 777 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
778 778 .yui-skin-sam .yui-dt caption {
779 779 color: #000;
780 780 font-size: 85%;
781 781 font-weight: normal;
782 782 font-style: italic;
783 783 line-height: 1;
784 784 padding: 1em 0;
785 785 text-align: center;
786 786 }
787 787 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
788 788 .yui-skin-sam .yui-dt th,
789 789 .yui-skin-sam .yui-dt th a {
790 790 font-weight: normal;
791 791 text-decoration: none;
792 792 color: #000;
793 793 vertical-align: bottom;
794 794 }
795 795 .yui-skin-sam .yui-dt th {
796 796 margin: 0;
797 797 padding: 0;
798 798 border: 0;
799 799 border-right: 1px solid #cbcbcb;
800 800 }
801 801 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
802 802 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
803 803 .yui-skin-sam .yui-dt-liner {
804 804 margin: 0;
805 805 padding: 0;
806 806 }
807 807 .yui-skin-sam .yui-dt-coltarget {
808 808 width: 5px;
809 809 background-color: red;
810 810 }
811 811 .yui-skin-sam .yui-dt td {
812 812 margin: 0;
813 813 padding: 0;
814 814 border: 0;
815 815 border-right: 1px solid #cbcbcb;
816 816 text-align: left;
817 817 }
818 818 .yui-skin-sam .yui-dt-list td { border-right: 0 }
819 819 .yui-skin-sam .yui-dt-resizer { width: 6px }
820 820 .yui-skin-sam .yui-dt-mask {
821 821 background-color: #000;
822 822 opacity: .25;
823 823 filter: alpha(opacity=25);
824 824 }
825 825 .yui-skin-sam .yui-dt-message { background-color: #FFF }
826 826 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
827 827 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
828 828 border-left: 1px solid #7f7f7f;
829 829 border-top: 1px solid #7f7f7f;
830 830 border-right: 1px solid #7f7f7f;
831 831 }
832 832 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
833 833 border-left: 1px solid #7f7f7f;
834 834 border-bottom: 1px solid #7f7f7f;
835 835 border-right: 1px solid #7f7f7f;
836 836 background-color: #FFF;
837 837 }
838 838 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
839 839 .yui-skin-sam th.yui-dt-asc,
840 840 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
841 841 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
842 842 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
843 843 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
844 844 tbody .yui-dt-editable { cursor: pointer }
845 845 .yui-dt-editor {
846 846 text-align: left;
847 847 background-color: #f2f2f2;
848 848 border: 1px solid #808080;
849 849 padding: 6px;
850 850 }
851 851 .yui-dt-editor label {
852 852 padding-left: 4px;
853 853 padding-right: 6px;
854 854 }
855 855 .yui-dt-editor .yui-dt-button {
856 856 padding-top: 6px;
857 857 text-align: right;
858 858 }
859 859 .yui-dt-editor .yui-dt-button button {
860 860 background: url(../images/sprite.png) repeat-x 0 0;
861 861 border: 1px solid #999;
862 862 width: 4em;
863 863 height: 1.8em;
864 864 margin-left: 6px;
865 865 }
866 866 .yui-dt-editor .yui-dt-button button.yui-dt-default {
867 867 background: url(../images/sprite.png) repeat-x 0 -1400px;
868 868 background-color: #5584e0;
869 869 border: 1px solid #304369;
870 870 color: #FFF;
871 871 }
872 872 .yui-dt-editor .yui-dt-button button:hover {
873 873 background: url(../images/sprite.png) repeat-x 0 -1300px;
874 874 color: #000;
875 875 }
876 876 .yui-dt-editor .yui-dt-button button:active {
877 877 background: url(../images/sprite.png) repeat-x 0 -1700px;
878 878 color: #000;
879 879 }
880 880 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
881 881 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
882 882 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
883 883 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
884 884 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
885 885 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
886 886 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
887 887 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
888 888 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
889 889 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
890 890 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
891 891 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
892 892 .yui-skin-sam th.yui-dt-highlighted,
893 893 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
894 894 .yui-skin-sam tr.yui-dt-highlighted,
895 895 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
896 896 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
897 897 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
898 898 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
899 899 cursor: pointer;
900 900 background-color: #b2d2ff;
901 901 }
902 902 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
903 903 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
904 904 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
905 905 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
906 906 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
907 907 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
908 908 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
909 909 cursor: pointer;
910 910 background-color: #b2d2ff;
911 911 }
912 912 .yui-skin-sam th.yui-dt-selected,
913 913 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
914 914 .yui-skin-sam tr.yui-dt-selected td,
915 915 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
916 916 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
917 917 background-color: #426fd9;
918 918 color: #FFF;
919 919 }
920 920 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
921 921 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
922 922 background-color: #446cd7;
923 923 color: #FFF;
924 924 }
925 925 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
926 926 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
927 927 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
928 928 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
929 929 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
930 930 background-color: #426fd9;
931 931 color: #FFF;
932 932 }
933 933 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
934 934 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
935 935 background-color: #446cd7;
936 936 color: #FFF;
937 937 }
938 938 .yui-skin-sam .yui-dt-paginator {
939 939 display: block;
940 940 margin: 6px 0;
941 941 white-space: nowrap;
942 942 }
943 943 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
944 944 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
945 945 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
946 946 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
947 947 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
948 948 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
949 949 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
950 950 .yui-skin-sam a.yui-dt-page {
951 951 border: 1px solid #cbcbcb;
952 952 padding: 2px 6px;
953 953 text-decoration: none;
954 954 background-color: #fff;
955 955 }
956 956 .yui-skin-sam .yui-dt-selected {
957 957 border: 1px solid #fff;
958 958 background-color: #fff;
959 959 }
960 960
961 961 #content #left {
962 962 left: 0;
963 963 width: 280px;
964 964 position: absolute;
965 965 }
966 966
967 967 #content #right {
968 968 margin: 0 60px 10px 290px;
969 969 }
970 970
971 971 #content div.box {
972 972 clear: both;
973 973 overflow: hidden;
974 974 background: #fff;
975 975 margin: 0 0 10px;
976 976 padding: 0 0 10px;
977 977 -webkit-border-radius: 4px 4px 4px 4px;
978 978 -khtml-border-radius: 4px 4px 4px 4px;
979 979 -moz-border-radius: 4px 4px 4px 4px;
980 980 border-radius: 4px 4px 4px 4px;
981 981 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
982 982 }
983 983
984 984 #content div.box-left {
985 985 width: 49%;
986 986 clear: none;
987 987 float: left;
988 988 margin: 0 0 10px;
989 989 }
990 990
991 991 #content div.box-right {
992 992 width: 49%;
993 993 clear: none;
994 994 float: right;
995 995 margin: 0 0 10px;
996 996 }
997 997
998 998 #content div.box div.title {
999 999 clear: both;
1000 1000 overflow: hidden;
1001 1001 background-color: #eedc94;
1002 1002 background-repeat: repeat-x;
1003 1003 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1004 1004 to(#eedc94) );
1005 1005 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1006 1006 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1007 1007 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1008 1008 color-stop(100%, #00376e) );
1009 1009 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1010 1010 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1011 1011 background-image: linear-gradient(top, #003b76, #00376e);
1012 1012 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1013 1013 endColorstr='#00376e', GradientType=0 );
1014 1014 margin: 0 0 20px;
1015 1015 padding: 0;
1016 1016 }
1017 1017
1018 1018 #content div.box div.title h5 {
1019 1019 float: left;
1020 1020 border: none;
1021 1021 color: #fff;
1022 1022 text-transform: uppercase;
1023 1023 margin: 0;
1024 1024 padding: 11px 0 11px 10px;
1025 1025 }
1026 1026
1027 1027 #content div.box div.title .link-white{
1028 1028 color: #FFFFFF;
1029 1029 }
1030 1030
1031 1031 #content div.box div.title ul.links li {
1032 1032 list-style: none;
1033 1033 float: left;
1034 1034 margin: 0;
1035 1035 padding: 0;
1036 1036 }
1037 1037
1038 1038 #content div.box div.title ul.links li a {
1039 1039 border-left: 1px solid #316293;
1040 1040 color: #FFFFFF;
1041 1041 display: block;
1042 1042 float: left;
1043 1043 font-size: 13px;
1044 1044 font-weight: 700;
1045 1045 height: 1%;
1046 1046 margin: 0;
1047 1047 padding: 11px 22px 12px;
1048 1048 text-decoration: none;
1049 1049 }
1050 1050
1051 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 1053 clear: both;
1054 1054 overflow: hidden;
1055 1055 border-bottom: 1px solid #DDD;
1056 1056 margin: 10px 20px;
1057 1057 padding: 0 0 15px;
1058 1058 }
1059 1059
1060 1060 #content div.box p {
1061 1061 color: #5f5f5f;
1062 1062 font-size: 12px;
1063 1063 line-height: 150%;
1064 1064 margin: 0 24px 10px;
1065 1065 padding: 0;
1066 1066 }
1067 1067
1068 1068 #content div.box blockquote {
1069 1069 border-left: 4px solid #DDD;
1070 1070 color: #5f5f5f;
1071 1071 font-size: 11px;
1072 1072 line-height: 150%;
1073 1073 margin: 0 34px;
1074 1074 padding: 0 0 0 14px;
1075 1075 }
1076 1076
1077 1077 #content div.box blockquote p {
1078 1078 margin: 10px 0;
1079 1079 padding: 0;
1080 1080 }
1081 1081
1082 1082 #content div.box dl {
1083 1083 margin: 10px 0px;
1084 1084 }
1085 1085
1086 1086 #content div.box dt {
1087 1087 font-size: 12px;
1088 1088 margin: 0;
1089 1089 }
1090 1090
1091 1091 #content div.box dd {
1092 1092 font-size: 12px;
1093 1093 margin: 0;
1094 1094 padding: 8px 0 8px 15px;
1095 1095 }
1096 1096
1097 1097 #content div.box li {
1098 1098 font-size: 12px;
1099 1099 padding: 4px 0;
1100 1100 }
1101 1101
1102 1102 #content div.box ul.disc,#content div.box ul.circle {
1103 1103 margin: 10px 24px 10px 38px;
1104 1104 }
1105 1105
1106 1106 #content div.box ul.square {
1107 1107 margin: 10px 24px 10px 40px;
1108 1108 }
1109 1109
1110 1110 #content div.box img.left {
1111 1111 border: none;
1112 1112 float: left;
1113 1113 margin: 10px 10px 10px 0;
1114 1114 }
1115 1115
1116 1116 #content div.box img.right {
1117 1117 border: none;
1118 1118 float: right;
1119 1119 margin: 10px 0 10px 10px;
1120 1120 }
1121 1121
1122 1122 #content div.box div.messages {
1123 1123 clear: both;
1124 1124 overflow: hidden;
1125 1125 margin: 0 20px;
1126 1126 padding: 0;
1127 1127 }
1128 1128
1129 1129 #content div.box div.message {
1130 1130 clear: both;
1131 1131 overflow: hidden;
1132 1132 margin: 0;
1133 padding: 10px 0;
1133 padding: 5px 0;
1134 white-space: pre-wrap;
1135 }
1136 #content div.box div.expand{
1137 position:absolute;
1138 width:inherit;
1139 height:14px;
1140 font-size:14px;
1141 text-align:left;
1142 cursor: pointer;
1143 font-family: monospace;
1144 color:#003367;
1145 /*
1146 background:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,rgba(255,255,255,1)));
1147 background:-webkit-linear-gradient(top,rgba(255,255,255,0),rgba(255,255,255,1));
1148 background:-moz-linear-gradient(top,rgba(255,255,255,0),rgba(255,255,255,1));
1149 background:-o-linear-gradient(top,rgba(255,255,255,0),rgba(255,255,255,1));
1150 background:-ms-linear-gradient(top,rgba(255,255,255,0),rgba(255,255,255,1));
1151 background:linear-gradient(top,rgba(255,255,255,0),rgba(255,255,255,1));
1152 */
1153 display: none;
1134 1154 }
1135 1155
1136 1156 #content div.box div.message a {
1137 1157 font-weight: 400 !important;
1138 1158 }
1139 1159
1140 1160 #content div.box div.message div.image {
1141 1161 float: left;
1142 1162 margin: 9px 0 0 5px;
1143 1163 padding: 6px;
1144 1164 }
1145 1165
1146 1166 #content div.box div.message div.image img {
1147 1167 vertical-align: middle;
1148 1168 margin: 0;
1149 1169 }
1150 1170
1151 1171 #content div.box div.message div.text {
1152 1172 float: left;
1153 1173 margin: 0;
1154 1174 padding: 9px 6px;
1155 1175 }
1156 1176
1157 1177 #content div.box div.message div.dismiss a {
1158 1178 height: 16px;
1159 1179 width: 16px;
1160 1180 display: block;
1161 1181 background: url("../images/icons/cross.png") no-repeat;
1162 1182 margin: 15px 14px 0 0;
1163 1183 padding: 0;
1164 1184 }
1165 1185
1166 1186 #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 1187 {
1168 1188 border: none;
1169 1189 margin: 0;
1170 1190 padding: 0;
1171 1191 }
1172 1192
1173 1193 #content div.box div.message div.text span {
1174 1194 height: 1%;
1175 1195 display: block;
1176 1196 margin: 0;
1177 1197 padding: 5px 0 0;
1178 1198 }
1179 1199
1180 1200 #content div.box div.message-error {
1181 1201 height: 1%;
1182 1202 clear: both;
1183 1203 overflow: hidden;
1184 1204 background: #FBE3E4;
1185 1205 border: 1px solid #FBC2C4;
1186 1206 color: #860006;
1187 1207 }
1188 1208
1189 1209 #content div.box div.message-error h6 {
1190 1210 color: #860006;
1191 1211 }
1192 1212
1193 1213 #content div.box div.message-warning {
1194 1214 height: 1%;
1195 1215 clear: both;
1196 1216 overflow: hidden;
1197 1217 background: #FFF6BF;
1198 1218 border: 1px solid #FFD324;
1199 1219 color: #5f5200;
1200 1220 }
1201 1221
1202 1222 #content div.box div.message-warning h6 {
1203 1223 color: #5f5200;
1204 1224 }
1205 1225
1206 1226 #content div.box div.message-notice {
1207 1227 height: 1%;
1208 1228 clear: both;
1209 1229 overflow: hidden;
1210 1230 background: #8FBDE0;
1211 1231 border: 1px solid #6BACDE;
1212 1232 color: #003863;
1213 1233 }
1214 1234
1215 1235 #content div.box div.message-notice h6 {
1216 1236 color: #003863;
1217 1237 }
1218 1238
1219 1239 #content div.box div.message-success {
1220 1240 height: 1%;
1221 1241 clear: both;
1222 1242 overflow: hidden;
1223 1243 background: #E6EFC2;
1224 1244 border: 1px solid #C6D880;
1225 1245 color: #4e6100;
1226 1246 }
1227 1247
1228 1248 #content div.box div.message-success h6 {
1229 1249 color: #4e6100;
1230 1250 }
1231 1251
1232 1252 #content div.box div.form div.fields div.field {
1233 1253 height: 1%;
1234 1254 border-bottom: 1px solid #DDD;
1235 1255 clear: both;
1236 1256 margin: 0;
1237 1257 padding: 10px 0;
1238 1258 }
1239 1259
1240 1260 #content div.box div.form div.fields div.field-first {
1241 1261 padding: 0 0 10px;
1242 1262 }
1243 1263
1244 1264 #content div.box div.form div.fields div.field-noborder {
1245 1265 border-bottom: 0 !important;
1246 1266 }
1247 1267
1248 1268 #content div.box div.form div.fields div.field span.error-message {
1249 1269 height: 1%;
1250 1270 display: inline-block;
1251 1271 color: red;
1252 1272 margin: 8px 0 0 4px;
1253 1273 padding: 0;
1254 1274 }
1255 1275
1256 1276 #content div.box div.form div.fields div.field span.success {
1257 1277 height: 1%;
1258 1278 display: block;
1259 1279 color: #316309;
1260 1280 margin: 8px 0 0;
1261 1281 padding: 0;
1262 1282 }
1263 1283
1264 1284 #content div.box div.form div.fields div.field div.label {
1265 1285 left: 70px;
1266 1286 width: 155px;
1267 1287 position: absolute;
1268 1288 margin: 0;
1269 1289 padding: 5px 0 0 0px;
1270 1290 }
1271 1291
1272 1292 #content div.box div.form div.fields div.field div.label-summary {
1273 1293 left: 30px;
1274 1294 width: 155px;
1275 1295 position: absolute;
1276 1296 margin: 0;
1277 1297 padding: 0px 0 0 0px;
1278 1298 }
1279 1299
1280 1300 #content div.box-left div.form div.fields div.field div.label,
1281 1301 #content div.box-right div.form div.fields div.field div.label,
1282 1302 #content div.box-left div.form div.fields div.field div.label,
1283 1303 #content div.box-left div.form div.fields div.field div.label-summary,
1284 1304 #content div.box-right div.form div.fields div.field div.label-summary,
1285 1305 #content div.box-left div.form div.fields div.field div.label-summary
1286 1306 {
1287 1307 clear: both;
1288 1308 overflow: hidden;
1289 1309 left: 0;
1290 1310 width: auto;
1291 1311 position: relative;
1292 1312 margin: 0;
1293 1313 padding: 0 0 8px;
1294 1314 }
1295 1315
1296 1316 #content div.box div.form div.fields div.field div.label-select {
1297 1317 padding: 5px 0 0 5px;
1298 1318 }
1299 1319
1300 1320 #content div.box-left div.form div.fields div.field div.label-select,
1301 1321 #content div.box-right div.form div.fields div.field div.label-select
1302 1322 {
1303 1323 padding: 0 0 8px;
1304 1324 }
1305 1325
1306 1326 #content div.box-left div.form div.fields div.field div.label-textarea,
1307 1327 #content div.box-right div.form div.fields div.field div.label-textarea
1308 1328 {
1309 1329 padding: 0 0 8px !important;
1310 1330 }
1311 1331
1312 1332 #content div.box div.form div.fields div.field div.label label,div.label label
1313 1333 {
1314 1334 color: #393939;
1315 1335 font-weight: 700;
1316 1336 }
1317 1337 #content div.box div.form div.fields div.field div.label label,div.label-summary label
1318 1338 {
1319 1339 color: #393939;
1320 1340 font-weight: 700;
1321 1341 }
1322 1342 #content div.box div.form div.fields div.field div.input {
1323 1343 margin: 0 0 0 200px;
1324 1344 }
1325 1345
1326 1346 #content div.box div.form div.fields div.field div.input.summary {
1327 1347 margin: 0 0 0 110px;
1328 1348 }
1329 1349 #content div.box div.form div.fields div.field div.input.summary-short {
1330 1350 margin: 0 0 0 110px;
1331 1351 }
1332 1352 #content div.box div.form div.fields div.field div.file {
1333 1353 margin: 0 0 0 200px;
1334 1354 }
1335 1355
1336 1356 #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 1357 {
1338 1358 margin: 0 0 0 0px;
1339 1359 }
1340 1360
1341 1361 #content div.box div.form div.fields div.field div.input input {
1342 1362 background: #FFF;
1343 1363 border-top: 1px solid #b3b3b3;
1344 1364 border-left: 1px solid #b3b3b3;
1345 1365 border-right: 1px solid #eaeaea;
1346 1366 border-bottom: 1px solid #eaeaea;
1347 1367 color: #000;
1348 1368 font-size: 11px;
1349 1369 margin: 0;
1350 1370 padding: 7px 7px 6px;
1351 1371 }
1352 1372
1353 1373 #content div.box div.form div.fields div.field div.input input#clone_url,
1354 1374 #content div.box div.form div.fields div.field div.input input#clone_url_id
1355 1375 {
1356 1376 font-size: 16px;
1357 1377 padding: 2px;
1358 1378 }
1359 1379
1360 1380 #content div.box div.form div.fields div.field div.file input {
1361 1381 background: none repeat scroll 0 0 #FFFFFF;
1362 1382 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1363 1383 border-style: solid;
1364 1384 border-width: 1px;
1365 1385 color: #000000;
1366 1386 font-size: 11px;
1367 1387 margin: 0;
1368 1388 padding: 7px 7px 6px;
1369 1389 }
1370 1390
1371 1391 #content div.box div.form div.fields div.field div.input input.small {
1372 1392 width: 30%;
1373 1393 }
1374 1394
1375 1395 #content div.box div.form div.fields div.field div.input input.medium {
1376 1396 width: 55%;
1377 1397 }
1378 1398
1379 1399 #content div.box div.form div.fields div.field div.input input.large {
1380 1400 width: 85%;
1381 1401 }
1382 1402
1383 1403 #content div.box div.form div.fields div.field div.input input.date {
1384 1404 width: 177px;
1385 1405 }
1386 1406
1387 1407 #content div.box div.form div.fields div.field div.input input.button {
1388 1408 background: #D4D0C8;
1389 1409 border-top: 1px solid #FFF;
1390 1410 border-left: 1px solid #FFF;
1391 1411 border-right: 1px solid #404040;
1392 1412 border-bottom: 1px solid #404040;
1393 1413 color: #000;
1394 1414 margin: 0;
1395 1415 padding: 4px 8px;
1396 1416 }
1397 1417
1398 1418 #content div.box div.form div.fields div.field div.textarea {
1399 1419 border-top: 1px solid #b3b3b3;
1400 1420 border-left: 1px solid #b3b3b3;
1401 1421 border-right: 1px solid #eaeaea;
1402 1422 border-bottom: 1px solid #eaeaea;
1403 1423 margin: 0 0 0 200px;
1404 1424 padding: 10px;
1405 1425 }
1406 1426
1407 1427 #content div.box div.form div.fields div.field div.textarea-editor {
1408 1428 border: 1px solid #ddd;
1409 1429 padding: 0;
1410 1430 }
1411 1431
1412 1432 #content div.box div.form div.fields div.field div.textarea textarea {
1413 1433 width: 100%;
1414 1434 height: 220px;
1415 1435 overflow: hidden;
1416 1436 background: #FFF;
1417 1437 color: #000;
1418 1438 font-size: 11px;
1419 1439 outline: none;
1420 1440 border-width: 0;
1421 1441 margin: 0;
1422 1442 padding: 0;
1423 1443 }
1424 1444
1425 1445 #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 1446 {
1427 1447 width: 100%;
1428 1448 height: 100px;
1429 1449 }
1430 1450
1431 1451 #content div.box div.form div.fields div.field div.textarea table {
1432 1452 width: 100%;
1433 1453 border: none;
1434 1454 margin: 0;
1435 1455 padding: 0;
1436 1456 }
1437 1457
1438 1458 #content div.box div.form div.fields div.field div.textarea table td {
1439 1459 background: #DDD;
1440 1460 border: none;
1441 1461 padding: 0;
1442 1462 }
1443 1463
1444 1464 #content div.box div.form div.fields div.field div.textarea table td table
1445 1465 {
1446 1466 width: auto;
1447 1467 border: none;
1448 1468 margin: 0;
1449 1469 padding: 0;
1450 1470 }
1451 1471
1452 1472 #content div.box div.form div.fields div.field div.textarea table td table td
1453 1473 {
1454 1474 font-size: 11px;
1455 1475 padding: 5px 5px 5px 0;
1456 1476 }
1457 1477
1458 1478 #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 1479 {
1460 1480 background: #f6f6f6;
1461 1481 border-color: #666;
1462 1482 }
1463 1483
1464 1484 div.form div.fields div.field div.button {
1465 1485 margin: 0;
1466 1486 padding: 0 0 0 8px;
1467 1487 }
1468 1488 #content div.box table.noborder {
1469 1489 border: 1px solid transparent;
1470 1490 }
1471 1491
1472 1492 #content div.box table {
1473 1493 width: 100%;
1474 1494 border-collapse: separate;
1475 1495 margin: 0;
1476 1496 padding: 0;
1477 1497 border: 1px solid #eee;
1478 1498 -webkit-border-radius: 4px;
1479 1499 -moz-border-radius: 4px;
1480 1500 border-radius: 4px;
1481 1501 }
1482 1502
1483 1503 #content div.box table th {
1484 1504 background: #eee;
1485 1505 border-bottom: 1px solid #ddd;
1486 1506 padding: 5px 0px 5px 5px;
1487 1507 }
1488 1508
1489 1509 #content div.box table th.left {
1490 1510 text-align: left;
1491 1511 }
1492 1512
1493 1513 #content div.box table th.right {
1494 1514 text-align: right;
1495 1515 }
1496 1516
1497 1517 #content div.box table th.center {
1498 1518 text-align: center;
1499 1519 }
1500 1520
1501 1521 #content div.box table th.selected {
1502 1522 vertical-align: middle;
1503 1523 padding: 0;
1504 1524 }
1505 1525
1506 1526 #content div.box table td {
1507 1527 background: #fff;
1508 1528 border-bottom: 1px solid #cdcdcd;
1509 1529 vertical-align: middle;
1510 1530 padding: 5px;
1511 1531 }
1512 1532
1513 1533 #content div.box table tr.selected td {
1514 1534 background: #FFC;
1515 1535 }
1516 1536
1517 1537 #content div.box table td.selected {
1518 1538 width: 3%;
1519 1539 text-align: center;
1520 1540 vertical-align: middle;
1521 1541 padding: 0;
1522 1542 }
1523 1543
1524 1544 #content div.box table td.action {
1525 1545 width: 45%;
1526 1546 text-align: left;
1527 1547 }
1528 1548
1529 1549 #content div.box table td.date {
1530 1550 width: 33%;
1531 1551 text-align: center;
1532 1552 }
1533 1553
1534 1554 #content div.box div.action {
1535 1555 float: right;
1536 1556 background: #FFF;
1537 1557 text-align: right;
1538 1558 margin: 10px 0 0;
1539 1559 padding: 0;
1540 1560 }
1541 1561
1542 1562 #content div.box div.action select {
1543 1563 font-size: 11px;
1544 1564 margin: 0;
1545 1565 }
1546 1566
1547 1567 #content div.box div.action .ui-selectmenu {
1548 1568 margin: 0;
1549 1569 padding: 0;
1550 1570 }
1551 1571
1552 1572 #content div.box div.pagination {
1553 1573 height: 1%;
1554 1574 clear: both;
1555 1575 overflow: hidden;
1556 1576 margin: 10px 0 0;
1557 1577 padding: 0;
1558 1578 }
1559 1579
1560 1580 #content div.box div.pagination ul.pager {
1561 1581 float: right;
1562 1582 text-align: right;
1563 1583 margin: 0;
1564 1584 padding: 0;
1565 1585 }
1566 1586
1567 1587 #content div.box div.pagination ul.pager li {
1568 1588 height: 1%;
1569 1589 float: left;
1570 1590 list-style: none;
1571 1591 background: #ebebeb url("../images/pager.png") repeat-x;
1572 1592 border-top: 1px solid #dedede;
1573 1593 border-left: 1px solid #cfcfcf;
1574 1594 border-right: 1px solid #c4c4c4;
1575 1595 border-bottom: 1px solid #c4c4c4;
1576 1596 color: #4A4A4A;
1577 1597 font-weight: 700;
1578 1598 margin: 0 0 0 4px;
1579 1599 padding: 0;
1580 1600 }
1581 1601
1582 1602 #content div.box div.pagination ul.pager li.separator {
1583 1603 padding: 6px;
1584 1604 }
1585 1605
1586 1606 #content div.box div.pagination ul.pager li.current {
1587 1607 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1588 1608 border-top: 1px solid #ccc;
1589 1609 border-left: 1px solid #bebebe;
1590 1610 border-right: 1px solid #b1b1b1;
1591 1611 border-bottom: 1px solid #afafaf;
1592 1612 color: #515151;
1593 1613 padding: 6px;
1594 1614 }
1595 1615
1596 1616 #content div.box div.pagination ul.pager li a {
1597 1617 height: 1%;
1598 1618 display: block;
1599 1619 float: left;
1600 1620 color: #515151;
1601 1621 text-decoration: none;
1602 1622 margin: 0;
1603 1623 padding: 6px;
1604 1624 }
1605 1625
1606 1626 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active
1607 1627 {
1608 1628 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1609 1629 border-top: 1px solid #ccc;
1610 1630 border-left: 1px solid #bebebe;
1611 1631 border-right: 1px solid #b1b1b1;
1612 1632 border-bottom: 1px solid #afafaf;
1613 1633 margin: -1px;
1614 1634 }
1615 1635
1616 1636 #content div.box div.pagination-wh {
1617 1637 height: 1%;
1618 1638 clear: both;
1619 1639 overflow: hidden;
1620 1640 text-align: right;
1621 1641 margin: 10px 0 0;
1622 1642 padding: 0;
1623 1643 }
1624 1644
1625 1645 #content div.box div.pagination-right {
1626 1646 float: right;
1627 1647 }
1628 1648
1629 1649 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot
1630 1650 {
1631 1651 height: 1%;
1632 1652 float: left;
1633 1653 background: #ebebeb url("../images/pager.png") repeat-x;
1634 1654 border-top: 1px solid #dedede;
1635 1655 border-left: 1px solid #cfcfcf;
1636 1656 border-right: 1px solid #c4c4c4;
1637 1657 border-bottom: 1px solid #c4c4c4;
1638 1658 color: #4A4A4A;
1639 1659 font-weight: 700;
1640 1660 margin: 0 0 0 4px;
1641 1661 padding: 6px;
1642 1662 }
1643 1663
1644 1664 #content div.box div.pagination-wh span.pager_curpage {
1645 1665 height: 1%;
1646 1666 float: left;
1647 1667 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1648 1668 border-top: 1px solid #ccc;
1649 1669 border-left: 1px solid #bebebe;
1650 1670 border-right: 1px solid #b1b1b1;
1651 1671 border-bottom: 1px solid #afafaf;
1652 1672 color: #515151;
1653 1673 font-weight: 700;
1654 1674 margin: 0 0 0 4px;
1655 1675 padding: 6px;
1656 1676 }
1657 1677
1658 1678 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active
1659 1679 {
1660 1680 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1661 1681 border-top: 1px solid #ccc;
1662 1682 border-left: 1px solid #bebebe;
1663 1683 border-right: 1px solid #b1b1b1;
1664 1684 border-bottom: 1px solid #afafaf;
1665 1685 text-decoration: none;
1666 1686 }
1667 1687
1668 1688 #content div.box div.traffic div.legend {
1669 1689 clear: both;
1670 1690 overflow: hidden;
1671 1691 border-bottom: 1px solid #ddd;
1672 1692 margin: 0 0 10px;
1673 1693 padding: 0 0 10px;
1674 1694 }
1675 1695
1676 1696 #content div.box div.traffic div.legend h6 {
1677 1697 float: left;
1678 1698 border: none;
1679 1699 margin: 0;
1680 1700 padding: 0;
1681 1701 }
1682 1702
1683 1703 #content div.box div.traffic div.legend li {
1684 1704 list-style: none;
1685 1705 float: left;
1686 1706 font-size: 11px;
1687 1707 margin: 0;
1688 1708 padding: 0 8px 0 4px;
1689 1709 }
1690 1710
1691 1711 #content div.box div.traffic div.legend li.visits {
1692 1712 border-left: 12px solid #edc240;
1693 1713 }
1694 1714
1695 1715 #content div.box div.traffic div.legend li.pageviews {
1696 1716 border-left: 12px solid #afd8f8;
1697 1717 }
1698 1718
1699 1719 #content div.box div.traffic table {
1700 1720 width: auto;
1701 1721 }
1702 1722
1703 1723 #content div.box div.traffic table td {
1704 1724 background: transparent;
1705 1725 border: none;
1706 1726 padding: 2px 3px 3px;
1707 1727 }
1708 1728
1709 1729 #content div.box div.traffic table td.legendLabel {
1710 1730 padding: 0 3px 2px;
1711 1731 }
1712 1732
1713 1733 #summary {
1714 1734
1715 1735 }
1716 1736
1717 1737 #summary .desc {
1718 1738 white-space: pre;
1719 1739 width: 100%;
1720 1740 }
1721 1741
1722 1742 #summary .repo_name {
1723 1743 font-size: 1.6em;
1724 1744 font-weight: bold;
1725 1745 vertical-align: baseline;
1726 1746 clear: right
1727 1747 }
1728 1748
1729 1749 #footer {
1730 1750 clear: both;
1731 1751 overflow: hidden;
1732 1752 text-align: right;
1733 1753 margin: 0;
1734 1754 padding: 0 10px 4px;
1735 1755 margin: -10px 0 0;
1736 1756 }
1737 1757
1738 1758 #footer div#footer-inner {
1739 1759 background-color: #eedc94; background-repeat : repeat-x;
1740 1760 background-image : -khtml-gradient( linear, left top, left bottom,
1741 1761 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1742 1762 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1743 1763 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1744 1764 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1745 1765 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1746 1766 background-image : -o-linear-gradient( top, #003b76, #00376e));
1747 1767 background-image : linear-gradient( top, #003b76, #00376e); filter :
1748 1768 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1749 1769 '#003b76', endColorstr = '#00376e', GradientType = 0);
1750 1770 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1751 1771 -webkit-border-radius: 4px 4px 4px 4px;
1752 1772 -khtml-border-radius: 4px 4px 4px 4px;
1753 1773 -moz-border-radius: 4px 4px 4px 4px;
1754 1774 border-radius: 4px 4px 4px 4px;
1755 1775 background-repeat: repeat-x;
1756 1776 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1757 1777 to(#eedc94) );
1758 1778 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1759 1779 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1760 1780 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1761 1781 color-stop(100%, #00376e) );
1762 1782 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1763 1783 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1764 1784 background-image: linear-gradient(top, #003b76, #00376e);
1765 1785 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1766 1786 endColorstr='#00376e', GradientType=0 );
1767 1787 }
1768 1788
1769 1789 #footer div#footer-inner p {
1770 1790 padding: 15px 25px 15px 0;
1771 1791 color: #FFF;
1772 1792 font-weight: 700;
1773 1793 }
1774 1794
1775 1795 #footer div#footer-inner .footer-link {
1776 1796 float: left;
1777 1797 padding-left: 10px;
1778 1798 }
1779 1799
1780 1800 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a
1781 1801 {
1782 1802 color: #FFF;
1783 1803 }
1784 1804
1785 1805 #login div.title {
1786 1806 width: 420px;
1787 1807 clear: both;
1788 1808 overflow: hidden;
1789 1809 position: relative;
1790 1810 background-color: #eedc94; background-repeat : repeat-x;
1791 1811 background-image : -khtml-gradient( linear, left top, left bottom,
1792 1812 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1793 1813 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1794 1814 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1795 1815 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1796 1816 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1797 1817 background-image : -o-linear-gradient( top, #003b76, #00376e));
1798 1818 background-image : linear-gradient( top, #003b76, #00376e); filter :
1799 1819 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1800 1820 '#003b76', endColorstr = '#00376e', GradientType = 0);
1801 1821 margin: 0 auto;
1802 1822 padding: 0;
1803 1823 background-repeat: repeat-x;
1804 1824 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1805 1825 to(#eedc94) );
1806 1826 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1807 1827 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1808 1828 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1809 1829 color-stop(100%, #00376e) );
1810 1830 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1811 1831 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1812 1832 background-image: linear-gradient(top, #003b76, #00376e);
1813 1833 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1814 1834 endColorstr='#00376e', GradientType=0 );
1815 1835 }
1816 1836
1817 1837 #login div.inner {
1818 1838 width: 380px;
1819 1839 background: #FFF url("../images/login.png") no-repeat top left;
1820 1840 border-top: none;
1821 1841 border-bottom: none;
1822 1842 margin: 0 auto;
1823 1843 padding: 20px;
1824 1844 }
1825 1845
1826 1846 #login div.form div.fields div.field div.label {
1827 1847 width: 173px;
1828 1848 float: left;
1829 1849 text-align: right;
1830 1850 margin: 2px 10px 0 0;
1831 1851 padding: 5px 0 0 5px;
1832 1852 }
1833 1853
1834 1854 #login div.form div.fields div.field div.input input {
1835 1855 width: 176px;
1836 1856 background: #FFF;
1837 1857 border-top: 1px solid #b3b3b3;
1838 1858 border-left: 1px solid #b3b3b3;
1839 1859 border-right: 1px solid #eaeaea;
1840 1860 border-bottom: 1px solid #eaeaea;
1841 1861 color: #000;
1842 1862 font-size: 11px;
1843 1863 margin: 0;
1844 1864 padding: 7px 7px 6px;
1845 1865 }
1846 1866
1847 1867 #login div.form div.fields div.buttons {
1848 1868 clear: both;
1849 1869 overflow: hidden;
1850 1870 border-top: 1px solid #DDD;
1851 1871 text-align: right;
1852 1872 margin: 0;
1853 1873 padding: 10px 0 0;
1854 1874 }
1855 1875
1856 1876 #login div.form div.links {
1857 1877 clear: both;
1858 1878 overflow: hidden;
1859 1879 margin: 10px 0 0;
1860 1880 padding: 0 0 2px;
1861 1881 }
1862 1882
1863 1883 #quick_login {
1864 1884 top: 31px;
1865 1885 background-color: rgb(0, 51, 103);
1866 1886 z-index: 999;
1867 1887 height: 150px;
1868 1888 position: absolute;
1869 1889 margin-left: -16px;
1870 1890 width: 281px;
1871 1891 -webkit-border-radius: 0px 0px 4px 4px;
1872 1892 -khtml-border-radius: 0px 0px 4px 4px;
1873 1893 -moz-border-radius: 0px 0px 4px 4px;
1874 1894 border-radius: 0px 0px 4px 4px;
1875 1895 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1876 1896 }
1877 1897
1878 1898 #quick_login .password_forgoten {
1879 1899 padding-right: 10px;
1880 1900 padding-top: 0px;
1881 1901 float: left;
1882 1902 }
1883 1903
1884 1904 #quick_login .password_forgoten a {
1885 1905 font-size: 10px
1886 1906 }
1887 1907
1888 1908 #quick_login .register {
1889 1909 padding-right: 10px;
1890 1910 padding-top: 5px;
1891 1911 float: left;
1892 1912 }
1893 1913
1894 1914 #quick_login .register a {
1895 1915 font-size: 10px
1896 1916 }
1897 1917
1898 1918 #quick_login div.form div.fields {
1899 1919 padding-top: 2px;
1900 1920 padding-left: 10px;
1901 1921 }
1902 1922
1903 1923 #quick_login div.form div.fields div.field {
1904 1924 padding: 5px;
1905 1925 }
1906 1926
1907 1927 #quick_login div.form div.fields div.field div.label label {
1908 1928 color: #fff;
1909 1929 padding-bottom: 3px;
1910 1930 }
1911 1931
1912 1932 #quick_login div.form div.fields div.field div.input input {
1913 1933 width: 236px;
1914 1934 background: #FFF;
1915 1935 border-top: 1px solid #b3b3b3;
1916 1936 border-left: 1px solid #b3b3b3;
1917 1937 border-right: 1px solid #eaeaea;
1918 1938 border-bottom: 1px solid #eaeaea;
1919 1939 color: #000;
1920 1940 font-size: 11px;
1921 1941 margin: 0;
1922 1942 padding: 5px 7px 4px;
1923 1943 }
1924 1944
1925 1945 #quick_login div.form div.fields div.buttons {
1926 1946 clear: both;
1927 1947 overflow: hidden;
1928 1948 text-align: right;
1929 1949 margin: 0;
1930 1950 padding: 10px 14px 0px 5px;
1931 1951 }
1932 1952
1933 1953 #quick_login div.form div.links {
1934 1954 clear: both;
1935 1955 overflow: hidden;
1936 1956 margin: 10px 0 0;
1937 1957 padding: 0 0 2px;
1938 1958 }
1939 1959
1940 1960 #register div.title {
1941 1961 clear: both;
1942 1962 overflow: hidden;
1943 1963 position: relative;
1944 1964 background-color: #eedc94;
1945 1965 background-repeat: repeat-x;
1946 1966 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1947 1967 to(#eedc94) );
1948 1968 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1949 1969 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1950 1970 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1951 1971 color-stop(100%, #00376e) );
1952 1972 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1953 1973 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1954 1974 background-image: linear-gradient(top, #003b76, #00376e);
1955 1975 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1956 1976 endColorstr='#00376e', GradientType=0 );
1957 1977 margin: 0 auto;
1958 1978 padding: 0;
1959 1979 }
1960 1980
1961 1981 #register div.inner {
1962 1982 background: #FFF;
1963 1983 border-top: none;
1964 1984 border-bottom: none;
1965 1985 margin: 0 auto;
1966 1986 padding: 20px;
1967 1987 }
1968 1988
1969 1989 #register div.form div.fields div.field div.label {
1970 1990 width: 135px;
1971 1991 float: left;
1972 1992 text-align: right;
1973 1993 margin: 2px 10px 0 0;
1974 1994 padding: 5px 0 0 5px;
1975 1995 }
1976 1996
1977 1997 #register div.form div.fields div.field div.input input {
1978 1998 width: 300px;
1979 1999 background: #FFF;
1980 2000 border-top: 1px solid #b3b3b3;
1981 2001 border-left: 1px solid #b3b3b3;
1982 2002 border-right: 1px solid #eaeaea;
1983 2003 border-bottom: 1px solid #eaeaea;
1984 2004 color: #000;
1985 2005 font-size: 11px;
1986 2006 margin: 0;
1987 2007 padding: 7px 7px 6px;
1988 2008 }
1989 2009
1990 2010 #register div.form div.fields div.buttons {
1991 2011 clear: both;
1992 2012 overflow: hidden;
1993 2013 border-top: 1px solid #DDD;
1994 2014 text-align: left;
1995 2015 margin: 0;
1996 2016 padding: 10px 0 0 150px;
1997 2017 }
1998 2018
1999 2019 #register div.form div.activation_msg {
2000 2020 padding-top: 4px;
2001 2021 padding-bottom: 4px;
2002 2022 }
2003 2023
2004 2024 #journal .journal_day {
2005 2025 font-size: 20px;
2006 2026 padding: 10px 0px;
2007 2027 border-bottom: 2px solid #DDD;
2008 2028 margin-left: 10px;
2009 2029 margin-right: 10px;
2010 2030 }
2011 2031
2012 2032 #journal .journal_container {
2013 2033 padding: 5px;
2014 2034 clear: both;
2015 2035 margin: 0px 5px 0px 10px;
2016 2036 }
2017 2037
2018 2038 #journal .journal_action_container {
2019 2039 padding-left: 38px;
2020 2040 }
2021 2041
2022 2042 #journal .journal_user {
2023 2043 color: #747474;
2024 2044 font-size: 14px;
2025 2045 font-weight: bold;
2026 2046 height: 30px;
2027 2047 }
2028 2048
2029 2049 #journal .journal_icon {
2030 2050 clear: both;
2031 2051 float: left;
2032 2052 padding-right: 4px;
2033 2053 padding-top: 3px;
2034 2054 }
2035 2055
2036 2056 #journal .journal_action {
2037 2057 padding-top: 4px;
2038 2058 min-height: 2px;
2039 2059 float: left
2040 2060 }
2041 2061
2042 2062 #journal .journal_action_params {
2043 2063 clear: left;
2044 2064 padding-left: 22px;
2045 2065 }
2046 2066
2047 2067 #journal .journal_repo {
2048 2068 float: left;
2049 2069 margin-left: 6px;
2050 2070 padding-top: 3px;
2051 2071 }
2052 2072
2053 2073 #journal .date {
2054 2074 clear: both;
2055 2075 color: #777777;
2056 2076 font-size: 11px;
2057 2077 padding-left: 22px;
2058 2078 }
2059 2079
2060 2080 #journal .journal_repo .journal_repo_name {
2061 2081 font-weight: bold;
2062 2082 font-size: 1.1em;
2063 2083 }
2064 2084
2065 2085 #journal .compare_view {
2066 2086 padding: 5px 0px 5px 0px;
2067 2087 width: 95px;
2068 2088 }
2069 2089
2070 2090 .journal_highlight {
2071 2091 font-weight: bold;
2072 2092 padding: 0 2px;
2073 2093 vertical-align: bottom;
2074 2094 }
2075 2095
2076 2096 .trending_language_tbl,.trending_language_tbl td {
2077 2097 border: 0 !important;
2078 2098 margin: 0 !important;
2079 2099 padding: 0 !important;
2080 2100 }
2081 2101
2082 2102 .trending_language_tbl,.trending_language_tbl tr {
2083 2103 border-spacing: 1px;
2084 2104 }
2085 2105
2086 2106 .trending_language {
2087 2107 background-color: #003367;
2088 2108 color: #FFF;
2089 2109 display: block;
2090 2110 min-width: 20px;
2091 2111 text-decoration: none;
2092 2112 height: 12px;
2093 2113 margin-bottom: 0px;
2094 2114 margin-left: 5px;
2095 2115 white-space: pre;
2096 2116 padding: 3px;
2097 2117 }
2098 2118
2099 2119 h3.files_location {
2100 2120 font-size: 1.8em;
2101 2121 font-weight: 700;
2102 2122 border-bottom: none !important;
2103 2123 margin: 10px 0 !important;
2104 2124 }
2105 2125
2106 2126 #files_data dl dt {
2107 2127 float: left;
2108 2128 width: 60px;
2109 2129 margin: 0 !important;
2110 2130 padding: 5px;
2111 2131 }
2112 2132
2113 2133 #files_data dl dd {
2114 2134 margin: 0 !important;
2115 2135 padding: 5px !important;
2116 2136 }
2117 2137
2138 .tablerow0 {
2139 background-color: #F8F8F8;
2140 }
2141
2118 2142 .tablerow1 {
2119 background-color: #F8F8F8;
2143 background-color: #FFFFFF;
2120 2144 }
2121 2145
2122 2146 .changeset_id {
2123 2147 font-family: monospace;
2124 2148 color: #666666;
2125 2149 }
2126 2150
2127 2151 .changeset_hash {
2128 2152 color: #000000;
2129 2153 }
2130 2154
2131 2155 #changeset_content {
2132 2156 border-left: 1px solid #CCC;
2133 2157 border-right: 1px solid #CCC;
2134 2158 border-bottom: 1px solid #CCC;
2135 2159 padding: 5px;
2136 2160 }
2137 2161
2138 2162 #changeset_compare_view_content {
2139 2163 border: 1px solid #CCC;
2140 2164 padding: 5px;
2141 2165 }
2142 2166
2143 2167 #changeset_content .container {
2144 2168 min-height: 100px;
2145 2169 font-size: 1.2em;
2146 2170 overflow: hidden;
2147 2171 }
2148 2172
2149 2173 #changeset_compare_view_content .compare_view_commits {
2150 2174 width: auto !important;
2151 2175 }
2152 2176
2153 2177 #changeset_compare_view_content .compare_view_commits td {
2154 2178 padding: 0px 0px 0px 12px !important;
2155 2179 }
2156 2180
2157 2181 #changeset_content .container .right {
2158 2182 float: right;
2159 2183 width: 20%;
2160 2184 text-align: right;
2161 2185 }
2162 2186
2163 2187 #changeset_content .container .left .message {
2164 2188 white-space: pre-wrap;
2165 2189 }
2166 2190 #changeset_content .container .left .message a:hover {
2167 2191 text-decoration: none;
2168 2192 }
2169 2193 .cs_files .cur_cs {
2170 2194 margin: 10px 2px;
2171 2195 font-weight: bold;
2172 2196 }
2173 2197
2174 2198 .cs_files .node {
2175 2199 float: left;
2176 2200 }
2177 2201
2178 2202 .cs_files .changes {
2179 2203 float: right;
2180 2204 color:#003367;
2181 2205
2182 2206 }
2183 2207
2184 2208 .cs_files .changes .added {
2185 2209 background-color: #BBFFBB;
2186 2210 float: left;
2187 2211 text-align: center;
2188 2212 font-size: 9px;
2189 2213 padding: 2px 0px 2px 0px;
2190 2214 }
2191 2215
2192 2216 .cs_files .changes .deleted {
2193 2217 background-color: #FF8888;
2194 2218 float: left;
2195 2219 text-align: center;
2196 2220 font-size: 9px;
2197 2221 padding: 2px 0px 2px 0px;
2198 2222 }
2199 2223
2200 2224 .cs_files .cs_added {
2201 2225 background: url("../images/icons/page_white_add.png") no-repeat scroll
2202 2226 3px;
2203 2227 height: 16px;
2204 2228 padding-left: 20px;
2205 2229 margin-top: 7px;
2206 2230 text-align: left;
2207 2231 }
2208 2232
2209 2233 .cs_files .cs_changed {
2210 2234 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2211 2235 3px;
2212 2236 height: 16px;
2213 2237 padding-left: 20px;
2214 2238 margin-top: 7px;
2215 2239 text-align: left;
2216 2240 }
2217 2241
2218 2242 .cs_files .cs_removed {
2219 2243 background: url("../images/icons/page_white_delete.png") no-repeat
2220 2244 scroll 3px;
2221 2245 height: 16px;
2222 2246 padding-left: 20px;
2223 2247 margin-top: 7px;
2224 2248 text-align: left;
2225 2249 }
2226 2250
2227 2251 #graph {
2228 2252 overflow: hidden;
2229 2253 }
2230 2254
2231 2255 #graph_nodes {
2232 2256 float: left;
2233 2257 margin-right: -6px;
2234 2258 margin-top: 0px;
2235 2259 }
2236 2260
2237 2261 #graph_content {
2238 2262 width: 80%;
2239 2263 float: left;
2240 2264 }
2241 2265
2242 2266 #graph_content .container_header {
2243 2267 border-bottom: 1px solid #DDD;
2244 2268 padding: 10px;
2245 2269 height: 25px;
2246 2270 }
2247 2271
2248 2272 #graph_content #rev_range_container {
2249 padding: 5px 20px;
2273 padding: 7px 20px;
2250 2274 float: left;
2251 2275 }
2252 2276
2253 2277 #graph_content .container {
2254 2278 border-bottom: 1px solid #DDD;
2255 2279 height: 55px;
2256 2280 overflow: hidden;
2257 2281 }
2258 2282
2259 2283 #graph_content .container .right {
2260 2284 float: right;
2261 2285 width: 23%;
2262 2286 text-align: right;
2263 2287 }
2264 2288
2265 2289 #graph_content .container .left {
2266 2290 float: left;
2267 2291 width: 25%;
2268 2292 padding-left: 5px;
2269 2293 }
2270 2294
2271 2295 #graph_content .container .mid {
2272 2296 float: left;
2273 2297 width: 49%;
2274 2298 }
2275 2299
2276 2300
2277 2301 #graph_content .container .left .date {
2278 2302 color: #444444;
2303 padding-left: 22px;
2279 2304 }
2280 2305
2281 2306 #graph_content .container .left .author {
2282 2307 height: 22px;
2283 2308 }
2284 2309
2285 2310 #graph_content .container .left .author .user {
2286 2311 color: #444444;
2287 2312 float: left;
2288 2313 margin-left: -4px;
2289 2314 margin-top: 4px;
2290 2315 }
2291 2316
2292 2317 #graph_content .container .left .message {
2293 2318 font-size: 100%;
2294 2319 padding-top: 3px;
2295 2320 white-space: pre-wrap;
2296 2321 border: 1px solid red;
2297 2322 position: relative;
2298 2323 top: -30px;
2299 2324 left: 40%;
2300 2325 width: 30%;
2301 2326 }
2302 2327
2303 2328 #graph_content .container .left .message a:hover{
2304 2329 text-decoration: none;
2305 2330 }
2306 2331
2307 2332 .right div {
2308 2333 clear: both;
2309 2334 }
2310 2335
2311 2336 .right .changes .changed_total {
2312 2337 display: block;
2313 2338 float: right;
2314 2339 text-align: center;
2315 2340 min-width: 45px;
2316 2341 cursor: pointer;
2317 2342 color: #444444;
2318 2343 background: #FEA;
2319 2344 -webkit-border-radius: 0px 0px 0px 6px;
2320 2345 -moz-border-radius: 0px 0px 0px 6px;
2321 2346 border-radius: 0px 0px 0px 6px;
2322 2347 padding: 1px;
2323 2348 }
2324 2349
2325 2350 .right .changes .added,.changed,.removed {
2326 2351 display: block;
2327 2352 padding: 1px;
2328 2353 color: #444444;
2329 2354 float: right;
2330 2355 text-align: center;
2331 2356 min-width: 15px;
2332 2357 }
2333 2358
2334 2359 .right .changes .added {
2335 2360 background: #CFC;
2336 2361 }
2337 2362
2338 2363 .right .changes .changed {
2339 2364 background: #FEA;
2340 2365 }
2341 2366
2342 2367 .right .changes .removed {
2343 2368 background: #FAA;
2344 2369 }
2345 2370
2346 2371 .right .merge {
2347 2372 padding: 1px 3px 1px 3px;
2348 2373 background-color: #fca062;
2349 2374 font-size: 10px;
2350 2375 font-weight: bold;
2351 2376 color: #ffffff;
2352 2377 text-transform: uppercase;
2353 2378 white-space: nowrap;
2354 2379 -webkit-border-radius: 3px;
2355 2380 -moz-border-radius: 3px;
2356 2381 border-radius: 3px;
2357 2382 margin-right: 2px;
2358 2383 }
2359 2384
2360 2385 .right .parent {
2361 2386 color: #666666;
2362 2387 }
2363 2388 .right .logtags{
2364 2389 padding: 2px 2px 2px 2px;
2365 2390 }
2366 2391 .right .logtags .branchtag,.logtags .branchtag {
2367 2392 padding: 1px 3px 1px 3px;
2368 2393 background-color: #bfbfbf;
2369 2394 font-size: 10px;
2370 2395 font-weight: bold;
2371 2396 color: #ffffff;
2372 2397 text-transform: uppercase;
2373 2398 white-space: nowrap;
2374 2399 -webkit-border-radius: 3px;
2375 2400 -moz-border-radius: 3px;
2376 2401 border-radius: 3px;
2377 2402 }
2378 2403 .right .logtags .branchtag a:hover,.logtags .branchtag a{
2379 2404 color: #ffffff;
2380 2405 }
2381 2406 .right .logtags .branchtag a:hover,.logtags .branchtag a:hover{
2382 2407 text-decoration: none;
2383 2408 color: #ffffff;
2384 2409 }
2385 2410 .right .logtags .tagtag,.logtags .tagtag {
2386 2411 padding: 1px 3px 1px 3px;
2387 2412 background-color: #62cffc;
2388 2413 font-size: 10px;
2389 2414 font-weight: bold;
2390 2415 color: #ffffff;
2391 2416 text-transform: uppercase;
2392 2417 white-space: nowrap;
2393 2418 -webkit-border-radius: 3px;
2394 2419 -moz-border-radius: 3px;
2395 2420 border-radius: 3px;
2396 2421 }
2397 2422 .right .logtags .tagtag a:hover,.logtags .tagtag a{
2398 2423 color: #ffffff;
2399 2424 }
2400 2425 .right .logtags .tagtag a:hover,.logtags .tagtag a:hover{
2401 2426 text-decoration: none;
2402 2427 color: #ffffff;
2403 2428 }
2404 2429 .right .logbooks .bookbook,.logbooks .bookbook {
2405 2430 padding: 1px 3px 2px;
2406 2431 background-color: #46A546;
2407 2432 font-size: 9.75px;
2408 2433 font-weight: bold;
2409 2434 color: #ffffff;
2410 2435 text-transform: uppercase;
2411 2436 white-space: nowrap;
2412 2437 -webkit-border-radius: 3px;
2413 2438 -moz-border-radius: 3px;
2414 2439 border-radius: 3px;
2415 2440 }
2416 2441 .right .logbooks .bookbook,.logbooks .bookbook a{
2417 2442 color: #ffffff;
2418 2443 }
2419 2444 .right .logbooks .bookbook,.logbooks .bookbook a:hover{
2420 2445 text-decoration: none;
2421 2446 color: #ffffff;
2422 2447 }
2423 2448 div.browserblock {
2424 2449 overflow: hidden;
2425 2450 border: 1px solid #ccc;
2426 2451 background: #f8f8f8;
2427 2452 font-size: 100%;
2428 2453 line-height: 125%;
2429 2454 padding: 0;
2430 2455 -webkit-border-radius: 6px 6px 0px 0px;
2431 2456 -moz-border-radius: 6px 6px 0px 0px;
2432 2457 border-radius: 6px 6px 0px 0px;
2433 2458 }
2434 2459
2435 2460 div.browserblock .browser-header {
2436 2461 background: #FFF;
2437 2462 padding: 10px 0px 15px 0px;
2438 2463 width: 100%;
2439 2464 }
2440 2465
2441 2466 div.browserblock .browser-nav {
2442 2467 float: left
2443 2468 }
2444 2469
2445 2470 div.browserblock .browser-branch {
2446 2471 float: left;
2447 2472 }
2448 2473
2449 2474 div.browserblock .browser-branch label {
2450 2475 color: #4A4A4A;
2451 2476 vertical-align: text-top;
2452 2477 }
2453 2478
2454 2479 div.browserblock .browser-header span {
2455 2480 margin-left: 5px;
2456 2481 font-weight: 700;
2457 2482 }
2458 2483
2459 2484 div.browserblock .browser-search {
2460 2485 clear: both;
2461 2486 padding: 8px 8px 0px 5px;
2462 2487 height: 20px;
2463 2488 }
2464 2489
2465 2490 div.browserblock #node_filter_box {
2466 2491
2467 2492 }
2468 2493
2469 2494 div.browserblock .search_activate {
2470 2495 float: left
2471 2496 }
2472 2497
2473 2498 div.browserblock .add_node {
2474 2499 float: left;
2475 2500 padding-left: 5px;
2476 2501 }
2477 2502
2478 2503 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover
2479 2504 {
2480 2505 text-decoration: none !important;
2481 2506 }
2482 2507
2483 2508 div.browserblock .browser-body {
2484 2509 background: #EEE;
2485 2510 border-top: 1px solid #CCC;
2486 2511 }
2487 2512
2488 2513 table.code-browser {
2489 2514 border-collapse: collapse;
2490 2515 width: 100%;
2491 2516 }
2492 2517
2493 2518 table.code-browser tr {
2494 2519 margin: 3px;
2495 2520 }
2496 2521
2497 2522 table.code-browser thead th {
2498 2523 background-color: #EEE;
2499 2524 height: 20px;
2500 2525 font-size: 1.1em;
2501 2526 font-weight: 700;
2502 2527 text-align: left;
2503 2528 padding-left: 10px;
2504 2529 }
2505 2530
2506 2531 table.code-browser tbody td {
2507 2532 padding-left: 10px;
2508 2533 height: 20px;
2509 2534 }
2510 2535
2511 2536 table.code-browser .browser-file {
2512 2537 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2513 2538 height: 16px;
2514 2539 padding-left: 20px;
2515 2540 text-align: left;
2516 2541 }
2517 2542 .diffblock .changeset_header {
2518 2543 height: 16px;
2519 2544 }
2520 2545 .diffblock .changeset_file {
2521 2546 background: url("../images/icons/file.png") no-repeat scroll 3px;
2522 2547 text-align: left;
2523 2548 float: left;
2524 2549 padding: 2px 0px 2px 22px;
2525 2550 }
2526 2551 .diffblock .diff-menu-wrapper{
2527 2552 float: left;
2528 2553 }
2529 2554
2530 2555 .diffblock .diff-menu{
2531 2556 position: absolute;
2532 2557 background: none repeat scroll 0 0 #FFFFFF;
2533 2558 border-color: #003367 #666666 #666666;
2534 2559 border-right: 1px solid #666666;
2535 2560 border-style: solid solid solid;
2536 2561 border-width: 1px;
2537 2562 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2538 2563 margin-top:5px;
2539 2564 margin-left:1px;
2540 2565
2541 2566 }
2542
2567 .diffblock .diff-actions {
2568 padding: 2px 0px 0px 2px;
2569 float: left;
2570 }
2543 2571 .diffblock .diff-menu ul li {
2544 2572 padding: 0px 0px 0px 0px !important;
2545 2573 }
2546 2574 .diffblock .diff-menu ul li a{
2547 2575 display: block;
2548 2576 padding: 3px 8px 3px 8px !important;
2549 2577 }
2550 2578 .diffblock .diff-menu ul li a:hover{
2551 2579 text-decoration: none;
2552 2580 background-color: #EEEEEE;
2553 2581 }
2554 2582 table.code-browser .browser-dir {
2555 2583 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2556 2584 height: 16px;
2557 2585 padding-left: 20px;
2558 2586 text-align: left;
2559 2587 }
2560 2588
2561 2589 .box .search {
2562 2590 clear: both;
2563 2591 overflow: hidden;
2564 2592 margin: 0;
2565 2593 padding: 0 20px 10px;
2566 2594 }
2567 2595
2568 2596 .box .search div.search_path {
2569 2597 background: none repeat scroll 0 0 #EEE;
2570 2598 border: 1px solid #CCC;
2571 2599 color: blue;
2572 2600 margin-bottom: 10px;
2573 2601 padding: 10px 0;
2574 2602 }
2575 2603
2576 2604 .box .search div.search_path div.link {
2577 2605 font-weight: 700;
2578 2606 margin-left: 25px;
2579 2607 }
2580 2608
2581 2609 .box .search div.search_path div.link a {
2582 2610 color: #003367;
2583 2611 cursor: pointer;
2584 2612 text-decoration: none;
2585 2613 }
2586 2614
2587 2615 #path_unlock {
2588 2616 color: red;
2589 2617 font-size: 1.2em;
2590 2618 padding-left: 4px;
2591 2619 }
2592 2620
2593 2621 .info_box span {
2594 2622 margin-left: 3px;
2595 2623 margin-right: 3px;
2596 2624 }
2597 2625
2598 2626 .info_box .rev {
2599 2627 color: #003367;
2600 2628 font-size: 1.6em;
2601 2629 font-weight: bold;
2602 2630 vertical-align: sub;
2603 2631 }
2604 2632
2605 2633 .info_box input#at_rev,.info_box input#size {
2606 2634 background: #FFF;
2607 2635 border-top: 1px solid #b3b3b3;
2608 2636 border-left: 1px solid #b3b3b3;
2609 2637 border-right: 1px solid #eaeaea;
2610 2638 border-bottom: 1px solid #eaeaea;
2611 2639 color: #000;
2612 2640 font-size: 12px;
2613 2641 margin: 0;
2614 2642 padding: 1px 5px 1px;
2615 2643 }
2616 2644
2617 2645 .info_box input#view {
2618 2646 text-align: center;
2619 2647 padding: 4px 3px 2px 2px;
2620 2648 }
2621 2649
2622 2650 .yui-overlay,.yui-panel-container {
2623 2651 visibility: hidden;
2624 2652 position: absolute;
2625 2653 z-index: 2;
2626 2654 }
2627 2655
2628 2656 .yui-tt {
2629 2657 visibility: hidden;
2630 2658 position: absolute;
2631 2659 color: #666;
2632 2660 background-color: #FFF;
2633 2661 border: 2px solid #003367;
2634 2662 font: 100% sans-serif;
2635 2663 width: auto;
2636 2664 opacity: 1px;
2637 2665 padding: 8px;
2638 2666 white-space: pre-wrap;
2639 2667 -webkit-border-radius: 8px 8px 8px 8px;
2640 2668 -khtml-border-radius: 8px 8px 8px 8px;
2641 2669 -moz-border-radius: 8px 8px 8px 8px;
2642 2670 border-radius: 8px 8px 8px 8px;
2643 2671 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2644 2672 }
2645 2673
2646 2674 .ac {
2647 2675 vertical-align: top;
2648 2676 }
2649 2677
2650 2678 .ac .yui-ac {
2651 2679 position: relative;
2652 2680 font-size: 100%;
2653 2681 }
2654 2682
2655 2683 .ac .perm_ac {
2656 2684 width: 15em;
2657 2685 }
2658 2686
2659 2687 .ac .yui-ac-input {
2660 2688 width: 100%;
2661 2689 }
2662 2690
2663 2691 .ac .yui-ac-container {
2664 2692 position: absolute;
2665 2693 top: 1.6em;
2666 2694 width: 100%;
2667 2695 }
2668 2696
2669 2697 .ac .yui-ac-content {
2670 2698 position: absolute;
2671 2699 width: 100%;
2672 2700 border: 1px solid gray;
2673 2701 background: #fff;
2674 2702 overflow: hidden;
2675 2703 z-index: 9050;
2676 2704 }
2677 2705
2678 2706 .ac .yui-ac-shadow {
2679 2707 position: absolute;
2680 2708 width: 100%;
2681 2709 background: #000;
2682 2710 -moz-opacity: 0.1px;
2683 2711 opacity: .10;
2684 2712 filter: alpha(opacity = 10);
2685 2713 z-index: 9049;
2686 2714 margin: .3em;
2687 2715 }
2688 2716
2689 2717 .ac .yui-ac-content ul {
2690 2718 width: 100%;
2691 2719 margin: 0;
2692 2720 padding: 0;
2693 2721 }
2694 2722
2695 2723 .ac .yui-ac-content li {
2696 2724 cursor: default;
2697 2725 white-space: nowrap;
2698 2726 margin: 0;
2699 2727 padding: 2px 5px;
2700 2728 }
2701 2729
2702 2730 .ac .yui-ac-content li.yui-ac-prehighlight {
2703 2731 background: #B3D4FF;
2704 2732 }
2705 2733
2706 2734 .ac .yui-ac-content li.yui-ac-highlight {
2707 2735 background: #556CB5;
2708 2736 color: #FFF;
2709 2737 }
2710 2738
2711 2739 .follow {
2712 2740 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2713 2741 height: 16px;
2714 2742 width: 20px;
2715 2743 cursor: pointer;
2716 2744 display: block;
2717 2745 float: right;
2718 2746 margin-top: 2px;
2719 2747 }
2720 2748
2721 2749 .following {
2722 2750 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2723 2751 height: 16px;
2724 2752 width: 20px;
2725 2753 cursor: pointer;
2726 2754 display: block;
2727 2755 float: right;
2728 2756 margin-top: 2px;
2729 2757 }
2730 2758
2731 2759 .currently_following {
2732 2760 padding-left: 10px;
2733 2761 padding-bottom: 5px;
2734 2762 }
2735 2763
2736 2764 .add_icon {
2737 2765 background: url("../images/icons/add.png") no-repeat scroll 3px;
2738 2766 padding-left: 20px;
2739 2767 padding-top: 0px;
2740 2768 text-align: left;
2741 2769 }
2742 2770
2743 2771 .edit_icon {
2744 2772 background: url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2745 2773 padding-left: 20px;
2746 2774 padding-top: 0px;
2747 2775 text-align: left;
2748 2776 }
2749 2777
2750 2778 .delete_icon {
2751 2779 background: url("../images/icons/delete.png") no-repeat scroll 3px;
2752 2780 padding-left: 20px;
2753 2781 padding-top: 0px;
2754 2782 text-align: left;
2755 2783 }
2756 2784
2757 2785 .refresh_icon {
2758 2786 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
2759 2787 3px;
2760 2788 padding-left: 20px;
2761 2789 padding-top: 0px;
2762 2790 text-align: left;
2763 2791 }
2764 2792
2765 2793 .pull_icon {
2766 2794 background: url("../images/icons/connect.png") no-repeat scroll 3px;
2767 2795 padding-left: 20px;
2768 2796 padding-top: 0px;
2769 2797 text-align: left;
2770 2798 }
2771 2799
2772 2800 .rss_icon {
2773 2801 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
2774 2802 padding-left: 20px;
2775 2803 padding-top: 4px;
2776 2804 text-align: left;
2777 2805 font-size: 8px
2778 2806 }
2779 2807
2780 2808 .atom_icon {
2781 2809 background: url("../images/icons/atom.png") no-repeat scroll 3px;
2782 2810 padding-left: 20px;
2783 2811 padding-top: 4px;
2784 2812 text-align: left;
2785 2813 font-size: 8px
2786 2814 }
2787 2815
2788 2816 .archive_icon {
2789 2817 background: url("../images/icons/compress.png") no-repeat scroll 3px;
2790 2818 padding-left: 20px;
2791 2819 text-align: left;
2792 2820 padding-top: 1px;
2793 2821 }
2794 2822
2795 2823 .start_following_icon {
2796 2824 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2797 2825 padding-left: 20px;
2798 2826 text-align: left;
2799 2827 padding-top: 0px;
2800 2828 }
2801 2829
2802 2830 .stop_following_icon {
2803 2831 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2804 2832 padding-left: 20px;
2805 2833 text-align: left;
2806 2834 padding-top: 0px;
2807 2835 }
2808 2836
2809 2837 .action_button {
2810 2838 border: 0;
2811 2839 display: inline;
2812 2840 }
2813 2841
2814 2842 .action_button:hover {
2815 2843 border: 0;
2816 2844 text-decoration: underline;
2817 2845 cursor: pointer;
2818 2846 }
2819 2847
2820 2848 #switch_repos {
2821 2849 position: absolute;
2822 2850 height: 25px;
2823 2851 z-index: 1;
2824 2852 }
2825 2853
2826 2854 #switch_repos select {
2827 2855 min-width: 150px;
2828 2856 max-height: 250px;
2829 2857 z-index: 1;
2830 2858 }
2831 2859
2832 2860 .breadcrumbs {
2833 2861 border: medium none;
2834 2862 color: #FFF;
2835 2863 float: left;
2836 2864 text-transform: uppercase;
2837 2865 font-weight: 700;
2838 2866 font-size: 14px;
2839 2867 margin: 0;
2840 2868 padding: 11px 0 11px 10px;
2841 2869 }
2842 2870
2843 2871 .breadcrumbs a {
2844 2872 color: #FFF;
2845 2873 }
2846 2874
2847 2875 .flash_msg {
2848 2876
2849 2877 }
2850 2878
2851 2879 .flash_msg ul {
2852 2880
2853 2881 }
2854 2882
2855 2883 .error_msg {
2856 2884 background-color: #c43c35;
2857 2885 background-repeat: repeat-x;
2858 2886 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b),
2859 2887 to(#c43c35) );
2860 2888 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
2861 2889 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
2862 2890 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b),
2863 2891 color-stop(100%, #c43c35) );
2864 2892 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
2865 2893 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
2866 2894 background-image: linear-gradient(top, #ee5f5b, #c43c35);
2867 2895 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',
2868 2896 endColorstr='#c43c35', GradientType=0 );
2869 2897 border-color: #c43c35 #c43c35 #882a25;
2870 2898 }
2871 2899
2872 2900 .warning_msg {
2873 2901 color: #404040 !important;
2874 2902 background-color: #eedc94;
2875 2903 background-repeat: repeat-x;
2876 2904 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
2877 2905 to(#eedc94) );
2878 2906 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
2879 2907 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
2880 2908 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1),
2881 2909 color-stop(100%, #eedc94) );
2882 2910 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
2883 2911 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
2884 2912 background-image: linear-gradient(top, #fceec1, #eedc94);
2885 2913 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1',
2886 2914 endColorstr='#eedc94', GradientType=0 );
2887 2915 border-color: #eedc94 #eedc94 #e4c652;
2888 2916 }
2889 2917
2890 2918 .success_msg {
2891 2919 background-color: #57a957;
2892 2920 background-repeat: repeat-x !important;
2893 2921 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462),
2894 2922 to(#57a957) );
2895 2923 background-image: -moz-linear-gradient(top, #62c462, #57a957);
2896 2924 background-image: -ms-linear-gradient(top, #62c462, #57a957);
2897 2925 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462),
2898 2926 color-stop(100%, #57a957) );
2899 2927 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
2900 2928 background-image: -o-linear-gradient(top, #62c462, #57a957);
2901 2929 background-image: linear-gradient(top, #62c462, #57a957);
2902 2930 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',
2903 2931 endColorstr='#57a957', GradientType=0 );
2904 2932 border-color: #57a957 #57a957 #3d773d;
2905 2933 }
2906 2934
2907 2935 .notice_msg {
2908 2936 background-color: #339bb9;
2909 2937 background-repeat: repeat-x;
2910 2938 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de),
2911 2939 to(#339bb9) );
2912 2940 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
2913 2941 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
2914 2942 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de),
2915 2943 color-stop(100%, #339bb9) );
2916 2944 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
2917 2945 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
2918 2946 background-image: linear-gradient(top, #5bc0de, #339bb9);
2919 2947 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de',
2920 2948 endColorstr='#339bb9', GradientType=0 );
2921 2949 border-color: #339bb9 #339bb9 #22697d;
2922 2950 }
2923 2951
2924 2952 .success_msg,.error_msg,.notice_msg,.warning_msg {
2925 2953 font-size: 12px;
2926 2954 font-weight: 700;
2927 2955 min-height: 14px;
2928 2956 line-height: 14px;
2929 2957 margin-bottom: 10px;
2930 2958 margin-top: 0;
2931 2959 display: block;
2932 2960 overflow: auto;
2933 2961 padding: 6px 10px 6px 10px;
2934 2962 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
2935 2963 position: relative;
2936 2964 color: #FFF;
2937 2965 border-width: 1px;
2938 2966 border-style: solid;
2939 2967 -webkit-border-radius: 4px;
2940 2968 -moz-border-radius: 4px;
2941 2969 border-radius: 4px;
2942 2970 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2943 2971 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2944 2972 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2945 2973 }
2946 2974
2947 2975 #msg_close {
2948 2976 background: transparent url("../icons/cross_grey_small.png") no-repeat
2949 2977 scroll 0 0;
2950 2978 cursor: pointer;
2951 2979 height: 16px;
2952 2980 position: absolute;
2953 2981 right: 5px;
2954 2982 top: 5px;
2955 2983 width: 16px;
2956 2984 }
2957 2985
2958 2986 div#legend_container table,div#legend_choices table {
2959 2987 width: auto !important;
2960 2988 }
2961 2989
2962 2990 table#permissions_manage {
2963 2991 width: 0 !important;
2964 2992 }
2965 2993
2966 2994 table#permissions_manage span.private_repo_msg {
2967 2995 font-size: 0.8em;
2968 2996 opacity: 0.6px;
2969 2997 }
2970 2998
2971 2999 table#permissions_manage td.private_repo_msg {
2972 3000 font-size: 0.8em;
2973 3001 }
2974 3002
2975 3003 table#permissions_manage tr#add_perm_input td {
2976 3004 vertical-align: middle;
2977 3005 }
2978 3006
2979 3007 div.gravatar {
2980 3008 background-color: #FFF;
2981 3009 float: left;
2982 3010 margin-right: 0.7em;
2983 3011 padding: 1px 1px 1px 1px;
2984 3012 line-height:0;
2985 3013 -webkit-border-radius: 3px;
2986 3014 -khtml-border-radius: 3px;
2987 3015 -moz-border-radius: 3px;
2988 3016 border-radius: 3px;
2989 3017 }
2990 3018
2991 3019 div.gravatar img {
2992 3020 -webkit-border-radius: 2px;
2993 3021 -khtml-border-radius: 2px;
2994 3022 -moz-border-radius: 2px;
2995 3023 border-radius: 2px;
2996 3024 }
2997 3025
2998 3026 #header,#content,#footer {
2999 3027 min-width: 978px;
3000 3028 }
3001 3029
3002 3030 #content {
3003 3031 clear: both;
3004 3032 overflow: hidden;
3005 3033 padding: 14px 10px;
3006 3034 }
3007 3035
3008 3036 #content div.box div.title div.search {
3009 3037
3010 3038 border-left: 1px solid #316293;
3011 3039 }
3012 3040
3013 3041 #content div.box div.title div.search div.input input {
3014 3042 border: 1px solid #316293;
3015 3043 }
3016 3044
3017 3045 .ui-btn{
3018 3046 color: #515151;
3019 3047 background-color: #DADADA;
3020 3048 background-repeat: repeat-x;
3021 3049 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3022 3050 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3023 3051 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3024 3052 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3025 3053 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3026 3054 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3027 3055 background-image: linear-gradient(top, #F4F4F4, #DADADA);
3028 3056 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3029 3057
3030 3058 border-top: 1px solid #DDD;
3031 3059 border-left: 1px solid #c6c6c6;
3032 3060 border-right: 1px solid #DDD;
3033 3061 border-bottom: 1px solid #c6c6c6;
3034 3062 color: #515151;
3035 3063 outline: none;
3036 3064 margin: 0px 3px 3px 0px;
3037 3065 -webkit-border-radius: 4px 4px 4px 4px !important;
3038 3066 -khtml-border-radius: 4px 4px 4px 4px !important;
3039 3067 -moz-border-radius: 4px 4px 4px 4px !important;
3040 3068 border-radius: 4px 4px 4px 4px !important;
3041 3069 cursor: pointer !important;
3042 3070 padding: 3px 3px 3px 3px;
3043 3071 background-position: 0 -15px;
3044 3072
3045 3073 }
3046 3074 .ui-btn.xsmall{
3047 3075 padding: 1px 2px 1px 1px;
3048 3076 }
3049 3077 .ui-btn.clone{
3050 3078 padding: 5px 2px 6px 1px;
3051 3079 margin: 0px -4px 3px 0px;
3052 3080 -webkit-border-radius: 4px 0px 0px 4px !important;
3053 3081 -khtml-border-radius: 4px 0px 0px 4px !important;
3054 3082 -moz-border-radius: 4px 0px 0px 4px !important;
3055 3083 border-radius: 4px 0px 0px 4px !important;
3056 3084 width: 100px;
3057 3085 text-align: center;
3058 3086 float: left;
3059 3087 position: absolute;
3060 3088 }
3061 3089 .ui-btn:focus {
3062 3090 outline: none;
3063 3091 }
3064 3092 .ui-btn:hover{
3065 3093 background-position: 0 0px;
3066 3094 text-decoration: none;
3067 3095 color: #515151;
3068 3096 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3069 3097 }
3070 3098
3071 3099 .ui-btn.red{
3072 3100 color:#fff;
3073 3101 background-color: #c43c35;
3074 3102 background-repeat: repeat-x;
3075 3103 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3076 3104 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3077 3105 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3078 3106 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3079 3107 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3080 3108 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3081 3109 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3082 3110 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3083 3111 border-color: #c43c35 #c43c35 #882a25;
3084 3112 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3085 3113 }
3086 3114
3087 3115
3088 3116 .ui-btn.blue{
3089 3117 background-color: #339bb9;
3090 3118 background-repeat: repeat-x;
3091 3119 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3092 3120 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3093 3121 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3094 3122 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3095 3123 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3096 3124 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3097 3125 background-image: linear-gradient(top, #5bc0de, #339bb9);
3098 3126 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3099 3127 border-color: #339bb9 #339bb9 #22697d;
3100 3128 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3101 3129 }
3102 3130
3103 3131 .ui-btn.green{
3104 3132 background-color: #57a957;
3105 3133 background-repeat: repeat-x;
3106 3134 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3107 3135 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3108 3136 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3109 3137 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3110 3138 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3111 3139 background-image: -o-linear-gradient(top, #62c462, #57a957);
3112 3140 background-image: linear-gradient(top, #62c462, #57a957);
3113 3141 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3114 3142 border-color: #57a957 #57a957 #3d773d;
3115 3143 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3116 3144 }
3117 3145
3118 3146 ins,div.options a:hover {
3119 3147 text-decoration: none;
3120 3148 }
3121 3149
3122 3150 img,
3123 3151 #header #header-inner #quick li a:hover span.normal,
3124 3152 #header #header-inner #quick li ul li.last,
3125 3153 #content div.box div.form div.fields div.field div.textarea table td table td a,
3126 3154 #clone_url,
3127 3155 #clone_url_id
3128 3156 {
3129 3157 border: none;
3130 3158 }
3131 3159
3132 3160 img.icon,.right .merge img {
3133 3161 vertical-align: bottom;
3134 3162 }
3135 3163
3136 3164 #header ul#logged-user,#content div.box div.title ul.links,
3137 3165 #content div.box div.message div.dismiss,
3138 3166 #content div.box div.traffic div.legend ul
3139 3167 {
3140 3168 float: right;
3141 3169 margin: 0;
3142 3170 padding: 0;
3143 3171 }
3144 3172
3145 3173 #header #header-inner #home,#header #header-inner #logo,
3146 3174 #content div.box ul.left,#content div.box ol.left,
3147 3175 #content div.box div.pagination-left,div#commit_history,
3148 3176 div#legend_data,div#legend_container,div#legend_choices
3149 3177 {
3150 3178 float: left;
3151 3179 }
3152 3180
3153 3181 #header #header-inner #quick li:hover ul ul,
3154 3182 #header #header-inner #quick li:hover ul ul ul,
3155 3183 #header #header-inner #quick li:hover ul ul ul ul,
3156 3184 #content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow
3157 3185 {
3158 3186 display: none;
3159 3187 }
3160 3188
3161 3189 #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
3162 3190 {
3163 3191 display: block;
3164 3192 }
3165 3193
3166 3194 #content div.graph {
3167 3195 padding: 0 10px 10px;
3168 3196 }
3169 3197
3170 3198 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a
3171 3199 {
3172 3200 color: #bfe3ff;
3173 3201 }
3174 3202
3175 3203 #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
3176 3204 {
3177 3205 margin: 10px 24px 10px 44px;
3178 3206 }
3179 3207
3180 3208 #content div.box div.form,#content div.box div.table,#content div.box div.traffic
3181 3209 {
3182 3210 clear: both;
3183 3211 overflow: hidden;
3184 3212 margin: 0;
3185 3213 padding: 0 20px 10px;
3186 3214 }
3187 3215
3188 3216 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields
3189 3217 {
3190 3218 clear: both;
3191 3219 overflow: hidden;
3192 3220 margin: 0;
3193 3221 padding: 0;
3194 3222 }
3195 3223
3196 3224 #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
3197 3225 {
3198 3226 height: 1%;
3199 3227 display: block;
3200 3228 color: #363636;
3201 3229 margin: 0;
3202 3230 padding: 2px 0 0;
3203 3231 }
3204 3232
3205 3233 #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
3206 3234 {
3207 3235 background: #FBE3E4;
3208 3236 border-top: 1px solid #e1b2b3;
3209 3237 border-left: 1px solid #e1b2b3;
3210 3238 border-right: 1px solid #FBC2C4;
3211 3239 border-bottom: 1px solid #FBC2C4;
3212 3240 }
3213 3241
3214 3242 #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
3215 3243 {
3216 3244 background: #E6EFC2;
3217 3245 border-top: 1px solid #cebb98;
3218 3246 border-left: 1px solid #cebb98;
3219 3247 border-right: 1px solid #c6d880;
3220 3248 border-bottom: 1px solid #c6d880;
3221 3249 }
3222 3250
3223 3251 #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
3224 3252 {
3225 3253 margin: 0;
3226 3254 }
3227 3255
3228 3256 #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
3229 3257 {
3230 3258 margin: 0 0 0 0px !important;
3231 3259 padding: 0;
3232 3260 }
3233 3261
3234 3262 #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
3235 3263 {
3236 3264 margin: 0 0 0 200px;
3237 3265 padding: 0;
3238 3266 }
3239 3267
3240 3268 #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
3241 3269 {
3242 3270 color: #000;
3243 3271 text-decoration: none;
3244 3272 }
3245 3273
3246 3274 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus
3247 3275 {
3248 3276 border: 1px solid #666;
3249 3277 }
3250 3278
3251 3279 #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
3252 3280 {
3253 3281 clear: both;
3254 3282 overflow: hidden;
3255 3283 margin: 0;
3256 3284 padding: 8px 0 2px;
3257 3285 }
3258 3286
3259 3287 #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
3260 3288 {
3261 3289 float: left;
3262 3290 margin: 0;
3263 3291 }
3264 3292
3265 3293 #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
3266 3294 {
3267 3295 height: 1%;
3268 3296 display: block;
3269 3297 float: left;
3270 3298 margin: 2px 0 0 4px;
3271 3299 }
3272 3300
3273 3301 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
3274 3302 {
3275 3303 color: #000;
3276 3304 font-size: 11px;
3277 3305 font-weight: 700;
3278 3306 margin: 0;
3279 3307 }
3280 3308
3281 3309 input.ui-button {
3282 3310 background: #e5e3e3 url("../images/button.png") repeat-x;
3283 3311 border-top: 1px solid #DDD;
3284 3312 border-left: 1px solid #c6c6c6;
3285 3313 border-right: 1px solid #DDD;
3286 3314 border-bottom: 1px solid #c6c6c6;
3287 3315 color: #515151 !important;
3288 3316 outline: none;
3289 3317 margin: 0;
3290 3318 padding: 6px 12px;
3291 3319 -webkit-border-radius: 4px 4px 4px 4px;
3292 3320 -khtml-border-radius: 4px 4px 4px 4px;
3293 3321 -moz-border-radius: 4px 4px 4px 4px;
3294 3322 border-radius: 4px 4px 4px 4px;
3295 3323 box-shadow: 0 1px 0 #ececec;
3296 3324 cursor: pointer;
3297 3325 }
3298 3326
3299 3327 input.ui-button:hover {
3300 3328 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3301 3329 border-top: 1px solid #ccc;
3302 3330 border-left: 1px solid #bebebe;
3303 3331 border-right: 1px solid #b1b1b1;
3304 3332 border-bottom: 1px solid #afafaf;
3305 3333 }
3306 3334
3307 3335 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight
3308 3336 {
3309 3337 display: inline;
3310 3338 }
3311 3339
3312 3340 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons
3313 3341 {
3314 3342 margin: 10px 0 0 200px;
3315 3343 padding: 0;
3316 3344 }
3317 3345
3318 3346 #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
3319 3347 {
3320 3348 margin: 10px 0 0;
3321 3349 }
3322 3350
3323 3351 #content div.box table td.user,#content div.box table td.address {
3324 3352 width: 10%;
3325 3353 text-align: center;
3326 3354 }
3327 3355
3328 3356 #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
3329 3357 {
3330 3358 text-align: right;
3331 3359 margin: 6px 0 0;
3332 3360 padding: 0;
3333 3361 }
3334 3362
3335 3363 #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
3336 3364 {
3337 3365 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3338 3366 border-top: 1px solid #ccc;
3339 3367 border-left: 1px solid #bebebe;
3340 3368 border-right: 1px solid #b1b1b1;
3341 3369 border-bottom: 1px solid #afafaf;
3342 3370 color: #515151;
3343 3371 margin: 0;
3344 3372 padding: 6px 12px;
3345 3373 }
3346 3374
3347 3375 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results
3348 3376 {
3349 3377 text-align: left;
3350 3378 float: left;
3351 3379 margin: 0;
3352 3380 padding: 0;
3353 3381 }
3354 3382
3355 3383 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span
3356 3384 {
3357 3385 height: 1%;
3358 3386 display: block;
3359 3387 float: left;
3360 3388 background: #ebebeb url("../images/pager.png") repeat-x;
3361 3389 border-top: 1px solid #dedede;
3362 3390 border-left: 1px solid #cfcfcf;
3363 3391 border-right: 1px solid #c4c4c4;
3364 3392 border-bottom: 1px solid #c4c4c4;
3365 3393 color: #4A4A4A;
3366 3394 font-weight: 700;
3367 3395 margin: 0;
3368 3396 padding: 6px 8px;
3369 3397 }
3370 3398
3371 3399 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled
3372 3400 {
3373 3401 color: #B4B4B4;
3374 3402 padding: 6px;
3375 3403 }
3376 3404
3377 3405 #login,#register {
3378 3406 width: 520px;
3379 3407 margin: 10% auto 0;
3380 3408 padding: 0;
3381 3409 }
3382 3410
3383 3411 #login div.color,#register div.color {
3384 3412 clear: both;
3385 3413 overflow: hidden;
3386 3414 background: #FFF;
3387 3415 margin: 10px auto 0;
3388 3416 padding: 3px 3px 3px 0;
3389 3417 }
3390 3418
3391 3419 #login div.color a,#register div.color a {
3392 3420 width: 20px;
3393 3421 height: 20px;
3394 3422 display: block;
3395 3423 float: left;
3396 3424 margin: 0 0 0 3px;
3397 3425 padding: 0;
3398 3426 }
3399 3427
3400 3428 #login div.title h5,#register div.title h5 {
3401 3429 color: #fff;
3402 3430 margin: 10px;
3403 3431 padding: 0;
3404 3432 }
3405 3433
3406 3434 #login div.form div.fields div.field,#register div.form div.fields div.field
3407 3435 {
3408 3436 clear: both;
3409 3437 overflow: hidden;
3410 3438 margin: 0;
3411 3439 padding: 0 0 10px;
3412 3440 }
3413 3441
3414 3442 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message
3415 3443 {
3416 3444 height: 1%;
3417 3445 display: block;
3418 3446 color: red;
3419 3447 margin: 8px 0 0;
3420 3448 padding: 0;
3421 3449 max-width: 320px;
3422 3450 }
3423 3451
3424 3452 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label
3425 3453 {
3426 3454 color: #000;
3427 3455 font-weight: 700;
3428 3456 }
3429 3457
3430 3458 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input
3431 3459 {
3432 3460 float: left;
3433 3461 margin: 0;
3434 3462 padding: 0;
3435 3463 }
3436 3464
3437 3465 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox
3438 3466 {
3439 3467 margin: 0 0 0 184px;
3440 3468 padding: 0;
3441 3469 }
3442 3470
3443 3471 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label
3444 3472 {
3445 3473 color: #565656;
3446 3474 font-weight: 700;
3447 3475 }
3448 3476
3449 3477 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input
3450 3478 {
3451 3479 color: #000;
3452 3480 font-size: 1em;
3453 3481 font-weight: 700;
3454 3482 margin: 0;
3455 3483 }
3456 3484
3457 3485 #changeset_content .container .wrapper,#graph_content .container .wrapper
3458 3486 {
3459 3487 width: 600px;
3460 3488 }
3461 3489
3462 3490 #changeset_content .container .left {
3463 3491 float: left;
3464 3492 width: 75%;
3465 3493 padding-left: 5px;
3466 3494 }
3467 3495
3468 3496 #changeset_content .container .left .date,.ac .match {
3469 3497 font-weight: 700;
3470 3498 padding-top: 5px;
3471 3499 padding-bottom: 5px;
3472 3500 }
3473 3501
3474 3502 div#legend_container table td,div#legend_choices table td {
3475 3503 border: none !important;
3476 3504 height: 20px !important;
3477 3505 padding: 0 !important;
3478 3506 }
3479 3507
3480 3508 .q_filter_box {
3481 3509 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3482 3510 -webkit-border-radius: 4px;
3483 3511 -moz-border-radius: 4px;
3484 3512 border-radius: 4px;
3485 3513 border: 0 none;
3486 3514 color: #AAAAAA;
3487 3515 margin-bottom: -4px;
3488 3516 margin-top: -4px;
3489 3517 padding-left: 3px;
3490 3518 }
3491 3519
3492 3520 #node_filter {
3493 3521 border: 0px solid #545454;
3494 3522 color: #AAAAAA;
3495 3523 padding-left: 3px;
3496 3524 }
3497 3525
3498 3526 /*README STYLE*/
3499 3527
3500 3528 div.readme {
3501 3529 padding:0px;
3502 3530 }
3503 3531
3504 3532 div.readme h2 {
3505 3533 font-weight: normal;
3506 3534 }
3507 3535
3508 3536 div.readme .readme_box {
3509 3537 background-color: #fafafa;
3510 3538 }
3511 3539
3512 3540 div.readme .readme_box {
3513 3541 clear:both;
3514 3542 overflow:hidden;
3515 3543 margin:0;
3516 3544 padding:0 20px 10px;
3517 3545 }
3518 3546
3519 3547 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 {
3520 3548 border-bottom: 0 !important;
3521 3549 margin: 0 !important;
3522 3550 padding: 0 !important;
3523 3551 line-height: 1.5em !important;
3524 3552 }
3525 3553
3526 3554
3527 3555 div.readme .readme_box h1:first-child {
3528 3556 padding-top: .25em !important;
3529 3557 }
3530 3558
3531 3559 div.readme .readme_box h2, div.readme .readme_box h3 {
3532 3560 margin: 1em 0 !important;
3533 3561 }
3534 3562
3535 3563 div.readme .readme_box h2 {
3536 3564 margin-top: 1.5em !important;
3537 3565 border-top: 4px solid #e0e0e0 !important;
3538 3566 padding-top: .5em !important;
3539 3567 }
3540 3568
3541 3569 div.readme .readme_box p {
3542 3570 color: black !important;
3543 3571 margin: 1em 0 !important;
3544 3572 line-height: 1.5em !important;
3545 3573 }
3546 3574
3547 3575 div.readme .readme_box ul {
3548 3576 list-style: disc !important;
3549 3577 margin: 1em 0 1em 2em !important;
3550 3578 }
3551 3579
3552 3580 div.readme .readme_box ol {
3553 3581 list-style: decimal;
3554 3582 margin: 1em 0 1em 2em !important;
3555 3583 }
3556 3584
3557 3585 div.readme .readme_box pre, code {
3558 3586 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3559 3587 }
3560 3588
3561 3589 div.readme .readme_box code {
3562 3590 font-size: 12px !important;
3563 3591 background-color: ghostWhite !important;
3564 3592 color: #444 !important;
3565 3593 padding: 0 .2em !important;
3566 3594 border: 1px solid #dedede !important;
3567 3595 }
3568 3596
3569 3597 div.readme .readme_box pre code {
3570 3598 padding: 0 !important;
3571 3599 font-size: 12px !important;
3572 3600 background-color: #eee !important;
3573 3601 border: none !important;
3574 3602 }
3575 3603
3576 3604 div.readme .readme_box pre {
3577 3605 margin: 1em 0;
3578 3606 font-size: 12px;
3579 3607 background-color: #eee;
3580 3608 border: 1px solid #ddd;
3581 3609 padding: 5px;
3582 3610 color: #444;
3583 3611 overflow: auto;
3584 3612 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3585 3613 -webkit-border-radius: 3px;
3586 3614 -moz-border-radius: 3px;
3587 3615 border-radius: 3px;
3588 3616 }
3589 3617
3590 3618
3591 3619 /** RST STYLE **/
3592 3620
3593 3621
3594 3622 div.rst-block {
3595 3623 padding:0px;
3596 3624 }
3597 3625
3598 3626 div.rst-block h2 {
3599 3627 font-weight: normal;
3600 3628 }
3601 3629
3602 3630 div.rst-block {
3603 3631 background-color: #fafafa;
3604 3632 }
3605 3633
3606 3634 div.rst-block {
3607 3635 clear:both;
3608 3636 overflow:hidden;
3609 3637 margin:0;
3610 3638 padding:0 20px 10px;
3611 3639 }
3612 3640
3613 3641 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
3614 3642 border-bottom: 0 !important;
3615 3643 margin: 0 !important;
3616 3644 padding: 0 !important;
3617 3645 line-height: 1.5em !important;
3618 3646 }
3619 3647
3620 3648
3621 3649 div.rst-block h1:first-child {
3622 3650 padding-top: .25em !important;
3623 3651 }
3624 3652
3625 3653 div.rst-block h2, div.rst-block h3 {
3626 3654 margin: 1em 0 !important;
3627 3655 }
3628 3656
3629 3657 div.rst-block h2 {
3630 3658 margin-top: 1.5em !important;
3631 3659 border-top: 4px solid #e0e0e0 !important;
3632 3660 padding-top: .5em !important;
3633 3661 }
3634 3662
3635 3663 div.rst-block p {
3636 3664 color: black !important;
3637 3665 margin: 1em 0 !important;
3638 3666 line-height: 1.5em !important;
3639 3667 }
3640 3668
3641 3669 div.rst-block ul {
3642 3670 list-style: disc !important;
3643 3671 margin: 1em 0 1em 2em !important;
3644 3672 }
3645 3673
3646 3674 div.rst-block ol {
3647 3675 list-style: decimal;
3648 3676 margin: 1em 0 1em 2em !important;
3649 3677 }
3650 3678
3651 3679 div.rst-block pre, code {
3652 3680 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3653 3681 }
3654 3682
3655 3683 div.rst-block code {
3656 3684 font-size: 12px !important;
3657 3685 background-color: ghostWhite !important;
3658 3686 color: #444 !important;
3659 3687 padding: 0 .2em !important;
3660 3688 border: 1px solid #dedede !important;
3661 3689 }
3662 3690
3663 3691 div.rst-block pre code {
3664 3692 padding: 0 !important;
3665 3693 font-size: 12px !important;
3666 3694 background-color: #eee !important;
3667 3695 border: none !important;
3668 3696 }
3669 3697
3670 3698 div.rst-block pre {
3671 3699 margin: 1em 0;
3672 3700 font-size: 12px;
3673 3701 background-color: #eee;
3674 3702 border: 1px solid #ddd;
3675 3703 padding: 5px;
3676 3704 color: #444;
3677 3705 overflow: auto;
3678 3706 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3679 3707 -webkit-border-radius: 3px;
3680 3708 -moz-border-radius: 3px;
3681 3709 border-radius: 3px;
3682 3710 }
3683 3711
3684 3712
3685 3713 /** comment main **/
3686 3714 .comments {
3687 3715 padding:10px 20px;
3688 3716 }
3689 3717
3690 3718 .comments .comment {
3691 3719 border: 1px solid #ddd;
3692 3720 margin-top: 10px;
3693 3721 -webkit-border-radius: 4px;
3694 3722 -moz-border-radius: 4px;
3695 3723 border-radius: 4px;
3696 3724 }
3697 3725
3698 3726 .comments .comment .meta {
3699 3727 background: #f8f8f8;
3700 3728 padding: 4px;
3701 3729 border-bottom: 1px solid #ddd;
3702 3730 }
3703 3731
3704 3732 .comments .comment .meta img {
3705 3733 vertical-align: middle;
3706 3734 }
3707 3735
3708 3736 .comments .comment .meta .user {
3709 3737 font-weight: bold;
3710 3738 }
3711 3739
3712 3740 .comments .comment .meta .date {
3713 3741 }
3714 3742
3715 3743 .comments .comment .text {
3716 3744 background-color: #FAFAFA;
3717 3745 }
3718 3746 .comment .text div.rst-block p {
3719 3747 margin: 0.5em 0px !important;
3720 3748 }
3721 3749
3722 3750 .comments .comments-number{
3723 3751 padding:0px 0px 10px 0px;
3724 3752 font-weight: bold;
3725 3753 color: #666;
3726 3754 font-size: 16px;
3727 3755 }
3728 3756
3729 3757 /** comment form **/
3730 3758
3731 3759 .comment-form .clearfix{
3732 3760 background: #EEE;
3733 3761 -webkit-border-radius: 4px;
3734 3762 -moz-border-radius: 4px;
3735 3763 border-radius: 4px;
3736 3764 padding: 10px;
3737 3765 }
3738 3766
3739 3767 div.comment-form {
3740 3768 margin-top: 20px;
3741 3769 }
3742 3770
3743 3771 .comment-form strong {
3744 3772 display: block;
3745 3773 margin-bottom: 15px;
3746 3774 }
3747 3775
3748 3776 .comment-form textarea {
3749 3777 width: 100%;
3750 3778 height: 100px;
3751 3779 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3752 3780 }
3753 3781
3754 3782 form.comment-form {
3755 3783 margin-top: 10px;
3756 3784 margin-left: 10px;
3757 3785 }
3758 3786
3759 3787 .comment-form-submit {
3760 3788 margin-top: 5px;
3761 3789 margin-left: 525px;
3762 3790 }
3763 3791
3764 3792 .file-comments {
3765 3793 display: none;
3766 3794 }
3767 3795
3768 3796 .comment-form .comment {
3769 3797 margin-left: 10px;
3770 3798 }
3771 3799
3772 3800 .comment-form .comment-help{
3773 3801 padding: 0px 0px 5px 0px;
3774 3802 color: #666;
3775 3803 }
3776 3804
3777 3805 .comment-form .comment-button{
3778 3806 padding-top:5px;
3779 3807 }
3780 3808
3781 3809 .add-another-button {
3782 3810 margin-left: 10px;
3783 3811 margin-top: 10px;
3784 3812 margin-bottom: 10px;
3785 3813 }
3786 3814
3787 3815 .comment .buttons {
3788 3816 float: right;
3789 3817 }
3790 3818
3791 3819
3792 3820 .show-inline-comments{
3793 3821 position: relative;
3794 3822 top:1px
3795 3823 }
3796 3824
3797 3825 /** comment inline form **/
3798 3826
3799 3827 .comment-inline-form .clearfix{
3800 3828 background: #EEE;
3801 3829 -webkit-border-radius: 4px;
3802 3830 -moz-border-radius: 4px;
3803 3831 border-radius: 4px;
3804 3832 padding: 5px;
3805 3833 }
3806 3834
3807 3835 div.comment-inline-form {
3808 3836 margin-top: 5px;
3809 3837 padding:2px 6px 8px 6px;
3810 3838 }
3811 3839
3812 3840 .comment-inline-form strong {
3813 3841 display: block;
3814 3842 margin-bottom: 15px;
3815 3843 }
3816 3844
3817 3845 .comment-inline-form textarea {
3818 3846 width: 100%;
3819 3847 height: 100px;
3820 3848 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3821 3849 }
3822 3850
3823 3851 form.comment-inline-form {
3824 3852 margin-top: 10px;
3825 3853 margin-left: 10px;
3826 3854 }
3827 3855
3828 3856 .comment-inline-form-submit {
3829 3857 margin-top: 5px;
3830 3858 margin-left: 525px;
3831 3859 }
3832 3860
3833 3861 .file-comments {
3834 3862 display: none;
3835 3863 }
3836 3864
3837 3865 .comment-inline-form .comment {
3838 3866 margin-left: 10px;
3839 3867 }
3840 3868
3841 3869 .comment-inline-form .comment-help{
3842 3870 padding: 0px 0px 2px 0px;
3843 3871 color: #666666;
3844 3872 font-size: 10px;
3845 3873 }
3846 3874
3847 3875 .comment-inline-form .comment-button{
3848 3876 padding-top:5px;
3849 3877 }
3850 3878
3851 3879 /** comment inline **/
3852 3880 .inline-comments {
3853 3881 padding:10px 20px;
3854 3882 }
3855 3883
3856 3884 .inline-comments div.rst-block {
3857 3885 clear:both;
3858 3886 overflow:hidden;
3859 3887 margin:0;
3860 3888 padding:0 20px 0px;
3861 3889 }
3862 3890 .inline-comments .comment {
3863 3891 border: 1px solid #ddd;
3864 3892 -webkit-border-radius: 4px;
3865 3893 -moz-border-radius: 4px;
3866 3894 border-radius: 4px;
3867 3895 margin: 3px 3px 5px 5px;
3868 3896 background-color: #FAFAFA;
3869 3897 }
3870 3898 .inline-comments .comment-wrapp{
3871 3899 padding:1px;
3872 3900 }
3873 3901 .inline-comments .comment .meta {
3874 3902 background: #f8f8f8;
3875 3903 padding: 4px;
3876 3904 border-bottom: 1px solid #ddd;
3877 3905 }
3878 3906
3879 3907 .inline-comments .comment .meta img {
3880 3908 vertical-align: middle;
3881 3909 }
3882 3910
3883 3911 .inline-comments .comment .meta .user {
3884 3912 font-weight: bold;
3885 3913 }
3886 3914
3887 3915 .inline-comments .comment .meta .date {
3888 3916 }
3889 3917
3890 3918 .inline-comments .comment .text {
3891 3919 background-color: #FAFAFA;
3892 3920 }
3893 3921
3894 3922 .inline-comments .comments-number{
3895 3923 padding:0px 0px 10px 0px;
3896 3924 font-weight: bold;
3897 3925 color: #666;
3898 3926 font-size: 16px;
3899 3927 }
3900 3928 .inline-comments-button .add-comment{
3901 3929 margin:10px 5px !important;
3902 3930 }
3903 3931 .notifications{
3904 3932 width:22px;
3905 3933 padding:2px;
3906 3934 float:right;
3907 3935 -webkit-border-radius: 4px;
3908 3936 -moz-border-radius: 4px;
3909 3937 border-radius: 4px;
3910 3938 text-align: center;
3911 3939 margin: 0px -10px 0px 5px;
3912 3940 background-color: #DEDEDE;
3913 3941 }
3914 3942 .notifications a{
3915 3943 color:#888 !important;
3916 3944 display: block;
3917 3945 font-size: 10px
3918 3946 }
3919 3947 .notifications a:hover{
3920 3948 text-decoration: none !important;
3921 3949 }
3922 3950 .notification-header{
3923 3951 padding-top:6px;
3924 3952 }
3925 3953 .notification-header .desc{
3926 3954 font-size: 16px;
3927 3955 height: 24px;
3928 3956 float: left
3929 3957 }
3930 3958 .notification-list .container.unread{
3931 3959
3932 3960 }
3933 3961 .notification-header .gravatar{
3934 3962
3935 3963 }
3936 3964 .notification-header .desc.unread{
3937 3965 font-weight: bold;
3938 3966 font-size: 17px;
3939 3967 }
3940 3968
3941 3969 .notification-header .delete-notifications{
3942 3970 float: right;
3943 3971 padding-top: 8px;
3944 3972 cursor: pointer;
3945 3973 }
3946 3974 .notification-subject{
3947 3975 clear:both;
3948 3976 border-bottom: 1px solid #eee;
3949 3977 padding:5px 0px 5px 38px;
3950 3978 }
3951 3979
3952 3980
3953 3981 /*****************************************************************************
3954 3982 DIFFS CSS
3955 3983 ******************************************************************************/
3956 3984
3957 3985 div.diffblock {
3958 3986 overflow: auto;
3959 3987 padding: 0px;
3960 3988 border: 1px solid #ccc;
3961 3989 background: #f8f8f8;
3962 3990 font-size: 100%;
3963 3991 line-height: 100%;
3964 3992 /* new */
3965 3993 line-height: 125%;
3966 3994 -webkit-border-radius: 6px 6px 0px 0px;
3967 3995 -moz-border-radius: 6px 6px 0px 0px;
3968 3996 border-radius: 6px 6px 0px 0px;
3969 3997 }
3970 3998 div.diffblock.margined{
3971 3999 margin: 0px 20px 0px 20px;
3972 4000 }
3973 4001 div.diffblock .code-header{
3974 4002 border-bottom: 1px solid #CCCCCC;
3975 4003 background: #EEEEEE;
3976 4004 padding:10px 0 10px 0;
3977 4005 height: 14px;
3978 4006 }
3979 4007 div.diffblock .code-header.cv{
3980 4008 height: 34px;
3981 4009 }
3982 4010 div.diffblock .code-header-title{
3983 4011 padding: 0px 0px 10px 5px !important;
3984 4012 margin: 0 !important;
3985 4013 }
3986 4014
3987 4015 div.diffblock .code-header .date{
3988 4016 float:left;
3989 4017 text-transform: uppercase;
4018 padding: 2px 0px 0px 2px;
3990 4019 }
3991 4020 div.diffblock .code-header div{
3992 4021 margin-left:4px;
3993 4022 font-weight: bold;
3994 4023 font-size: 14px;
3995 4024 }
3996 4025 div.diffblock .code-body{
3997 4026 background: #FFFFFF;
3998 4027 }
3999 4028 div.diffblock pre.raw{
4000 4029 background: #FFFFFF;
4001 4030 color:#000000;
4002 4031 }
4003 4032 table.code-difftable{
4004 4033 border-collapse: collapse;
4005 4034 width: 99%;
4006 4035 }
4007 4036 table.code-difftable td {
4008 4037 padding: 0 !important;
4009 4038 background: none !important;
4010 4039 border:0 !important;
4011 4040 vertical-align: none !important;
4012 4041 }
4013 4042 table.code-difftable .context{
4014 4043 background:none repeat scroll 0 0 #DDE7EF;
4015 4044 }
4016 4045 table.code-difftable .add{
4017 4046 background:none repeat scroll 0 0 #DDFFDD;
4018 4047 }
4019 4048 table.code-difftable .add ins{
4020 4049 background:none repeat scroll 0 0 #AAFFAA;
4021 4050 text-decoration:none;
4022 4051 }
4023 4052 table.code-difftable .del{
4024 4053 background:none repeat scroll 0 0 #FFDDDD;
4025 4054 }
4026 4055 table.code-difftable .del del{
4027 4056 background:none repeat scroll 0 0 #FFAAAA;
4028 4057 text-decoration:none;
4029 4058 }
4030 4059
4031 4060 /** LINE NUMBERS **/
4032 4061 table.code-difftable .lineno{
4033 4062
4034 4063 padding-left:2px;
4035 4064 padding-right:2px;
4036 4065 text-align:right;
4037 4066 width:32px;
4038 4067 -moz-user-select:none;
4039 4068 -webkit-user-select: none;
4040 4069 border-right: 1px solid #CCC !important;
4041 4070 border-left: 0px solid #CCC !important;
4042 4071 border-top: 0px solid #CCC !important;
4043 4072 border-bottom: none !important;
4044 4073 vertical-align: middle !important;
4045 4074
4046 4075 }
4047 4076 table.code-difftable .lineno.new {
4048 4077 }
4049 4078 table.code-difftable .lineno.old {
4050 4079 }
4051 4080 table.code-difftable .lineno a{
4052 4081 color:#747474 !important;
4053 4082 font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4054 4083 letter-spacing:-1px;
4055 4084 text-align:right;
4056 4085 padding-right: 2px;
4057 4086 cursor: pointer;
4058 4087 display: block;
4059 4088 width: 32px;
4060 4089 }
4061 4090
4062 4091 table.code-difftable .lineno-inline{
4063 4092 background:none repeat scroll 0 0 #FFF !important;
4064 4093 padding-left:2px;
4065 4094 padding-right:2px;
4066 4095 text-align:right;
4067 4096 width:30px;
4068 4097 -moz-user-select:none;
4069 4098 -webkit-user-select: none;
4070 4099 }
4071 4100
4072 4101 /** CODE **/
4073 4102 table.code-difftable .code {
4074 4103 display: block;
4075 4104 width: 100%;
4076 4105 }
4077 4106 table.code-difftable .code td{
4078 4107 margin:0;
4079 4108 padding:0;
4080 4109 }
4081 4110 table.code-difftable .code pre{
4082 4111 margin:0;
4083 4112 padding:0;
4084 4113 height: 17px;
4085 4114 line-height: 17px;
4086 4115 }
4087 4116
4088 4117
4089 4118 .diffblock.margined.comm .line .code:hover{
4090 4119 background-color:#FFFFCC !important;
4091 4120 cursor: pointer !important;
4092 4121 background-image:url("../images/icons/comment_add.png") !important;
4093 4122 background-repeat:no-repeat !important;
4094 4123 background-position: right !important;
4095 4124 background-position: 0% 50% !important;
4096 4125 }
4097 4126 .diffblock.margined.comm .line .code.no-comment:hover{
4098 4127 background-image: none !important;
4099 4128 cursor: auto !important;
4100 4129 background-color: inherit !important;
4101 4130
4102 } No newline at end of file
4131 }
@@ -1,144 +1,144 b''
1 1 // branch_renderer.js - Rendering of branch DAGs on the client side
2 2 //
3 3 // Copyright 2010 Marcin Kuzminski <marcin AT python-works DOT com>
4 4 // Copyright 2008 Jesper Noehr <jesper AT noehr DOT org>
5 5 // Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
6 6 // Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
7 7 //
8 8 // derived from code written by Scott James Remnant <scott@ubuntu.com>
9 9 // Copyright 2005 Canonical Ltd.
10 10 //
11 11 // This software may be used and distributed according to the terms
12 12 // of the GNU General Public License, incorporated herein by reference.
13 13
14 14 var colors = [
15 15 [ 1.0, 0.0, 0.0 ],
16 16 [ 1.0, 1.0, 0.0 ],
17 17 [ 0.0, 1.0, 0.0 ],
18 18 [ 0.0, 1.0, 1.0 ],
19 19 [ 0.0, 0.0, 1.0 ],
20 20 [ 1.0, 0.0, 1.0 ],
21 21 [ 1.0, 1.0, 0.0 ],
22 22 [ 0.0, 0.0, 0.0 ]
23 23 ];
24 24
25 25 function BranchRenderer() {
26 26
27 27 this.canvas = document.getElementById("graph_canvas");
28 28
29 29 if (navigator.userAgent.indexOf('MSIE') >= 0)
30 30 this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
31 31 this.ctx = this.canvas.getContext('2d');
32 32 this.ctx.strokeStyle = 'rgb(0, 0, 0)';
33 33 this.ctx.fillStyle = 'rgb(0, 0, 0)';
34 34 this.cur = [0, 0];
35 35 this.max_column = 1;
36 36 this.line_width = 2.5;
37 37 this.dot_radius = 5.5;
38 38 this.bg = [0, 4];
39 39 this.cell = [2, 0];
40 40 this.revlink = '';
41 41
42 42 this.scale = function(height) {
43 43 this.box_size = Math.floor(height/1.2);
44 44 this.cell_height = this.box_size;
45 45 this.bg_height = height;
46 46 }
47 47
48 48 this.setColor = function(color, bg, fg) {
49 49 color %= colors.length;
50 50 var red = (colors[color][0] * fg) || bg;
51 51 var green = (colors[color][1] * fg) || bg;
52 52 var blue = (colors[color][2] * fg) || bg;
53 53 red = Math.round(red * 255);
54 54 green = Math.round(green * 255);
55 55 blue = Math.round(blue * 255);
56 56 var s = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
57 57 this.ctx.strokeStyle = s;
58 58 this.ctx.fillStyle = s;
59 59 }
60 60
61 61 this.render = function(data,pad) {
62 62 var idx = 1;
63 63 var rela = document.getElementById('graph');
64 64 var pad = pad;
65 65 var scale = 22;
66
66
67 67 for (var i in data) {
68 68 this.scale(scale);
69
69 70 var row = document.getElementById("chg_"+idx);
70 71 var next = document.getElementById("chg_"+idx+1);
72 if(row == null){
73 continue
74 }
71 75 var extra = 0;
72 76
73 //skip this since i don't have DATE in my app
74 //if (next.is('.changesets-date')) {
75 // extra = next.outerHeight();
76 //}
77
78 77 this.cell[1] += row.clientWidth;
79 78 this.bg[1] += this.bg_height;
80 79
81 80 cur = data[i];
82 81 nodeid = cur[0];
83 82 node = cur[1];
84 83 in_l = cur[2];
85
84
85 var pos_ = 26;
86
86 87 for (var j in in_l) {
87 88
88 89 line = in_l[j];
89 90 start = line[0];
90 91 end = line[1];
91 92 color = line[2];
92 93
93 94 if (start > this.max_column) {
94 95 this.max_column = start;
95 96 }
96 97
97 98 if (end > this.max_column) {
98 99 this.max_column = end;
99 100 }
100 101
101 102 this.setColor(color, 0.0, 0.65);
102
103 y = row.offsetTop-rela.offsetTop+row.offsetHeight/2;
103 y = row.offsetTop-rela.offsetTop+pos_;
104 104 x = pad-((this.cell[0] + this.box_size * start - 1) + this.bg_height-2);
105 105
106 106 this.ctx.lineWidth=this.line_width;
107 107 this.ctx.beginPath();
108 108 this.ctx.moveTo(x, y);
109 109
110 110
111 111 if (start == end)
112 112 {
113 113 x = pad-((1 + this.box_size * end) + this.bg_height-2);
114 114 y += row.offsetHeight;
115 115 this.ctx.lineTo(x,y+extra,3);
116 116 }
117 117 else
118 118 {
119 119 var x2 = pad-((1 + this.box_size * end) + this.bg_height-2);
120 120 var y2 = y + row.offsetHeight;
121 121 var ymid = (y+y2) / 2;
122 this.ctx.bezierCurveTo (x,ymid,x2,ymid,x2,y2);
122 this.ctx.bezierCurveTo(x,ymid,x2,ymid,x2,y2);
123 123 }
124 124 this.ctx.stroke();
125 125 }
126 126
127 127 column = node[0]
128 128 color = node[1]
129 129
130 130 radius = this.dot_radius;
131 y = row.offsetTop-rela.offsetTop+row.offsetHeight/2;
131 y = row.offsetTop-rela.offsetTop+pos_;
132 132 x = pad-(Math.round(this.cell[0] * scale/2 * column + radius) + 15 - (column*4));
133 133
134 134 this.ctx.beginPath();
135 135 this.setColor(color, 0.25, 0.75);
136 136 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
137 137 this.ctx.fill();
138 138
139 139 idx++;
140 140 }
141 141
142 142 }
143 143
144 144 }
@@ -1,191 +1,221 b''
1 1 ## -*- coding: utf-8 -*-
2 2
3 3 <%inherit file="/base/base.html"/>
4 4
5 5 <%def name="title()">
6 6 ${c.repo_name} ${_('Changelog')} - ${c.rhodecode_name}
7 7 </%def>
8 8
9 9 <%def name="breadcrumbs_links()">
10 10 ${h.link_to(u'Home',h.url('/'))}
11 11 &raquo;
12 12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
13 13 &raquo;
14 14 ${_('Changelog')} - ${_('showing ')} ${c.size if c.size <= c.total_cs else c.total_cs} ${_('out of')} ${c.total_cs} ${_('revisions')}
15 15 </%def>
16 16
17 17 <%def name="page_nav()">
18 18 ${self.menu('changelog')}
19 19 </%def>
20 20
21 21 <%def name="main()">
22 22 <div class="box">
23 23 <!-- box / title -->
24 24 <div class="title">
25 25 ${self.breadcrumbs()}
26 26 </div>
27 27 <div class="table">
28 28 % if c.pagination:
29 29 <div id="graph">
30 30 <div id="graph_nodes">
31 31 <canvas id="graph_canvas"></canvas>
32 32 </div>
33 33 <div id="graph_content">
34 34 <div class="container_header">
35 35 ${h.form(h.url.current(),method='get')}
36 36 <div class="info_box" style="float:left">
37 37 ${h.submit('set',_('Show'),class_="ui-btn")}
38 38 ${h.text('size',size=1,value=c.size)}
39 39 ${_('revisions')}
40 40 </div>
41 41 ${h.end_form()}
42 42 <div id="rev_range_container" style="display:none"></div>
43 43 <div style="float:right">${h.select('branch_filter',c.branch_name,c.branch_filters)}</div>
44 44 </div>
45 45
46 46 %for cnt,cs in enumerate(c.pagination):
47 <div id="chg_${cnt+1}" class="container ${'tablerow1' if cnt%2==0 else 'tablerow2'}">
47 <div id="chg_${cnt+1}" class="container ${'tablerow%s' % (cnt%2)}">
48 48 <div class="left">
49 49 <div>
50 50 ${h.checkbox(cs.short_id,class_="changeset_range")}
51 <span class="tooltip" title="${cs.date}"><a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}"><span class="changeset_id">${cs.revision}:<span class="changeset_hash">${h.short_id(cs.raw_id)}</span></span></a></span>
51 <span class="tooltip" title="${h.age(cs.date)}"><a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}"><span class="changeset_id">${cs.revision}:<span class="changeset_hash">${h.short_id(cs.raw_id)}</span></span></a></span>
52 52 </div>
53 53 <div class="author">
54 54 <div class="gravatar">
55 55 <img alt="gravatar" src="${h.gravatar_url(h.email(cs.author),16)}"/>
56 56 </div>
57 57 <div title="${cs.author}" class="user">${h.person(cs.author)}</div>
58 58 </div>
59 <div class="date">${cs.date}</div>
59 60 </div>
60 61 <div class="mid">
61 <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>
62 <div class="message">${h.urlify_commit(h.wrap_paragraphs(cs.message))}</div>
63 <div class="expand ${'tablerow%s' % (cnt%2)}">&darr; ${_('show more')} &darr;</div>
62 64 </div>
63 65 <div class="right">
64 66 <div id="${cs.raw_id}_changes_info" class="changes">
65 67 <span id="${cs.raw_id}" class="changed_total tooltip" title="${_('Affected number of files, click to show more details')}">${len(cs.affected_files)}</span>
66 68 </div>
67 69 %if cs.parents:
68 70 %for p_cs in reversed(cs.parents):
69 71 <div class="parent">${_('Parent')}
70 72 <span class="changeset_id">${p_cs.revision}:<span class="changeset_hash">${h.link_to(h.short_id(p_cs.raw_id),
71 73 h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}</span></span>
72 74 </div>
73 75 %endfor
74 76 %else:
75 77 <div class="parent">${_('No parents')}</div>
76 78 %endif
77 79
78 80 <span class="logtags">
79 81 %if len(cs.parents)>1:
80 82 <span class="merge">${_('merge')}</span>
81 83 %endif
82 84 %if cs.branch:
83 85 <span class="branchtag" title="${'%s %s' % (_('branch'),cs.branch)}">
84 86 ${h.link_to(cs.branch,h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span>
85 87 %endif
86 88 %for tag in cs.tags:
87 89 <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
88 90 ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span>
89 91 %endfor
90 92 </span>
91 93 </div>
92 94 </div>
93 95
94 96 %endfor
95 97 <div class="pagination-wh pagination-left">
96 98 ${c.pagination.pager('$link_previous ~2~ $link_next')}
97 99 </div>
98 100 </div>
99 101 </div>
100 102
101 103 <script type="text/javascript" src="${h.url('/js/graph.js')}"></script>
102 104 <script type="text/javascript">
103 105 YAHOO.util.Event.onDOMReady(function(){
104 106
105 107 //Monitor range checkboxes and build a link to changesets
106 108 //ranges
107 109 var checkboxes = YUD.getElementsByClassName('changeset_range');
108 110 var url_tmpl = "${h.url('changeset_home',repo_name=c.repo_name,revision='__REVRANGE__')}";
109 111 YUE.on(checkboxes,'click',function(e){
110 112 var checked_checkboxes = [];
111 113 for (pos in checkboxes){
112 114 if(checkboxes[pos].checked){
113 115 checked_checkboxes.push(checkboxes[pos]);
114 116 }
115 117 }
116 118 if(checked_checkboxes.length>1){
117 119 var rev_end = checked_checkboxes[0].name;
118 120 var rev_start = checked_checkboxes[checked_checkboxes.length-1].name;
119 121
120 122 var url = url_tmpl.replace('__REVRANGE__',
121 123 rev_start+'...'+rev_end);
122 124
123 125 var link = "<a href="+url+">${_('Show selected changes __S -> __E')}</a>"
124 126 link = link.replace('__S',rev_start);
125 127 link = link.replace('__E',rev_end);
126 128 YUD.get('rev_range_container').innerHTML = link;
127 129 YUD.setStyle('rev_range_container','display','');
128 130 }
129 131 else{
130 132 YUD.setStyle('rev_range_container','display','none');
131 133
132 134 }
133 135 });
134 136
137 var msgs = YUQ('.message');
138 // get firts element height;
139 var el = YUQ('.container')[0];
140 var row_h = el.clientHeight;
141 for(var i=0;i<msgs.length;i++){
142 var m = msgs[i];
143
144 var h = m.clientHeight;
145 var pad = YUD.getStyle(m,'padding');
146 if(h > row_h){
147 YUD.setStyle(m.nextElementSibling,'display','block');
148 YUD.setStyle(m.nextElementSibling,'margin-top',row_h-(h+14)+'px');
149 YUD.setAttribute(m.nextElementSibling,'expand',h);
150 };
151 }
152 YUE.on(YUQ('.expand'),'click',function(e){
153 var elem = e.currentTarget.parentElement.parentElement;
154 YUD.setStyle(e.currentTarget,'display','none');
155 YUD.setStyle(elem,'height',YUD.getAttribute(e.currentTarget,'expand')+'px');
156
157 //redraw the graph max_w and jsdata are global vars
158 set_canvas(max_w);
159
160 var r = new BranchRenderer();
161 r.render(jsdata,max_w);
162
163 })
164
135 165 // Fetch changeset details
136 166 YUE.on(YUD.getElementsByClassName('changed_total'),'click',function(e){
137 167 var id = e.currentTarget.id
138 168 var url = "${h.url('changelog_details',repo_name=c.repo_name,cs='__CS__')}"
139 169 var url = url.replace('__CS__',id);
140 170 ypjax(url,id+'_changes_info',function(){tooltip_activate()});
141 171 });
142 172
143 173 // change branch filter
144 174 YUE.on(YUD.get('branch_filter'),'change',function(e){
145 175 var selected_branch = e.currentTarget.options[e.currentTarget.selectedIndex].value;
146 176 console.log(selected_branch);
147 177 var url_main = "${h.url('changelog_home',repo_name=c.repo_name)}";
148 178 var url = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}";
149 179 var url = url.replace('__BRANCH__',selected_branch);
150 180 if(selected_branch != ''){
151 181 window.location = url;
152 182 }else{
153 183 window.location = url_main;
154 184 }
155 185
156 186 });
157 187
158 188 function set_canvas(heads) {
159 189 var c = document.getElementById('graph_nodes');
160 190 var t = document.getElementById('graph_content');
161 191 canvas = document.getElementById('graph_canvas');
162 192 var div_h = t.clientHeight;
163 193 c.style.height=div_h+'px';
164 194 canvas.setAttribute('height',div_h);
165 195 c.style.height=max_w+'px';
166 196 canvas.setAttribute('width',max_w);
167 197 };
168 198 var heads = 1;
169 199 var max_heads = 0;
170 200 var jsdata = ${c.jsdata|n};
171 201
172 202 for( var i=0;i<jsdata.length;i++){
173 203 var m = Math.max.apply(Math, jsdata[i][1]);
174 204 if (m>max_heads){
175 205 max_heads = m;
176 206 }
177 207 }
178 208 var max_w = Math.max(100,max_heads*25);
179 209 set_canvas(max_w);
180 210
181 211 var r = new BranchRenderer();
182 212 r.render(jsdata,max_w);
183 213
184 214 });
185 215 </script>
186 216 %else:
187 217 ${_('There are no changes yet')}
188 218 %endif
189 219 </div>
190 220 </div>
191 </%def> No newline at end of file
221 </%def>
@@ -1,193 +1,193 b''
1 1 ## -*- coding: utf-8 -*-
2 2
3 3 <%inherit file="/base/base.html"/>
4 4
5 5 <%def name="title()">
6 6 ${c.repo_name} ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} - ${c.rhodecode_name}
7 7 </%def>
8 8
9 9 <%def name="breadcrumbs_links()">
10 10 ${h.link_to(u'Home',h.url('/'))}
11 11 &raquo;
12 12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
13 13 &raquo;
14 14 ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
15 15 </%def>
16 16
17 17 <%def name="page_nav()">
18 18 ${self.menu('changelog')}
19 19 </%def>
20 20
21 21 <%def name="main()">
22 22 <div class="box">
23 23 <!-- box / title -->
24 24 <div class="title">
25 25 ${self.breadcrumbs()}
26 26 </div>
27 27 <div class="table">
28 28 <div class="diffblock">
29 29 <div class="code-header">
30 <div class="date">${c.changeset.revision}:
31 ${h.link_to(h.short_id(c.changeset.raw_id),h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}
30 <div class="date">
31 R${c.changeset.revision}:${h.link_to(h.short_id(c.changeset.raw_id),h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}
32 32 ${c.changeset.date}</div>
33 <span class="diff-actions">
34 <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show')}" title="${_('raw diff')}"><img class="icon" src="${h.url('/images/icons/page_white_text.png')}"/></a>
35 <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}" title="${_('download diff')}"><img class="icon" src="${h.url('/images/icons/down_16.png')}"/></a>
33 <div class="diff-actions">
34 <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show')}" title="${_('raw diff')}"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
35 <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}" title="${_('download diff')}"><img class="icon" src="${h.url('/images/icons/page_white_get.png')}"/></a>
36 36 ${c.ignorews_url()}
37 37 ${c.context_url()}
38 </span>
38 </div>
39 39 <div class="comments-number" style="float:right;padding-right:5px">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
40 40 </div>
41 41 </div>
42 42 <div id="changeset_content">
43 43 <div class="container">
44 44 <div class="left">
45 45 <div class="author">
46 46 <div class="gravatar">
47 47 <img alt="gravatar" src="${h.gravatar_url(h.email(c.changeset.author),20)}"/>
48 48 </div>
49 49 <span>${h.person(c.changeset.author)}</span><br/>
50 50 <span><a href="mailto:${h.email_or_none(c.changeset.author)}">${h.email_or_none(c.changeset.author)}</a></span><br/>
51 51 </div>
52 52 <div class="message">${h.urlify_commit(h.wrap_paragraphs(c.changeset.message))}</div>
53 53 </div>
54 54 <div class="right">
55 55 <div class="changes">
56 56 % if len(c.changeset.affected_files) <= c.affected_files_cut_off:
57 57 <span class="removed" title="${_('removed')}">${len(c.changeset.removed)}</span>
58 58 <span class="changed" title="${_('changed')}">${len(c.changeset.changed)}</span>
59 59 <span class="added" title="${_('added')}">${len(c.changeset.added)}</span>
60 60 % else:
61 61 <span class="removed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
62 62 <span class="changed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
63 63 <span class="added" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
64 64 % endif
65 65 </div>
66 66
67 67 %if c.changeset.parents:
68 68 %for p_cs in reversed(c.changeset.parents):
69 69 <div class="parent">${_('Parent')}
70 70 <span class="changeset_id">${p_cs.revision}:<span class="changeset_hash">${h.link_to(h.short_id(p_cs.raw_id),
71 71 h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}</span></span>
72 72 </div>
73 73 %endfor
74 74 %else:
75 75 <div class="parent">${_('No parents')}</div>
76 76 %endif
77 77 <span class="logtags">
78 78 %if len(c.changeset.parents)>1:
79 79 <span class="merge">${_('merge')}</span>
80 80 %endif
81 81 <span class="branchtag" title="${'%s %s' % (_('branch'),c.changeset.branch)}">
82 82 ${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
83 83 %for tag in c.changeset.tags:
84 84 <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
85 85 ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
86 86 %endfor
87 87 </span>
88 88 </div>
89 89 </div>
90 90 <span>
91 91 ${_('%s files affected with %s additions and %s deletions:') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
92 92 </span>
93 93 <div class="cs_files">
94 94 %for change,filenode,diff,cs1,cs2,stat in c.changes:
95 95 <div class="cs_${change}">
96 96 <div class="node">
97 97 %if change != 'removed':
98 98 ${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path)+"_target")}
99 99 %else:
100 100 ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID('',filenode.path)))}
101 101 %endif
102 102 </div>
103 103 <div class="changes">${h.fancy_file_stats(stat)}</div>
104 104 </div>
105 105 %endfor
106 106 % if c.cut_off:
107 107 ${_('Changeset was too big and was cut off...')}
108 108 % endif
109 109 </div>
110 110 </div>
111 111
112 112 </div>
113 113
114 114 ## diff block
115 115 <%namespace name="diff_block" file="/changeset/diff_block.html"/>
116 116 ${diff_block.diff_block(c.changes)}
117 117
118 118 ## template for inline comment form
119 119 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
120 120 ${comment.comment_inline_form(c.changeset)}
121 121
122 122 ${comment.comments(c.changeset)}
123 123
124 124 <script type="text/javascript">
125 125 var deleteComment = function(comment_id){
126 126
127 127 var url = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}".replace('__COMMENT_ID__',comment_id);
128 128 var postData = '_method=delete';
129 129 var success = function(o){
130 130 var n = YUD.get('comment-'+comment_id);
131 131 n.parentNode.removeChild(n);
132 132 }
133 133 ajaxPOST(url,postData,success);
134 134 }
135 135
136 136 YUE.onDOMReady(function(){
137 137
138 138 YUE.on(YUQ('.show-inline-comments'),'change',function(e){
139 139 var show = 'none';
140 140 var target = e.currentTarget;
141 141 console.log(target);
142 142 if(target.checked){
143 143 var show = ''
144 144 }
145 145 console.log('aa')
146 146 var boxid = YUD.getAttribute(target,'id_for');
147 147 console.log(boxid);
148 148 var comments = YUQ('#{0} .inline-comments'.format(boxid));
149 149 console.log(comments)
150 150 for(c in comments){
151 151 YUD.setStyle(comments[c],'display',show);
152 152 }
153 153 var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
154 154 for(c in btns){
155 155 YUD.setStyle(btns[c],'display',show);
156 156 }
157 157 })
158 158
159 159 YUE.on(YUQ('.line'),'click',function(e){
160 160 var tr = e.currentTarget;
161 161 injectInlineForm(tr);
162 162 });
163 163
164 164 // inject comments into they proper positions
165 165 var file_comments = YUQ('.inline-comment-placeholder');
166 166
167 167 for (f in file_comments){
168 168 var box = file_comments[f];
169 169 var inlines = box.children;
170 170 for(var i=0; i<inlines.length; i++){
171 171 try{
172 172
173 173 var inline = inlines[i];
174 174 var lineno = YUD.getAttribute(inlines[i],'line');
175 175 var lineid = "{0}_{1}".format(YUD.getAttribute(inline,'target_id'),lineno);
176 176 var target_line = YUD.get(lineid);
177 177
178 178 var add = createInlineAddButton(target_line.parentNode,'${_("add another comment")}');
179 179 YUD.insertAfter(add,target_line.parentNode);
180 180
181 181 var comment = new YAHOO.util.Element(tableTr('inline-comments',inline.innerHTML))
182 182 YUD.insertAfter(comment,target_line.parentNode);
183 183 }catch(e){
184 184 console.log(e);
185 185 }
186 186 }
187 187 }
188 188 })
189 189
190 190 </script>
191 191
192 192 </div>
193 193 </%def>
@@ -1,41 +1,41 b''
1 1 ## -*- coding: utf-8 -*-
2 2 ##usage:
3 3 ## <%namespace name="diff_block" file="/changeset/diff_block.html"/>
4 4 ## ${diff_block.diff_block(changes)}
5 5 ##
6 6 <%def name="diff_block(changes)">
7 7
8 8 %for change,filenode,diff,cs1,cs2,stat in changes:
9 9 %if change !='removed':
10 10 <div id="${h.FID(filenode.changeset.raw_id,filenode.path)}_target" style="clear:both;height:90px;margin-top:-60px"></div>
11 11 <div id="${h.FID(filenode.changeset.raw_id,filenode.path)}" class="diffblock margined comm">
12 12 <div class="code-header">
13 13 <div class="changeset_header">
14 14 <div class="changeset_file">
15 15 ${h.link_to_if(change!='removed',h.safe_unicode(filenode.path),h.url('files_home',repo_name=c.repo_name,
16 16 revision=filenode.changeset.raw_id,f_path=h.safe_unicode(filenode.path)))}
17 17 </div>
18 <span class="diff-actions">
19 <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='diff',fulldiff=1)}" title="${_('diff')}"><img class="icon" src="${h.url('/images/icons/page_white_text.png')}"/></a>
20 <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='raw')}" title="${_('raw diff')}"><img class="icon" src="${h.url('/images/icons/page_white_text.png')}"/></a>
21 <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='download')}" title="${_('download diff')}"><img class="icon" src="${h.url('/images/icons/down_16.png')}"/></a>
18 <div class="diff-actions">
19 <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='diff',fulldiff=1)}" title="${_('diff')}"><img class="icon" src="${h.url('/images/icons/page_white_go.png')}"/></a>
20 <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='raw')}" title="${_('raw diff')}"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
21 <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='download')}" title="${_('download diff')}"><img class="icon" src="${h.url('/images/icons/page_white_get.png')}"/></a>
22 22 ${c.ignorews_url(h.FID(filenode.changeset.raw_id,filenode.path))}
23 23 ${c.context_url(h.FID(filenode.changeset.raw_id,filenode.path))}
24 </span>
24 </div>
25 25 <span style="float:right;margin-top:-3px">
26 26 <label>
27 27 ${_('show inline comments')}
28 28 ${h.checkbox('',checked="checked",class_="show-inline-comments",id_for=h.FID(filenode.changeset.raw_id,filenode.path))}
29 29 </label>
30 30 </span>
31 31 </div>
32 32 </div>
33 33 <div class="code-body">
34 34 <div class="full_f_path" path="${h.safe_unicode(filenode.path)}"></div>
35 35 ${diff|n}
36 36 </div>
37 37 </div>
38 38 %endif
39 39 %endfor
40 40
41 41 </%def> No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now