##// END OF EJS Templates
fixed deletion of repository on filesystem, works based on scm type for git and hg....
marcink -
r668:dff6d5cb beta
parent child Browse files
Show More
@@ -1,445 +1,447 b''
1 """Helper functions
1 """Helper functions
2
2
3 Consists of functions to typically be used within templates, but also
3 Consists of functions to typically be used within templates, but also
4 available to Controllers. This module is available to both as 'h'.
4 available to Controllers. This module is available to both as 'h'.
5 """
5 """
6 from pygments.formatters import HtmlFormatter
6 from pygments.formatters import HtmlFormatter
7 from pygments import highlight as code_highlight
7 from pygments import highlight as code_highlight
8 from pylons import url, app_globals as g
8 from pylons import url, app_globals as g
9 from pylons.i18n.translation import _, ungettext
9 from pylons.i18n.translation import _, ungettext
10 from vcs.utils.annotate import annotate_highlight
10 from vcs.utils.annotate import annotate_highlight
11 from webhelpers.html import literal, HTML, escape
11 from webhelpers.html import literal, HTML, escape
12 from webhelpers.html.tools import *
12 from webhelpers.html.tools import *
13 from webhelpers.html.builder import make_tag
13 from webhelpers.html.builder import make_tag
14 from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \
14 from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \
15 end_form, file, form, hidden, image, javascript_link, link_to, link_to_if, \
15 end_form, file, form, hidden, image, javascript_link, link_to, link_to_if, \
16 link_to_unless, ol, required_legend, select, stylesheet_link, submit, text, \
16 link_to_unless, ol, required_legend, select, stylesheet_link, submit, text, \
17 password, textarea, title, ul, xml_declaration, radio
17 password, textarea, title, ul, xml_declaration, radio
18 from webhelpers.html.tools import auto_link, button_to, highlight, js_obfuscate, \
18 from webhelpers.html.tools import auto_link, button_to, highlight, js_obfuscate, \
19 mail_to, strip_links, strip_tags, tag_re
19 mail_to, strip_links, strip_tags, tag_re
20 from webhelpers.number import format_byte_size, format_bit_size
20 from webhelpers.number import format_byte_size, format_bit_size
21 from webhelpers.pylonslib import Flash as _Flash
21 from webhelpers.pylonslib import Flash as _Flash
22 from webhelpers.pylonslib.secure_form import secure_form
22 from webhelpers.pylonslib.secure_form import secure_form
23 from webhelpers.text import chop_at, collapse, convert_accented_entities, \
23 from webhelpers.text import chop_at, collapse, convert_accented_entities, \
24 convert_misc_entities, lchop, plural, rchop, remove_formatting, \
24 convert_misc_entities, lchop, plural, rchop, remove_formatting, \
25 replace_whitespace, urlify, truncate, wrap_paragraphs
25 replace_whitespace, urlify, truncate, wrap_paragraphs
26 from webhelpers.date import time_ago_in_words
26 from webhelpers.date import time_ago_in_words
27
27
28 #Custom helpers here :)
28 #Custom helpers here :)
29 class _Link(object):
29 class _Link(object):
30 '''
30 '''
31 Make a url based on label and url with help of url_for
31 Make a url based on label and url with help of url_for
32 :param label:name of link if not defined url is used
32 :param label:name of link if not defined url is used
33 :param url: the url for link
33 :param url: the url for link
34 '''
34 '''
35
35
36 def __call__(self, label='', *url_, **urlargs):
36 def __call__(self, label='', *url_, **urlargs):
37 if label is None or '':
37 if label is None or '':
38 label = url
38 label = url
39 link_fn = link_to(label, url(*url_, **urlargs))
39 link_fn = link_to(label, url(*url_, **urlargs))
40 return link_fn
40 return link_fn
41
41
42 link = _Link()
42 link = _Link()
43
43
44 class _GetError(object):
44 class _GetError(object):
45
45
46 def __call__(self, field_name, form_errors):
46 def __call__(self, field_name, form_errors):
47 tmpl = """<span class="error_msg">%s</span>"""
47 tmpl = """<span class="error_msg">%s</span>"""
48 if form_errors and form_errors.has_key(field_name):
48 if form_errors and form_errors.has_key(field_name):
49 return literal(tmpl % form_errors.get(field_name))
49 return literal(tmpl % form_errors.get(field_name))
50
50
51 get_error = _GetError()
51 get_error = _GetError()
52
52
53 def recursive_replace(str, replace=' '):
53 def recursive_replace(str, replace=' '):
54 """
54 """
55 Recursive replace of given sign to just one instance
55 Recursive replace of given sign to just one instance
56 :param str: given string
56 :param str: given string
57 :param replace:char to find and replace multiple instances
57 :param replace:char to find and replace multiple instances
58
58
59 Examples::
59 Examples::
60 >>> recursive_replace("Mighty---Mighty-Bo--sstones",'-')
60 >>> recursive_replace("Mighty---Mighty-Bo--sstones",'-')
61 'Mighty-Mighty-Bo-sstones'
61 'Mighty-Mighty-Bo-sstones'
62 """
62 """
63
63
64 if str.find(replace * 2) == -1:
64 if str.find(replace * 2) == -1:
65 return str
65 return str
66 else:
66 else:
67 str = str.replace(replace * 2, replace)
67 str = str.replace(replace * 2, replace)
68 return recursive_replace(str, replace)
68 return recursive_replace(str, replace)
69
69
70 class _ToolTip(object):
70 class _ToolTip(object):
71
71
72 def __call__(self, tooltip_title, trim_at=50):
72 def __call__(self, tooltip_title, trim_at=50):
73 """
73 """
74 Special function just to wrap our text into nice formatted autowrapped
74 Special function just to wrap our text into nice formatted autowrapped
75 text
75 text
76 :param tooltip_title:
76 :param tooltip_title:
77 """
77 """
78
78
79 return wrap_paragraphs(escape(tooltip_title), trim_at)\
79 return wrap_paragraphs(escape(tooltip_title), trim_at)\
80 .replace('\n', '<br/>')
80 .replace('\n', '<br/>')
81
81
82 def activate(self):
82 def activate(self):
83 """
83 """
84 Adds tooltip mechanism to the given Html all tooltips have to have
84 Adds tooltip mechanism to the given Html all tooltips have to have
85 set class tooltip and set attribute tooltip_title.
85 set class tooltip and set attribute tooltip_title.
86 Then a tooltip will be generated based on that
86 Then a tooltip will be generated based on that
87 All with yui js tooltip
87 All with yui js tooltip
88 """
88 """
89
89
90 js = '''
90 js = '''
91 YAHOO.util.Event.onDOMReady(function(){
91 YAHOO.util.Event.onDOMReady(function(){
92 function toolTipsId(){
92 function toolTipsId(){
93 var ids = [];
93 var ids = [];
94 var tts = YAHOO.util.Dom.getElementsByClassName('tooltip');
94 var tts = YAHOO.util.Dom.getElementsByClassName('tooltip');
95
95
96 for (var i = 0; i < tts.length; i++) {
96 for (var i = 0; i < tts.length; i++) {
97 //if element doesn not have and id autgenerate one for tooltip
97 //if element doesn't not have and id autgenerate one for tooltip
98
98
99 if (!tts[i].id){
99 if (!tts[i].id){
100 tts[i].id='tt'+i*100;
100 tts[i].id='tt'+i*100;
101 }
101 }
102 ids.push(tts[i].id);
102 ids.push(tts[i].id);
103 }
103 }
104 return ids
104 return ids
105 };
105 };
106 var myToolTips = new YAHOO.widget.Tooltip("tooltip", {
106 var myToolTips = new YAHOO.widget.Tooltip("tooltip", {
107 context: toolTipsId(),
107 context: toolTipsId(),
108 monitorresize:false,
108 monitorresize:false,
109 xyoffset :[0,0],
109 xyoffset :[0,0],
110 autodismissdelay:300000,
110 autodismissdelay:300000,
111 hidedelay:5,
111 hidedelay:5,
112 showdelay:20,
112 showdelay:20,
113 });
113 });
114
114
115 //Mouse Over event disabled for new repositories since they dont
115 //Mouse Over event disabled for new repositories since they don't
116 //have last commit message
116 //have last commit message
117 myToolTips.contextMouseOverEvent.subscribe(
117 myToolTips.contextMouseOverEvent.subscribe(
118 function(type, args) {
118 function(type, args) {
119 var context = args[0];
119 var context = args[0];
120 var txt = context.getAttribute('tooltip_title');
120 var txt = context.getAttribute('tooltip_title');
121 if(txt){
121 if(txt){
122 return true;
122 return true;
123 }
123 }
124 else{
124 else{
125 return false;
125 return false;
126 }
126 }
127 });
127 });
128
128
129
129
130 // Set the text for the tooltip just before we display it. Lazy method
130 // Set the text for the tooltip just before we display it. Lazy method
131 myToolTips.contextTriggerEvent.subscribe(
131 myToolTips.contextTriggerEvent.subscribe(
132 function(type, args) {
132 function(type, args) {
133
133
134
134
135 var context = args[0];
135 var context = args[0];
136
136
137 var txt = context.getAttribute('tooltip_title');
137 var txt = context.getAttribute('tooltip_title');
138 this.cfg.setProperty("text", txt);
138 this.cfg.setProperty("text", txt);
139
139
140
140
141 // positioning of tooltip
141 // positioning of tooltip
142 var tt_w = this.element.clientWidth;
142 var tt_w = this.element.clientWidth;
143 var tt_h = this.element.clientHeight;
143 var tt_h = this.element.clientHeight;
144
144
145 var context_w = context.offsetWidth;
145 var context_w = context.offsetWidth;
146 var context_h = context.offsetHeight;
146 var context_h = context.offsetHeight;
147
147
148 var pos_x = YAHOO.util.Dom.getX(context);
148 var pos_x = YAHOO.util.Dom.getX(context);
149 var pos_y = YAHOO.util.Dom.getY(context);
149 var pos_y = YAHOO.util.Dom.getY(context);
150
150
151 var display_strategy = 'top';
151 var display_strategy = 'top';
152 var xy_pos = [0,0];
152 var xy_pos = [0,0];
153 switch (display_strategy){
153 switch (display_strategy){
154
154
155 case 'top':
155 case 'top':
156 var cur_x = (pos_x+context_w/2)-(tt_w/2);
156 var cur_x = (pos_x+context_w/2)-(tt_w/2);
157 var cur_y = pos_y-tt_h-4;
157 var cur_y = pos_y-tt_h-4;
158 xy_pos = [cur_x,cur_y];
158 xy_pos = [cur_x,cur_y];
159 break;
159 break;
160 case 'bottom':
160 case 'bottom':
161 var cur_x = (pos_x+context_w/2)-(tt_w/2);
161 var cur_x = (pos_x+context_w/2)-(tt_w/2);
162 var cur_y = pos_y+context_h+4;
162 var cur_y = pos_y+context_h+4;
163 xy_pos = [cur_x,cur_y];
163 xy_pos = [cur_x,cur_y];
164 break;
164 break;
165 case 'left':
165 case 'left':
166 var cur_x = (pos_x-tt_w-4);
166 var cur_x = (pos_x-tt_w-4);
167 var cur_y = pos_y-((tt_h/2)-context_h/2);
167 var cur_y = pos_y-((tt_h/2)-context_h/2);
168 xy_pos = [cur_x,cur_y];
168 xy_pos = [cur_x,cur_y];
169 break;
169 break;
170 case 'right':
170 case 'right':
171 var cur_x = (pos_x+context_w+4);
171 var cur_x = (pos_x+context_w+4);
172 var cur_y = pos_y-((tt_h/2)-context_h/2);
172 var cur_y = pos_y-((tt_h/2)-context_h/2);
173 xy_pos = [cur_x,cur_y];
173 xy_pos = [cur_x,cur_y];
174 break;
174 break;
175 default:
175 default:
176 var cur_x = (pos_x+context_w/2)-(tt_w/2);
176 var cur_x = (pos_x+context_w/2)-(tt_w/2);
177 var cur_y = pos_y-tt_h-4;
177 var cur_y = pos_y-tt_h-4;
178 xy_pos = [cur_x,cur_y];
178 xy_pos = [cur_x,cur_y];
179 break;
179 break;
180
180
181 }
181 }
182
182
183 this.cfg.setProperty("xy",xy_pos);
183 this.cfg.setProperty("xy",xy_pos);
184
184
185 });
185 });
186
186
187 //Mouse out
187 //Mouse out
188 myToolTips.contextMouseOutEvent.subscribe(
188 myToolTips.contextMouseOutEvent.subscribe(
189 function(type, args) {
189 function(type, args) {
190 var context = args[0];
190 var context = args[0];
191
191
192 });
192 });
193 });
193 });
194 '''
194 '''
195 return literal(js)
195 return literal(js)
196
196
197 tooltip = _ToolTip()
197 tooltip = _ToolTip()
198
198
199 class _FilesBreadCrumbs(object):
199 class _FilesBreadCrumbs(object):
200
200
201 def __call__(self, repo_name, rev, paths):
201 def __call__(self, repo_name, rev, paths):
202 url_l = [link_to(repo_name, url('files_home',
202 url_l = [link_to(repo_name, url('files_home',
203 repo_name=repo_name,
203 repo_name=repo_name,
204 revision=rev, f_path=''))]
204 revision=rev, f_path=''))]
205 paths_l = paths.split('/')
205 paths_l = paths.split('/')
206
206
207 for cnt, p in enumerate(paths_l, 1):
207 for cnt, p in enumerate(paths_l, 1):
208 if p != '':
208 if p != '':
209 url_l.append(link_to(p, url('files_home',
209 url_l.append(link_to(p, url('files_home',
210 repo_name=repo_name,
210 repo_name=repo_name,
211 revision=rev,
211 revision=rev,
212 f_path='/'.join(paths_l[:cnt]))))
212 f_path='/'.join(paths_l[:cnt]))))
213
213
214 return literal('/'.join(url_l))
214 return literal('/'.join(url_l))
215
215
216 files_breadcrumbs = _FilesBreadCrumbs()
216 files_breadcrumbs = _FilesBreadCrumbs()
217 class CodeHtmlFormatter(HtmlFormatter):
217 class CodeHtmlFormatter(HtmlFormatter):
218
218
219 def wrap(self, source, outfile):
219 def wrap(self, source, outfile):
220 return self._wrap_div(self._wrap_pre(self._wrap_code(source)))
220 return self._wrap_div(self._wrap_pre(self._wrap_code(source)))
221
221
222 def _wrap_code(self, source):
222 def _wrap_code(self, source):
223 for cnt, it in enumerate(source, 1):
223 for cnt, it in enumerate(source, 1):
224 i, t = it
224 i, t = it
225 t = '<div id="#S-%s">%s</div>' % (cnt, t)
225 t = '<div id="#S-%s">%s</div>' % (cnt, t)
226 yield i, t
226 yield i, t
227 def pygmentize(filenode, **kwargs):
227 def pygmentize(filenode, **kwargs):
228 """
228 """
229 pygmentize function using pygments
229 pygmentize function using pygments
230 :param filenode:
230 :param filenode:
231 """
231 """
232 return literal(code_highlight(filenode.content,
232 return literal(code_highlight(filenode.content,
233 filenode.lexer, CodeHtmlFormatter(**kwargs)))
233 filenode.lexer, CodeHtmlFormatter(**kwargs)))
234
234
235 def pygmentize_annotation(filenode, **kwargs):
235 def pygmentize_annotation(filenode, **kwargs):
236 """
236 """
237 pygmentize function for annotation
237 pygmentize function for annotation
238 :param filenode:
238 :param filenode:
239 """
239 """
240
240
241 color_dict = {}
241 color_dict = {}
242 def gen_color():
242 def gen_color():
243 """generator for getting 10k of evenly distibuted colors using hsv color
243 """generator for getting 10k of evenly distibuted colors using hsv color
244 and golden ratio.
244 and golden ratio.
245 """
245 """
246 import colorsys
246 import colorsys
247 n = 10000
247 n = 10000
248 golden_ratio = 0.618033988749895
248 golden_ratio = 0.618033988749895
249 h = 0.22717784590367374
249 h = 0.22717784590367374
250 #generate 10k nice web friendly colors in the same order
250 #generate 10k nice web friendly colors in the same order
251 for c in xrange(n):
251 for c in xrange(n):
252 h += golden_ratio
252 h += golden_ratio
253 h %= 1
253 h %= 1
254 HSV_tuple = [h, 0.95, 0.95]
254 HSV_tuple = [h, 0.95, 0.95]
255 RGB_tuple = colorsys.hsv_to_rgb(*HSV_tuple)
255 RGB_tuple = colorsys.hsv_to_rgb(*HSV_tuple)
256 yield map(lambda x:str(int(x * 256)), RGB_tuple)
256 yield map(lambda x:str(int(x * 256)), RGB_tuple)
257
257
258 cgenerator = gen_color()
258 cgenerator = gen_color()
259
259
260 def get_color_string(cs):
260 def get_color_string(cs):
261 if color_dict.has_key(cs):
261 if color_dict.has_key(cs):
262 col = color_dict[cs]
262 col = color_dict[cs]
263 else:
263 else:
264 col = color_dict[cs] = cgenerator.next()
264 col = color_dict[cs] = cgenerator.next()
265 return "color: rgb(%s)! important;" % (', '.join(col))
265 return "color: rgb(%s)! important;" % (', '.join(col))
266
266
267 def url_func(changeset):
267 def url_func(changeset):
268 tooltip_html = "<div style='font-size:0.8em'><b>Author:</b>" + \
268 tooltip_html = "<div style='font-size:0.8em'><b>Author:</b>" + \
269 " %s<br/><b>Date:</b> %s</b><br/><b>Message:</b> %s<br/></div>"
269 " %s<br/><b>Date:</b> %s</b><br/><b>Message:</b> %s<br/></div>"
270
270
271 tooltip_html = tooltip_html % (changeset.author,
271 tooltip_html = tooltip_html % (changeset.author,
272 changeset.date,
272 changeset.date,
273 tooltip(changeset.message))
273 tooltip(changeset.message))
274 lnk_format = '%5s:%s' % ('r%s' % changeset.revision,
274 lnk_format = '%5s:%s' % ('r%s' % changeset.revision,
275 short_id(changeset.raw_id))
275 short_id(changeset.raw_id))
276 uri = link_to(
276 uri = link_to(
277 lnk_format,
277 lnk_format,
278 url('changeset_home', repo_name=changeset.repository.name,
278 url('changeset_home', repo_name=changeset.repository.name,
279 revision=changeset.raw_id),
279 revision=changeset.raw_id),
280 style=get_color_string(changeset.raw_id),
280 style=get_color_string(changeset.raw_id),
281 class_='tooltip',
281 class_='tooltip',
282 tooltip_title=tooltip_html
282 tooltip_title=tooltip_html
283 )
283 )
284
284
285 uri += '\n'
285 uri += '\n'
286 return uri
286 return uri
287 return literal(annotate_highlight(filenode, url_func, **kwargs))
287 return literal(annotate_highlight(filenode, url_func, **kwargs))
288
288
289 def repo_name_slug(value):
289 def repo_name_slug(value):
290 """Return slug of name of repository
290 """Return slug of name of repository
291 This function is called on each creation/modification
291 This function is called on each creation/modification
292 of repository to prevent bad names in repo
292 of repository to prevent bad names in repo
293 """
293 """
294 slug = remove_formatting(value)
294 slug = remove_formatting(value)
295 slug = strip_tags(slug)
295 slug = strip_tags(slug)
296
296
297 for c in """=[]\;'"<>,/~!@#$%^&*()+{}|: """:
297 for c in """=[]\;'"<>,/~!@#$%^&*()+{}|: """:
298 slug = slug.replace(c, '-')
298 slug = slug.replace(c, '-')
299 slug = recursive_replace(slug, '-')
299 slug = recursive_replace(slug, '-')
300 slug = collapse(slug, '-')
300 slug = collapse(slug, '-')
301 return slug
301 return slug
302
302
303 def get_changeset_safe(repo, rev):
303 def get_changeset_safe(repo, rev):
304 from vcs.backends.base import BaseRepository
304 from vcs.backends.base import BaseRepository
305 from vcs.exceptions import RepositoryError
305 from vcs.exceptions import RepositoryError
306 if not isinstance(repo, BaseRepository):
306 if not isinstance(repo, BaseRepository):
307 raise Exception('You must pass an Repository '
307 raise Exception('You must pass an Repository '
308 'object as first argument got %s', type(repo))
308 'object as first argument got %s', type(repo))
309
309
310 try:
310 try:
311 cs = repo.get_changeset(rev)
311 cs = repo.get_changeset(rev)
312 except RepositoryError:
312 except RepositoryError:
313 from rhodecode.lib.utils import EmptyChangeset
313 from rhodecode.lib.utils import EmptyChangeset
314 cs = EmptyChangeset()
314 cs = EmptyChangeset()
315 return cs
315 return cs
316
316
317
317
318 flash = _Flash()
318 flash = _Flash()
319
319
320
320
321 #==============================================================================
321 #==============================================================================
322 # MERCURIAL FILTERS available via h.
322 # MERCURIAL FILTERS available via h.
323 #==============================================================================
323 #==============================================================================
324 from mercurial import util
324 from mercurial import util
325 from mercurial.templatefilters import person as _person
325 from mercurial.templatefilters import person as _person
326
326
327
327
328
328
329 def _age(curdate):
329 def _age(curdate):
330 """turns a datetime into an age string."""
330 """turns a datetime into an age string."""
331
331
332 if not curdate:
332 if not curdate:
333 return ''
333 return ''
334
334
335 from datetime import timedelta, datetime
335 from datetime import timedelta, datetime
336
336
337 agescales = [("year", 3600 * 24 * 365),
337 agescales = [("year", 3600 * 24 * 365),
338 ("month", 3600 * 24 * 30),
338 ("month", 3600 * 24 * 30),
339 ("day", 3600 * 24),
339 ("day", 3600 * 24),
340 ("hour", 3600),
340 ("hour", 3600),
341 ("minute", 60),
341 ("minute", 60),
342 ("second", 1), ]
342 ("second", 1), ]
343
343
344 age = datetime.now() - curdate
344 age = datetime.now() - curdate
345 age_seconds = (age.days * agescales[2][1]) + age.seconds
345 age_seconds = (age.days * agescales[2][1]) + age.seconds
346 pos = 1
346 pos = 1
347 for scale in agescales:
347 for scale in agescales:
348 if scale[1] <= age_seconds:
348 if scale[1] <= age_seconds:
349 if pos == 6:pos = 5
349 if pos == 6:pos = 5
350 return time_ago_in_words(curdate, agescales[pos][0])
350 return time_ago_in_words(curdate, agescales[pos][0]) + ' ' + _('ago')
351 pos += 1
351 pos += 1
352
352
353 return _('just now')
354
353 age = lambda x:_age(x)
355 age = lambda x:_age(x)
354 capitalize = lambda x: x.capitalize()
356 capitalize = lambda x: x.capitalize()
355 email = util.email
357 email = util.email
356 email_or_none = lambda x: util.email(x) if util.email(x) != x else None
358 email_or_none = lambda x: util.email(x) if util.email(x) != x else None
357 person = lambda x: _person(x)
359 person = lambda x: _person(x)
358 short_id = lambda x: x[:12]
360 short_id = lambda x: x[:12]
359
361
360
362
361 def action_parser(user_log):
363 def action_parser(user_log):
362 """
364 """
363 This helper will map the specified string action into translated
365 This helper will map the specified string action into translated
364 fancy names with icons and links
366 fancy names with icons and links
365
367
366 @param action:
368 @param action:
367 """
369 """
368 action = user_log.action
370 action = user_log.action
369 action_params = None
371 action_params = None
370 cs_links = ''
372 cs_links = ''
371
373
372 x = action.split(':')
374 x = action.split(':')
373
375
374 if len(x) > 1:
376 if len(x) > 1:
375 action, action_params = x
377 action, action_params = x
376
378
377 if action == 'push':
379 if action == 'push':
378 revs_limit = 5
380 revs_limit = 5
379 revs = action_params.split(',')
381 revs = action_params.split(',')
380 cs_links = " " + ', '.join ([link(rev,
382 cs_links = " " + ', '.join ([link(rev,
381 url('changeset_home',
383 url('changeset_home',
382 repo_name=user_log.repository.repo_name,
384 repo_name=user_log.repository.repo_name,
383 revision=rev)) for rev in revs[:revs_limit] ])
385 revision=rev)) for rev in revs[:revs_limit] ])
384 if len(revs) > revs_limit:
386 if len(revs) > revs_limit:
385 html_tmpl = '<span title="%s"> %s </span>'
387 html_tmpl = '<span title="%s"> %s </span>'
386 cs_links += html_tmpl % (', '.join(r for r in revs[revs_limit:]),
388 cs_links += html_tmpl % (', '.join(r for r in revs[revs_limit:]),
387 _('and %s more revisions') % (len(revs) - revs_limit))
389 _('and %s more revisions') % (len(revs) - revs_limit))
388
390
389 map = {'user_deleted_repo':_('User deleted repository'),
391 map = {'user_deleted_repo':_('User deleted repository'),
390 'user_created_repo':_('User created repository'),
392 'user_created_repo':_('User created repository'),
391 'user_forked_repo':_('User forked repository'),
393 'user_forked_repo':_('User forked repository'),
392 'user_updated_repo':_('User updated repository'),
394 'user_updated_repo':_('User updated repository'),
393 'admin_deleted_repo':_('Admin delete repository'),
395 'admin_deleted_repo':_('Admin delete repository'),
394 'admin_created_repo':_('Admin created repository'),
396 'admin_created_repo':_('Admin created repository'),
395 'admin_forked_repo':_('Admin forked repository'),
397 'admin_forked_repo':_('Admin forked repository'),
396 'admin_updated_repo':_('Admin updated repository'),
398 'admin_updated_repo':_('Admin updated repository'),
397 'push':_('Pushed') + literal(cs_links),
399 'push':_('Pushed') + literal(cs_links),
398 'pull':_('Pulled'), }
400 'pull':_('Pulled'), }
399
401
400 print action, action_params
402 print action, action_params
401 return map.get(action, action)
403 return map.get(action, action)
402
404
403
405
404 #==============================================================================
406 #==============================================================================
405 # PERMS
407 # PERMS
406 #==============================================================================
408 #==============================================================================
407 from rhodecode.lib.auth import HasPermissionAny, HasPermissionAll, \
409 from rhodecode.lib.auth import HasPermissionAny, HasPermissionAll, \
408 HasRepoPermissionAny, HasRepoPermissionAll
410 HasRepoPermissionAny, HasRepoPermissionAll
409
411
410 #==============================================================================
412 #==============================================================================
411 # GRAVATAR URL
413 # GRAVATAR URL
412 #==============================================================================
414 #==============================================================================
413 import hashlib
415 import hashlib
414 import urllib
416 import urllib
415 from pylons import request
417 from pylons import request
416
418
417 def gravatar_url(email_address, size=30):
419 def gravatar_url(email_address, size=30):
418 ssl_enabled = 'https' == request.environ.get('HTTP_X_URL_SCHEME')
420 ssl_enabled = 'https' == request.environ.get('HTTP_X_URL_SCHEME')
419 default = 'identicon'
421 default = 'identicon'
420 baseurl_nossl = "http://www.gravatar.com/avatar/"
422 baseurl_nossl = "http://www.gravatar.com/avatar/"
421 baseurl_ssl = "https://secure.gravatar.com/avatar/"
423 baseurl_ssl = "https://secure.gravatar.com/avatar/"
422 baseurl = baseurl_ssl if ssl_enabled else baseurl_nossl
424 baseurl = baseurl_ssl if ssl_enabled else baseurl_nossl
423
425
424
426
425 # construct the url
427 # construct the url
426 gravatar_url = baseurl + hashlib.md5(email_address.lower()).hexdigest() + "?"
428 gravatar_url = baseurl + hashlib.md5(email_address.lower()).hexdigest() + "?"
427 gravatar_url += urllib.urlencode({'d':default, 's':str(size)})
429 gravatar_url += urllib.urlencode({'d':default, 's':str(size)})
428
430
429 return gravatar_url
431 return gravatar_url
430
432
431 def safe_unicode(str):
433 def safe_unicode(str):
432 """safe unicode function. In case of UnicodeDecode error we try to return
434 """safe unicode function. In case of UnicodeDecode error we try to return
433 unicode with errors replace, if this failes we return unicode with
435 unicode with errors replace, if this failes we return unicode with
434 string_escape decoding """
436 string_escape decoding """
435
437
436 try:
438 try:
437 u_str = unicode(str)
439 u_str = unicode(str)
438 except UnicodeDecodeError:
440 except UnicodeDecodeError:
439 try:
441 try:
440 u_str = unicode(str, 'utf-8', 'replace')
442 u_str = unicode(str, 'utf-8', 'replace')
441 except UnicodeDecodeError:
443 except UnicodeDecodeError:
442 #incase we have a decode error just represent as byte string
444 #incase we have a decode error just represent as byte string
443 u_str = unicode(str(str).encode('string_escape'))
445 u_str = unicode(str(str).encode('string_escape'))
444
446
445 return u_str
447 return u_str
@@ -1,210 +1,212 b''
1 #!/usr/bin/env python
1 #!/usr/bin/env python
2 # encoding: utf-8
2 # encoding: utf-8
3 # model for handling repositories actions
3 # model for handling repositories actions
4 # Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
4 # Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
5 # This program is free software; you can redistribute it and/or
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU General Public License
6 # modify it under the terms of the GNU General Public License
7 # as published by the Free Software Foundation; version 2
7 # as published by the Free Software Foundation; version 2
8 # of the License or (at your opinion) any later version of the license.
8 # of the License or (at your opinion) any later version of the license.
9 #
9 #
10 # This program is distributed in the hope that it will be useful,
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
13 # GNU General Public License for more details.
14 #
14 #
15 # You should have received a copy of the GNU General Public License
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18 # MA 02110-1301, USA.
18 # MA 02110-1301, USA.
19 """
19 """
20 Created on Jun 5, 2010
20 Created on Jun 5, 2010
21 model for handling repositories actions
21 model for handling repositories actions
22 :author: marcink
22 :author: marcink
23 """
23 """
24 from vcs.backends import get_repo, get_backend
24 from vcs.backends import get_repo, get_backend
25 from datetime import datetime
25 from datetime import datetime
26 from pylons import app_globals as g
26 from pylons import app_globals as g
27 from rhodecode.model.db import Repository, RepoToPerm, User, Permission
27 from rhodecode.model.db import Repository, RepoToPerm, User, Permission
28 from rhodecode.model.meta import Session
28 from rhodecode.model.meta import Session
29 from rhodecode.model.user import UserModel
29 from rhodecode.model.user import UserModel
30 from rhodecode.model.caching_query import FromCache
30 from rhodecode.model.caching_query import FromCache
31 import logging
31 import logging
32 import os
32 import os
33 import shutil
33 import shutil
34 import traceback
34 import traceback
35 log = logging.getLogger(__name__)
35 log = logging.getLogger(__name__)
36
36
37 class RepoModel(object):
37 class RepoModel(object):
38
38
39 def __init__(self, sa=None):
39 def __init__(self, sa=None):
40 if not sa:
40 if not sa:
41 self.sa = Session()
41 self.sa = Session()
42 else:
42 else:
43 self.sa = sa
43 self.sa = sa
44
44
45 def get(self, repo_id, cache=False):
45 def get(self, repo_id, cache=False):
46 repo = self.sa.query(Repository)\
46 repo = self.sa.query(Repository)\
47 .filter(Repository.repo_name == repo_id)
47 .filter(Repository.repo_name == repo_id)
48
48
49 if cache:
49 if cache:
50 repo = repo.options(FromCache("sql_cache_short",
50 repo = repo.options(FromCache("sql_cache_short",
51 "get_repo_%s" % repo))
51 "get_repo_%s" % repo))
52 return repo.scalar()
52 return repo.scalar()
53
53
54 def get_users_js(self):
54 def get_users_js(self):
55
55
56 users = self.sa.query(User).filter(User.active == True).all()
56 users = self.sa.query(User).filter(User.active == True).all()
57 u_tmpl = '''{id:%s, fname:"%s", lname:"%s", nname:"%s"},'''
57 u_tmpl = '''{id:%s, fname:"%s", lname:"%s", nname:"%s"},'''
58 users_array = '[%s];' % '\n'.join([u_tmpl % (u.user_id, u.name,
58 users_array = '[%s];' % '\n'.join([u_tmpl % (u.user_id, u.name,
59 u.lastname, u.username)
59 u.lastname, u.username)
60 for u in users])
60 for u in users])
61 return users_array
61 return users_array
62
62
63
63
64 def update(self, repo_name, form_data):
64 def update(self, repo_name, form_data):
65 try:
65 try:
66
66
67 #update permissions
67 #update permissions
68 for username, perm in form_data['perms_updates']:
68 for username, perm in form_data['perms_updates']:
69 r2p = self.sa.query(RepoToPerm)\
69 r2p = self.sa.query(RepoToPerm)\
70 .filter(RepoToPerm.user == UserModel(self.sa).get_by_username(username, cache=False))\
70 .filter(RepoToPerm.user == UserModel(self.sa).get_by_username(username, cache=False))\
71 .filter(RepoToPerm.repository == self.get(repo_name))\
71 .filter(RepoToPerm.repository == self.get(repo_name))\
72 .one()
72 .one()
73
73
74 r2p.permission_id = self.sa.query(Permission).filter(
74 r2p.permission_id = self.sa.query(Permission).filter(
75 Permission.permission_name ==
75 Permission.permission_name ==
76 perm).one().permission_id
76 perm).one().permission_id
77 self.sa.add(r2p)
77 self.sa.add(r2p)
78
78
79 #set new permissions
79 #set new permissions
80 for username, perm in form_data['perms_new']:
80 for username, perm in form_data['perms_new']:
81 r2p = RepoToPerm()
81 r2p = RepoToPerm()
82 r2p.repository = self.get(repo_name)
82 r2p.repository = self.get(repo_name)
83 r2p.user = UserModel(self.sa).get_by_username(username, cache=False)
83 r2p.user = UserModel(self.sa).get_by_username(username, cache=False)
84
84
85 r2p.permission_id = self.sa.query(Permission).filter(
85 r2p.permission_id = self.sa.query(Permission).filter(
86 Permission.permission_name == perm)\
86 Permission.permission_name == perm)\
87 .one().permission_id
87 .one().permission_id
88 self.sa.add(r2p)
88 self.sa.add(r2p)
89
89
90 #update current repo
90 #update current repo
91 cur_repo = self.get(repo_name, cache=False)
91 cur_repo = self.get(repo_name, cache=False)
92
92
93 for k, v in form_data.items():
93 for k, v in form_data.items():
94 if k == 'user':
94 if k == 'user':
95 cur_repo.user_id = v
95 cur_repo.user_id = v
96 else:
96 else:
97 setattr(cur_repo, k, v)
97 setattr(cur_repo, k, v)
98
98
99 self.sa.add(cur_repo)
99 self.sa.add(cur_repo)
100
100
101 if repo_name != form_data['repo_name']:
101 if repo_name != form_data['repo_name']:
102 #rename our data
102 #rename our data
103 self.__rename_repo(repo_name, form_data['repo_name'])
103 self.__rename_repo(repo_name, form_data['repo_name'])
104
104
105 self.sa.commit()
105 self.sa.commit()
106 except:
106 except:
107 log.error(traceback.format_exc())
107 log.error(traceback.format_exc())
108 self.sa.rollback()
108 self.sa.rollback()
109 raise
109 raise
110
110
111 def create(self, form_data, cur_user, just_db=False, fork=False):
111 def create(self, form_data, cur_user, just_db=False, fork=False):
112 try:
112 try:
113 if fork:
113 if fork:
114 #force str since hg doesn't go with unicode
114 #force str since hg doesn't go with unicode
115 repo_name = str(form_data['fork_name'])
115 repo_name = str(form_data['fork_name'])
116 org_name = str(form_data['repo_name'])
116 org_name = str(form_data['repo_name'])
117
117
118 else:
118 else:
119 org_name = repo_name = str(form_data['repo_name'])
119 org_name = repo_name = str(form_data['repo_name'])
120 new_repo = Repository()
120 new_repo = Repository()
121 for k, v in form_data.items():
121 for k, v in form_data.items():
122 if k == 'repo_name':
122 if k == 'repo_name':
123 v = repo_name
123 v = repo_name
124 setattr(new_repo, k, v)
124 setattr(new_repo, k, v)
125
125
126 if fork:
126 if fork:
127 parent_repo = self.sa.query(Repository)\
127 parent_repo = self.sa.query(Repository)\
128 .filter(Repository.repo_name == org_name).scalar()
128 .filter(Repository.repo_name == org_name).scalar()
129 new_repo.fork = parent_repo
129 new_repo.fork = parent_repo
130
130
131 new_repo.user_id = cur_user.user_id
131 new_repo.user_id = cur_user.user_id
132 self.sa.add(new_repo)
132 self.sa.add(new_repo)
133
133
134 #create default permission
134 #create default permission
135 repo_to_perm = RepoToPerm()
135 repo_to_perm = RepoToPerm()
136 default = 'repository.read'
136 default = 'repository.read'
137 for p in UserModel(self.sa).get_by_username('default', cache=False).user_perms:
137 for p in UserModel(self.sa).get_by_username('default', cache=False).user_perms:
138 if p.permission.permission_name.startswith('repository.'):
138 if p.permission.permission_name.startswith('repository.'):
139 default = p.permission.permission_name
139 default = p.permission.permission_name
140 break
140 break
141
141
142 default_perm = 'repository.none' if form_data['private'] else default
142 default_perm = 'repository.none' if form_data['private'] else default
143
143
144 repo_to_perm.permission_id = self.sa.query(Permission)\
144 repo_to_perm.permission_id = self.sa.query(Permission)\
145 .filter(Permission.permission_name == default_perm)\
145 .filter(Permission.permission_name == default_perm)\
146 .one().permission_id
146 .one().permission_id
147
147
148 repo_to_perm.repository_id = new_repo.repo_id
148 repo_to_perm.repository_id = new_repo.repo_id
149 repo_to_perm.user_id = UserModel(self.sa).get_by_username('default', cache=False).user_id
149 repo_to_perm.user_id = UserModel(self.sa).get_by_username('default', cache=False).user_id
150
150
151 self.sa.add(repo_to_perm)
151 self.sa.add(repo_to_perm)
152 self.sa.commit()
152 self.sa.commit()
153 if not just_db:
153 if not just_db:
154 self.__create_repo(repo_name, form_data['repo_type'])
154 self.__create_repo(repo_name, form_data['repo_type'])
155 except:
155 except:
156 log.error(traceback.format_exc())
156 log.error(traceback.format_exc())
157 self.sa.rollback()
157 self.sa.rollback()
158 raise
158 raise
159
159
160 def create_fork(self, form_data, cur_user):
160 def create_fork(self, form_data, cur_user):
161 from rhodecode.lib.celerylib import tasks, run_task
161 from rhodecode.lib.celerylib import tasks, run_task
162 run_task(tasks.create_repo_fork, form_data, cur_user)
162 run_task(tasks.create_repo_fork, form_data, cur_user)
163
163
164 def delete(self, repo):
164 def delete(self, repo):
165 try:
165 try:
166 self.sa.delete(repo)
166 self.sa.delete(repo)
167 self.__delete_repo(repo)
167 self.sa.commit()
168 self.sa.commit()
168 self.__delete_repo(repo.repo_name)
169 except:
169 except:
170 log.error(traceback.format_exc())
170 log.error(traceback.format_exc())
171 self.sa.rollback()
171 self.sa.rollback()
172 raise
172 raise
173
173
174 def delete_perm_user(self, form_data, repo_name):
174 def delete_perm_user(self, form_data, repo_name):
175 try:
175 try:
176 self.sa.query(RepoToPerm)\
176 self.sa.query(RepoToPerm)\
177 .filter(RepoToPerm.repository == self.get(repo_name))\
177 .filter(RepoToPerm.repository == self.get(repo_name))\
178 .filter(RepoToPerm.user_id == form_data['user_id']).delete()
178 .filter(RepoToPerm.user_id == form_data['user_id']).delete()
179 self.sa.commit()
179 self.sa.commit()
180 except:
180 except:
181 log.error(traceback.format_exc())
181 log.error(traceback.format_exc())
182 self.sa.rollback()
182 self.sa.rollback()
183 raise
183 raise
184
184
185 def __create_repo(self, repo_name, alias):
185 def __create_repo(self, repo_name, alias):
186 from rhodecode.lib.utils import check_repo
186 from rhodecode.lib.utils import check_repo
187 repo_path = os.path.join(g.base_path, repo_name)
187 repo_path = os.path.join(g.base_path, repo_name)
188 if check_repo(repo_name, g.base_path):
188 if check_repo(repo_name, g.base_path):
189 log.info('creating repo %s in %s', repo_name, repo_path)
189 log.info('creating repo %s in %s', repo_name, repo_path)
190 backend = get_backend(alias)
190 backend = get_backend(alias)
191 backend(repo_path, create=True)
191 backend(repo_path, create=True)
192
192
193 def __rename_repo(self, old, new):
193 def __rename_repo(self, old, new):
194 log.info('renaming repo from %s to %s', old, new)
194 log.info('renaming repo from %s to %s', old, new)
195
195
196 old_path = os.path.join(g.base_path, old)
196 old_path = os.path.join(g.base_path, old)
197 new_path = os.path.join(g.base_path, new)
197 new_path = os.path.join(g.base_path, new)
198 if os.path.isdir(new_path):
198 if os.path.isdir(new_path):
199 raise Exception('Was trying to rename to already existing dir %s',
199 raise Exception('Was trying to rename to already existing dir %s',
200 new_path)
200 new_path)
201 shutil.move(old_path, new_path)
201 shutil.move(old_path, new_path)
202
202
203 def __delete_repo(self, name):
203 def __delete_repo(self, repo):
204 rm_path = os.path.join(g.base_path, name)
204 rm_path = os.path.join(g.base_path, repo.repo_name)
205 log.info("Removing %s", rm_path)
205 log.info("Removing %s", rm_path)
206 #disable hg
206 #disable hg/git
207 shutil.move(os.path.join(rm_path, '.hg'), os.path.join(rm_path, 'rm__.hg'))
207 alias = repo.repo_type
208 shutil.move(os.path.join(rm_path, '.%s' % alias),
209 os.path.join(rm_path, 'rm__.%s' % alias))
208 #disable repo
210 #disable repo
209 shutil.move(rm_path, os.path.join(g.base_path, 'rm__%s__%s' \
211 shutil.move(rm_path, os.path.join(g.base_path, 'rm__%s__%s' \
210 % (datetime.today(), name)))
212 % (datetime.today(), repo.repo_name)))
@@ -1,2323 +1,2321 b''
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
2 border:0;
2 border:0;
3 outline:0;
3 outline:0;
4 font-size:100%;
4 font-size:100%;
5 vertical-align:baseline;
5 vertical-align:baseline;
6 background:transparent;
6 background:transparent;
7 margin:0;
7 margin:0;
8 padding:0;
8 padding:0;
9 }
9 }
10
10
11 body {
11 body {
12 line-height:1;
12 line-height:1;
13 height:100%;
13 height:100%;
14 background:url("../images/background.png") repeat scroll 0 0 #B0B0B0;
14 background:url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
15 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
16 font-size:12px;
16 font-size:12px;
17 color:#000;
17 color:#000;
18 margin:0;
18 margin:0;
19 padding:0;
19 padding:0;
20 }
20 }
21
21
22 ol,ul {
22 ol,ul {
23 list-style:none;
23 list-style:none;
24 }
24 }
25
25
26 blockquote,q {
26 blockquote,q {
27 quotes:none;
27 quotes:none;
28 }
28 }
29
29
30 blockquote:before,blockquote:after,q:before,q:after {
30 blockquote:before,blockquote:after,q:before,q:after {
31 content:none;
31 content:none;
32 }
32 }
33
33
34 :focus {
34 :focus {
35 outline:0;
35 outline:0;
36 }
36 }
37
37
38 del {
38 del {
39 text-decoration:line-through;
39 text-decoration:line-through;
40 }
40 }
41
41
42 table {
42 table {
43 border-collapse:collapse;
43 border-collapse:collapse;
44 border-spacing:0;
44 border-spacing:0;
45 }
45 }
46
46
47 html {
47 html {
48 height:100%;
48 height:100%;
49 }
49 }
50
50
51 a {
51 a {
52 color:#003367;
52 color:#003367;
53 text-decoration:none;
53 text-decoration:none;
54 cursor:pointer;
54 cursor:pointer;
55 font-weight:700;
55 font-weight:700;
56 }
56 }
57
57
58 a:hover {
58 a:hover {
59 color:#316293;
59 color:#316293;
60 text-decoration:underline;
60 text-decoration:underline;
61 }
61 }
62
62
63 h1,h2,h3,h4,h5,h6 {
63 h1,h2,h3,h4,h5,h6 {
64 color:#292929;
64 color:#292929;
65 font-weight:700;
65 font-weight:700;
66 }
66 }
67
67
68 h1 {
68 h1 {
69 font-size:22px;
69 font-size:22px;
70 }
70 }
71
71
72 h2 {
72 h2 {
73 font-size:20px;
73 font-size:20px;
74 }
74 }
75
75
76 h3 {
76 h3 {
77 font-size:18px;
77 font-size:18px;
78 }
78 }
79
79
80 h4 {
80 h4 {
81 font-size:16px;
81 font-size:16px;
82 }
82 }
83
83
84 h5 {
84 h5 {
85 font-size:14px;
85 font-size:14px;
86 }
86 }
87
87
88 h6 {
88 h6 {
89 font-size:11px;
89 font-size:11px;
90 }
90 }
91
91
92 ul.circle {
92 ul.circle {
93 list-style-type:circle;
93 list-style-type:circle;
94 }
94 }
95
95
96 ul.disc {
96 ul.disc {
97 list-style-type:disc;
97 list-style-type:disc;
98 }
98 }
99
99
100 ul.square {
100 ul.square {
101 list-style-type:square;
101 list-style-type:square;
102 }
102 }
103
103
104 ol.lower-roman {
104 ol.lower-roman {
105 list-style-type:lower-roman;
105 list-style-type:lower-roman;
106 }
106 }
107
107
108 ol.upper-roman {
108 ol.upper-roman {
109 list-style-type:upper-roman;
109 list-style-type:upper-roman;
110 }
110 }
111
111
112 ol.lower-alpha {
112 ol.lower-alpha {
113 list-style-type:lower-alpha;
113 list-style-type:lower-alpha;
114 }
114 }
115
115
116 ol.upper-alpha {
116 ol.upper-alpha {
117 list-style-type:upper-alpha;
117 list-style-type:upper-alpha;
118 }
118 }
119
119
120 ol.decimal {
120 ol.decimal {
121 list-style-type:decimal;
121 list-style-type:decimal;
122 }
122 }
123
123
124 div.color {
124 div.color {
125 clear:both;
125 clear:both;
126 overflow:hidden;
126 overflow:hidden;
127 position:absolute;
127 position:absolute;
128 background:#FFF;
128 background:#FFF;
129 margin:7px 0 0 60px;
129 margin:7px 0 0 60px;
130 padding:1px 1px 1px 0;
130 padding:1px 1px 1px 0;
131 }
131 }
132
132
133 div.color a {
133 div.color a {
134 width:15px;
134 width:15px;
135 height:15px;
135 height:15px;
136 display:block;
136 display:block;
137 float:left;
137 float:left;
138 margin:0 0 0 1px;
138 margin:0 0 0 1px;
139 padding:0;
139 padding:0;
140 }
140 }
141
141
142 div.options {
142 div.options {
143 clear:both;
143 clear:both;
144 overflow:hidden;
144 overflow:hidden;
145 position:absolute;
145 position:absolute;
146 background:#FFF;
146 background:#FFF;
147 margin:7px 0 0 162px;
147 margin:7px 0 0 162px;
148 padding:0;
148 padding:0;
149 }
149 }
150
150
151 div.options a {
151 div.options a {
152 height:1%;
152 height:1%;
153 display:block;
153 display:block;
154 text-decoration:none;
154 text-decoration:none;
155 margin:0;
155 margin:0;
156 padding:3px 8px;
156 padding:3px 8px;
157 }
157 }
158
158
159 .top-left-rounded-corner {
159 .top-left-rounded-corner {
160 -webkit-border-top-left-radius: 8px;
160 -webkit-border-top-left-radius: 8px;
161 -khtml-border-radius-topleft: 8px;
161 -khtml-border-radius-topleft: 8px;
162 -moz-border-radius-topleft: 8px;
162 -moz-border-radius-topleft: 8px;
163 border-top-left-radius: 8px;
163 border-top-left-radius: 8px;
164 }
164 }
165
165
166 .top-right-rounded-corner {
166 .top-right-rounded-corner {
167 -webkit-border-top-right-radius: 8px;
167 -webkit-border-top-right-radius: 8px;
168 -khtml-border-radius-topright: 8px;
168 -khtml-border-radius-topright: 8px;
169 -moz-border-radius-topright: 8px;
169 -moz-border-radius-topright: 8px;
170 border-top-right-radius: 8px;
170 border-top-right-radius: 8px;
171 }
171 }
172
172
173 .bottom-left-rounded-corner {
173 .bottom-left-rounded-corner {
174 -webkit-border-bottom-left-radius: 8px;
174 -webkit-border-bottom-left-radius: 8px;
175 -khtml-border-radius-bottomleft: 8px;
175 -khtml-border-radius-bottomleft: 8px;
176 -moz-border-radius-bottomleft: 8px;
176 -moz-border-radius-bottomleft: 8px;
177 border-bottom-left-radius: 8px;
177 border-bottom-left-radius: 8px;
178 }
178 }
179
179
180 .bottom-right-rounded-corner {
180 .bottom-right-rounded-corner {
181 -webkit-border-bottom-right-radius: 8px;
181 -webkit-border-bottom-right-radius: 8px;
182 -khtml-border-radius-bottomright: 8px;
182 -khtml-border-radius-bottomright: 8px;
183 -moz-border-radius-bottomright: 8px;
183 -moz-border-radius-bottomright: 8px;
184 border-bottom-right-radius: 8px;
184 border-bottom-right-radius: 8px;
185 }
185 }
186
186
187
187
188 #header {
188 #header {
189 margin:0;
189 margin:0;
190 padding:0 30px;
190 padding:0 30px;
191 }
191 }
192
192
193 #header ul#logged-user li {
193 #header ul#logged-user li {
194 list-style:none;
194 list-style:none;
195 float:left;
195 float:left;
196 border-left:1px solid #bbb;
196 border-left:1px solid #bbb;
197 border-right:1px solid #a5a5a5;
197 border-right:1px solid #a5a5a5;
198 margin:-2px 0 0;
198 margin:-2px 0 0;
199 padding:10px 12px;
199 padding:10px 12px;
200 }
200 }
201
201
202 #header ul#logged-user li.first {
202 #header ul#logged-user li.first {
203 border-left:none;
203 border-left:none;
204 margin:-6px;
204 margin:-6px;
205 }
205 }
206
206
207 #header ul#logged-user li.first div.account {
207 #header ul#logged-user li.first div.account {
208 padding-top:4px;
208 padding-top:4px;
209 float:left;
209 float:left;
210 }
210 }
211
211
212 #header ul#logged-user li.last {
212 #header ul#logged-user li.last {
213 border-right:none;
213 border-right:none;
214 }
214 }
215
215
216 #header ul#logged-user li a {
216 #header ul#logged-user li a {
217 color:#4e4e4e;
217 color:#4e4e4e;
218 font-weight:700;
218 font-weight:700;
219 text-decoration:none;
219 text-decoration:none;
220 }
220 }
221
221
222 #header ul#logged-user li a:hover {
222 #header ul#logged-user li a:hover {
223 color:#376ea6;
223 color:#376ea6;
224 text-decoration:underline;
224 text-decoration:underline;
225 }
225 }
226
226
227 #header ul#logged-user li.highlight a {
227 #header ul#logged-user li.highlight a {
228 color:#fff;
228 color:#fff;
229 }
229 }
230
230
231 #header ul#logged-user li.highlight a:hover {
231 #header ul#logged-user li.highlight a:hover {
232 color:#376ea6;
232 color:#376ea6;
233 }
233 }
234
234
235 #header #header-inner {
235 #header #header-inner {
236 height:40px;
236 height:40px;
237 clear:both;
237 clear:both;
238 position:relative;
238 position:relative;
239 background:#003367 url("../images/header_inner.png") repeat-x;
239 background:#003367 url("../images/header_inner.png") repeat-x;
240 border-bottom:2px solid #fff;
240 border-bottom:2px solid #fff;
241 margin:0;
241 margin:0;
242 padding:0;
242 padding:0;
243 }
243 }
244
244
245 #header #header-inner #home a {
245 #header #header-inner #home a {
246 height:40px;
246 height:40px;
247 width:46px;
247 width:46px;
248 display:block;
248 display:block;
249 background:url("../images/button_home.png");
249 background:url("../images/button_home.png");
250 background-position:0 0;
250 background-position:0 0;
251 margin:0;
251 margin:0;
252 padding:0;
252 padding:0;
253 }
253 }
254
254
255 #header #header-inner #home a:hover {
255 #header #header-inner #home a:hover {
256 background-position:0 -40px;
256 background-position:0 -40px;
257 }
257 }
258
258
259 #header #header-inner #logo h1 {
259 #header #header-inner #logo h1 {
260 color:#FFF;
260 color:#FFF;
261 font-size:14px;
261 font-size:14px;
262 text-transform:uppercase;
263 margin:13px 0 0 13px;
262 margin:13px 0 0 13px;
264 padding:0;
263 padding:0;
265 }
264 }
266
265
267 #header #header-inner #logo a {
266 #header #header-inner #logo a {
268 color:#fff;
267 color:#fff;
269 text-decoration:none;
268 text-decoration:none;
270 }
269 }
271
270
272 #header #header-inner #logo a:hover {
271 #header #header-inner #logo a:hover {
273 color:#bfe3ff;
272 color:#bfe3ff;
274 }
273 }
275
274
276 #header #header-inner #quick,#header #header-inner #quick ul {
275 #header #header-inner #quick,#header #header-inner #quick ul {
277 position:relative;
276 position:relative;
278 float:right;
277 float:right;
279 list-style-type:none;
278 list-style-type:none;
280 list-style-position:outside;
279 list-style-position:outside;
281 margin:10px 5px 0 0;
280 margin:10px 5px 0 0;
282 padding:0;
281 padding:0;
283 }
282 }
284
283
285 #header #header-inner #quick li {
284 #header #header-inner #quick li {
286 position:relative;
285 position:relative;
287 float:left;
286 float:left;
288 margin:0 5px 0 0;
287 margin:0 5px 0 0;
289 padding:0;
288 padding:0;
290 }
289 }
291
290
292 #header #header-inner #quick li a {
291 #header #header-inner #quick li a {
293 top:0;
292 top:0;
294 left:0;
293 left:0;
295 height:1%;
294 height:1%;
296 display:block;
295 display:block;
297 clear:both;
296 clear:both;
298 overflow:hidden;
297 overflow:hidden;
299 color:#FFF;
298 color:#FFF;
300 font-weight:700;
299 font-weight:700;
301 text-decoration:none;
300 text-decoration:none;
302 background:#369 url("../../images/quick_l.png") no-repeat top left;
301 background:#369 url("../../images/quick_l.png") no-repeat top left;
303 padding:0;
302 padding:0;
304 }
303 }
305
304
306 #header #header-inner #quick li span {
305 #header #header-inner #quick li span {
307 top:0;
306 top:0;
308 right:0;
307 right:0;
309 height:1%;
308 height:1%;
310 display:block;
309 display:block;
311 float:left;
310 float:left;
312 background:url("../../images/quick_r.png") no-repeat top right;
311 background:url("../../images/quick_r.png") no-repeat top right;
313 border-left:1px solid #3f6f9f;
312 border-left:1px solid #3f6f9f;
314 margin:0;
313 margin:0;
315 padding:10px 12px 8px 10px;
314 padding:10px 12px 8px 10px;
316 }
315 }
317
316
318 #header #header-inner #quick li span.normal {
317 #header #header-inner #quick li span.normal {
319 border:none;
318 border:none;
320 padding:10px 12px 8px;
319 padding:10px 12px 8px;
321 }
320 }
322
321
323 #header #header-inner #quick li span.icon {
322 #header #header-inner #quick li span.icon {
324 top:0;
323 top:0;
325 left:0;
324 left:0;
326 border-left:none;
325 border-left:none;
327 background:url("../../images/quick_l.png") no-repeat top left;
326 background:url("../../images/quick_l.png") no-repeat top left;
328 border-right:1px solid #2e5c89;
327 border-right:1px solid #2e5c89;
329 padding:8px 8px 4px;
328 padding:8px 8px 4px;
330 }
329 }
331
330
332 #header #header-inner #quick li a:hover {
331 #header #header-inner #quick li a:hover {
333 background:#4e4e4e url("../../images/quick_l_selected.png") no-repeat top left;
332 background:#4e4e4e url("../../images/quick_l_selected.png") no-repeat top left;
334 }
333 }
335
334
336 #header #header-inner #quick li a:hover span {
335 #header #header-inner #quick li a:hover span {
337 border-left:1px solid #545454;
336 border-left:1px solid #545454;
338 background:url("../../images/quick_r_selected.png") no-repeat top right;
337 background:url("../../images/quick_r_selected.png") no-repeat top right;
339 }
338 }
340
339
341 #header #header-inner #quick li a:hover span.icon {
340 #header #header-inner #quick li a:hover span.icon {
342 border-left:none;
341 border-left:none;
343 border-right:1px solid #464646;
342 border-right:1px solid #464646;
344 background:url("../../images/quick_l_selected.png") no-repeat top left;
343 background:url("../../images/quick_l_selected.png") no-repeat top left;
345 }
344 }
346
345
347 #header #header-inner #quick ul {
346 #header #header-inner #quick ul {
348 top:29px;
347 top:29px;
349 right:0;
348 right:0;
350 min-width:200px;
349 min-width:200px;
351 display:none;
350 display:none;
352 position:absolute;
351 position:absolute;
353 background:#FFF;
352 background:#FFF;
354 border:1px solid #666;
353 border:1px solid #666;
355 border-top:1px solid #003367;
354 border-top:1px solid #003367;
356 z-index:100;
355 z-index:100;
357 margin:0;
356 margin:0;
358 padding:0;
357 padding:0;
359 }
358 }
360
359
361 #header #header-inner #quick ul.repo_switcher {
360 #header #header-inner #quick ul.repo_switcher {
362 max-height:275px;
361 max-height:275px;
363 overflow-x:hidden;
362 overflow-x:hidden;
364 overflow-y:auto;
363 overflow-y:auto;
365 }
364 }
366
365
367 #header #header-inner #quick li ul li {
366 #header #header-inner #quick li ul li {
368 border-bottom:1px solid #ddd;
367 border-bottom:1px solid #ddd;
369 }
368 }
370
369
371 #header #header-inner #quick li ul li a {
370 #header #header-inner #quick li ul li a {
372 width:182px;
371 width:182px;
373 height:auto;
372 height:auto;
374 display:block;
373 display:block;
375 float:left;
374 float:left;
376 background:#FFF;
375 background:#FFF;
377 color:#003367;
376 color:#003367;
378 font-weight:400;
377 font-weight:400;
379 margin:0;
378 margin:0;
380 padding:7px 9px;
379 padding:7px 9px;
381 }
380 }
382
381
383 #header #header-inner #quick li ul li a:hover {
382 #header #header-inner #quick li ul li a:hover {
384 color:#000;
383 color:#000;
385 background:#FFF;
384 background:#FFF;
386 }
385 }
387
386
388 #header #header-inner #quick ul ul {
387 #header #header-inner #quick ul ul {
389 top:auto;
388 top:auto;
390 }
389 }
391
390
392 #header #header-inner #quick li ul ul {
391 #header #header-inner #quick li ul ul {
393 right:200px;
392 right:200px;
394 max-height:275px;
393 max-height:275px;
395 overflow:auto;
394 overflow:auto;
396 overflow-x:hidden;
395 overflow-x:hidden;
397 white-space:nowrap;
396 white-space:nowrap;
398 }
397 }
399
398
400 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover {
399 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover {
401 background:url("../images/icons/book.png") no-repeat scroll 4px 9px #FFF;
400 background:url("../images/icons/book.png") no-repeat scroll 4px 9px #FFF;
402 width:167px;
401 width:167px;
403 margin:0;
402 margin:0;
404 padding:12px 9px 7px 24px;
403 padding:12px 9px 7px 24px;
405 }
404 }
406
405
407 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover {
406 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover {
408 background:url("../images/icons/lock.png") no-repeat scroll 4px 9px #FFF;
407 background:url("../images/icons/lock.png") no-repeat scroll 4px 9px #FFF;
409 min-width:167px;
408 min-width:167px;
410 margin:0;
409 margin:0;
411 padding:12px 9px 7px 24px;
410 padding:12px 9px 7px 24px;
412 }
411 }
413
412
414 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover {
413 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover {
415 background:url("../images/icons/lock_open.png") no-repeat scroll 4px 9px #FFF;
414 background:url("../images/icons/lock_open.png") no-repeat scroll 4px 9px #FFF;
416 min-width:167px;
415 min-width:167px;
417 margin:0;
416 margin:0;
418 padding:12px 9px 7px 24px;
417 padding:12px 9px 7px 24px;
419 }
418 }
420
419
421 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover {
420 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover {
422 background:url("../images/icons/folder_edit.png") no-repeat scroll 4px 9px #FFF;
421 background:url("../images/icons/database_edit.png") no-repeat scroll 4px 9px #FFF;
423 width:167px;
422 width:167px;
424 margin:0;
423 margin:0;
425 padding:12px 9px 7px 24px;
424 padding:12px 9px 7px 24px;
426 }
425 }
427
426
428 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover {
427 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover {
429 background:#FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
428 background:#FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
430 width:167px;
429 width:167px;
431 margin:0;
430 margin:0;
432 padding:12px 9px 7px 24px;
431 padding:12px 9px 7px 24px;
433 }
432 }
434
433
435 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover {
434 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover {
436 background:#FFF url("../images/icons/cog.png") no-repeat 4px 9px;
435 background:#FFF url("../images/icons/cog.png") no-repeat 4px 9px;
437 width:167px;
436 width:167px;
438 margin:0;
437 margin:0;
439 padding:12px 9px 7px 24px;
438 padding:12px 9px 7px 24px;
440 }
439 }
441
440
442 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover {
441 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover {
443 background:#FFF url("../images/icons/key.png") no-repeat 4px 9px;
442 background:#FFF url("../images/icons/key.png") no-repeat 4px 9px;
444 width:167px;
443 width:167px;
445 margin:0;
444 margin:0;
446 padding:12px 9px 7px 24px;
445 padding:12px 9px 7px 24px;
447 }
446 }
448
447
449 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover {
448 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover {
450 background:#FFF url("../images/icons/arrow_divide.png") no-repeat 4px 9px;
449 background:#FFF url("../images/icons/arrow_divide.png") no-repeat 4px 9px;
451 width:167px;
450 width:167px;
452 margin:0;
451 margin:0;
453 padding:12px 9px 7px 24px;
452 padding:12px 9px 7px 24px;
454 }
453 }
455
454
456 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover {
455 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover {
457 background:#FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
456 background:#FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
458 width:167px;
457 width:167px;
459 margin:0;
458 margin:0;
460 padding:12px 9px 7px 24px;
459 padding:12px 9px 7px 24px;
461 }
460 }
462
461
463 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover {
462 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover {
464 background:#FFF url("../images/icons/delete.png") no-repeat 4px 9px;
463 background:#FFF url("../images/icons/delete.png") no-repeat 4px 9px;
465 width:167px;
464 width:167px;
466 margin:0;
465 margin:0;
467 padding:12px 9px 7px 24px;
466 padding:12px 9px 7px 24px;
468 }
467 }
469
468
470 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover {
469 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover {
471 background:#FFF url("../images/icons/arrow_branch.png") no-repeat 4px 9px;
470 background:#FFF url("../images/icons/arrow_branch.png") no-repeat 4px 9px;
472 width:167px;
471 width:167px;
473 margin:0;
472 margin:0;
474 padding:12px 9px 7px 24px;
473 padding:12px 9px 7px 24px;
475 }
474 }
476
475
477 #header #header-inner #quick li ul li a.tags,#header #header-inner #quick li ul li a.tags:hover {
476 #header #header-inner #quick li ul li a.tags,#header #header-inner #quick li ul li a.tags:hover {
478 background:#FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
477 background:#FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
479 width:167px;
478 width:167px;
480 margin:0;
479 margin:0;
481 padding:12px 9px 7px 24px;
480 padding:12px 9px 7px 24px;
482 }
481 }
483
482
484 #header #header-inner #quick li ul li a.admin,#header #header-inner #quick li ul li a.admin:hover {
483 #header #header-inner #quick li ul li a.admin,#header #header-inner #quick li ul li a.admin:hover {
485 background:#FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
484 background:#FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
486 width:167px;
485 width:167px;
487 margin:0;
486 margin:0;
488 padding:12px 9px 7px 24px;
487 padding:12px 9px 7px 24px;
489 }
488 }
490
489
491 #content #left {
490 #content #left {
492 left:0;
491 left:0;
493 width:280px;
492 width:280px;
494 position:absolute;
493 position:absolute;
495 }
494 }
496
495
497 #content #right {
496 #content #right {
498 margin:0 60px 10px 290px;
497 margin:0 60px 10px 290px;
499 }
498 }
500
499
501 #content div.box {
500 #content div.box {
502 clear:both;
501 clear:both;
503 overflow:hidden;
502 overflow:hidden;
504 background:#fff;
503 background:#fff;
505 margin:0 0 10px;
504 margin:0 0 10px;
506 padding:0 0 10px;
505 padding:0 0 10px;
507 }
506 }
508
507
509 #content div.box-left {
508 #content div.box-left {
510 width:49%;
509 width:49%;
511 clear:none;
510 clear:none;
512 float:left;
511 float:left;
513 margin:0 0 10px;
512 margin:0 0 10px;
514 }
513 }
515
514
516 #content div.box-right {
515 #content div.box-right {
517 width:49%;
516 width:49%;
518 clear:none;
517 clear:none;
519 float:right;
518 float:right;
520 margin:0 0 10px;
519 margin:0 0 10px;
521 }
520 }
522
521
523 #content div.box div.title {
522 #content div.box div.title {
524 clear:both;
523 clear:both;
525 overflow:hidden;
524 overflow:hidden;
526 background:#369 url("../images/header_inner.png") repeat-x;
525 background:#369 url("../images/header_inner.png") repeat-x;
527 margin:0 0 20px;
526 margin:0 0 20px;
528 padding:0;
527 padding:0;
529 }
528 }
530
529
531 #content div.box div.title h5 {
530 #content div.box div.title h5 {
532 float:left;
531 float:left;
533 border:none;
532 border:none;
534 color:#fff;
533 color:#fff;
535 text-transform:uppercase;
534 text-transform:uppercase;
536 margin:0;
535 margin:0;
537 padding:11px 0 11px 10px;
536 padding:11px 0 11px 10px;
538 }
537 }
539
538
540 #content div.box div.title ul.links li {
539 #content div.box div.title ul.links li {
541 list-style:none;
540 list-style:none;
542 float:left;
541 float:left;
543 margin:0;
542 margin:0;
544 padding:0;
543 padding:0;
545 }
544 }
546
545
547 #content div.box div.title ul.links li a {
546 #content div.box div.title ul.links li a {
548 height:1%;
547 height:1%;
549 display:block;
548 display:block;
550 float:left;
549 float:left;
551 border-left:1px solid #316293;
550 border-left:1px solid #316293;
552 color:#fff;
551 color:#fff;
553 font-size:11px;
552 font-size:11px;
554 font-weight:700;
553 font-weight:700;
555 text-decoration:none;
554 text-decoration:none;
556 margin:0;
555 margin:0;
557 padding:13px 16px 12px;
556 padding:13px 16px 12px;
558 }
557 }
559
558
560 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6 {
559 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6 {
561 clear:both;
560 clear:both;
562 overflow:hidden;
561 overflow:hidden;
563 border-bottom:1px solid #DDD;
562 border-bottom:1px solid #DDD;
564 margin:10px 20px;
563 margin:10px 20px;
565 padding:0 0 15px;
564 padding:0 0 15px;
566 }
565 }
567
566
568 #content div.box p {
567 #content div.box p {
569 color:#5f5f5f;
568 color:#5f5f5f;
570 font-size:12px;
569 font-size:12px;
571 line-height:150%;
570 line-height:150%;
572 margin:0 24px 10px;
571 margin:0 24px 10px;
573 padding:0;
572 padding:0;
574 }
573 }
575
574
576 #content div.box blockquote {
575 #content div.box blockquote {
577 border-left:4px solid #DDD;
576 border-left:4px solid #DDD;
578 color:#5f5f5f;
577 color:#5f5f5f;
579 font-size:11px;
578 font-size:11px;
580 line-height:150%;
579 line-height:150%;
581 margin:0 34px;
580 margin:0 34px;
582 padding:0 0 0 14px;
581 padding:0 0 0 14px;
583 }
582 }
584
583
585 #content div.box blockquote p {
584 #content div.box blockquote p {
586 margin:10px 0;
585 margin:10px 0;
587 padding:0;
586 padding:0;
588 }
587 }
589
588
590 #content div.box dl {
589 #content div.box dl {
591 margin:10px 24px;
590 margin:10px 24px;
592 }
591 }
593
592
594 #content div.box dt {
593 #content div.box dt {
595 font-size:12px;
594 font-size:12px;
596 margin:0;
595 margin:0;
597 }
596 }
598
597
599 #content div.box dd {
598 #content div.box dd {
600 font-size:12px;
599 font-size:12px;
601 margin:0;
600 margin:0;
602 padding:8px 0 8px 15px;
601 padding:8px 0 8px 15px;
603 }
602 }
604
603
605 #content div.box li {
604 #content div.box li {
606 font-size:12px;
605 font-size:12px;
607 padding:4px 0;
606 padding:4px 0;
608 }
607 }
609
608
610 #content div.box ul.disc,#content div.box ul.circle {
609 #content div.box ul.disc,#content div.box ul.circle {
611 margin:10px 24px 10px 38px;
610 margin:10px 24px 10px 38px;
612 }
611 }
613
612
614 #content div.box ul.square {
613 #content div.box ul.square {
615 margin:10px 24px 10px 40px;
614 margin:10px 24px 10px 40px;
616 }
615 }
617
616
618 #content div.box img.left {
617 #content div.box img.left {
619 border:none;
618 border:none;
620 float:left;
619 float:left;
621 margin:10px 10px 10px 0;
620 margin:10px 10px 10px 0;
622 }
621 }
623
622
624 #content div.box img.right {
623 #content div.box img.right {
625 border:none;
624 border:none;
626 float:right;
625 float:right;
627 margin:10px 0 10px 10px;
626 margin:10px 0 10px 10px;
628 }
627 }
629
628
630 #content div.box div.messages {
629 #content div.box div.messages {
631 clear:both;
630 clear:both;
632 overflow:hidden;
631 overflow:hidden;
633 margin:0 20px;
632 margin:0 20px;
634 padding:0;
633 padding:0;
635 }
634 }
636
635
637 #content div.box div.message {
636 #content div.box div.message {
638 clear:both;
637 clear:both;
639 overflow:hidden;
638 overflow:hidden;
640 margin:0;
639 margin:0;
641 padding:10px 0;
640 padding:10px 0;
642 }
641 }
643
642
644 #content div.box div.message a {
643 #content div.box div.message a {
645 font-weight:400 !important;
644 font-weight:400 !important;
646 }
645 }
647
646
648 #content div.box div.message div.image {
647 #content div.box div.message div.image {
649 float:left;
648 float:left;
650 margin:9px 0 0 5px;
649 margin:9px 0 0 5px;
651 padding:6px;
650 padding:6px;
652 }
651 }
653
652
654 #content div.box div.message div.image img {
653 #content div.box div.message div.image img {
655 vertical-align:middle;
654 vertical-align:middle;
656 margin:0;
655 margin:0;
657 }
656 }
658
657
659 #content div.box div.message div.text {
658 #content div.box div.message div.text {
660 float:left;
659 float:left;
661 margin:0;
660 margin:0;
662 padding:9px 6px;
661 padding:9px 6px;
663 }
662 }
664
663
665 #content div.box div.message div.dismiss a {
664 #content div.box div.message div.dismiss a {
666 height:16px;
665 height:16px;
667 width:16px;
666 width:16px;
668 display:block;
667 display:block;
669 background:url("../images/icons/cross.png") no-repeat;
668 background:url("../images/icons/cross.png") no-repeat;
670 margin:15px 14px 0 0;
669 margin:15px 14px 0 0;
671 padding:0;
670 padding:0;
672 }
671 }
673
672
674 #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 {
673 #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 {
675 border:none;
674 border:none;
676 margin:0;
675 margin:0;
677 padding:0;
676 padding:0;
678 }
677 }
679
678
680 #content div.box div.message div.text span {
679 #content div.box div.message div.text span {
681 height:1%;
680 height:1%;
682 display:block;
681 display:block;
683 margin:0;
682 margin:0;
684 padding:5px 0 0;
683 padding:5px 0 0;
685 }
684 }
686
685
687 #content div.box div.message-error {
686 #content div.box div.message-error {
688 height:1%;
687 height:1%;
689 clear:both;
688 clear:both;
690 overflow:hidden;
689 overflow:hidden;
691 background:#FBE3E4;
690 background:#FBE3E4;
692 border:1px solid #FBC2C4;
691 border:1px solid #FBC2C4;
693 color:#860006;
692 color:#860006;
694 }
693 }
695
694
696 #content div.box div.message-error h6 {
695 #content div.box div.message-error h6 {
697 color:#860006;
696 color:#860006;
698 }
697 }
699
698
700 #content div.box div.message-warning {
699 #content div.box div.message-warning {
701 height:1%;
700 height:1%;
702 clear:both;
701 clear:both;
703 overflow:hidden;
702 overflow:hidden;
704 background:#FFF6BF;
703 background:#FFF6BF;
705 border:1px solid #FFD324;
704 border:1px solid #FFD324;
706 color:#5f5200;
705 color:#5f5200;
707 }
706 }
708
707
709 #content div.box div.message-warning h6 {
708 #content div.box div.message-warning h6 {
710 color:#5f5200;
709 color:#5f5200;
711 }
710 }
712
711
713 #content div.box div.message-notice {
712 #content div.box div.message-notice {
714 height:1%;
713 height:1%;
715 clear:both;
714 clear:both;
716 overflow:hidden;
715 overflow:hidden;
717 background:#8FBDE0;
716 background:#8FBDE0;
718 border:1px solid #6BACDE;
717 border:1px solid #6BACDE;
719 color:#003863;
718 color:#003863;
720 }
719 }
721
720
722 #content div.box div.message-notice h6 {
721 #content div.box div.message-notice h6 {
723 color:#003863;
722 color:#003863;
724 }
723 }
725
724
726 #content div.box div.message-success {
725 #content div.box div.message-success {
727 height:1%;
726 height:1%;
728 clear:both;
727 clear:both;
729 overflow:hidden;
728 overflow:hidden;
730 background:#E6EFC2;
729 background:#E6EFC2;
731 border:1px solid #C6D880;
730 border:1px solid #C6D880;
732 color:#4e6100;
731 color:#4e6100;
733 }
732 }
734
733
735 #content div.box div.message-success h6 {
734 #content div.box div.message-success h6 {
736 color:#4e6100;
735 color:#4e6100;
737 }
736 }
738
737
739 #content div.box div.form div.fields div.field {
738 #content div.box div.form div.fields div.field {
740 height:1%;
739 height:1%;
741 border-bottom:1px solid #DDD;
740 border-bottom:1px solid #DDD;
742 clear:both;
741 clear:both;
743 margin:0;
742 margin:0;
744 padding:10px 0;
743 padding:10px 0;
745 }
744 }
746
745
747 #content div.box div.form div.fields div.field-first {
746 #content div.box div.form div.fields div.field-first {
748 padding:0 0 10px;
747 padding:0 0 10px;
749 }
748 }
750
749
751 #content div.box div.form div.fields div.field-noborder {
750 #content div.box div.form div.fields div.field-noborder {
752 border-bottom:0 !important;
751 border-bottom:0 !important;
753 }
752 }
754
753
755 #content div.box div.form div.fields div.field span.error-message {
754 #content div.box div.form div.fields div.field span.error-message {
756 height:1%;
755 height:1%;
757 display:inline-block;
756 display:inline-block;
758 color:red;
757 color:red;
759 margin:8px 0 0 4px;
758 margin:8px 0 0 4px;
760 padding:0;
759 padding:0;
761 }
760 }
762
761
763 #content div.box div.form div.fields div.field span.success {
762 #content div.box div.form div.fields div.field span.success {
764 height:1%;
763 height:1%;
765 display:block;
764 display:block;
766 color:#316309;
765 color:#316309;
767 margin:8px 0 0;
766 margin:8px 0 0;
768 padding:0;
767 padding:0;
769 }
768 }
770
769
771 #content div.box div.form div.fields div.field div.label {
770 #content div.box div.form div.fields div.field div.label {
772 left:80px;
771 left:80px;
773 width:auto;
772 width:auto;
774 position:absolute;
773 position:absolute;
775 margin:0;
774 margin:0;
776 padding:8px 0 0 5px;
775 padding:8px 0 0 5px;
777 }
776 }
778
777
779 #content div.box-left div.form div.fields div.field div.label,#content div.box-right div.form div.fields div.field div.label {
778 #content div.box-left div.form div.fields div.field div.label,#content div.box-right div.form div.fields div.field div.label {
780 clear:both;
779 clear:both;
781 overflow:hidden;
780 overflow:hidden;
782 left:0;
781 left:0;
783 width:auto;
782 width:auto;
784 position:relative;
783 position:relative;
785 margin:0;
784 margin:0;
786 padding:0 0 8px;
785 padding:0 0 8px;
787 }
786 }
788
787
789 #content div.box div.form div.fields div.field div.label-select {
788 #content div.box div.form div.fields div.field div.label-select {
790 padding:2px 0 0 5px;
789 padding:2px 0 0 5px;
791 }
790 }
792
791
793 #content div.box-left div.form div.fields div.field div.label-select,#content div.box-right div.form div.fields div.field div.label-select {
792 #content div.box-left div.form div.fields div.field div.label-select,#content div.box-right div.form div.fields div.field div.label-select {
794 padding:0 0 8px;
793 padding:0 0 8px;
795 }
794 }
796
795
797 #content div.box-left div.form div.fields div.field div.label-textarea,#content div.box-right div.form div.fields div.field div.label-textarea {
796 #content div.box-left div.form div.fields div.field div.label-textarea,#content div.box-right div.form div.fields div.field div.label-textarea {
798 padding:0 0 8px !important;
797 padding:0 0 8px !important;
799 }
798 }
800
799
801 #content div.box div.form div.fields div.field div.label label {
800 #content div.box div.form div.fields div.field div.label label {
802 color:#393939;
801 color:#393939;
803 font-weight:700;
802 font-weight:700;
804 }
803 }
805
804
806 #content div.box div.form div.fields div.field div.input {
805 #content div.box div.form div.fields div.field div.input {
807 margin:0 0 0 200px;
806 margin:0 0 0 200px;
808 }
807 }
809
808
810 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input {
809 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input {
811 clear:both;
810 clear:both;
812 overflow:hidden;
811 overflow:hidden;
813 border-top:1px solid #b3b3b3;
812 border-top:1px solid #b3b3b3;
814 border-left:1px solid #b3b3b3;
813 border-left:1px solid #b3b3b3;
815 border-right:1px solid #eaeaea;
814 border-right:1px solid #eaeaea;
816 border-bottom:1px solid #eaeaea;
815 border-bottom:1px solid #eaeaea;
817 margin:0;
816 margin:0;
818 padding:7px 7px 6px;
817 padding:7px 7px 6px;
819 }
818 }
820
819
821 #content div.box div.form div.fields div.field div.input input {
820 #content div.box div.form div.fields div.field div.input input {
822 background:#FFF;
821 background:#FFF;
823 border-top:1px solid #b3b3b3;
822 border-top:1px solid #b3b3b3;
824 border-left:1px solid #b3b3b3;
823 border-left:1px solid #b3b3b3;
825 border-right:1px solid #eaeaea;
824 border-right:1px solid #eaeaea;
826 border-bottom:1px solid #eaeaea;
825 border-bottom:1px solid #eaeaea;
827 color:#000;
826 color:#000;
828 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
827 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
829 font-size:11px;
828 font-size:11px;
830 margin:0;
829 margin:0;
831 padding:7px 7px 6px;
830 padding:7px 7px 6px;
832 }
831 }
833
832
834 #content div.box-left div.form div.fields div.field div.input input,#content div.box-right div.form div.fields div.field div.input input {
833 #content div.box-left div.form div.fields div.field div.input input,#content div.box-right div.form div.fields div.field div.input input {
835 width:100%;
834 width:100%;
836 border:none;
835 border:none;
837 padding:0;
836 padding:0;
838 }
837 }
839
838
840 #content div.box div.form div.fields div.field div.input input.small {
839 #content div.box div.form div.fields div.field div.input input.small {
841 width:30%;
840 width:30%;
842 }
841 }
843
842
844 #content div.box div.form div.fields div.field div.input input.medium {
843 #content div.box div.form div.fields div.field div.input input.medium {
845 width:55%;
844 width:55%;
846 }
845 }
847
846
848 #content div.box div.form div.fields div.field div.input input.large {
847 #content div.box div.form div.fields div.field div.input input.large {
849 width:85%;
848 width:85%;
850 }
849 }
851
850
852 #content div.box div.form div.fields div.field div.input input.date {
851 #content div.box div.form div.fields div.field div.input input.date {
853 width:177px;
852 width:177px;
854 }
853 }
855
854
856 #content div.box div.form div.fields div.field div.input input.button {
855 #content div.box div.form div.fields div.field div.input input.button {
857 background:#D4D0C8;
856 background:#D4D0C8;
858 border-top:1px solid #FFF;
857 border-top:1px solid #FFF;
859 border-left:1px solid #FFF;
858 border-left:1px solid #FFF;
860 border-right:1px solid #404040;
859 border-right:1px solid #404040;
861 border-bottom:1px solid #404040;
860 border-bottom:1px solid #404040;
862 color:#000;
861 color:#000;
863 margin:0;
862 margin:0;
864 padding:4px 8px;
863 padding:4px 8px;
865 }
864 }
866
865
867 #content div.box div.form div.fields div.field div.input a.ui-input-file {
866 #content div.box div.form div.fields div.field div.input a.ui-input-file {
868 width:28px;
867 width:28px;
869 height:28px;
868 height:28px;
870 display:inline;
869 display:inline;
871 position:absolute;
870 position:absolute;
872 overflow:hidden;
871 overflow:hidden;
873 cursor:pointer;
872 cursor:pointer;
874 background:#e5e3e3 url("../images/button_browse.png") no-repeat;
873 background:#e5e3e3 url("../images/button_browse.png") no-repeat;
875 border:none;
874 border:none;
876 text-decoration:none;
875 text-decoration:none;
877 margin:0 0 0 6px;
876 margin:0 0 0 6px;
878 padding:0;
877 padding:0;
879 }
878 }
880
879
881 #content div.box div.form div.fields div.field div.textarea {
880 #content div.box div.form div.fields div.field div.textarea {
882 border-top:1px solid #b3b3b3;
881 border-top:1px solid #b3b3b3;
883 border-left:1px solid #b3b3b3;
882 border-left:1px solid #b3b3b3;
884 border-right:1px solid #eaeaea;
883 border-right:1px solid #eaeaea;
885 border-bottom:1px solid #eaeaea;
884 border-bottom:1px solid #eaeaea;
886 margin:0 0 0 200px;
885 margin:0 0 0 200px;
887 padding:10px;
886 padding:10px;
888 }
887 }
889
888
890 #content div.box div.form div.fields div.field div.textarea-editor {
889 #content div.box div.form div.fields div.field div.textarea-editor {
891 border:1px solid #ddd;
890 border:1px solid #ddd;
892 padding:0;
891 padding:0;
893 }
892 }
894
893
895 #content div.box div.form div.fields div.field div.textarea textarea {
894 #content div.box div.form div.fields div.field div.textarea textarea {
896 width:100%;
895 width:100%;
897 height:220px;
896 height:220px;
898 overflow:hidden;
897 overflow:hidden;
899 background:#FFF;
898 background:#FFF;
900 color:#000;
899 color:#000;
901 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
900 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
902 font-size:11px;
901 font-size:11px;
903 outline:none;
902 outline:none;
904 border-width:0;
903 border-width:0;
905 margin:0;
904 margin:0;
906 padding:0;
905 padding:0;
907 }
906 }
908
907
909 #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 {
908 #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 {
910 width:100%;
909 width:100%;
911 height:100px;
910 height:100px;
912 }
911 }
913
912
914 #content div.box div.form div.fields div.field div.textarea table {
913 #content div.box div.form div.fields div.field div.textarea table {
915 width:100%;
914 width:100%;
916 border:none;
915 border:none;
917 margin:0;
916 margin:0;
918 padding:0;
917 padding:0;
919 }
918 }
920
919
921 #content div.box div.form div.fields div.field div.textarea table td {
920 #content div.box div.form div.fields div.field div.textarea table td {
922 background:#DDD;
921 background:#DDD;
923 border:none;
922 border:none;
924 padding:0;
923 padding:0;
925 }
924 }
926
925
927 #content div.box div.form div.fields div.field div.textarea table td table {
926 #content div.box div.form div.fields div.field div.textarea table td table {
928 width:auto;
927 width:auto;
929 border:none;
928 border:none;
930 margin:0;
929 margin:0;
931 padding:0;
930 padding:0;
932 }
931 }
933
932
934 #content div.box div.form div.fields div.field div.textarea table td table td {
933 #content div.box div.form div.fields div.field div.textarea table td table td {
935 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
934 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
936 font-size:11px;
935 font-size:11px;
937 padding:5px 5px 5px 0;
936 padding:5px 5px 5px 0;
938 }
937 }
939
938
940 #content div.box div.form div.fields div.field div.textarea table td table td a.mceButtonActive {
939 #content div.box div.form div.fields div.field div.textarea table td table td a.mceButtonActive {
941 background:#b1b1b1;
940 background:#b1b1b1;
942 }
941 }
943
942
944 #content div.box div.form div.fields div.field div.select a.ui-selectmenu {
943 #content div.box div.form div.fields div.field div.select a.ui-selectmenu {
945 color:#565656;
944 color:#565656;
946 text-decoration:none;
945 text-decoration:none;
947 }
946 }
948
947
949 #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 {
948 #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 {
950 background:#f6f6f6;
949 background:#f6f6f6;
951 border-color:#666;
950 border-color:#666;
952 }
951 }
953
952
954 div.form div.fields div.field div.button {
953 div.form div.fields div.field div.button {
955 margin:0;
954 margin:0;
956 padding:0 0 0 8px;
955 padding:0 0 0 8px;
957 }
956 }
958
957
959 div.form div.fields div.field div.highlight .ui-state-default {
958 div.form div.fields div.field div.highlight .ui-state-default {
960 background:#4e85bb url("../images/button_highlight.png") repeat-x;
959 background:#4e85bb url("../images/button_highlight.png") repeat-x;
961 border-top:1px solid #5c91a4;
960 border-top:1px solid #5c91a4;
962 border-left:1px solid #2a6f89;
961 border-left:1px solid #2a6f89;
963 border-right:1px solid #2b7089;
962 border-right:1px solid #2b7089;
964 border-bottom:1px solid #1a6480;
963 border-bottom:1px solid #1a6480;
965 color:#FFF;
964 color:#FFF;
966 margin:0;
965 margin:0;
967 padding:6px 12px;
966 padding:6px 12px;
968 }
967 }
969
968
970 div.form div.fields div.field div.highlight .ui-state-hover {
969 div.form div.fields div.field div.highlight .ui-state-hover {
971 background:#46a0c1 url("../images/button_highlight_selected.png") repeat-x;
970 background:#46a0c1 url("../images/button_highlight_selected.png") repeat-x;
972 border-top:1px solid #78acbf;
971 border-top:1px solid #78acbf;
973 border-left:1px solid #34819e;
972 border-left:1px solid #34819e;
974 border-right:1px solid #35829f;
973 border-right:1px solid #35829f;
975 border-bottom:1px solid #257897;
974 border-bottom:1px solid #257897;
976 color:#FFF;
975 color:#FFF;
977 margin:0;
976 margin:0;
978 padding:6px 12px;
977 padding:6px 12px;
979 }
978 }
980
979
981 #content div.box div.form div.fields div.buttons div.highlight input.ui-state-default {
980 #content div.box div.form div.fields div.buttons div.highlight input.ui-state-default {
982 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
981 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
983 border-top:1px solid #5c91a4;
982 border-top:1px solid #5c91a4;
984 border-left:1px solid #2a6f89;
983 border-left:1px solid #2a6f89;
985 border-right:1px solid #2b7089;
984 border-right:1px solid #2b7089;
986 border-bottom:1px solid #1a6480;
985 border-bottom:1px solid #1a6480;
987 color:#fff;
986 color:#fff;
988 margin:0;
987 margin:0;
989 padding:6px 12px;
988 padding:6px 12px;
990 }
989 }
991
990
992 #content div.box div.form div.fields div.buttons div.highlight input.ui-state-hover {
991 #content div.box div.form div.fields div.buttons div.highlight input.ui-state-hover {
993 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
992 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
994 border-top:1px solid #78acbf;
993 border-top:1px solid #78acbf;
995 border-left:1px solid #34819e;
994 border-left:1px solid #34819e;
996 border-right:1px solid #35829f;
995 border-right:1px solid #35829f;
997 border-bottom:1px solid #257897;
996 border-bottom:1px solid #257897;
998 color:#fff;
997 color:#fff;
999 margin:0;
998 margin:0;
1000 padding:6px 12px;
999 padding:6px 12px;
1001 }
1000 }
1002
1001
1003 #content div.box table {
1002 #content div.box table {
1004 width:100%;
1003 width:100%;
1005 border-collapse:collapse;
1004 border-collapse:collapse;
1006 margin:0;
1005 margin:0;
1007 padding:0;
1006 padding:0;
1008 }
1007 }
1009
1008
1010 #content div.box table th {
1009 #content div.box table th {
1011 background:#eee;
1010 background:#eee;
1012 border-bottom:1px solid #ddd;
1011 border-bottom:1px solid #ddd;
1013 padding:5px 0px 5px 5px;
1012 padding:5px 0px 5px 5px;
1014 }
1013 }
1015
1014
1016 #content div.box table th.left {
1015 #content div.box table th.left {
1017 text-align:left;
1016 text-align:left;
1018 }
1017 }
1019
1018
1020 #content div.box table th.right {
1019 #content div.box table th.right {
1021 text-align:right;
1020 text-align:right;
1022 }
1021 }
1023
1022
1024 #content div.box table th.center {
1023 #content div.box table th.center {
1025 text-align:center;
1024 text-align:center;
1026 }
1025 }
1027
1026
1028 #content div.box table th.selected {
1027 #content div.box table th.selected {
1029 vertical-align:middle;
1028 vertical-align:middle;
1030 padding:0;
1029 padding:0;
1031 }
1030 }
1032
1031
1033 #content div.box table td {
1032 #content div.box table td {
1034 background:#fff;
1033 background:#fff;
1035 border-bottom:1px solid #cdcdcd;
1034 border-bottom:1px solid #cdcdcd;
1036 vertical-align:middle;
1035 vertical-align:middle;
1037 padding:5px;
1036 padding:5px;
1038 }
1037 }
1039
1038
1040 #content div.box table tr.selected td {
1039 #content div.box table tr.selected td {
1041 background:#FFC;
1040 background:#FFC;
1042 }
1041 }
1043
1042
1044 #content div.box table td.selected {
1043 #content div.box table td.selected {
1045 width:3%;
1044 width:3%;
1046 text-align:center;
1045 text-align:center;
1047 vertical-align:middle;
1046 vertical-align:middle;
1048 padding:0;
1047 padding:0;
1049 }
1048 }
1050
1049
1051 #content div.box table td.action {
1050 #content div.box table td.action {
1052 width:45%;
1051 width:45%;
1053 text-align:left;
1052 text-align:left;
1054 }
1053 }
1055
1054
1056 #content div.box table td.date {
1055 #content div.box table td.date {
1057 width:33%;
1056 width:33%;
1058 text-align:center;
1057 text-align:center;
1059 }
1058 }
1060
1059
1061 #content div.box div.action {
1060 #content div.box div.action {
1062 float:right;
1061 float:right;
1063 background:#FFF;
1062 background:#FFF;
1064 text-align:right;
1063 text-align:right;
1065 margin:10px 0 0;
1064 margin:10px 0 0;
1066 padding:0;
1065 padding:0;
1067 }
1066 }
1068
1067
1069 #content div.box div.action select {
1068 #content div.box div.action select {
1070 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1069 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1071 font-size:11px;
1070 font-size:11px;
1072 margin:0;
1071 margin:0;
1073 }
1072 }
1074
1073
1075 #content div.box div.action .ui-selectmenu {
1074 #content div.box div.action .ui-selectmenu {
1076 margin:0;
1075 margin:0;
1077 padding:0;
1076 padding:0;
1078 }
1077 }
1079
1078
1080 #content div.box div.pagination {
1079 #content div.box div.pagination {
1081 height:1%;
1080 height:1%;
1082 clear:both;
1081 clear:both;
1083 overflow:hidden;
1082 overflow:hidden;
1084 margin:10px 0 0;
1083 margin:10px 0 0;
1085 padding:0;
1084 padding:0;
1086 }
1085 }
1087
1086
1088 #content div.box div.pagination ul.pager {
1087 #content div.box div.pagination ul.pager {
1089 float:right;
1088 float:right;
1090 text-align:right;
1089 text-align:right;
1091 margin:0;
1090 margin:0;
1092 padding:0;
1091 padding:0;
1093 }
1092 }
1094
1093
1095 #content div.box div.pagination ul.pager li {
1094 #content div.box div.pagination ul.pager li {
1096 height:1%;
1095 height:1%;
1097 float:left;
1096 float:left;
1098 list-style:none;
1097 list-style:none;
1099 background:#ebebeb url("../images/pager.png") repeat-x;
1098 background:#ebebeb url("../images/pager.png") repeat-x;
1100 border-top:1px solid #dedede;
1099 border-top:1px solid #dedede;
1101 border-left:1px solid #cfcfcf;
1100 border-left:1px solid #cfcfcf;
1102 border-right:1px solid #c4c4c4;
1101 border-right:1px solid #c4c4c4;
1103 border-bottom:1px solid #c4c4c4;
1102 border-bottom:1px solid #c4c4c4;
1104 color:#4A4A4A;
1103 color:#4A4A4A;
1105 font-weight:700;
1104 font-weight:700;
1106 margin:0 0 0 4px;
1105 margin:0 0 0 4px;
1107 padding:0;
1106 padding:0;
1108 }
1107 }
1109
1108
1110 #content div.box div.pagination ul.pager li.separator {
1109 #content div.box div.pagination ul.pager li.separator {
1111 padding:6px;
1110 padding:6px;
1112 }
1111 }
1113
1112
1114 #content div.box div.pagination ul.pager li.current {
1113 #content div.box div.pagination ul.pager li.current {
1115 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1114 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1116 border-top:1px solid #ccc;
1115 border-top:1px solid #ccc;
1117 border-left:1px solid #bebebe;
1116 border-left:1px solid #bebebe;
1118 border-right:1px solid #b1b1b1;
1117 border-right:1px solid #b1b1b1;
1119 border-bottom:1px solid #afafaf;
1118 border-bottom:1px solid #afafaf;
1120 color:#515151;
1119 color:#515151;
1121 padding:6px;
1120 padding:6px;
1122 }
1121 }
1123
1122
1124 #content div.box div.pagination ul.pager li a {
1123 #content div.box div.pagination ul.pager li a {
1125 height:1%;
1124 height:1%;
1126 display:block;
1125 display:block;
1127 float:left;
1126 float:left;
1128 color:#515151;
1127 color:#515151;
1129 text-decoration:none;
1128 text-decoration:none;
1130 margin:0;
1129 margin:0;
1131 padding:6px;
1130 padding:6px;
1132 }
1131 }
1133
1132
1134 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active {
1133 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active {
1135 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1134 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1136 border-top:1px solid #ccc;
1135 border-top:1px solid #ccc;
1137 border-left:1px solid #bebebe;
1136 border-left:1px solid #bebebe;
1138 border-right:1px solid #b1b1b1;
1137 border-right:1px solid #b1b1b1;
1139 border-bottom:1px solid #afafaf;
1138 border-bottom:1px solid #afafaf;
1140 margin:-1px;
1139 margin:-1px;
1141 }
1140 }
1142
1141
1143 #content div.box div.pagination-wh {
1142 #content div.box div.pagination-wh {
1144 height:1%;
1143 height:1%;
1145 clear:both;
1144 clear:both;
1146 overflow:hidden;
1145 overflow:hidden;
1147 text-align:right;
1146 text-align:right;
1148 margin:10px 0 0;
1147 margin:10px 0 0;
1149 padding:0;
1148 padding:0;
1150 }
1149 }
1151
1150
1152 #content div.box div.pagination-right {
1151 #content div.box div.pagination-right {
1153 float:right;
1152 float:right;
1154 }
1153 }
1155
1154
1156 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot {
1155 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot {
1157 height:1%;
1156 height:1%;
1158 float:left;
1157 float:left;
1159 background:#ebebeb url("../images/pager.png") repeat-x;
1158 background:#ebebeb url("../images/pager.png") repeat-x;
1160 border-top:1px solid #dedede;
1159 border-top:1px solid #dedede;
1161 border-left:1px solid #cfcfcf;
1160 border-left:1px solid #cfcfcf;
1162 border-right:1px solid #c4c4c4;
1161 border-right:1px solid #c4c4c4;
1163 border-bottom:1px solid #c4c4c4;
1162 border-bottom:1px solid #c4c4c4;
1164 color:#4A4A4A;
1163 color:#4A4A4A;
1165 font-weight:700;
1164 font-weight:700;
1166 margin:0 0 0 4px;
1165 margin:0 0 0 4px;
1167 padding:6px;
1166 padding:6px;
1168 }
1167 }
1169
1168
1170 #content div.box div.pagination-wh span.pager_curpage {
1169 #content div.box div.pagination-wh span.pager_curpage {
1171 height:1%;
1170 height:1%;
1172 float:left;
1171 float:left;
1173 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1172 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1174 border-top:1px solid #ccc;
1173 border-top:1px solid #ccc;
1175 border-left:1px solid #bebebe;
1174 border-left:1px solid #bebebe;
1176 border-right:1px solid #b1b1b1;
1175 border-right:1px solid #b1b1b1;
1177 border-bottom:1px solid #afafaf;
1176 border-bottom:1px solid #afafaf;
1178 color:#515151;
1177 color:#515151;
1179 font-weight:700;
1178 font-weight:700;
1180 margin:0 0 0 4px;
1179 margin:0 0 0 4px;
1181 padding:6px;
1180 padding:6px;
1182 }
1181 }
1183
1182
1184 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active {
1183 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active {
1185 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1184 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1186 border-top:1px solid #ccc;
1185 border-top:1px solid #ccc;
1187 border-left:1px solid #bebebe;
1186 border-left:1px solid #bebebe;
1188 border-right:1px solid #b1b1b1;
1187 border-right:1px solid #b1b1b1;
1189 border-bottom:1px solid #afafaf;
1188 border-bottom:1px solid #afafaf;
1190 text-decoration:none;
1189 text-decoration:none;
1191 }
1190 }
1192
1191
1193 #content div.box div.traffic div.legend {
1192 #content div.box div.traffic div.legend {
1194 clear:both;
1193 clear:both;
1195 overflow:hidden;
1194 overflow:hidden;
1196 border-bottom:1px solid #ddd;
1195 border-bottom:1px solid #ddd;
1197 margin:0 0 10px;
1196 margin:0 0 10px;
1198 padding:0 0 10px;
1197 padding:0 0 10px;
1199 }
1198 }
1200
1199
1201 #content div.box div.traffic div.legend h6 {
1200 #content div.box div.traffic div.legend h6 {
1202 float:left;
1201 float:left;
1203 border:none;
1202 border:none;
1204 margin:0;
1203 margin:0;
1205 padding:0;
1204 padding:0;
1206 }
1205 }
1207
1206
1208 #content div.box div.traffic div.legend li {
1207 #content div.box div.traffic div.legend li {
1209 list-style:none;
1208 list-style:none;
1210 float:left;
1209 float:left;
1211 font-size:11px;
1210 font-size:11px;
1212 margin:0;
1211 margin:0;
1213 padding:0 8px 0 4px;
1212 padding:0 8px 0 4px;
1214 }
1213 }
1215
1214
1216 #content div.box div.traffic div.legend li.visits {
1215 #content div.box div.traffic div.legend li.visits {
1217 border-left:12px solid #edc240;
1216 border-left:12px solid #edc240;
1218 }
1217 }
1219
1218
1220 #content div.box div.traffic div.legend li.pageviews {
1219 #content div.box div.traffic div.legend li.pageviews {
1221 border-left:12px solid #afd8f8;
1220 border-left:12px solid #afd8f8;
1222 }
1221 }
1223
1222
1224 #content div.box div.traffic table {
1223 #content div.box div.traffic table {
1225 width:auto;
1224 width:auto;
1226 }
1225 }
1227
1226
1228 #content div.box div.traffic table td {
1227 #content div.box div.traffic table td {
1229 background:transparent;
1228 background:transparent;
1230 border:none;
1229 border:none;
1231 padding:2px 3px 3px;
1230 padding:2px 3px 3px;
1232 }
1231 }
1233
1232
1234 #content div.box div.traffic table td.legendLabel {
1233 #content div.box div.traffic table td.legendLabel {
1235 padding:0 3px 2px;
1234 padding:0 3px 2px;
1236 }
1235 }
1237
1236
1238 #footer {
1237 #footer {
1239 clear:both;
1238 clear:both;
1240 overflow:hidden;
1239 overflow:hidden;
1241 text-align:right;
1240 text-align:right;
1242 margin:0;
1241 margin:0;
1243 padding:0 30px 4px;
1242 padding:0 30px 4px;
1244 margin:-10px 0 0;
1243 margin:-10px 0 0;
1245 }
1244 }
1246
1245
1247 #footer div#footer-inner {
1246 #footer div#footer-inner {
1248 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
1247 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
1249 border-top:2px solid #FFFFFF;
1248 border-top:2px solid #FFFFFF;
1250 }
1249 }
1251
1250
1252 #footer div#footer-inner p {
1251 #footer div#footer-inner p {
1253 padding:15px 25px 15px 0;
1252 padding:15px 25px 15px 0;
1254 color:#FFF;
1253 color:#FFF;
1255 font-weight:700;
1254 font-weight:700;
1256 }
1255 }
1257 #footer div#footer-inner .footer-link {
1256 #footer div#footer-inner .footer-link {
1258 float:left;
1257 float:left;
1259 padding-left:10px;
1258 padding-left:10px;
1260 }
1259 }
1261 #footer div#footer-inner .footer-link a {
1260 #footer div#footer-inner .footer-link a {
1262 color:#FFF;
1261 color:#FFF;
1263 }
1262 }
1264
1263
1265 #login div.title {
1264 #login div.title {
1266 width:420px;
1265 width:420px;
1267 clear:both;
1266 clear:both;
1268 overflow:hidden;
1267 overflow:hidden;
1269 position:relative;
1268 position:relative;
1270 background:#003367 url("../../images/header_inner.png") repeat-x;
1269 background:#003367 url("../../images/header_inner.png") repeat-x;
1271 margin:0 auto;
1270 margin:0 auto;
1272 padding:0;
1271 padding:0;
1273 }
1272 }
1274
1273
1275 #login div.inner {
1274 #login div.inner {
1276 width:380px;
1275 width:380px;
1277 background:#FFF url("../images/login.png") no-repeat top left;
1276 background:#FFF url("../images/login.png") no-repeat top left;
1278 border-top:none;
1277 border-top:none;
1279 border-bottom:none;
1278 border-bottom:none;
1280 margin:0 auto;
1279 margin:0 auto;
1281 padding:20px;
1280 padding:20px;
1282 }
1281 }
1283
1282
1284 #login div.form div.fields div.field div.label {
1283 #login div.form div.fields div.field div.label {
1285 width:173px;
1284 width:173px;
1286 float:left;
1285 float:left;
1287 text-align:right;
1286 text-align:right;
1288 margin:2px 10px 0 0;
1287 margin:2px 10px 0 0;
1289 padding:5px 0 0 5px;
1288 padding:5px 0 0 5px;
1290 }
1289 }
1291
1290
1292 #login div.form div.fields div.field div.input input {
1291 #login div.form div.fields div.field div.input input {
1293 width:176px;
1292 width:176px;
1294 background:#FFF;
1293 background:#FFF;
1295 border-top:1px solid #b3b3b3;
1294 border-top:1px solid #b3b3b3;
1296 border-left:1px solid #b3b3b3;
1295 border-left:1px solid #b3b3b3;
1297 border-right:1px solid #eaeaea;
1296 border-right:1px solid #eaeaea;
1298 border-bottom:1px solid #eaeaea;
1297 border-bottom:1px solid #eaeaea;
1299 color:#000;
1298 color:#000;
1300 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1299 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1301 font-size:11px;
1300 font-size:11px;
1302 margin:0;
1301 margin:0;
1303 padding:7px 7px 6px;
1302 padding:7px 7px 6px;
1304 }
1303 }
1305
1304
1306 #login div.form div.fields div.buttons {
1305 #login div.form div.fields div.buttons {
1307 clear:both;
1306 clear:both;
1308 overflow:hidden;
1307 overflow:hidden;
1309 border-top:1px solid #DDD;
1308 border-top:1px solid #DDD;
1310 text-align:right;
1309 text-align:right;
1311 margin:0;
1310 margin:0;
1312 padding:10px 0 0;
1311 padding:10px 0 0;
1313 }
1312 }
1314
1313
1315 #login div.form div.links {
1314 #login div.form div.links {
1316 clear:both;
1315 clear:both;
1317 overflow:hidden;
1316 overflow:hidden;
1318 margin:10px 0 0;
1317 margin:10px 0 0;
1319 padding:0 0 2px;
1318 padding:0 0 2px;
1320 }
1319 }
1321
1320
1322 #register div.title {
1321 #register div.title {
1323 width:420px;
1322 width:420px;
1324 clear:both;
1323 clear:both;
1325 overflow:hidden;
1324 overflow:hidden;
1326 position:relative;
1325 position:relative;
1327 background:#003367 url("../images/header_inner.png") repeat-x;
1326 background:#003367 url("../images/header_inner.png") repeat-x;
1328 margin:0 auto;
1327 margin:0 auto;
1329 padding:0;
1328 padding:0;
1330 }
1329 }
1331
1330
1332 #register div.inner {
1331 #register div.inner {
1333 width:380px;
1332 width:380px;
1334 background:#FFF;
1333 background:#FFF;
1335 border-top:none;
1334 border-top:none;
1336 border-bottom:none;
1335 border-bottom:none;
1337 margin:0 auto;
1336 margin:0 auto;
1338 padding:20px;
1337 padding:20px;
1339 }
1338 }
1340
1339
1341 #register div.form div.fields div.field div.label {
1340 #register div.form div.fields div.field div.label {
1342 width:100px;
1341 width:100px;
1343 float:left;
1342 float:left;
1344 text-align:right;
1343 text-align:right;
1345 margin:2px 10px 0 0;
1344 margin:2px 10px 0 0;
1346 padding:5px 0 0 5px;
1345 padding:5px 0 0 5px;
1347 }
1346 }
1348
1347
1349 #register div.form div.fields div.field div.input input {
1348 #register div.form div.fields div.field div.input input {
1350 width:245px;
1349 width:245px;
1351 background:#FFF;
1350 background:#FFF;
1352 border-top:1px solid #b3b3b3;
1351 border-top:1px solid #b3b3b3;
1353 border-left:1px solid #b3b3b3;
1352 border-left:1px solid #b3b3b3;
1354 border-right:1px solid #eaeaea;
1353 border-right:1px solid #eaeaea;
1355 border-bottom:1px solid #eaeaea;
1354 border-bottom:1px solid #eaeaea;
1356 color:#000;
1355 color:#000;
1357 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1356 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1358 font-size:11px;
1357 font-size:11px;
1359 margin:0;
1358 margin:0;
1360 padding:7px 7px 6px;
1359 padding:7px 7px 6px;
1361 }
1360 }
1362
1361
1363 #register div.form div.fields div.buttons {
1362 #register div.form div.fields div.buttons {
1364 clear:both;
1363 clear:both;
1365 overflow:hidden;
1364 overflow:hidden;
1366 border-top:1px solid #DDD;
1365 border-top:1px solid #DDD;
1367 text-align:left;
1366 text-align:left;
1368 margin:0;
1367 margin:0;
1369 padding:10px 0 0 114px;
1368 padding:10px 0 0 114px;
1370 }
1369 }
1371
1370
1372 #register div.form div.fields div.buttons div.highlight input.ui-state-default {
1371 #register div.form div.fields div.buttons div.highlight input.ui-state-default {
1373 background:url("../images/button_highlight.png") repeat-x scroll 0 0 #4E85BB;
1372 background:url("../images/button_highlight.png") repeat-x scroll 0 0 #4E85BB;
1374 color:#FFF;
1373 color:#FFF;
1375 border-color:#5C91A4 #2B7089 #1A6480 #2A6F89;
1374 border-color:#5C91A4 #2B7089 #1A6480 #2A6F89;
1376 border-style:solid;
1375 border-style:solid;
1377 border-width:1px;
1376 border-width:1px;
1378 }
1377 }
1379
1378
1380 #register div.form div.activation_msg {
1379 #register div.form div.activation_msg {
1381 padding-top:4px;
1380 padding-top:4px;
1382 padding-bottom:4px;
1381 padding-bottom:4px;
1383 }
1382 }
1384
1383
1385 .trending_language_tbl,.trending_language_tbl td {
1384 .trending_language_tbl,.trending_language_tbl td {
1386 border:0 !important;
1385 border:0 !important;
1387 margin:0 !important;
1386 margin:0 !important;
1388 padding:0 !important;
1387 padding:0 !important;
1389 }
1388 }
1390
1389
1391 .trending_language {
1390 .trending_language {
1392 background-color:#003367;
1391 background-color:#003367;
1393 color:#FFF;
1392 color:#FFF;
1394 display:block;
1393 display:block;
1395 min-width:20px;
1394 min-width:20px;
1396 max-width:400px;
1397 text-decoration:none;
1395 text-decoration:none;
1398 height:12px;
1396 height:12px;
1399 margin-bottom:4px;
1397 margin-bottom:4px;
1400 margin-left:5px;
1398 margin-left:5px;
1401 white-space:pre;
1399 white-space:pre;
1402 padding:3px;
1400 padding:3px;
1403 }
1401 }
1404
1402
1405 h3.files_location {
1403 h3.files_location {
1406 font-size:1.8em;
1404 font-size:1.8em;
1407 font-weight:700;
1405 font-weight:700;
1408 border-bottom:none !important;
1406 border-bottom:none !important;
1409 margin:10px 0 !important;
1407 margin:10px 0 !important;
1410 }
1408 }
1411
1409
1412 #files_data dl dt {
1410 #files_data dl dt {
1413 float:left;
1411 float:left;
1414 width:115px;
1412 width:115px;
1415 margin:0 !important;
1413 margin:0 !important;
1416 padding:5px;
1414 padding:5px;
1417 }
1415 }
1418
1416
1419 #files_data dl dd {
1417 #files_data dl dd {
1420 margin:0 !important;
1418 margin:0 !important;
1421 padding:5px !important;
1419 padding:5px !important;
1422 }
1420 }
1423
1421
1424 #changeset_content {
1422 #changeset_content {
1425 border:1px solid #CCC;
1423 border:1px solid #CCC;
1426 padding:5px;
1424 padding:5px;
1427 }
1425 }
1428
1426
1429 #changeset_content .container {
1427 #changeset_content .container {
1430 min-height:120px;
1428 min-height:120px;
1431 font-size:1.2em;
1429 font-size:1.2em;
1432 overflow:hidden;
1430 overflow:hidden;
1433 }
1431 }
1434
1432
1435 #changeset_content .container .right {
1433 #changeset_content .container .right {
1436 float:right;
1434 float:right;
1437 width:25%;
1435 width:25%;
1438 text-align:right;
1436 text-align:right;
1439 }
1437 }
1440
1438
1441 #changeset_content .container .left .message {
1439 #changeset_content .container .left .message {
1442 font-style:italic;
1440 font-style:italic;
1443 color:#556CB5;
1441 color:#556CB5;
1444 white-space:pre-wrap;
1442 white-space:pre-wrap;
1445 }
1443 }
1446
1444
1447 .cs_files .cs_added {
1445 .cs_files .cs_added {
1448 background:url("../images/icons/page_white_add.png") no-repeat scroll 3px;
1446 background:url("../images/icons/page_white_add.png") no-repeat scroll 3px;
1449 height:16px;
1447 height:16px;
1450 padding-left:20px;
1448 padding-left:20px;
1451 margin-top:7px;
1449 margin-top:7px;
1452 text-align:left;
1450 text-align:left;
1453 }
1451 }
1454
1452
1455 .cs_files .cs_changed {
1453 .cs_files .cs_changed {
1456 background:url("../images/icons/page_white_edit.png") no-repeat scroll 3px;
1454 background:url("../images/icons/page_white_edit.png") no-repeat scroll 3px;
1457 height:16px;
1455 height:16px;
1458 padding-left:20px;
1456 padding-left:20px;
1459 margin-top:7px;
1457 margin-top:7px;
1460 text-align:left;
1458 text-align:left;
1461 }
1459 }
1462
1460
1463 .cs_files .cs_removed {
1461 .cs_files .cs_removed {
1464 background:url("../images/icons/page_white_delete.png") no-repeat scroll 3px;
1462 background:url("../images/icons/page_white_delete.png") no-repeat scroll 3px;
1465 height:16px;
1463 height:16px;
1466 padding-left:20px;
1464 padding-left:20px;
1467 margin-top:7px;
1465 margin-top:7px;
1468 text-align:left;
1466 text-align:left;
1469 }
1467 }
1470
1468
1471 #graph {
1469 #graph {
1472 overflow:hidden;
1470 overflow:hidden;
1473 }
1471 }
1474
1472
1475 #graph_nodes {
1473 #graph_nodes {
1476 width:160px;
1474 width:160px;
1477 float:left;
1475 float:left;
1478 margin-left:-50px;
1476 margin-left:-50px;
1479 margin-top:5px;
1477 margin-top:5px;
1480 }
1478 }
1481
1479
1482 #graph_content {
1480 #graph_content {
1483 width:800px;
1481 width:800px;
1484 float:left;
1482 float:left;
1485 }
1483 }
1486
1484
1487 #graph_content .container_header {
1485 #graph_content .container_header {
1488 border:1px solid #CCC;
1486 border:1px solid #CCC;
1489 padding:10px;
1487 padding:10px;
1490 }
1488 }
1491
1489
1492 #graph_content .container {
1490 #graph_content .container {
1493 border-bottom:1px solid #CCC;
1491 border-bottom:1px solid #CCC;
1494 border-left:1px solid #CCC;
1492 border-left:1px solid #CCC;
1495 border-right:1px solid #CCC;
1493 border-right:1px solid #CCC;
1496 min-height:80px;
1494 min-height:80px;
1497 overflow:hidden;
1495 overflow:hidden;
1498 font-size:1.2em;
1496 font-size:1.2em;
1499 }
1497 }
1500
1498
1501 #graph_content .container .right {
1499 #graph_content .container .right {
1502 float:right;
1500 float:right;
1503 width:28%;
1501 width:28%;
1504 text-align:right;
1502 text-align:right;
1505 padding-bottom:5px;
1503 padding-bottom:5px;
1506 }
1504 }
1507
1505
1508 #graph_content .container .left .date {
1506 #graph_content .container .left .date {
1509 font-weight:700;
1507 font-weight:700;
1510 padding-bottom:5px;
1508 padding-bottom:5px;
1511 }
1509 }
1512
1510
1513 #graph_content .container .left .message {
1511 #graph_content .container .left .message {
1514 font-size:100%;
1512 font-size:100%;
1515 padding-top:3px;
1513 padding-top:3px;
1516 white-space:pre-wrap;
1514 white-space:pre-wrap;
1517 }
1515 }
1518
1516
1519 .right div {
1517 .right div {
1520 clear:both;
1518 clear:both;
1521 }
1519 }
1522
1520
1523 .right .changes .added,.changed,.removed {
1521 .right .changes .added,.changed,.removed {
1524 border:1px solid #DDD;
1522 border:1px solid #DDD;
1525 display:block;
1523 display:block;
1526 float:right;
1524 float:right;
1527 text-align:center;
1525 text-align:center;
1528 min-width:15px;
1526 min-width:15px;
1529 }
1527 }
1530
1528
1531 .right .changes .added {
1529 .right .changes .added {
1532 background:#BFB;
1530 background:#BFB;
1533 }
1531 }
1534
1532
1535 .right .changes .changed {
1533 .right .changes .changed {
1536 background:#FD8;
1534 background:#FD8;
1537 }
1535 }
1538
1536
1539 .right .changes .removed {
1537 .right .changes .removed {
1540 background:#F88;
1538 background:#F88;
1541 }
1539 }
1542
1540
1543 .right .merge {
1541 .right .merge {
1544 vertical-align:top;
1542 vertical-align:top;
1545 font-size:0.75em;
1543 font-size:0.75em;
1546 font-weight:700;
1544 font-weight:700;
1547 }
1545 }
1548
1546
1549 .right .parent {
1547 .right .parent {
1550 font-size:90%;
1548 font-size:90%;
1551 font-family:monospace;
1549 font-family:monospace;
1552 }
1550 }
1553
1551
1554 .right .logtags .branchtag {
1552 .right .logtags .branchtag {
1555 background:#FFF url("../images/icons/arrow_branch.png") no-repeat right 6px;
1553 background:#FFF url("../images/icons/arrow_branch.png") no-repeat right 6px;
1556 display:block;
1554 display:block;
1557 font-size:0.8em;
1555 font-size:0.8em;
1558 padding:11px 16px 0 0;
1556 padding:11px 16px 0 0;
1559 }
1557 }
1560
1558
1561 .right .logtags .tagtag {
1559 .right .logtags .tagtag {
1562 background:#FFF url("../images/icons/tag_blue.png") no-repeat right 6px;
1560 background:#FFF url("../images/icons/tag_blue.png") no-repeat right 6px;
1563 display:block;
1561 display:block;
1564 font-size:0.8em;
1562 font-size:0.8em;
1565 padding:11px 16px 0 0;
1563 padding:11px 16px 0 0;
1566 }
1564 }
1567
1565
1568 div.browserblock {
1566 div.browserblock {
1569 overflow:hidden;
1567 overflow:hidden;
1570 border:1px solid #ccc;
1568 border:1px solid #ccc;
1571 background:#f8f8f8;
1569 background:#f8f8f8;
1572 font-size:100%;
1570 font-size:100%;
1573 line-height:125%;
1571 line-height:125%;
1574 padding:0;
1572 padding:0;
1575 }
1573 }
1576
1574
1577 div.browserblock .browser-header {
1575 div.browserblock .browser-header {
1578 border-bottom:1px solid #CCC;
1576 border-bottom:1px solid #CCC;
1579 background:#FFF;
1577 background:#FFF;
1580 color:blue;
1578 color:blue;
1581 padding:10px 0;
1579 padding:10px 0;
1582 }
1580 }
1583
1581
1584 div.browserblock .browser-header span {
1582 div.browserblock .browser-header span {
1585 margin-left:25px;
1583 margin-left:25px;
1586 font-weight:700;
1584 font-weight:700;
1587 }
1585 }
1588
1586
1589 div.browserblock .browser-body {
1587 div.browserblock .browser-body {
1590 background:#EEE;
1588 background:#EEE;
1591 }
1589 }
1592
1590
1593 table.code-browser {
1591 table.code-browser {
1594 border-collapse:collapse;
1592 border-collapse:collapse;
1595 width:100%;
1593 width:100%;
1596 }
1594 }
1597
1595
1598 table.code-browser tr {
1596 table.code-browser tr {
1599 margin:3px;
1597 margin:3px;
1600 }
1598 }
1601
1599
1602 table.code-browser thead th {
1600 table.code-browser thead th {
1603 background-color:#EEE;
1601 background-color:#EEE;
1604 height:20px;
1602 height:20px;
1605 font-size:1.1em;
1603 font-size:1.1em;
1606 font-weight:700;
1604 font-weight:700;
1607 text-align:left;
1605 text-align:left;
1608 padding-left:10px;
1606 padding-left:10px;
1609 }
1607 }
1610
1608
1611 table.code-browser tbody td {
1609 table.code-browser tbody td {
1612 padding-left:10px;
1610 padding-left:10px;
1613 height:20px;
1611 height:20px;
1614 }
1612 }
1615
1613
1616 table.code-browser .browser-file {
1614 table.code-browser .browser-file {
1617 background:url("../images/icons/document_16.png") no-repeat scroll 3px;
1615 background:url("../images/icons/document_16.png") no-repeat scroll 3px;
1618 height:16px;
1616 height:16px;
1619 padding-left:20px;
1617 padding-left:20px;
1620 text-align:left;
1618 text-align:left;
1621 }
1619 }
1622
1620
1623 table.code-browser .browser-dir {
1621 table.code-browser .browser-dir {
1624 background:url("../images/icons/folder_16.png") no-repeat scroll 3px;
1622 background:url("../images/icons/folder_16.png") no-repeat scroll 3px;
1625 height:16px;
1623 height:16px;
1626 padding-left:20px;
1624 padding-left:20px;
1627 text-align:left;
1625 text-align:left;
1628 }
1626 }
1629
1627
1630 .box .search {
1628 .box .search {
1631 clear:both;
1629 clear:both;
1632 overflow:hidden;
1630 overflow:hidden;
1633 margin:0;
1631 margin:0;
1634 padding:0 20px 10px;
1632 padding:0 20px 10px;
1635 }
1633 }
1636
1634
1637 .box .search div.search_path {
1635 .box .search div.search_path {
1638 background:none repeat scroll 0 0 #EEE;
1636 background:none repeat scroll 0 0 #EEE;
1639 border:1px solid #CCC;
1637 border:1px solid #CCC;
1640 color:blue;
1638 color:blue;
1641 margin-bottom:10px;
1639 margin-bottom:10px;
1642 padding:10px 0;
1640 padding:10px 0;
1643 }
1641 }
1644
1642
1645 .box .search div.search_path div.link {
1643 .box .search div.search_path div.link {
1646 font-weight:700;
1644 font-weight:700;
1647 margin-left:25px;
1645 margin-left:25px;
1648 }
1646 }
1649
1647
1650 .box .search div.search_path div.link a {
1648 .box .search div.search_path div.link a {
1651 color:#003367;
1649 color:#003367;
1652 cursor:pointer;
1650 cursor:pointer;
1653 text-decoration:none;
1651 text-decoration:none;
1654 }
1652 }
1655
1653
1656 #path_unlock {
1654 #path_unlock {
1657 color:red;
1655 color:red;
1658 font-size:1.2em;
1656 font-size:1.2em;
1659 padding-left:4px;
1657 padding-left:4px;
1660 }
1658 }
1661
1659
1662 .info_box * {
1660 .info_box * {
1663 background:url("../../images/pager.png") repeat-x scroll 0 0 #EBEBEB;
1661 background:url("../../images/pager.png") repeat-x scroll 0 0 #EBEBEB;
1664 color:#4A4A4A;
1662 color:#4A4A4A;
1665 font-weight:700;
1663 font-weight:700;
1666 height:1%;
1664 height:1%;
1667 display:inline;
1665 display:inline;
1668 border-color:#DEDEDE #C4C4C4 #C4C4C4 #CFCFCF;
1666 border-color:#DEDEDE #C4C4C4 #C4C4C4 #CFCFCF;
1669 border-style:solid;
1667 border-style:solid;
1670 border-width:1px;
1668 border-width:1px;
1671 padding:4px 6px;
1669 padding:4px 6px;
1672 }
1670 }
1673
1671
1674 .info_box span {
1672 .info_box span {
1675 margin-left:3px;
1673 margin-left:3px;
1676 margin-right:3px;
1674 margin-right:3px;
1677 }
1675 }
1678
1676
1679 .info_box input#at_rev {
1677 .info_box input#at_rev {
1680 text-align:center;
1678 text-align:center;
1681 padding:5px 3px 3px 2px;
1679 padding:5px 3px 3px 2px;
1682 }
1680 }
1683
1681
1684 .info_box input#view {
1682 .info_box input#view {
1685 text-align:center;
1683 text-align:center;
1686 padding:4px 3px 2px 2px;
1684 padding:4px 3px 2px 2px;
1687 }
1685 }
1688
1686
1689 .yui-overlay,.yui-panel-container {
1687 .yui-overlay,.yui-panel-container {
1690 visibility:hidden;
1688 visibility:hidden;
1691 position:absolute;
1689 position:absolute;
1692 z-index:2;
1690 z-index:2;
1693 }
1691 }
1694
1692
1695 .yui-tt {
1693 .yui-tt {
1696 visibility:hidden;
1694 visibility:hidden;
1697 position:absolute;
1695 position:absolute;
1698 color:#666;
1696 color:#666;
1699 background-color:#FFF;
1697 background-color:#FFF;
1700 font-family:arial, helvetica, verdana, sans-serif;
1698 font-family:arial, helvetica, verdana, sans-serif;
1701 border:2px solid #003367;
1699 border:2px solid #003367;
1702 font:100% sans-serif;
1700 font:100% sans-serif;
1703 width:auto;
1701 width:auto;
1704 opacity:1px;
1702 opacity:1px;
1705 padding:8px;
1703 padding:8px;
1706 white-space: pre;
1704 white-space: pre;
1707 }
1705 }
1708
1706
1709 .ac {
1707 .ac {
1710 vertical-align:top;
1708 vertical-align:top;
1711 }
1709 }
1712
1710
1713 .ac .yui-ac {
1711 .ac .yui-ac {
1714 position:relative;
1712 position:relative;
1715 font-family:arial;
1713 font-family:arial;
1716 font-size:100%;
1714 font-size:100%;
1717 }
1715 }
1718
1716
1719 .ac .perm_ac {
1717 .ac .perm_ac {
1720 width:15em;
1718 width:15em;
1721 }
1719 }
1722
1720
1723 .ac .yui-ac-input {
1721 .ac .yui-ac-input {
1724 width:100%;
1722 width:100%;
1725 }
1723 }
1726
1724
1727 .ac .yui-ac-container {
1725 .ac .yui-ac-container {
1728 position:absolute;
1726 position:absolute;
1729 top:1.6em;
1727 top:1.6em;
1730 width:100%;
1728 width:100%;
1731 }
1729 }
1732
1730
1733 .ac .yui-ac-content {
1731 .ac .yui-ac-content {
1734 position:absolute;
1732 position:absolute;
1735 width:100%;
1733 width:100%;
1736 border:1px solid gray;
1734 border:1px solid gray;
1737 background:#fff;
1735 background:#fff;
1738 overflow:hidden;
1736 overflow:hidden;
1739 z-index:9050;
1737 z-index:9050;
1740 }
1738 }
1741
1739
1742 .ac .yui-ac-shadow {
1740 .ac .yui-ac-shadow {
1743 position:absolute;
1741 position:absolute;
1744 width:100%;
1742 width:100%;
1745 background:#000;
1743 background:#000;
1746 -moz-opacity:0.1px;
1744 -moz-opacity:0.1px;
1747 opacity:.10;
1745 opacity:.10;
1748 filter:alpha(opacity = 10);
1746 filter:alpha(opacity = 10);
1749 z-index:9049;
1747 z-index:9049;
1750 margin:.3em;
1748 margin:.3em;
1751 }
1749 }
1752
1750
1753 .ac .yui-ac-content ul {
1751 .ac .yui-ac-content ul {
1754 width:100%;
1752 width:100%;
1755 margin:0;
1753 margin:0;
1756 padding:0;
1754 padding:0;
1757 }
1755 }
1758
1756
1759 .ac .yui-ac-content li {
1757 .ac .yui-ac-content li {
1760 cursor:default;
1758 cursor:default;
1761 white-space:nowrap;
1759 white-space:nowrap;
1762 margin:0;
1760 margin:0;
1763 padding:2px 5px;
1761 padding:2px 5px;
1764 }
1762 }
1765
1763
1766 .ac .yui-ac-content li.yui-ac-prehighlight {
1764 .ac .yui-ac-content li.yui-ac-prehighlight {
1767 background:#B3D4FF;
1765 background:#B3D4FF;
1768 }
1766 }
1769
1767
1770 .ac .yui-ac-content li.yui-ac-highlight {
1768 .ac .yui-ac-content li.yui-ac-highlight {
1771 background:#556CB5;
1769 background:#556CB5;
1772 color:#FFF;
1770 color:#FFF;
1773 }
1771 }
1774
1772
1775 .add_icon {
1773 .add_icon {
1776 background:url("../images/icons/add.png") no-repeat scroll 3px;
1774 background:url("../images/icons/add.png") no-repeat scroll 3px;
1777 height:16px;
1775 height:16px;
1778 padding-left:20px;
1776 padding-left:20px;
1779 padding-top:1px;
1777 padding-top:1px;
1780 text-align:left;
1778 text-align:left;
1781 }
1779 }
1782
1780
1783 .edit_icon {
1781 .edit_icon {
1784 background:url("../images/icons/folder_edit.png") no-repeat scroll 3px;
1782 background:url("../images/icons/folder_edit.png") no-repeat scroll 3px;
1785 height:16px;
1783 height:16px;
1786 padding-left:20px;
1784 padding-left:20px;
1787 padding-top:1px;
1785 padding-top:1px;
1788 text-align:left;
1786 text-align:left;
1789 }
1787 }
1790
1788
1791 .delete_icon {
1789 .delete_icon {
1792 background:url("../images/icons/delete.png") no-repeat scroll 3px;
1790 background:url("../images/icons/delete.png") no-repeat scroll 3px;
1793 height:16px;
1791 height:16px;
1794 padding-left:20px;
1792 padding-left:20px;
1795 padding-top:1px;
1793 padding-top:1px;
1796 text-align:left;
1794 text-align:left;
1797 }
1795 }
1798
1796
1799 .rss_icon {
1797 .rss_icon {
1800 background:url("../images/icons/rss_16.png") no-repeat scroll 3px;
1798 background:url("../images/icons/rss_16.png") no-repeat scroll 3px;
1801 height:16px;
1799 height:16px;
1802 padding-left:20px;
1800 padding-left:20px;
1803 padding-top:1px;
1801 padding-top:1px;
1804 text-align:left;
1802 text-align:left;
1805 }
1803 }
1806
1804
1807 .atom_icon {
1805 .atom_icon {
1808 background:url("../images/icons/atom.png") no-repeat scroll 3px;
1806 background:url("../images/icons/atom.png") no-repeat scroll 3px;
1809 height:16px;
1807 height:16px;
1810 padding-left:20px;
1808 padding-left:20px;
1811 padding-top:1px;
1809 padding-top:1px;
1812 text-align:left;
1810 text-align:left;
1813 }
1811 }
1814
1812
1815 .archive_icon {
1813 .archive_icon {
1816 background:url("../images/icons/compress.png") no-repeat scroll 3px;
1814 background:url("../images/icons/compress.png") no-repeat scroll 3px;
1817 height:16px;
1815 height:16px;
1818 padding-left:20px;
1816 padding-left:20px;
1819 text-align:left;
1817 text-align:left;
1820 padding-top:1px;
1818 padding-top:1px;
1821 }
1819 }
1822
1820
1823 .action_button {
1821 .action_button {
1824 border:0;
1822 border:0;
1825 display:block;
1823 display:block;
1826 }
1824 }
1827
1825
1828 .action_button:hover {
1826 .action_button:hover {
1829 border:0;
1827 border:0;
1830 text-decoration:underline;
1828 text-decoration:underline;
1831 cursor:pointer;
1829 cursor:pointer;
1832 }
1830 }
1833
1831
1834 #switch_repos {
1832 #switch_repos {
1835 position:absolute;
1833 position:absolute;
1836 height:25px;
1834 height:25px;
1837 z-index:1;
1835 z-index:1;
1838 }
1836 }
1839
1837
1840 #switch_repos select {
1838 #switch_repos select {
1841 min-width:150px;
1839 min-width:150px;
1842 max-height:250px;
1840 max-height:250px;
1843 z-index:1;
1841 z-index:1;
1844 }
1842 }
1845
1843
1846 .breadcrumbs {
1844 .breadcrumbs {
1847 border:medium none;
1845 border:medium none;
1848 color:#FFF;
1846 color:#FFF;
1849 float:left;
1847 float:left;
1850 text-transform:uppercase;
1848 text-transform:uppercase;
1851 font-weight:700;
1849 font-weight:700;
1852 font-size:14px;
1850 font-size:14px;
1853 margin:0;
1851 margin:0;
1854 padding:11px 0 11px 10px;
1852 padding:11px 0 11px 10px;
1855 }
1853 }
1856
1854
1857 .breadcrumbs a {
1855 .breadcrumbs a {
1858 color:#FFF;
1856 color:#FFF;
1859 }
1857 }
1860
1858
1861 .flash_msg ul {
1859 .flash_msg ul {
1862 margin:0;
1860 margin:0;
1863 padding:0 0 10px;
1861 padding:0 0 10px;
1864 }
1862 }
1865
1863
1866 .error_msg {
1864 .error_msg {
1867 background-color:#FFCFCF;
1865 background-color:#FFCFCF;
1868 background-image:url("../../images/icons/error_msg.png");
1866 background-image:url("../../images/icons/error_msg.png");
1869 border:1px solid #FF9595;
1867 border:1px solid #FF9595;
1870 color:#C30;
1868 color:#C30;
1871 }
1869 }
1872
1870
1873 .warning_msg {
1871 .warning_msg {
1874 background-color:#FFFBCC;
1872 background-color:#FFFBCC;
1875 background-image:url("../../images/icons/warning_msg.png");
1873 background-image:url("../../images/icons/warning_msg.png");
1876 border:1px solid #FFF35E;
1874 border:1px solid #FFF35E;
1877 color:#C69E00;
1875 color:#C69E00;
1878 }
1876 }
1879
1877
1880 .success_msg {
1878 .success_msg {
1881 background-color:#D5FFCF;
1879 background-color:#D5FFCF;
1882 background-image:url("../../images/icons/success_msg.png");
1880 background-image:url("../../images/icons/success_msg.png");
1883 border:1px solid #97FF88;
1881 border:1px solid #97FF88;
1884 color:#090;
1882 color:#090;
1885 }
1883 }
1886
1884
1887 .notice_msg {
1885 .notice_msg {
1888 background-color:#DCE3FF;
1886 background-color:#DCE3FF;
1889 background-image:url("../../images/icons/notice_msg.png");
1887 background-image:url("../../images/icons/notice_msg.png");
1890 border:1px solid #93A8FF;
1888 border:1px solid #93A8FF;
1891 color:#556CB5;
1889 color:#556CB5;
1892 }
1890 }
1893
1891
1894 .success_msg,.error_msg,.notice_msg,.warning_msg {
1892 .success_msg,.error_msg,.notice_msg,.warning_msg {
1895 background-position:10px center;
1893 background-position:10px center;
1896 background-repeat:no-repeat;
1894 background-repeat:no-repeat;
1897 font-size:12px;
1895 font-size:12px;
1898 font-weight:700;
1896 font-weight:700;
1899 min-height:14px;
1897 min-height:14px;
1900 line-height:14px;
1898 line-height:14px;
1901 margin-bottom:0;
1899 margin-bottom:0;
1902 margin-top:0;
1900 margin-top:0;
1903 display:block;
1901 display:block;
1904 overflow:auto;
1902 overflow:auto;
1905 padding:6px 10px 6px 40px;
1903 padding:6px 10px 6px 40px;
1906 }
1904 }
1907
1905
1908 #msg_close {
1906 #msg_close {
1909 background:transparent url("../../icons/cross_grey_small.png") no-repeat scroll 0 0;
1907 background:transparent url("../../icons/cross_grey_small.png") no-repeat scroll 0 0;
1910 cursor:pointer;
1908 cursor:pointer;
1911 height:16px;
1909 height:16px;
1912 position:absolute;
1910 position:absolute;
1913 right:5px;
1911 right:5px;
1914 top:5px;
1912 top:5px;
1915 width:16px;
1913 width:16px;
1916 }
1914 }
1917
1915
1918 div#legend_container table,div#legend_choices table {
1916 div#legend_container table,div#legend_choices table {
1919 width:auto !important;
1917 width:auto !important;
1920 }
1918 }
1921
1919
1922 table#permissions_manage {
1920 table#permissions_manage {
1923 width:0 !important;
1921 width:0 !important;
1924 }
1922 }
1925
1923
1926 table#permissions_manage span.private_repo_msg {
1924 table#permissions_manage span.private_repo_msg {
1927 font-size:0.8em;
1925 font-size:0.8em;
1928 opacity:0.6px;
1926 opacity:0.6px;
1929 }
1927 }
1930
1928
1931 table#permissions_manage td.private_repo_msg {
1929 table#permissions_manage td.private_repo_msg {
1932 font-size:0.8em;
1930 font-size:0.8em;
1933 }
1931 }
1934
1932
1935 table#permissions_manage tr#add_perm_input td {
1933 table#permissions_manage tr#add_perm_input td {
1936 vertical-align:middle;
1934 vertical-align:middle;
1937 }
1935 }
1938
1936
1939 div.gravatar {
1937 div.gravatar {
1940 background-color:#FFF;
1938 background-color:#FFF;
1941 border:1px solid #D0D0D0;
1939 border:1px solid #D0D0D0;
1942 float:left;
1940 float:left;
1943 margin-right:0.7em;
1941 margin-right:0.7em;
1944 padding:2px 2px 0;
1942 padding:2px 2px 0;
1945 }
1943 }
1946
1944
1947 #header,#content,#footer {
1945 #header,#content,#footer {
1948 min-width:1024px;
1946 min-width:1024px;
1949 }
1947 }
1950
1948
1951 #content {
1949 #content {
1952 min-height:100%;
1950 min-height:100%;
1953 clear:both;
1951 clear:both;
1954 overflow:hidden;
1952 overflow:hidden;
1955 padding:14px 30px;
1953 padding:14px 30px;
1956 }
1954 }
1957
1955
1958 #content div.box div.title div.search {
1956 #content div.box div.title div.search {
1959 background:url("../../images/title_link.png") no-repeat top left;
1957 background:url("../../images/title_link.png") no-repeat top left;
1960 border-left:1px solid #316293;
1958 border-left:1px solid #316293;
1961 }
1959 }
1962
1960
1963 #content div.box div.title div.search div.input input {
1961 #content div.box div.title div.search div.input input {
1964 border:1px solid #316293;
1962 border:1px solid #316293;
1965 }
1963 }
1966
1964
1967 #content div.box div.title div.search div.button input.ui-state-default {
1965 #content div.box div.title div.search div.button input.ui-state-default {
1968 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
1966 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
1969 border:1px solid #316293;
1967 border:1px solid #316293;
1970 border-left:none;
1968 border-left:none;
1971 color:#FFF;
1969 color:#FFF;
1972 }
1970 }
1973
1971
1974 #content div.box div.title div.search div.button input.ui-state-hover {
1972 #content div.box div.title div.search div.button input.ui-state-hover {
1975 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
1973 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
1976 border:1px solid #316293;
1974 border:1px solid #316293;
1977 border-left:none;
1975 border-left:none;
1978 color:#FFF;
1976 color:#FFF;
1979 }
1977 }
1980
1978
1981 #content div.box div.form div.fields div.field div.highlight .ui-state-default {
1979 #content div.box div.form div.fields div.field div.highlight .ui-state-default {
1982 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
1980 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
1983 border-top:1px solid #5c91a4;
1981 border-top:1px solid #5c91a4;
1984 border-left:1px solid #2a6f89;
1982 border-left:1px solid #2a6f89;
1985 border-right:1px solid #2b7089;
1983 border-right:1px solid #2b7089;
1986 border-bottom:1px solid #1a6480;
1984 border-bottom:1px solid #1a6480;
1987 color:#fff;
1985 color:#fff;
1988 }
1986 }
1989
1987
1990 #content div.box div.form div.fields div.field div.highlight .ui-state-hover {
1988 #content div.box div.form div.fields div.field div.highlight .ui-state-hover {
1991 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
1989 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
1992 border-top:1px solid #78acbf;
1990 border-top:1px solid #78acbf;
1993 border-left:1px solid #34819e;
1991 border-left:1px solid #34819e;
1994 border-right:1px solid #35829f;
1992 border-right:1px solid #35829f;
1995 border-bottom:1px solid #257897;
1993 border-bottom:1px solid #257897;
1996 color:#fff;
1994 color:#fff;
1997 }
1995 }
1998
1996
1999 ins,div.options a:hover {
1997 ins,div.options a:hover {
2000 text-decoration:none;
1998 text-decoration:none;
2001 }
1999 }
2002
2000
2003 img,#header #header-inner #quick li a:hover span.normal,#header #header-inner #quick li ul li.last,#content div.box div.form div.fields div.field div.textarea table td table td a,#clone_url {
2001 img,#header #header-inner #quick li a:hover span.normal,#header #header-inner #quick li ul li.last,#content div.box div.form div.fields div.field div.textarea table td table td a,#clone_url {
2004 border:none;
2002 border:none;
2005 }
2003 }
2006
2004
2007 img.icon,.right .merge img {
2005 img.icon,.right .merge img {
2008 vertical-align:bottom;
2006 vertical-align:bottom;
2009 }
2007 }
2010
2008
2011 #header ul#logged-user,#content div.box div.title ul.links,#content div.box div.message div.dismiss,#content div.box div.traffic div.legend ul {
2009 #header ul#logged-user,#content div.box div.title ul.links,#content div.box div.message div.dismiss,#content div.box div.traffic div.legend ul {
2012 float:right;
2010 float:right;
2013 margin:0;
2011 margin:0;
2014 padding:0;
2012 padding:0;
2015 }
2013 }
2016
2014
2017 #header #header-inner #home,#header #header-inner #logo,#content div.box ul.left,#content div.box ol.left,#content div.box div.pagination-left,div#commit_history,div#legend_data,div#legend_container,div#legend_choices {
2015 #header #header-inner #home,#header #header-inner #logo,#content div.box ul.left,#content div.box ol.left,#content div.box div.pagination-left,div#commit_history,div#legend_data,div#legend_container,div#legend_choices {
2018 float:left;
2016 float:left;
2019 }
2017 }
2020
2018
2021 #header #header-inner #quick li:hover ul ul,#header #header-inner #quick li:hover ul ul ul,#header #header-inner #quick li:hover ul ul ul ul,#content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow {
2019 #header #header-inner #quick li:hover ul ul,#header #header-inner #quick li:hover ul ul ul,#header #header-inner #quick li:hover ul ul ul ul,#content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow {
2022 display:none;
2020 display:none;
2023 }
2021 }
2024
2022
2025 #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 {
2023 #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 {
2026 display:block;
2024 display:block;
2027 }
2025 }
2028
2026
2029 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a {
2027 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a {
2030 color:#bfe3ff;
2028 color:#bfe3ff;
2031 }
2029 }
2032
2030
2033 #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 {
2031 #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 {
2034 margin:10px 24px 10px 44px;
2032 margin:10px 24px 10px 44px;
2035 }
2033 }
2036
2034
2037 #content div.box div.form,#content div.box div.table,#content div.box div.traffic {
2035 #content div.box div.form,#content div.box div.table,#content div.box div.traffic {
2038 clear:both;
2036 clear:both;
2039 overflow:hidden;
2037 overflow:hidden;
2040 margin:0;
2038 margin:0;
2041 padding:0 20px 10px;
2039 padding:0 20px 10px;
2042 }
2040 }
2043
2041
2044 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields {
2042 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields {
2045 clear:both;
2043 clear:both;
2046 overflow:hidden;
2044 overflow:hidden;
2047 margin:0;
2045 margin:0;
2048 padding:0;
2046 padding:0;
2049 }
2047 }
2050
2048
2051 #content div.box div.form div.fields div.field div.label-checkbox,#content div.box div.form div.fields div.field div.label-radio,#content div.box div.form div.fields div.field div.label-textarea {
2049 #content div.box div.form div.fields div.field div.label-checkbox,#content div.box div.form div.fields div.field div.label-radio,#content div.box div.form div.fields div.field div.label-textarea {
2052 padding:0 0 0 5px !important;
2050 padding:0 0 0 5px !important;
2053 }
2051 }
2054
2052
2055 #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 {
2053 #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 {
2056 height:1%;
2054 height:1%;
2057 display:block;
2055 display:block;
2058 color:#363636;
2056 color:#363636;
2059 margin:0;
2057 margin:0;
2060 padding:2px 0 0;
2058 padding:2px 0 0;
2061 }
2059 }
2062
2060
2063 #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 {
2061 #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 {
2064 background:#FBE3E4;
2062 background:#FBE3E4;
2065 border-top:1px solid #e1b2b3;
2063 border-top:1px solid #e1b2b3;
2066 border-left:1px solid #e1b2b3;
2064 border-left:1px solid #e1b2b3;
2067 border-right:1px solid #FBC2C4;
2065 border-right:1px solid #FBC2C4;
2068 border-bottom:1px solid #FBC2C4;
2066 border-bottom:1px solid #FBC2C4;
2069 }
2067 }
2070
2068
2071 #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 {
2069 #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 {
2072 background:#E6EFC2;
2070 background:#E6EFC2;
2073 border-top:1px solid #cebb98;
2071 border-top:1px solid #cebb98;
2074 border-left:1px solid #cebb98;
2072 border-left:1px solid #cebb98;
2075 border-right:1px solid #c6d880;
2073 border-right:1px solid #c6d880;
2076 border-bottom:1px solid #c6d880;
2074 border-bottom:1px solid #c6d880;
2077 }
2075 }
2078
2076
2079 #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 {
2077 #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 {
2080 margin:0;
2078 margin:0;
2081 }
2079 }
2082
2080
2083 #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 {
2081 #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 {
2084 margin:0 0 0 200px;
2082 margin:0 0 0 200px;
2085 padding:0;
2083 padding:0;
2086 }
2084 }
2087
2085
2088 #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 {
2086 #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 {
2089 color:#000;
2087 color:#000;
2090 text-decoration:none;
2088 text-decoration:none;
2091 }
2089 }
2092
2090
2093 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus {
2091 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus {
2094 border:1px solid #666;
2092 border:1px solid #666;
2095 }
2093 }
2096
2094
2097 #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 {
2095 #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 {
2098 clear:both;
2096 clear:both;
2099 overflow:hidden;
2097 overflow:hidden;
2100 margin:0;
2098 margin:0;
2101 padding:2px 0;
2099 padding:2px 0;
2102 }
2100 }
2103
2101
2104 #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 {
2102 #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 {
2105 float:left;
2103 float:left;
2106 margin:0;
2104 margin:0;
2107 }
2105 }
2108
2106
2109 #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 {
2107 #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 {
2110 height:1%;
2108 height:1%;
2111 display:block;
2109 display:block;
2112 float:left;
2110 float:left;
2113 margin:3px 0 0 4px;
2111 margin:3px 0 0 4px;
2114 }
2112 }
2115
2113
2116 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 {
2114 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 {
2117 color:#000;
2115 color:#000;
2118 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2116 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2119 font-size:11px;
2117 font-size:11px;
2120 font-weight:700;
2118 font-weight:700;
2121 margin:0;
2119 margin:0;
2122 }
2120 }
2123
2121
2124 div.form div.fields div.field div.button .ui-state-default,#content div.box div.form div.fields div.buttons input.ui-state-default {
2122 div.form div.fields div.field div.button .ui-state-default,#content div.box div.form div.fields div.buttons input.ui-state-default {
2125 background:#e5e3e3 url("../images/button.png") repeat-x;
2123 background:#e5e3e3 url("../images/button.png") repeat-x;
2126 border-top:1px solid #DDD;
2124 border-top:1px solid #DDD;
2127 border-left:1px solid #c6c6c6;
2125 border-left:1px solid #c6c6c6;
2128 border-right:1px solid #DDD;
2126 border-right:1px solid #DDD;
2129 border-bottom:1px solid #c6c6c6;
2127 border-bottom:1px solid #c6c6c6;
2130 color:#515151;
2128 color:#515151;
2131 outline:none;
2129 outline:none;
2132 margin:0;
2130 margin:0;
2133 padding:6px 12px;
2131 padding:6px 12px;
2134 }
2132 }
2135
2133
2136 div.form div.fields div.field div.button .ui-state-hover,#content div.box div.form div.fields div.buttons input.ui-state-hover {
2134 div.form div.fields div.field div.button .ui-state-hover,#content div.box div.form div.fields div.buttons input.ui-state-hover {
2137 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2135 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2138 border-top:1px solid #ccc;
2136 border-top:1px solid #ccc;
2139 border-left:1px solid #bebebe;
2137 border-left:1px solid #bebebe;
2140 border-right:1px solid #b1b1b1;
2138 border-right:1px solid #b1b1b1;
2141 border-bottom:1px solid #afafaf;
2139 border-bottom:1px solid #afafaf;
2142 color:#515151;
2140 color:#515151;
2143 outline:none;
2141 outline:none;
2144 margin:0;
2142 margin:0;
2145 padding:6px 12px;
2143 padding:6px 12px;
2146 }
2144 }
2147
2145
2148 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight {
2146 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight {
2149 display:inline;
2147 display:inline;
2150 }
2148 }
2151
2149
2152 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons {
2150 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons {
2153 margin:10px 0 0 200px;
2151 margin:10px 0 0 200px;
2154 padding:0;
2152 padding:0;
2155 }
2153 }
2156
2154
2157 #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 {
2155 #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 {
2158 margin:10px 0 0;
2156 margin:10px 0 0;
2159 }
2157 }
2160
2158
2161 #content div.box table td.user,#content div.box table td.address {
2159 #content div.box table td.user,#content div.box table td.address {
2162 width:10%;
2160 width:10%;
2163 text-align:center;
2161 text-align:center;
2164 }
2162 }
2165
2163
2166 #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 {
2164 #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 {
2167 text-align:right;
2165 text-align:right;
2168 margin:6px 0 0;
2166 margin:6px 0 0;
2169 padding:0;
2167 padding:0;
2170 }
2168 }
2171
2169
2172 #content div.box div.action div.button input.ui-state-default,#login div.form div.fields div.buttons input.ui-state-default,#register div.form div.fields div.buttons input.ui-state-default {
2170 #content div.box div.action div.button input.ui-state-default,#login div.form div.fields div.buttons input.ui-state-default,#register div.form div.fields div.buttons input.ui-state-default {
2173 background:#e5e3e3 url("../images/button.png") repeat-x;
2171 background:#e5e3e3 url("../images/button.png") repeat-x;
2174 border-top:1px solid #DDD;
2172 border-top:1px solid #DDD;
2175 border-left:1px solid #c6c6c6;
2173 border-left:1px solid #c6c6c6;
2176 border-right:1px solid #DDD;
2174 border-right:1px solid #DDD;
2177 border-bottom:1px solid #c6c6c6;
2175 border-bottom:1px solid #c6c6c6;
2178 color:#515151;
2176 color:#515151;
2179 margin:0;
2177 margin:0;
2180 padding:6px 12px;
2178 padding:6px 12px;
2181 }
2179 }
2182
2180
2183 #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 {
2181 #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 {
2184 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2182 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2185 border-top:1px solid #ccc;
2183 border-top:1px solid #ccc;
2186 border-left:1px solid #bebebe;
2184 border-left:1px solid #bebebe;
2187 border-right:1px solid #b1b1b1;
2185 border-right:1px solid #b1b1b1;
2188 border-bottom:1px solid #afafaf;
2186 border-bottom:1px solid #afafaf;
2189 color:#515151;
2187 color:#515151;
2190 margin:0;
2188 margin:0;
2191 padding:6px 12px;
2189 padding:6px 12px;
2192 }
2190 }
2193
2191
2194 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results {
2192 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results {
2195 text-align:left;
2193 text-align:left;
2196 float:left;
2194 float:left;
2197 margin:0;
2195 margin:0;
2198 padding:0;
2196 padding:0;
2199 }
2197 }
2200
2198
2201 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span {
2199 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span {
2202 height:1%;
2200 height:1%;
2203 display:block;
2201 display:block;
2204 float:left;
2202 float:left;
2205 background:#ebebeb url("../images/pager.png") repeat-x;
2203 background:#ebebeb url("../images/pager.png") repeat-x;
2206 border-top:1px solid #dedede;
2204 border-top:1px solid #dedede;
2207 border-left:1px solid #cfcfcf;
2205 border-left:1px solid #cfcfcf;
2208 border-right:1px solid #c4c4c4;
2206 border-right:1px solid #c4c4c4;
2209 border-bottom:1px solid #c4c4c4;
2207 border-bottom:1px solid #c4c4c4;
2210 color:#4A4A4A;
2208 color:#4A4A4A;
2211 font-weight:700;
2209 font-weight:700;
2212 margin:0;
2210 margin:0;
2213 padding:6px 8px;
2211 padding:6px 8px;
2214 }
2212 }
2215
2213
2216 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled {
2214 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled {
2217 color:#B4B4B4;
2215 color:#B4B4B4;
2218 padding:6px;
2216 padding:6px;
2219 }
2217 }
2220
2218
2221 #login,#register {
2219 #login,#register {
2222 width:420px;
2220 width:420px;
2223 margin:10% auto 0;
2221 margin:10% auto 0;
2224 padding:0;
2222 padding:0;
2225 }
2223 }
2226
2224
2227 #login div.color,#register div.color {
2225 #login div.color,#register div.color {
2228 clear:both;
2226 clear:both;
2229 overflow:hidden;
2227 overflow:hidden;
2230 background:#FFF;
2228 background:#FFF;
2231 margin:10px auto 0;
2229 margin:10px auto 0;
2232 padding:3px 3px 3px 0;
2230 padding:3px 3px 3px 0;
2233 }
2231 }
2234
2232
2235 #login div.color a,#register div.color a {
2233 #login div.color a,#register div.color a {
2236 width:20px;
2234 width:20px;
2237 height:20px;
2235 height:20px;
2238 display:block;
2236 display:block;
2239 float:left;
2237 float:left;
2240 margin:0 0 0 3px;
2238 margin:0 0 0 3px;
2241 padding:0;
2239 padding:0;
2242 }
2240 }
2243
2241
2244 #login div.title h5,#register div.title h5 {
2242 #login div.title h5,#register div.title h5 {
2245 color:#fff;
2243 color:#fff;
2246 margin:10px;
2244 margin:10px;
2247 padding:0;
2245 padding:0;
2248 }
2246 }
2249
2247
2250 #login div.form div.fields div.field,#register div.form div.fields div.field {
2248 #login div.form div.fields div.field,#register div.form div.fields div.field {
2251 clear:both;
2249 clear:both;
2252 overflow:hidden;
2250 overflow:hidden;
2253 margin:0;
2251 margin:0;
2254 padding:0 0 10px;
2252 padding:0 0 10px;
2255 }
2253 }
2256
2254
2257 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message {
2255 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message {
2258 height:1%;
2256 height:1%;
2259 display:block;
2257 display:block;
2260 color:red;
2258 color:red;
2261 margin:8px 0 0;
2259 margin:8px 0 0;
2262 padding:0;
2260 padding:0;
2263 }
2261 }
2264
2262
2265 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label {
2263 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label {
2266 color:#000;
2264 color:#000;
2267 font-weight:700;
2265 font-weight:700;
2268 }
2266 }
2269
2267
2270 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input {
2268 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input {
2271 float:left;
2269 float:left;
2272 margin:0;
2270 margin:0;
2273 padding:0;
2271 padding:0;
2274 }
2272 }
2275
2273
2276 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox {
2274 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox {
2277 margin:0 0 0 184px;
2275 margin:0 0 0 184px;
2278 padding:0;
2276 padding:0;
2279 }
2277 }
2280
2278
2281 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label {
2279 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label {
2282 color:#565656;
2280 color:#565656;
2283 font-weight:700;
2281 font-weight:700;
2284 }
2282 }
2285
2283
2286 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input {
2284 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input {
2287 color:#000;
2285 color:#000;
2288 font-size:1em;
2286 font-size:1em;
2289 font-weight:700;
2287 font-weight:700;
2290 font-family:Verdana, Helvetica, Sans-Serif;
2288 font-family:Verdana, Helvetica, Sans-Serif;
2291 margin:0;
2289 margin:0;
2292 }
2290 }
2293
2291
2294 #changeset_content .container .wrapper,#graph_content .container .wrapper {
2292 #changeset_content .container .wrapper,#graph_content .container .wrapper {
2295 width:600px;
2293 width:600px;
2296 }
2294 }
2297
2295
2298 #changeset_content .container .left,#graph_content .container .left {
2296 #changeset_content .container .left,#graph_content .container .left {
2299 float:left;
2297 float:left;
2300 width:70%;
2298 width:70%;
2301 padding-left:5px;
2299 padding-left:5px;
2302 }
2300 }
2303
2301
2304 #changeset_content .container .left .date,.ac .match {
2302 #changeset_content .container .left .date,.ac .match {
2305 font-weight:700;
2303 font-weight:700;
2306 padding-top: 5px;
2304 padding-top: 5px;
2307 padding-bottom:5px;
2305 padding-bottom:5px;
2308 }
2306 }
2309
2307
2310 div#legend_container table td,div#legend_choices table td {
2308 div#legend_container table td,div#legend_choices table td {
2311 border:none !important;
2309 border:none !important;
2312 height:20px !important;
2310 height:20px !important;
2313 padding:0 !important;
2311 padding:0 !important;
2314 }
2312 }
2315
2313
2316 #q_filter{
2314 #q_filter{
2317 border:0 none;
2315 border:0 none;
2318 color:#AAAAAA;
2316 color:#AAAAAA;
2319 margin-bottom:-4px;
2317 margin-bottom:-4px;
2320 margin-top:-4px;
2318 margin-top:-4px;
2321 padding-left:3px;
2319 padding-left:3px;
2322 }
2320 }
2323
2321
@@ -1,80 +1,80 b''
1 <%def name="file_class(node)">
1 <%def name="file_class(node)">
2 %if node.is_file():
2 %if node.is_file():
3 <%return "browser-file" %>
3 <%return "browser-file" %>
4 %else:
4 %else:
5 <%return "browser-dir"%>
5 <%return "browser-dir"%>
6 %endif
6 %endif
7 </%def>
7 </%def>
8 <div id="body" class="browserblock">
8 <div id="body" class="browserblock">
9 <div class="browser-header">
9 <div class="browser-header">
10 ${h.form(h.url.current())}
10 ${h.form(h.url.current())}
11 <div class="info_box">
11 <div class="info_box">
12 <span >${_('view')}@rev</span>
12 <span >${_('view')}@rev</span>
13 <a href="${c.url_prev}" title="${_('previous revision')}">&laquo;</a>
13 <a href="${c.url_prev}" title="${_('previous revision')}">&laquo;</a>
14 ${h.text('at_rev',value=c.changeset.revision,size=3)}
14 ${h.text('at_rev',value=c.changeset.revision,size=3)}
15 <a href="${c.url_next}" title="${_('next revision')}">&raquo;</a>
15 <a href="${c.url_next}" title="${_('next revision')}">&raquo;</a>
16 ${h.submit('view','view')}
16 ${h.submit('view','view')}
17 </div>
17 </div>
18 ${h.end_form()}
18 ${h.end_form()}
19 </div>
19 </div>
20 <div class="browser-body">
20 <div class="browser-body">
21 <table class="code-browser">
21 <table class="code-browser">
22 <thead>
22 <thead>
23 <tr>
23 <tr>
24 <th>${_('Name')}</th>
24 <th>${_('Name')}</th>
25 <th>${_('Size')}</th>
25 <th>${_('Size')}</th>
26 <th>${_('Mimetype')}</th>
26 <th>${_('Mimetype')}</th>
27 <th>${_('Revision')}</th>
27 <th>${_('Revision')}</th>
28 <th>${_('Last modified')}</th>
28 <th>${_('Last modified')}</th>
29 <th>${_('Last commiter')}</th>
29 <th>${_('Last commiter')}</th>
30 </tr>
30 </tr>
31 </thead>
31 </thead>
32
32
33 %if c.files_list.parent:
33 %if c.files_list.parent:
34 <tr class="parity0">
34 <tr class="parity0">
35 <td>
35 <td>
36 ${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.files_list.parent.path),class_="browser-dir")}
36 ${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.files_list.parent.path),class_="browser-dir")}
37 </td>
37 </td>
38 <td></td>
38 <td></td>
39 <td></td>
39 <td></td>
40 <td></td>
40 <td></td>
41 <td></td>
41 <td></td>
42 <td></td>
42 <td></td>
43 </tr>
43 </tr>
44 %endif
44 %endif
45
45
46 %for cnt,node in enumerate(c.files_list,1):
46 %for cnt,node in enumerate(c.files_list,1):
47 <tr class="parity${cnt%2}">
47 <tr class="parity${cnt%2}">
48 <td>
48 <td>
49 ${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=node.path),class_=file_class(node))}
49 ${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=node.path),class_=file_class(node))}
50 </td>
50 </td>
51 <td>
51 <td>
52 %if node.is_file():
52 %if node.is_file():
53 ${h.format_byte_size(node.size,binary=True)}
53 ${h.format_byte_size(node.size,binary=True)}
54 %endif
54 %endif
55 </td>
55 </td>
56 <td>
56 <td>
57 %if node.is_file():
57 %if node.is_file():
58 ${node.mimetype}
58 ${node.mimetype}
59 %endif
59 %endif
60 </td>
60 </td>
61 <td>
61 <td>
62 %if node.is_file():
62 %if node.is_file():
63 <span class="tooltip" tooltip_title="${node.last_changeset.raw_id}">${node.last_changeset.revision}</span>
63 <span class="tooltip" tooltip_title="${node.last_changeset.raw_id}">${node.last_changeset.revision}</span>
64 %endif
64 %endif
65 </td>
65 </td>
66 <td>
66 <td>
67 %if node.is_file():
67 %if node.is_file():
68 ${node.last_changeset.date} - ${h.age(node.last_changeset.date)} ${_('ago')}
68 ${node.last_changeset.date} - ${h.age(node.last_changeset.date)}
69 %endif
69 %endif
70 </td>
70 </td>
71 <td>
71 <td>
72 %if node.is_file():
72 %if node.is_file():
73 ${node.last_changeset.author}
73 ${node.last_changeset.author}
74 %endif
74 %endif
75 </td>
75 </td>
76 </tr>
76 </tr>
77 %endfor
77 %endfor
78 </table>
78 </table>
79 </div>
79 </div>
80 </div> No newline at end of file
80 </div>
@@ -1,165 +1,166 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="base/base.html"/>
2 <%inherit file="base/base.html"/>
3 <%def name="title()">
3 <%def name="title()">
4 ${_('Dashboard')} - ${c.rhodecode_name}
4 ${_('Dashboard')} - ${c.rhodecode_name}
5 </%def>
5 </%def>
6 <%def name="breadcrumbs()">
6 <%def name="breadcrumbs()">
7 ${c.rhodecode_name}
7 ${c.rhodecode_name}
8 </%def>
8 </%def>
9 <%def name="page_nav()">
9 <%def name="page_nav()">
10 ${self.menu('home')}
10 ${self.menu('home')}
11 </%def>
11 </%def>
12 <%def name="main()">
12 <%def name="main()">
13 <%def name="get_sort(name)">
13 <%def name="get_sort(name)">
14 <%name_slug = name.lower().replace(' ','_') %>
14 <%name_slug = name.lower().replace(' ','_') %>
15
15
16 %if name_slug == c.sort_slug:
16 %if name_slug == c.sort_slug:
17 %if c.sort_by.startswith('-'):
17 %if c.sort_by.startswith('-'):
18 <a href="?sort=${name_slug}">${name}&uarr;</a>
18 <a href="?sort=${name_slug}">${name}&uarr;</a>
19 %else:
19 %else:
20 <a href="?sort=-${name_slug}">${name}&darr;</a>
20 <a href="?sort=-${name_slug}">${name}&darr;</a>
21 %endif:
21 %endif:
22 %else:
22 %else:
23 <a href="?sort=${name_slug}">${name}</a>
23 <a href="?sort=${name_slug}">${name}</a>
24 %endif
24 %endif
25 </%def>
25 </%def>
26
26
27 <div class="box">
27 <div class="box">
28 <!-- box / title -->
28 <!-- box / title -->
29 <div class="title">
29 <div class="title">
30 <h5>${_('Dashboard')}
30 <h5>${_('Dashboard')}
31 <input class="top-right-rounded-corner top-left-rounded-corner bottom-left-rounded-corner bottom-right-rounded-corner" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
31 <input class="top-right-rounded-corner top-left-rounded-corner bottom-left-rounded-corner bottom-right-rounded-corner" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
32 </h5>
32 </h5>
33 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
33 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
34 <ul class="links">
34 <ul class="links">
35 <li>
35 <li>
36 <span>${h.link_to(_('ADD NEW REPOSITORY'),h.url('admin_settings_create_repository'))}</span>
36 <span>${h.link_to(_('ADD NEW REPOSITORY'),h.url('admin_settings_create_repository'))}</span>
37 </li>
37 </li>
38 </ul>
38 </ul>
39 %endif
39 %endif
40 </div>
40 </div>
41 <!-- end box / title -->
41 <!-- end box / title -->
42 <div class="table">
42 <div class="table">
43 <table>
43 <table>
44 <thead>
44 <thead>
45 <tr>
45 <tr>
46 <th class="left">${get_sort(_('Name'))}</th>
46 <th class="left">${get_sort(_('Name'))}</th>
47 <th class="left">${get_sort(_('Description'))}</th>
47 <th class="left">${get_sort(_('Description'))}</th>
48 <th class="left">${get_sort(_('Last change'))}</th>
48 <th class="left">${get_sort(_('Last change'))}</th>
49 <th class="left">${get_sort(_('Tip'))}</th>
49 <th class="left">${get_sort(_('Tip'))}</th>
50 <th class="left">${get_sort(_('Owner'))}</th>
50 <th class="left">${get_sort(_('Owner'))}</th>
51 <th class="left">${_('RSS')}</th>
51 <th class="left">${_('RSS')}</th>
52 <th class="left">${_('Atom')}</th>
52 <th class="left">${_('Atom')}</th>
53 </tr>
53 </tr>
54 </thead>
54 </thead>
55 <tbody>
55 <tbody>
56 %for cnt,repo in enumerate(c.repos_list):
56 %for cnt,repo in enumerate(c.repos_list):
57 %if h.HasRepoPermissionAny('repository.write','repository.read','repository.admin')(repo['name'],'main page check'):
58 <tr class="parity${cnt%2}">
57 <tr class="parity${cnt%2}">
59 <td>
58 <td>
59 <div style="white-space: nowrap">
60 ## TYPE OF REPO
60 ## TYPE OF REPO
61 %if repo['repo'].dbrepo.repo_type =='hg':
61 %if repo['repo'].dbrepo.repo_type =='hg':
62 <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="/images/icons/hgicon.png"/>
62 <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="/images/icons/hgicon.png"/>
63 %elif repo['repo'].dbrepo.repo_type =='git':
63 %elif repo['repo'].dbrepo.repo_type =='git':
64 <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="/images/icons/giticon.png"/>
64 <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="/images/icons/giticon.png"/>
65 %else:
65 %else:
66
66
67 %endif
67 %endif
68
68
69 ##PRIVATE/PUBLIC
69 ##PRIVATE/PUBLIC
70 %if repo['repo'].dbrepo.private:
70 %if repo['repo'].dbrepo.private:
71 <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="/images/icons/lock.png"/>
71 <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="/images/icons/lock.png"/>
72 %else:
72 %else:
73 <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="/images/icons/lock_open.png"/>
73 <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="/images/icons/lock_open.png"/>
74 %endif
74 %endif
75
75
76 ##NAME
76 ##NAME
77 ${h.link_to(repo['name'],
77 ${h.link_to(repo['name'],
78 h.url('summary_home',repo_name=repo['name']),class_="repo_name")}
78 h.url('summary_home',repo_name=repo['name']),class_="repo_name")}
79 %if repo['repo'].dbrepo.fork:
79 %if repo['repo'].dbrepo.fork:
80 <a href="${h.url('summary_home',repo_name=repo['repo'].dbrepo.fork.repo_name)}">
80 <a href="${h.url('summary_home',repo_name=repo['repo'].dbrepo.fork.repo_name)}">
81 <img class="icon" alt="${_('fork')}"
81 <img class="icon" alt="${_('fork')}"
82 title="${_('Fork of')} ${repo['repo'].dbrepo.fork.repo_name}"
82 title="${_('Fork of')} ${repo['repo'].dbrepo.fork.repo_name}"
83 src="/images/icons/arrow_divide.png"/></a>
83 src="/images/icons/arrow_divide.png"/></a>
84 %endif
84 %endif
85 </div>
85 </td>
86 </td>
86 ##DESCRIPTION
87 ##DESCRIPTION
87 <td><span class="tooltip" tooltip_title="${repo['description']}">
88 <td><span class="tooltip" tooltip_title="${repo['description']}">
88 ${h.truncate(repo['description'],60)}</span>
89 ${h.truncate(repo['description'],60)}</span>
89 </td>
90 </td>
90 ##LAST CHANGE
91 ##LAST CHANGE
91 <td>
92 <td>
92 <span>${repo['last_change']} - ${h.age(repo['last_change'])} </span>
93 <span class="tooltip" tooltip_title="${h.age(repo['last_change'])}">
94 ${repo['last_change']}</span>
93 </td>
95 </td>
94 <td>
96 <td>
95 %if repo['rev']>=0:
97 %if repo['rev']>=0:
96 ${h.link_to('r%s:%s' % (repo['rev'],h.short_id(repo['tip'])),
98 ${h.link_to('r%s:%s' % (repo['rev'],h.short_id(repo['tip'])),
97 h.url('changeset_home',repo_name=repo['name'],revision=repo['tip']),
99 h.url('changeset_home',repo_name=repo['name'],revision=repo['tip']),
98 class_="tooltip",
100 class_="tooltip",
99 tooltip_title=h.tooltip(repo['last_msg']))}
101 tooltip_title=h.tooltip(repo['last_msg']))}
100 %else:
102 %else:
101 ${_('No changesets yet')}
103 ${_('No changesets yet')}
102 %endif
104 %endif
103 </td>
105 </td>
104 <td title="${repo['contact']}">${h.person(repo['contact'])}</td>
106 <td title="${repo['contact']}">${h.person(repo['contact'])}</td>
105 <td>
107 <td>
106 <a title="${_('Subscribe to %s rss feed')%repo['name']}" class="rss_icon" href="${h.url('rss_feed_home',repo_name=repo['name'])}"></a>
108 <a title="${_('Subscribe to %s rss feed')%repo['name']}" class="rss_icon" href="${h.url('rss_feed_home',repo_name=repo['name'])}"></a>
107 </td>
109 </td>
108 <td>
110 <td>
109 <a title="${_('Subscribe to %s atom feed')%repo['name']}" class="atom_icon" href="${h.url('atom_feed_home',repo_name=repo['name'])}"></a>
111 <a title="${_('Subscribe to %s atom feed')%repo['name']}" class="atom_icon" href="${h.url('atom_feed_home',repo_name=repo['name'])}"></a>
110 </td>
112 </td>
111 </tr>
113 </tr>
112 %endif
113 %endfor
114 %endfor
114 </tbody>
115 </tbody>
115 </table>
116 </table>
116 </div>
117 </div>
117 </div>
118 </div>
118
119
119
120
120 <script type="text/javascript">
121 <script type="text/javascript">
121 var D = YAHOO.util.Dom;
122 var D = YAHOO.util.Dom;
122 var E = YAHOO.util.Event;
123 var E = YAHOO.util.Event;
123 var S = YAHOO.util.Selector;
124 var S = YAHOO.util.Selector;
124
125
125 var q_filter = D.get('q_filter');
126 var q_filter = D.get('q_filter');
126 var F = YAHOO.namespace('q_filter');
127 var F = YAHOO.namespace('q_filter');
127
128
128 E.on(q_filter,'click',function(){
129 E.on(q_filter,'click',function(){
129 q_filter.value = '';
130 q_filter.value = '';
130 });
131 });
131
132
132 F.filterTimeout = null;
133 F.filterTimeout = null;
133
134
134 F.updateFilter = function() {
135 F.updateFilter = function() {
135 // Reset timeout
136 // Reset timeout
136 F.filterTimeout = null;
137 F.filterTimeout = null;
137
138
138 var obsolete = [];
139 var obsolete = [];
139 var nodes = S.query('div.table tr td a.repo_name');
140 var nodes = S.query('div.table tr td div a.repo_name');
140 var req = D.get('q_filter').value;
141 var req = D.get('q_filter').value;
141 for (n in nodes){
142 for (n in nodes){
142 D.setStyle(nodes[n].parentNode.parentNode,'display','')
143 D.setStyle(nodes[n].parentNode.parentNode.parentNode,'display','')
143 }
144 }
144 if (req){
145 if (req){
145 for (n in nodes){
146 for (n in nodes){
146 if (nodes[n].innerHTML.toLowerCase().indexOf(req) == -1) {
147 if (nodes[n].innerHTML.toLowerCase().indexOf(req) == -1) {
147 obsolete.push(nodes[n]);
148 obsolete.push(nodes[n]);
148 }
149 }
149 }
150 }
150 if(obsolete){
151 if(obsolete){
151 for (n in obsolete){
152 for (n in obsolete){
152 D.setStyle(obsolete[n].parentNode.parentNode,'display','none');
153 D.setStyle(obsolete[n].parentNode.parentNode.parentNode,'display','none');
153 }
154 }
154 }
155 }
155 }
156 }
156 }
157 }
157
158
158 E.on(q_filter,'keyup',function(e){
159 E.on(q_filter,'keyup',function(e){
159 clearTimeout(F.filterTimeout);
160 clearTimeout(F.filterTimeout);
160 setTimeout(F.updateFilter,600);
161 setTimeout(F.updateFilter,600);
161 });
162 });
162
163
163 </script>
164 </script>
164
165
165 </%def>
166 </%def>
General Comments 0
You need to be logged in to leave comments. Login now