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