##// END OF EJS Templates
#415: Adding comment to changeset causes reload...
marcink -
r2187:b61e5401 beta
parent child Browse files
Show More
@@ -0,0 +1,2 b''
1 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
2 ${comment.comment_block(c.co)} No newline at end of file
@@ -1,382 +1,391 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) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
11 :copyright: (C) 2010-2012 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 modify
14 # This program is free software: you can redistribute it and/or modify
15 # it under the terms of the GNU General Public License as published by
15 # it under the terms of the GNU General Public License as published by
16 # the Free Software Foundation, either version 3 of the License, or
16 # the Free Software Foundation, either version 3 of the License, or
17 # (at your option) any later version.
17 # (at your option) any later version.
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, see <http://www.gnu.org/licenses/>.
25 # along with this program. If not, see <http://www.gnu.org/licenses/>.
26 import logging
26 import logging
27 import traceback
27 import traceback
28 from collections import defaultdict
28 from collections import defaultdict
29 from webob.exc import HTTPForbidden
29 from webob.exc import HTTPForbidden
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 from pylons.decorators import jsonify
34 from pylons.decorators import jsonify
35
35
36 from rhodecode.lib.vcs.exceptions import RepositoryError, ChangesetError, \
36 from rhodecode.lib.vcs.exceptions import RepositoryError, ChangesetError, \
37 ChangesetDoesNotExistError
37 ChangesetDoesNotExistError
38 from rhodecode.lib.vcs.nodes import FileNode
38 from rhodecode.lib.vcs.nodes import FileNode
39
39
40 import rhodecode.lib.helpers as h
40 import rhodecode.lib.helpers as h
41 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
41 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
42 from rhodecode.lib.base import BaseRepoController, render
42 from rhodecode.lib.base import BaseRepoController, render
43 from rhodecode.lib.utils import EmptyChangeset
43 from rhodecode.lib.utils import EmptyChangeset
44 from rhodecode.lib.compat import OrderedDict
44 from rhodecode.lib.compat import OrderedDict
45 from rhodecode.lib import diffs
45 from rhodecode.lib import diffs
46 from rhodecode.model.db import ChangesetComment
46 from rhodecode.model.db import ChangesetComment
47 from rhodecode.model.comment import ChangesetCommentsModel
47 from rhodecode.model.comment import ChangesetCommentsModel
48 from rhodecode.model.meta import Session
48 from rhodecode.model.meta import Session
49 from rhodecode.lib.diffs import wrapped_diff
49 from rhodecode.lib.diffs import wrapped_diff
50
50
51 log = logging.getLogger(__name__)
51 log = logging.getLogger(__name__)
52
52
53
53
54 def _update_with_GET(params, GET):
54 def _update_with_GET(params, GET):
55 for k in ['diff1', 'diff2', 'diff']:
55 for k in ['diff1', 'diff2', 'diff']:
56 params[k] += GET.getall(k)
56 params[k] += GET.getall(k)
57
57
58
58
59 def anchor_url(revision, path, GET):
59 def anchor_url(revision, path, GET):
60 fid = h.FID(revision, path)
60 fid = h.FID(revision, path)
61 return h.url.current(anchor=fid, **dict(GET))
61 return h.url.current(anchor=fid, **dict(GET))
62
62
63
63
64 def get_ignore_ws(fid, GET):
64 def get_ignore_ws(fid, GET):
65 ig_ws_global = GET.get('ignorews')
65 ig_ws_global = GET.get('ignorews')
66 ig_ws = filter(lambda k: k.startswith('WS'), GET.getall(fid))
66 ig_ws = filter(lambda k: k.startswith('WS'), GET.getall(fid))
67 if ig_ws:
67 if ig_ws:
68 try:
68 try:
69 return int(ig_ws[0].split(':')[-1])
69 return int(ig_ws[0].split(':')[-1])
70 except:
70 except:
71 pass
71 pass
72 return ig_ws_global
72 return ig_ws_global
73
73
74
74
75 def _ignorews_url(GET, fileid=None):
75 def _ignorews_url(GET, fileid=None):
76 fileid = str(fileid) if fileid else None
76 fileid = str(fileid) if fileid else None
77 params = defaultdict(list)
77 params = defaultdict(list)
78 _update_with_GET(params, GET)
78 _update_with_GET(params, GET)
79 lbl = _('show white space')
79 lbl = _('show white space')
80 ig_ws = get_ignore_ws(fileid, GET)
80 ig_ws = get_ignore_ws(fileid, GET)
81 ln_ctx = get_line_ctx(fileid, GET)
81 ln_ctx = get_line_ctx(fileid, GET)
82 # global option
82 # global option
83 if fileid is None:
83 if fileid is None:
84 if ig_ws is None:
84 if ig_ws is None:
85 params['ignorews'] += [1]
85 params['ignorews'] += [1]
86 lbl = _('ignore white space')
86 lbl = _('ignore white space')
87 ctx_key = 'context'
87 ctx_key = 'context'
88 ctx_val = ln_ctx
88 ctx_val = ln_ctx
89 # per file options
89 # per file options
90 else:
90 else:
91 if ig_ws is None:
91 if ig_ws is None:
92 params[fileid] += ['WS:1']
92 params[fileid] += ['WS:1']
93 lbl = _('ignore white space')
93 lbl = _('ignore white space')
94
94
95 ctx_key = fileid
95 ctx_key = fileid
96 ctx_val = 'C:%s' % ln_ctx
96 ctx_val = 'C:%s' % ln_ctx
97 # if we have passed in ln_ctx pass it along to our params
97 # if we have passed in ln_ctx pass it along to our params
98 if ln_ctx:
98 if ln_ctx:
99 params[ctx_key] += [ctx_val]
99 params[ctx_key] += [ctx_val]
100
100
101 params['anchor'] = fileid
101 params['anchor'] = fileid
102 img = h.image(h.url('/images/icons/text_strikethrough.png'), lbl, class_='icon')
102 img = h.image(h.url('/images/icons/text_strikethrough.png'), lbl, class_='icon')
103 return h.link_to(img, h.url.current(**params), title=lbl, class_='tooltip')
103 return h.link_to(img, h.url.current(**params), title=lbl, class_='tooltip')
104
104
105
105
106 def get_line_ctx(fid, GET):
106 def get_line_ctx(fid, GET):
107 ln_ctx_global = GET.get('context')
107 ln_ctx_global = GET.get('context')
108 ln_ctx = filter(lambda k: k.startswith('C'), GET.getall(fid))
108 ln_ctx = filter(lambda k: k.startswith('C'), GET.getall(fid))
109
109
110 if ln_ctx:
110 if ln_ctx:
111 retval = ln_ctx[0].split(':')[-1]
111 retval = ln_ctx[0].split(':')[-1]
112 else:
112 else:
113 retval = ln_ctx_global
113 retval = ln_ctx_global
114
114
115 try:
115 try:
116 return int(retval)
116 return int(retval)
117 except:
117 except:
118 return
118 return
119
119
120
120
121 def _context_url(GET, fileid=None):
121 def _context_url(GET, fileid=None):
122 """
122 """
123 Generates url for context lines
123 Generates url for context lines
124
124
125 :param fileid:
125 :param fileid:
126 """
126 """
127
127
128 fileid = str(fileid) if fileid else None
128 fileid = str(fileid) if fileid else None
129 ig_ws = get_ignore_ws(fileid, GET)
129 ig_ws = get_ignore_ws(fileid, GET)
130 ln_ctx = (get_line_ctx(fileid, GET) or 3) * 2
130 ln_ctx = (get_line_ctx(fileid, GET) or 3) * 2
131
131
132 params = defaultdict(list)
132 params = defaultdict(list)
133 _update_with_GET(params, GET)
133 _update_with_GET(params, GET)
134
134
135 # global option
135 # global option
136 if fileid is None:
136 if fileid is None:
137 if ln_ctx > 0:
137 if ln_ctx > 0:
138 params['context'] += [ln_ctx]
138 params['context'] += [ln_ctx]
139
139
140 if ig_ws:
140 if ig_ws:
141 ig_ws_key = 'ignorews'
141 ig_ws_key = 'ignorews'
142 ig_ws_val = 1
142 ig_ws_val = 1
143
143
144 # per file option
144 # per file option
145 else:
145 else:
146 params[fileid] += ['C:%s' % ln_ctx]
146 params[fileid] += ['C:%s' % ln_ctx]
147 ig_ws_key = fileid
147 ig_ws_key = fileid
148 ig_ws_val = 'WS:%s' % 1
148 ig_ws_val = 'WS:%s' % 1
149
149
150 if ig_ws:
150 if ig_ws:
151 params[ig_ws_key] += [ig_ws_val]
151 params[ig_ws_key] += [ig_ws_val]
152
152
153 lbl = _('%s line context') % ln_ctx
153 lbl = _('%s line context') % ln_ctx
154
154
155 params['anchor'] = fileid
155 params['anchor'] = fileid
156 img = h.image(h.url('/images/icons/table_add.png'), lbl, class_='icon')
156 img = h.image(h.url('/images/icons/table_add.png'), lbl, class_='icon')
157 return h.link_to(img, h.url.current(**params), title=lbl, class_='tooltip')
157 return h.link_to(img, h.url.current(**params), title=lbl, class_='tooltip')
158
158
159
159
160 class ChangesetController(BaseRepoController):
160 class ChangesetController(BaseRepoController):
161
161
162 @LoginRequired()
162 @LoginRequired()
163 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
163 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
164 'repository.admin')
164 'repository.admin')
165 def __before__(self):
165 def __before__(self):
166 super(ChangesetController, self).__before__()
166 super(ChangesetController, self).__before__()
167 c.affected_files_cut_off = 60
167 c.affected_files_cut_off = 60
168
168
169 def index(self, revision):
169 def index(self, revision):
170
170
171 c.anchor_url = anchor_url
171 c.anchor_url = anchor_url
172 c.ignorews_url = _ignorews_url
172 c.ignorews_url = _ignorews_url
173 c.context_url = _context_url
173 c.context_url = _context_url
174 limit_off = request.GET.get('fulldiff')
174 limit_off = request.GET.get('fulldiff')
175 #get ranges of revisions if preset
175 #get ranges of revisions if preset
176 rev_range = revision.split('...')[:2]
176 rev_range = revision.split('...')[:2]
177 enable_comments = True
177 enable_comments = True
178 try:
178 try:
179 if len(rev_range) == 2:
179 if len(rev_range) == 2:
180 enable_comments = False
180 enable_comments = False
181 rev_start = rev_range[0]
181 rev_start = rev_range[0]
182 rev_end = rev_range[1]
182 rev_end = rev_range[1]
183 rev_ranges = c.rhodecode_repo.get_changesets(start=rev_start,
183 rev_ranges = c.rhodecode_repo.get_changesets(start=rev_start,
184 end=rev_end)
184 end=rev_end)
185 else:
185 else:
186 rev_ranges = [c.rhodecode_repo.get_changeset(revision)]
186 rev_ranges = [c.rhodecode_repo.get_changeset(revision)]
187
187
188 c.cs_ranges = list(rev_ranges)
188 c.cs_ranges = list(rev_ranges)
189 if not c.cs_ranges:
189 if not c.cs_ranges:
190 raise RepositoryError('Changeset range returned empty result')
190 raise RepositoryError('Changeset range returned empty result')
191
191
192 except (RepositoryError, ChangesetDoesNotExistError, Exception), e:
192 except (RepositoryError, ChangesetDoesNotExistError, Exception), e:
193 log.error(traceback.format_exc())
193 log.error(traceback.format_exc())
194 h.flash(str(e), category='warning')
194 h.flash(str(e), category='warning')
195 return redirect(url('home'))
195 return redirect(url('home'))
196
196
197 c.changes = OrderedDict()
197 c.changes = OrderedDict()
198
198
199 c.lines_added = 0 # count of lines added
199 c.lines_added = 0 # count of lines added
200 c.lines_deleted = 0 # count of lines removes
200 c.lines_deleted = 0 # count of lines removes
201
201
202 cumulative_diff = 0
202 cumulative_diff = 0
203 c.cut_off = False # defines if cut off limit is reached
203 c.cut_off = False # defines if cut off limit is reached
204
204
205 c.comments = []
205 c.comments = []
206 c.inline_comments = []
206 c.inline_comments = []
207 c.inline_cnt = 0
207 c.inline_cnt = 0
208 # Iterate over ranges (default changeset view is always one changeset)
208 # Iterate over ranges (default changeset view is always one changeset)
209 for changeset in c.cs_ranges:
209 for changeset in c.cs_ranges:
210 c.comments.extend(ChangesetCommentsModel()\
210 c.comments.extend(ChangesetCommentsModel()\
211 .get_comments(c.rhodecode_db_repo.repo_id,
211 .get_comments(c.rhodecode_db_repo.repo_id,
212 changeset.raw_id))
212 changeset.raw_id))
213 inlines = ChangesetCommentsModel()\
213 inlines = ChangesetCommentsModel()\
214 .get_inline_comments(c.rhodecode_db_repo.repo_id,
214 .get_inline_comments(c.rhodecode_db_repo.repo_id,
215 changeset.raw_id)
215 changeset.raw_id)
216 c.inline_comments.extend(inlines)
216 c.inline_comments.extend(inlines)
217 c.changes[changeset.raw_id] = []
217 c.changes[changeset.raw_id] = []
218 try:
218 try:
219 changeset_parent = changeset.parents[0]
219 changeset_parent = changeset.parents[0]
220 except IndexError:
220 except IndexError:
221 changeset_parent = None
221 changeset_parent = None
222
222
223 #==================================================================
223 #==================================================================
224 # ADDED FILES
224 # ADDED FILES
225 #==================================================================
225 #==================================================================
226 for node in changeset.added:
226 for node in changeset.added:
227 fid = h.FID(revision, node.path)
227 fid = h.FID(revision, node.path)
228 line_context_lcl = get_line_ctx(fid, request.GET)
228 line_context_lcl = get_line_ctx(fid, request.GET)
229 ign_whitespace_lcl = get_ignore_ws(fid, request.GET)
229 ign_whitespace_lcl = get_ignore_ws(fid, request.GET)
230 lim = self.cut_off_limit
230 lim = self.cut_off_limit
231 if cumulative_diff > self.cut_off_limit:
231 if cumulative_diff > self.cut_off_limit:
232 lim = -1 if limit_off is None else None
232 lim = -1 if limit_off is None else None
233 size, cs1, cs2, diff, st = wrapped_diff(
233 size, cs1, cs2, diff, st = wrapped_diff(
234 filenode_old=None,
234 filenode_old=None,
235 filenode_new=node,
235 filenode_new=node,
236 cut_off_limit=lim,
236 cut_off_limit=lim,
237 ignore_whitespace=ign_whitespace_lcl,
237 ignore_whitespace=ign_whitespace_lcl,
238 line_context=line_context_lcl,
238 line_context=line_context_lcl,
239 enable_comments=enable_comments
239 enable_comments=enable_comments
240 )
240 )
241 cumulative_diff += size
241 cumulative_diff += size
242 c.lines_added += st[0]
242 c.lines_added += st[0]
243 c.lines_deleted += st[1]
243 c.lines_deleted += st[1]
244 c.changes[changeset.raw_id].append(
244 c.changes[changeset.raw_id].append(
245 ('added', node, diff, cs1, cs2, st)
245 ('added', node, diff, cs1, cs2, st)
246 )
246 )
247
247
248 #==================================================================
248 #==================================================================
249 # CHANGED FILES
249 # CHANGED FILES
250 #==================================================================
250 #==================================================================
251 for node in changeset.changed:
251 for node in changeset.changed:
252 try:
252 try:
253 filenode_old = changeset_parent.get_node(node.path)
253 filenode_old = changeset_parent.get_node(node.path)
254 except ChangesetError:
254 except ChangesetError:
255 log.warning('Unable to fetch parent node for diff')
255 log.warning('Unable to fetch parent node for diff')
256 filenode_old = FileNode(node.path, '', EmptyChangeset())
256 filenode_old = FileNode(node.path, '', EmptyChangeset())
257
257
258 fid = h.FID(revision, node.path)
258 fid = h.FID(revision, node.path)
259 line_context_lcl = get_line_ctx(fid, request.GET)
259 line_context_lcl = get_line_ctx(fid, request.GET)
260 ign_whitespace_lcl = get_ignore_ws(fid, request.GET)
260 ign_whitespace_lcl = get_ignore_ws(fid, request.GET)
261 lim = self.cut_off_limit
261 lim = self.cut_off_limit
262 if cumulative_diff > self.cut_off_limit:
262 if cumulative_diff > self.cut_off_limit:
263 lim = -1 if limit_off is None else None
263 lim = -1 if limit_off is None else None
264 size, cs1, cs2, diff, st = wrapped_diff(
264 size, cs1, cs2, diff, st = wrapped_diff(
265 filenode_old=filenode_old,
265 filenode_old=filenode_old,
266 filenode_new=node,
266 filenode_new=node,
267 cut_off_limit=lim,
267 cut_off_limit=lim,
268 ignore_whitespace=ign_whitespace_lcl,
268 ignore_whitespace=ign_whitespace_lcl,
269 line_context=line_context_lcl,
269 line_context=line_context_lcl,
270 enable_comments=enable_comments
270 enable_comments=enable_comments
271 )
271 )
272 cumulative_diff += size
272 cumulative_diff += size
273 c.lines_added += st[0]
273 c.lines_added += st[0]
274 c.lines_deleted += st[1]
274 c.lines_deleted += st[1]
275 c.changes[changeset.raw_id].append(
275 c.changes[changeset.raw_id].append(
276 ('changed', node, diff, cs1, cs2, st)
276 ('changed', node, diff, cs1, cs2, st)
277 )
277 )
278 #==================================================================
278 #==================================================================
279 # REMOVED FILES
279 # REMOVED FILES
280 #==================================================================
280 #==================================================================
281 for node in changeset.removed:
281 for node in changeset.removed:
282 c.changes[changeset.raw_id].append(
282 c.changes[changeset.raw_id].append(
283 ('removed', node, None, None, None, (0, 0))
283 ('removed', node, None, None, None, (0, 0))
284 )
284 )
285
285
286 # count inline comments
286 # count inline comments
287 for path, lines in c.inline_comments:
287 for path, lines in c.inline_comments:
288 for comments in lines.values():
288 for comments in lines.values():
289 c.inline_cnt += len(comments)
289 c.inline_cnt += len(comments)
290
290
291 if len(c.cs_ranges) == 1:
291 if len(c.cs_ranges) == 1:
292 c.changeset = c.cs_ranges[0]
292 c.changeset = c.cs_ranges[0]
293 c.changes = c.changes[c.changeset.raw_id]
293 c.changes = c.changes[c.changeset.raw_id]
294
294
295 return render('changeset/changeset.html')
295 return render('changeset/changeset.html')
296 else:
296 else:
297 return render('changeset/changeset_range.html')
297 return render('changeset/changeset_range.html')
298
298
299 def raw_changeset(self, revision):
299 def raw_changeset(self, revision):
300
300
301 method = request.GET.get('diff', 'show')
301 method = request.GET.get('diff', 'show')
302 ignore_whitespace = request.GET.get('ignorews') == '1'
302 ignore_whitespace = request.GET.get('ignorews') == '1'
303 line_context = request.GET.get('context', 3)
303 line_context = request.GET.get('context', 3)
304 try:
304 try:
305 c.scm_type = c.rhodecode_repo.alias
305 c.scm_type = c.rhodecode_repo.alias
306 c.changeset = c.rhodecode_repo.get_changeset(revision)
306 c.changeset = c.rhodecode_repo.get_changeset(revision)
307 except RepositoryError:
307 except RepositoryError:
308 log.error(traceback.format_exc())
308 log.error(traceback.format_exc())
309 return redirect(url('home'))
309 return redirect(url('home'))
310 else:
310 else:
311 try:
311 try:
312 c.changeset_parent = c.changeset.parents[0]
312 c.changeset_parent = c.changeset.parents[0]
313 except IndexError:
313 except IndexError:
314 c.changeset_parent = None
314 c.changeset_parent = None
315 c.changes = []
315 c.changes = []
316
316
317 for node in c.changeset.added:
317 for node in c.changeset.added:
318 filenode_old = FileNode(node.path, '')
318 filenode_old = FileNode(node.path, '')
319 if filenode_old.is_binary or node.is_binary:
319 if filenode_old.is_binary or node.is_binary:
320 diff = _('binary file') + '\n'
320 diff = _('binary file') + '\n'
321 else:
321 else:
322 f_gitdiff = diffs.get_gitdiff(filenode_old, node,
322 f_gitdiff = diffs.get_gitdiff(filenode_old, node,
323 ignore_whitespace=ignore_whitespace,
323 ignore_whitespace=ignore_whitespace,
324 context=line_context)
324 context=line_context)
325 diff = diffs.DiffProcessor(f_gitdiff,
325 diff = diffs.DiffProcessor(f_gitdiff,
326 format='gitdiff').raw_diff()
326 format='gitdiff').raw_diff()
327
327
328 cs1 = None
328 cs1 = None
329 cs2 = node.changeset.raw_id
329 cs2 = node.changeset.raw_id
330 c.changes.append(('added', node, diff, cs1, cs2))
330 c.changes.append(('added', node, diff, cs1, cs2))
331
331
332 for node in c.changeset.changed:
332 for node in c.changeset.changed:
333 filenode_old = c.changeset_parent.get_node(node.path)
333 filenode_old = c.changeset_parent.get_node(node.path)
334 if filenode_old.is_binary or node.is_binary:
334 if filenode_old.is_binary or node.is_binary:
335 diff = _('binary file')
335 diff = _('binary file')
336 else:
336 else:
337 f_gitdiff = diffs.get_gitdiff(filenode_old, node,
337 f_gitdiff = diffs.get_gitdiff(filenode_old, node,
338 ignore_whitespace=ignore_whitespace,
338 ignore_whitespace=ignore_whitespace,
339 context=line_context)
339 context=line_context)
340 diff = diffs.DiffProcessor(f_gitdiff,
340 diff = diffs.DiffProcessor(f_gitdiff,
341 format='gitdiff').raw_diff()
341 format='gitdiff').raw_diff()
342
342
343 cs1 = filenode_old.changeset.raw_id
343 cs1 = filenode_old.changeset.raw_id
344 cs2 = node.changeset.raw_id
344 cs2 = node.changeset.raw_id
345 c.changes.append(('changed', node, diff, cs1, cs2))
345 c.changes.append(('changed', node, diff, cs1, cs2))
346
346
347 response.content_type = 'text/plain'
347 response.content_type = 'text/plain'
348
348
349 if method == 'download':
349 if method == 'download':
350 response.content_disposition = 'attachment; filename=%s.patch' \
350 response.content_disposition = 'attachment; filename=%s.patch' \
351 % revision
351 % revision
352
352
353 c.parent_tmpl = ''.join(['# Parent %s\n' % x.raw_id
353 c.parent_tmpl = ''.join(['# Parent %s\n' % x.raw_id
354 for x in c.changeset.parents])
354 for x in c.changeset.parents])
355
355
356 c.diffs = ''
356 c.diffs = ''
357 for x in c.changes:
357 for x in c.changes:
358 c.diffs += x[2]
358 c.diffs += x[2]
359
359
360 return render('changeset/raw_changeset.html')
360 return render('changeset/raw_changeset.html')
361
361
362 @jsonify
362 def comment(self, repo_name, revision):
363 def comment(self, repo_name, revision):
363 ChangesetCommentsModel().create(text=request.POST.get('text'),
364 comm = ChangesetCommentsModel().create(
364 repo_id=c.rhodecode_db_repo.repo_id,
365 text=request.POST.get('text'),
365 user_id=c.rhodecode_user.user_id,
366 repo_id=c.rhodecode_db_repo.repo_id,
366 revision=revision,
367 user_id=c.rhodecode_user.user_id,
367 f_path=request.POST.get('f_path'),
368 revision=revision,
368 line_no=request.POST.get('line'))
369 f_path=request.POST.get('f_path'),
370 line_no=request.POST.get('line')
371 )
369 Session.commit()
372 Session.commit()
370 return redirect(h.url('changeset_home', repo_name=repo_name,
373 data = {
371 revision=revision))
374 'target_id': h.safeid(h.safe_unicode(request.POST.get('f_path'))),
375 }
376 if comm:
377 c.co = comm
378 data.update(comm.get_dict())
379 data.update({'rendered_text': render('changeset/changeset_comment_block.html')})
380 return data
372
381
373 @jsonify
382 @jsonify
374 def delete_comment(self, repo_name, comment_id):
383 def delete_comment(self, repo_name, comment_id):
375 co = ChangesetComment.get(comment_id)
384 co = ChangesetComment.get(comment_id)
376 owner = lambda: co.author.user_id == c.rhodecode_user.user_id
385 owner = lambda: co.author.user_id == c.rhodecode_user.user_id
377 if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner:
386 if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner:
378 ChangesetCommentsModel().delete(comment=co)
387 ChangesetCommentsModel().delete(comment=co)
379 Session.commit()
388 Session.commit()
380 return True
389 return True
381 else:
390 else:
382 raise HTTPForbidden()
391 raise HTTPForbidden()
@@ -1,151 +1,153 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.model.comment
3 rhodecode.model.comment
4 ~~~~~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~~~~~~
5
5
6 comments model for RhodeCode
6 comments model for RhodeCode
7
7
8 :created_on: Nov 11, 2011
8 :created_on: Nov 11, 2011
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2011-2012 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2011-2012 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software: you can redistribute it and/or modify
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
16 # (at your option) any later version.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25
25
26 import logging
26 import logging
27 import traceback
27 import traceback
28
28
29 from pylons.i18n.translation import _
29 from pylons.i18n.translation import _
30 from sqlalchemy.util.compat import defaultdict
30 from sqlalchemy.util.compat import defaultdict
31
31
32 from rhodecode.lib.utils2 import extract_mentioned_users, safe_unicode
32 from rhodecode.lib.utils2 import extract_mentioned_users, safe_unicode
33 from rhodecode.lib import helpers as h
33 from rhodecode.lib import helpers as h
34 from rhodecode.model import BaseModel
34 from rhodecode.model import BaseModel
35 from rhodecode.model.db import ChangesetComment, User, Repository, Notification
35 from rhodecode.model.db import ChangesetComment, User, Repository, Notification
36 from rhodecode.model.notification import NotificationModel
36 from rhodecode.model.notification import NotificationModel
37
37
38 log = logging.getLogger(__name__)
38 log = logging.getLogger(__name__)
39
39
40
40
41 class ChangesetCommentsModel(BaseModel):
41 class ChangesetCommentsModel(BaseModel):
42
42
43 def __get_changeset_comment(self, changeset_comment):
43 def __get_changeset_comment(self, changeset_comment):
44 return self._get_instance(ChangesetComment, changeset_comment)
44 return self._get_instance(ChangesetComment, changeset_comment)
45
45
46 def _extract_mentions(self, s):
46 def _extract_mentions(self, s):
47 user_objects = []
47 user_objects = []
48 for username in extract_mentioned_users(s):
48 for username in extract_mentioned_users(s):
49 user_obj = User.get_by_username(username, case_insensitive=True)
49 user_obj = User.get_by_username(username, case_insensitive=True)
50 if user_obj:
50 if user_obj:
51 user_objects.append(user_obj)
51 user_objects.append(user_obj)
52 return user_objects
52 return user_objects
53
53
54 def create(self, text, repo_id, user_id, revision, f_path=None,
54 def create(self, text, repo_id, user_id, revision, f_path=None,
55 line_no=None):
55 line_no=None):
56 """
56 """
57 Creates new comment for changeset
57 Creates new comment for changeset
58
58
59 :param text:
59 :param text:
60 :param repo_id:
60 :param repo_id:
61 :param user_id:
61 :param user_id:
62 :param revision:
62 :param revision:
63 :param f_path:
63 :param f_path:
64 :param line_no:
64 :param line_no:
65 """
65 """
66
66
67 if text:
67 if text:
68 repo = Repository.get(repo_id)
68 repo = Repository.get(repo_id)
69 cs = repo.scm_instance.get_changeset(revision)
69 cs = repo.scm_instance.get_changeset(revision)
70 desc = "%s - %s" % (cs.short_id, h.shorter(cs.message, 256))
70 desc = "%s - %s" % (cs.short_id, h.shorter(cs.message, 256))
71 author_email = cs.author_email
71 author_email = cs.author_email
72 comment = ChangesetComment()
72 comment = ChangesetComment()
73 comment.repo = repo
73 comment.repo = repo
74 comment.user_id = user_id
74 comment.user_id = user_id
75 comment.revision = revision
75 comment.revision = revision
76 comment.text = text
76 comment.text = text
77 comment.f_path = f_path
77 comment.f_path = f_path
78 comment.line_no = line_no
78 comment.line_no = line_no
79
79
80 self.sa.add(comment)
80 self.sa.add(comment)
81 self.sa.flush()
81 self.sa.flush()
82 # make notification
82 # make notification
83 line = ''
83 line = ''
84 if line_no:
84 if line_no:
85 line = _('on line %s') % line_no
85 line = _('on line %s') % line_no
86 subj = safe_unicode(
86 subj = safe_unicode(
87 h.link_to('Re commit: %(commit_desc)s %(line)s' % \
87 h.link_to('Re commit: %(commit_desc)s %(line)s' % \
88 {'commit_desc': desc, 'line': line},
88 {'commit_desc': desc, 'line': line},
89 h.url('changeset_home', repo_name=repo.repo_name,
89 h.url('changeset_home', repo_name=repo.repo_name,
90 revision=revision,
90 revision=revision,
91 anchor='comment-%s' % comment.comment_id,
91 anchor='comment-%s' % comment.comment_id,
92 qualified=True,
92 qualified=True,
93 )
93 )
94 )
94 )
95 )
95 )
96
96
97 body = text
97 body = text
98
98
99 # get the current participants of this changeset
99 # get the current participants of this changeset
100 recipients = ChangesetComment.get_users(revision=revision)
100 recipients = ChangesetComment.get_users(revision=revision)
101
101
102 # add changeset author if it's in rhodecode system
102 # add changeset author if it's in rhodecode system
103 recipients += [User.get_by_email(author_email)]
103 recipients += [User.get_by_email(author_email)]
104
104
105 NotificationModel().create(
105 NotificationModel().create(
106 created_by=user_id, subject=subj, body=body,
106 created_by=user_id, subject=subj, body=body,
107 recipients=recipients, type_=Notification.TYPE_CHANGESET_COMMENT
107 recipients=recipients, type_=Notification.TYPE_CHANGESET_COMMENT
108 )
108 )
109
109
110 mention_recipients = set(self._extract_mentions(body))\
110 mention_recipients = set(self._extract_mentions(body))\
111 .difference(recipients)
111 .difference(recipients)
112 if mention_recipients:
112 if mention_recipients:
113 subj = _('[Mention]') + ' ' + subj
113 subj = _('[Mention]') + ' ' + subj
114 NotificationModel().create(
114 NotificationModel().create(
115 created_by=user_id, subject=subj, body=body,
115 created_by=user_id, subject=subj, body=body,
116 recipients=mention_recipients,
116 recipients=mention_recipients,
117 type_=Notification.TYPE_CHANGESET_COMMENT
117 type_=Notification.TYPE_CHANGESET_COMMENT
118 )
118 )
119
119
120 return comment
120 return comment
121
121
122 def delete(self, comment):
122 def delete(self, comment):
123 """
123 """
124 Deletes given comment
124 Deletes given comment
125
125
126 :param comment_id:
126 :param comment_id:
127 """
127 """
128 comment = self.__get_changeset_comment(comment)
128 comment = self.__get_changeset_comment(comment)
129 self.sa.delete(comment)
129 self.sa.delete(comment)
130
130
131 return comment
131 return comment
132
132
133 def get_comments(self, repo_id, revision):
133 def get_comments(self, repo_id, revision):
134 return ChangesetComment.query()\
134 return ChangesetComment.query()\
135 .filter(ChangesetComment.repo_id == repo_id)\
135 .filter(ChangesetComment.repo_id == repo_id)\
136 .filter(ChangesetComment.revision == revision)\
136 .filter(ChangesetComment.revision == revision)\
137 .filter(ChangesetComment.line_no == None)\
137 .filter(ChangesetComment.line_no == None)\
138 .filter(ChangesetComment.f_path == None).all()
138 .filter(ChangesetComment.f_path == None).all()
139
139
140 def get_inline_comments(self, repo_id, revision):
140 def get_inline_comments(self, repo_id, revision):
141 comments = self.sa.query(ChangesetComment)\
141 comments = self.sa.query(ChangesetComment)\
142 .filter(ChangesetComment.repo_id == repo_id)\
142 .filter(ChangesetComment.repo_id == repo_id)\
143 .filter(ChangesetComment.revision == revision)\
143 .filter(ChangesetComment.revision == revision)\
144 .filter(ChangesetComment.line_no != None)\
144 .filter(ChangesetComment.line_no != None)\
145 .filter(ChangesetComment.f_path != None).all()
145 .filter(ChangesetComment.f_path != None)\
146 .order_by(ChangesetComment.comment_id.asc())\
147 .all()
146
148
147 paths = defaultdict(lambda: defaultdict(list))
149 paths = defaultdict(lambda: defaultdict(list))
148
150
149 for co in comments:
151 for co in comments:
150 paths[co.f_path][co.line_no].append(co)
152 paths[co.f_path][co.line_no].append(co)
151 return paths.items()
153 return paths.items()
@@ -1,4341 +1,4364 b''
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
2 {
2 {
3 border: 0;
3 border: 0;
4 outline: 0;
4 outline: 0;
5 font-size: 100%;
5 font-size: 100%;
6 vertical-align: baseline;
6 vertical-align: baseline;
7 background: transparent;
7 background: transparent;
8 margin: 0;
8 margin: 0;
9 padding: 0;
9 padding: 0;
10 }
10 }
11
11
12 body {
12 body {
13 line-height: 1;
13 line-height: 1;
14 height: 100%;
14 height: 100%;
15 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
16 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
16 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
17 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
17 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
18 color: #000;
18 color: #000;
19 margin: 0;
19 margin: 0;
20 padding: 0;
20 padding: 0;
21 font-size: 12px;
21 font-size: 12px;
22 }
22 }
23
23
24 ol,ul {
24 ol,ul {
25 list-style: none;
25 list-style: none;
26 }
26 }
27
27
28 blockquote,q {
28 blockquote,q {
29 quotes: none;
29 quotes: none;
30 }
30 }
31
31
32 blockquote:before,blockquote:after,q:before,q:after {
32 blockquote:before,blockquote:after,q:before,q:after {
33 content: none;
33 content: none;
34 }
34 }
35
35
36 :focus {
36 :focus {
37 outline: 0;
37 outline: 0;
38 }
38 }
39
39
40 del {
40 del {
41 text-decoration: line-through;
41 text-decoration: line-through;
42 }
42 }
43
43
44 table {
44 table {
45 border-collapse: collapse;
45 border-collapse: collapse;
46 border-spacing: 0;
46 border-spacing: 0;
47 }
47 }
48
48
49 html {
49 html {
50 height: 100%;
50 height: 100%;
51 }
51 }
52
52
53 a {
53 a {
54 color: #003367;
54 color: #003367;
55 text-decoration: none;
55 text-decoration: none;
56 cursor: pointer;
56 cursor: pointer;
57 }
57 }
58
58
59 a:hover {
59 a:hover {
60 color: #316293;
60 color: #316293;
61 text-decoration: underline;
61 text-decoration: underline;
62 }
62 }
63
63
64 h1,h2,h3,h4,h5,h6 {
64 h1,h2,h3,h4,h5,h6 {
65 color: #292929;
65 color: #292929;
66 font-weight: 700;
66 font-weight: 700;
67 }
67 }
68
68
69 h1 {
69 h1 {
70 font-size: 22px;
70 font-size: 22px;
71 }
71 }
72
72
73 h2 {
73 h2 {
74 font-size: 20px;
74 font-size: 20px;
75 }
75 }
76
76
77 h3 {
77 h3 {
78 font-size: 18px;
78 font-size: 18px;
79 }
79 }
80
80
81 h4 {
81 h4 {
82 font-size: 16px;
82 font-size: 16px;
83 }
83 }
84
84
85 h5 {
85 h5 {
86 font-size: 14px;
86 font-size: 14px;
87 }
87 }
88
88
89 h6 {
89 h6 {
90 font-size: 11px;
90 font-size: 11px;
91 }
91 }
92
92
93 ul.circle {
93 ul.circle {
94 list-style-type: circle;
94 list-style-type: circle;
95 }
95 }
96
96
97 ul.disc {
97 ul.disc {
98 list-style-type: disc;
98 list-style-type: disc;
99 }
99 }
100
100
101 ul.square {
101 ul.square {
102 list-style-type: square;
102 list-style-type: square;
103 }
103 }
104
104
105 ol.lower-roman {
105 ol.lower-roman {
106 list-style-type: lower-roman;
106 list-style-type: lower-roman;
107 }
107 }
108
108
109 ol.upper-roman {
109 ol.upper-roman {
110 list-style-type: upper-roman;
110 list-style-type: upper-roman;
111 }
111 }
112
112
113 ol.lower-alpha {
113 ol.lower-alpha {
114 list-style-type: lower-alpha;
114 list-style-type: lower-alpha;
115 }
115 }
116
116
117 ol.upper-alpha {
117 ol.upper-alpha {
118 list-style-type: upper-alpha;
118 list-style-type: upper-alpha;
119 }
119 }
120
120
121 ol.decimal {
121 ol.decimal {
122 list-style-type: decimal;
122 list-style-type: decimal;
123 }
123 }
124
124
125 div.color {
125 div.color {
126 clear: both;
126 clear: both;
127 overflow: hidden;
127 overflow: hidden;
128 position: absolute;
128 position: absolute;
129 background: #FFF;
129 background: #FFF;
130 margin: 7px 0 0 60px;
130 margin: 7px 0 0 60px;
131 padding: 1px 1px 1px 0;
131 padding: 1px 1px 1px 0;
132 }
132 }
133
133
134 div.color a {
134 div.color a {
135 width: 15px;
135 width: 15px;
136 height: 15px;
136 height: 15px;
137 display: block;
137 display: block;
138 float: left;
138 float: left;
139 margin: 0 0 0 1px;
139 margin: 0 0 0 1px;
140 padding: 0;
140 padding: 0;
141 }
141 }
142
142
143 div.options {
143 div.options {
144 clear: both;
144 clear: both;
145 overflow: hidden;
145 overflow: hidden;
146 position: absolute;
146 position: absolute;
147 background: #FFF;
147 background: #FFF;
148 margin: 7px 0 0 162px;
148 margin: 7px 0 0 162px;
149 padding: 0;
149 padding: 0;
150 }
150 }
151
151
152 div.options a {
152 div.options a {
153 height: 1%;
153 height: 1%;
154 display: block;
154 display: block;
155 text-decoration: none;
155 text-decoration: none;
156 margin: 0;
156 margin: 0;
157 padding: 3px 8px;
157 padding: 3px 8px;
158 }
158 }
159
159
160 .top-left-rounded-corner {
160 .top-left-rounded-corner {
161 -webkit-border-top-left-radius: 8px;
161 -webkit-border-top-left-radius: 8px;
162 -khtml-border-radius-topleft: 8px;
162 -khtml-border-radius-topleft: 8px;
163 -moz-border-radius-topleft: 8px;
163 -moz-border-radius-topleft: 8px;
164 border-top-left-radius: 8px;
164 border-top-left-radius: 8px;
165 }
165 }
166
166
167 .top-right-rounded-corner {
167 .top-right-rounded-corner {
168 -webkit-border-top-right-radius: 8px;
168 -webkit-border-top-right-radius: 8px;
169 -khtml-border-radius-topright: 8px;
169 -khtml-border-radius-topright: 8px;
170 -moz-border-radius-topright: 8px;
170 -moz-border-radius-topright: 8px;
171 border-top-right-radius: 8px;
171 border-top-right-radius: 8px;
172 }
172 }
173
173
174 .bottom-left-rounded-corner {
174 .bottom-left-rounded-corner {
175 -webkit-border-bottom-left-radius: 8px;
175 -webkit-border-bottom-left-radius: 8px;
176 -khtml-border-radius-bottomleft: 8px;
176 -khtml-border-radius-bottomleft: 8px;
177 -moz-border-radius-bottomleft: 8px;
177 -moz-border-radius-bottomleft: 8px;
178 border-bottom-left-radius: 8px;
178 border-bottom-left-radius: 8px;
179 }
179 }
180
180
181 .bottom-right-rounded-corner {
181 .bottom-right-rounded-corner {
182 -webkit-border-bottom-right-radius: 8px;
182 -webkit-border-bottom-right-radius: 8px;
183 -khtml-border-radius-bottomright: 8px;
183 -khtml-border-radius-bottomright: 8px;
184 -moz-border-radius-bottomright: 8px;
184 -moz-border-radius-bottomright: 8px;
185 border-bottom-right-radius: 8px;
185 border-bottom-right-radius: 8px;
186 }
186 }
187
187
188 .top-left-rounded-corner-mid {
188 .top-left-rounded-corner-mid {
189 -webkit-border-top-left-radius: 4px;
189 -webkit-border-top-left-radius: 4px;
190 -khtml-border-radius-topleft: 4px;
190 -khtml-border-radius-topleft: 4px;
191 -moz-border-radius-topleft: 4px;
191 -moz-border-radius-topleft: 4px;
192 border-top-left-radius: 4px;
192 border-top-left-radius: 4px;
193 }
193 }
194
194
195 .top-right-rounded-corner-mid {
195 .top-right-rounded-corner-mid {
196 -webkit-border-top-right-radius: 4px;
196 -webkit-border-top-right-radius: 4px;
197 -khtml-border-radius-topright: 4px;
197 -khtml-border-radius-topright: 4px;
198 -moz-border-radius-topright: 4px;
198 -moz-border-radius-topright: 4px;
199 border-top-right-radius: 4px;
199 border-top-right-radius: 4px;
200 }
200 }
201
201
202 .bottom-left-rounded-corner-mid {
202 .bottom-left-rounded-corner-mid {
203 -webkit-border-bottom-left-radius: 4px;
203 -webkit-border-bottom-left-radius: 4px;
204 -khtml-border-radius-bottomleft: 4px;
204 -khtml-border-radius-bottomleft: 4px;
205 -moz-border-radius-bottomleft: 4px;
205 -moz-border-radius-bottomleft: 4px;
206 border-bottom-left-radius: 4px;
206 border-bottom-left-radius: 4px;
207 }
207 }
208
208
209 .bottom-right-rounded-corner-mid {
209 .bottom-right-rounded-corner-mid {
210 -webkit-border-bottom-right-radius: 4px;
210 -webkit-border-bottom-right-radius: 4px;
211 -khtml-border-radius-bottomright: 4px;
211 -khtml-border-radius-bottomright: 4px;
212 -moz-border-radius-bottomright: 4px;
212 -moz-border-radius-bottomright: 4px;
213 border-bottom-right-radius: 4px;
213 border-bottom-right-radius: 4px;
214 }
214 }
215
215
216 .help-block {
216 .help-block {
217 color: #999999;
217 color: #999999;
218 display: block;
218 display: block;
219 margin-bottom: 0;
219 margin-bottom: 0;
220 margin-top: 5px;
220 margin-top: 5px;
221 }
221 }
222
222
223 #header {
223 #header {
224 margin: 0;
224 margin: 0;
225 padding: 0 10px;
225 padding: 0 10px;
226 }
226 }
227
227
228 #header ul#logged-user {
228 #header ul#logged-user {
229 margin-bottom: 5px !important;
229 margin-bottom: 5px !important;
230 -webkit-border-radius: 0px 0px 8px 8px;
230 -webkit-border-radius: 0px 0px 8px 8px;
231 -khtml-border-radius: 0px 0px 8px 8px;
231 -khtml-border-radius: 0px 0px 8px 8px;
232 -moz-border-radius: 0px 0px 8px 8px;
232 -moz-border-radius: 0px 0px 8px 8px;
233 border-radius: 0px 0px 8px 8px;
233 border-radius: 0px 0px 8px 8px;
234 height: 37px;
234 height: 37px;
235 background-color: #003B76;
235 background-color: #003B76;
236 background-repeat: repeat-x;
236 background-repeat: repeat-x;
237 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
237 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
238 background-image: -moz-linear-gradient(top, #003b76, #00376e);
238 background-image: -moz-linear-gradient(top, #003b76, #00376e);
239 background-image: -ms-linear-gradient(top, #003b76, #00376e);
239 background-image: -ms-linear-gradient(top, #003b76, #00376e);
240 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
240 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
241 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
241 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
242 background-image: -o-linear-gradient(top, #003b76, #00376e);
242 background-image: -o-linear-gradient(top, #003b76, #00376e);
243 background-image: linear-gradient(top, #003b76, #00376e);
243 background-image: linear-gradient(top, #003b76, #00376e);
244 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
244 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
245 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
245 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
246 }
246 }
247
247
248 #header ul#logged-user li {
248 #header ul#logged-user li {
249 list-style: none;
249 list-style: none;
250 float: left;
250 float: left;
251 margin: 8px 0 0;
251 margin: 8px 0 0;
252 padding: 4px 12px;
252 padding: 4px 12px;
253 border-left: 1px solid #316293;
253 border-left: 1px solid #316293;
254 }
254 }
255
255
256 #header ul#logged-user li.first {
256 #header ul#logged-user li.first {
257 border-left: none;
257 border-left: none;
258 margin: 4px;
258 margin: 4px;
259 }
259 }
260
260
261 #header ul#logged-user li.first div.gravatar {
261 #header ul#logged-user li.first div.gravatar {
262 margin-top: -2px;
262 margin-top: -2px;
263 }
263 }
264
264
265 #header ul#logged-user li.first div.account {
265 #header ul#logged-user li.first div.account {
266 padding-top: 4px;
266 padding-top: 4px;
267 float: left;
267 float: left;
268 }
268 }
269
269
270 #header ul#logged-user li.last {
270 #header ul#logged-user li.last {
271 border-right: none;
271 border-right: none;
272 }
272 }
273
273
274 #header ul#logged-user li a {
274 #header ul#logged-user li a {
275 color: #fff;
275 color: #fff;
276 font-weight: 700;
276 font-weight: 700;
277 text-decoration: none;
277 text-decoration: none;
278 }
278 }
279
279
280 #header ul#logged-user li a:hover {
280 #header ul#logged-user li a:hover {
281 text-decoration: underline;
281 text-decoration: underline;
282 }
282 }
283
283
284 #header ul#logged-user li.highlight a {
284 #header ul#logged-user li.highlight a {
285 color: #fff;
285 color: #fff;
286 }
286 }
287
287
288 #header ul#logged-user li.highlight a:hover {
288 #header ul#logged-user li.highlight a:hover {
289 color: #FFF;
289 color: #FFF;
290 }
290 }
291
291
292 #header #header-inner {
292 #header #header-inner {
293 min-height: 44px;
293 min-height: 44px;
294 clear: both;
294 clear: both;
295 position: relative;
295 position: relative;
296 background-color: #003B76;
296 background-color: #003B76;
297 background-repeat: repeat-x;
297 background-repeat: repeat-x;
298 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
298 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
299 background-image: -moz-linear-gradient(top, #003b76, #00376e);
299 background-image: -moz-linear-gradient(top, #003b76, #00376e);
300 background-image: -ms-linear-gradient(top, #003b76, #00376e);
300 background-image: -ms-linear-gradient(top, #003b76, #00376e);
301 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),color-stop(100%, #00376e) );
301 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),color-stop(100%, #00376e) );
302 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
302 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
303 background-image: -o-linear-gradient(top, #003b76, #00376e);
303 background-image: -o-linear-gradient(top, #003b76, #00376e);
304 background-image: linear-gradient(top, #003b76, #00376e);
304 background-image: linear-gradient(top, #003b76, #00376e);
305 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
305 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
306 margin: 0;
306 margin: 0;
307 padding: 0;
307 padding: 0;
308 display: block;
308 display: block;
309 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
309 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
310 -webkit-border-radius: 4px 4px 4px 4px;
310 -webkit-border-radius: 4px 4px 4px 4px;
311 -khtml-border-radius: 4px 4px 4px 4px;
311 -khtml-border-radius: 4px 4px 4px 4px;
312 -moz-border-radius: 4px 4px 4px 4px;
312 -moz-border-radius: 4px 4px 4px 4px;
313 border-radius: 4px 4px 4px 4px;
313 border-radius: 4px 4px 4px 4px;
314 }
314 }
315 #header #header-inner.hover{
315 #header #header-inner.hover{
316 position: fixed !important;
316 position: fixed !important;
317 width: 100% !important;
317 width: 100% !important;
318 margin-left: -10px !important;
318 margin-left: -10px !important;
319 z-index: 10000;
319 z-index: 10000;
320 -webkit-border-radius: 0px 0px 0px 0px;
320 -webkit-border-radius: 0px 0px 0px 0px;
321 -khtml-border-radius: 0px 0px 0px 0px;
321 -khtml-border-radius: 0px 0px 0px 0px;
322 -moz-border-radius: 0px 0px 0px 0px;
322 -moz-border-radius: 0px 0px 0px 0px;
323 border-radius: 0px 0px 0px 0px;
323 border-radius: 0px 0px 0px 0px;
324 }
324 }
325
325
326 .ie7 #header #header-inner.hover,
326 .ie7 #header #header-inner.hover,
327 .ie8 #header #header-inner.hover,
327 .ie8 #header #header-inner.hover,
328 .ie9 #header #header-inner.hover
328 .ie9 #header #header-inner.hover
329 {
329 {
330 z-index: auto !important;
330 z-index: auto !important;
331 }
331 }
332
332
333 #header #header-inner #home a {
333 #header #header-inner #home a {
334 height: 40px;
334 height: 40px;
335 width: 46px;
335 width: 46px;
336 display: block;
336 display: block;
337 background: url("../images/button_home.png");
337 background: url("../images/button_home.png");
338 background-position: 0 0;
338 background-position: 0 0;
339 margin: 0;
339 margin: 0;
340 padding: 0;
340 padding: 0;
341 }
341 }
342
342
343 #header #header-inner #home a:hover {
343 #header #header-inner #home a:hover {
344 background-position: 0 -40px;
344 background-position: 0 -40px;
345 }
345 }
346
346
347 #header #header-inner #logo {
347 #header #header-inner #logo {
348 float: left;
348 float: left;
349 position: absolute;
349 position: absolute;
350 }
350 }
351
351
352 #header #header-inner #logo h1 {
352 #header #header-inner #logo h1 {
353 color: #FFF;
353 color: #FFF;
354 font-size: 20px;
354 font-size: 20px;
355 margin: 12px 0 0 13px;
355 margin: 12px 0 0 13px;
356 padding: 0;
356 padding: 0;
357 }
357 }
358
358
359 #header #header-inner #logo a {
359 #header #header-inner #logo a {
360 color: #fff;
360 color: #fff;
361 text-decoration: none;
361 text-decoration: none;
362 }
362 }
363
363
364 #header #header-inner #logo a:hover {
364 #header #header-inner #logo a:hover {
365 color: #bfe3ff;
365 color: #bfe3ff;
366 }
366 }
367
367
368 #header #header-inner #quick,#header #header-inner #quick ul {
368 #header #header-inner #quick,#header #header-inner #quick ul {
369 position: relative;
369 position: relative;
370 float: right;
370 float: right;
371 list-style-type: none;
371 list-style-type: none;
372 list-style-position: outside;
372 list-style-position: outside;
373 margin: 8px 8px 0 0;
373 margin: 8px 8px 0 0;
374 padding: 0;
374 padding: 0;
375 }
375 }
376
376
377 #header #header-inner #quick li {
377 #header #header-inner #quick li {
378 position: relative;
378 position: relative;
379 float: left;
379 float: left;
380 margin: 0 5px 0 0;
380 margin: 0 5px 0 0;
381 padding: 0;
381 padding: 0;
382 }
382 }
383
383
384 #header #header-inner #quick li a.menu_link {
384 #header #header-inner #quick li a.menu_link {
385 top: 0;
385 top: 0;
386 left: 0;
386 left: 0;
387 height: 1%;
387 height: 1%;
388 display: block;
388 display: block;
389 clear: both;
389 clear: both;
390 overflow: hidden;
390 overflow: hidden;
391 color: #FFF;
391 color: #FFF;
392 font-weight: 700;
392 font-weight: 700;
393 text-decoration: none;
393 text-decoration: none;
394 background: #369;
394 background: #369;
395 padding: 0;
395 padding: 0;
396 -webkit-border-radius: 4px 4px 4px 4px;
396 -webkit-border-radius: 4px 4px 4px 4px;
397 -khtml-border-radius: 4px 4px 4px 4px;
397 -khtml-border-radius: 4px 4px 4px 4px;
398 -moz-border-radius: 4px 4px 4px 4px;
398 -moz-border-radius: 4px 4px 4px 4px;
399 border-radius: 4px 4px 4px 4px;
399 border-radius: 4px 4px 4px 4px;
400 }
400 }
401
401
402 #header #header-inner #quick li span.short {
402 #header #header-inner #quick li span.short {
403 padding: 9px 6px 8px 6px;
403 padding: 9px 6px 8px 6px;
404 }
404 }
405
405
406 #header #header-inner #quick li span {
406 #header #header-inner #quick li span {
407 top: 0;
407 top: 0;
408 right: 0;
408 right: 0;
409 height: 1%;
409 height: 1%;
410 display: block;
410 display: block;
411 float: left;
411 float: left;
412 border-left: 1px solid #3f6f9f;
412 border-left: 1px solid #3f6f9f;
413 margin: 0;
413 margin: 0;
414 padding: 10px 12px 8px 10px;
414 padding: 10px 12px 8px 10px;
415 }
415 }
416
416
417 #header #header-inner #quick li span.normal {
417 #header #header-inner #quick li span.normal {
418 border: none;
418 border: none;
419 padding: 10px 12px 8px;
419 padding: 10px 12px 8px;
420 }
420 }
421
421
422 #header #header-inner #quick li span.icon {
422 #header #header-inner #quick li span.icon {
423 top: 0;
423 top: 0;
424 left: 0;
424 left: 0;
425 border-left: none;
425 border-left: none;
426 border-right: 1px solid #2e5c89;
426 border-right: 1px solid #2e5c89;
427 padding: 8px 6px 4px;
427 padding: 8px 6px 4px;
428 }
428 }
429
429
430 #header #header-inner #quick li span.icon_short {
430 #header #header-inner #quick li span.icon_short {
431 top: 0;
431 top: 0;
432 left: 0;
432 left: 0;
433 border-left: none;
433 border-left: none;
434 border-right: 1px solid #2e5c89;
434 border-right: 1px solid #2e5c89;
435 padding: 8px 6px 4px;
435 padding: 8px 6px 4px;
436 }
436 }
437
437
438 #header #header-inner #quick li span.icon img,#header #header-inner #quick li span.icon_short img
438 #header #header-inner #quick li span.icon img,#header #header-inner #quick li span.icon_short img
439 {
439 {
440 margin: 0px -2px 0px 0px;
440 margin: 0px -2px 0px 0px;
441 }
441 }
442
442
443 #header #header-inner #quick li a:hover {
443 #header #header-inner #quick li a:hover {
444 background: #4e4e4e no-repeat top left;
444 background: #4e4e4e no-repeat top left;
445 }
445 }
446
446
447 #header #header-inner #quick li a:hover span {
447 #header #header-inner #quick li a:hover span {
448 border-left: 1px solid #545454;
448 border-left: 1px solid #545454;
449 }
449 }
450
450
451 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short
451 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short
452 {
452 {
453 border-left: none;
453 border-left: none;
454 border-right: 1px solid #464646;
454 border-right: 1px solid #464646;
455 }
455 }
456
456
457 #header #header-inner #quick ul {
457 #header #header-inner #quick ul {
458 top: 29px;
458 top: 29px;
459 right: 0;
459 right: 0;
460 min-width: 200px;
460 min-width: 200px;
461 display: none;
461 display: none;
462 position: absolute;
462 position: absolute;
463 background: #FFF;
463 background: #FFF;
464 border: 1px solid #666;
464 border: 1px solid #666;
465 border-top: 1px solid #003367;
465 border-top: 1px solid #003367;
466 z-index: 100;
466 z-index: 100;
467 margin: 0px 0px 0px 0px;
467 margin: 0px 0px 0px 0px;
468 padding: 0;
468 padding: 0;
469 }
469 }
470
470
471 #header #header-inner #quick ul.repo_switcher {
471 #header #header-inner #quick ul.repo_switcher {
472 max-height: 275px;
472 max-height: 275px;
473 overflow-x: hidden;
473 overflow-x: hidden;
474 overflow-y: auto;
474 overflow-y: auto;
475 }
475 }
476
476
477 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
477 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
478 float: none;
478 float: none;
479 margin: 0;
479 margin: 0;
480 border-bottom: 2px solid #003367;
480 border-bottom: 2px solid #003367;
481 }
481 }
482
482
483 #header #header-inner #quick .repo_switcher_type {
483 #header #header-inner #quick .repo_switcher_type {
484 position: absolute;
484 position: absolute;
485 left: 0;
485 left: 0;
486 top: 9px;
486 top: 9px;
487 }
487 }
488
488
489 #header #header-inner #quick li ul li {
489 #header #header-inner #quick li ul li {
490 border-bottom: 1px solid #ddd;
490 border-bottom: 1px solid #ddd;
491 }
491 }
492
492
493 #header #header-inner #quick li ul li a {
493 #header #header-inner #quick li ul li a {
494 width: 182px;
494 width: 182px;
495 height: auto;
495 height: auto;
496 display: block;
496 display: block;
497 float: left;
497 float: left;
498 background: #FFF;
498 background: #FFF;
499 color: #003367;
499 color: #003367;
500 font-weight: 400;
500 font-weight: 400;
501 margin: 0;
501 margin: 0;
502 padding: 7px 9px;
502 padding: 7px 9px;
503 }
503 }
504
504
505 #header #header-inner #quick li ul li a:hover {
505 #header #header-inner #quick li ul li a:hover {
506 color: #000;
506 color: #000;
507 background: #FFF;
507 background: #FFF;
508 }
508 }
509
509
510 #header #header-inner #quick ul ul {
510 #header #header-inner #quick ul ul {
511 top: auto;
511 top: auto;
512 }
512 }
513
513
514 #header #header-inner #quick li ul ul {
514 #header #header-inner #quick li ul ul {
515 right: 200px;
515 right: 200px;
516 max-height: 275px;
516 max-height: 275px;
517 overflow: auto;
517 overflow: auto;
518 overflow-x: hidden;
518 overflow-x: hidden;
519 white-space: normal;
519 white-space: normal;
520 }
520 }
521
521
522 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover
522 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover
523 {
523 {
524 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
524 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
525 #FFF;
525 #FFF;
526 width: 167px;
526 width: 167px;
527 margin: 0;
527 margin: 0;
528 padding: 12px 9px 7px 24px;
528 padding: 12px 9px 7px 24px;
529 }
529 }
530
530
531 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover
531 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover
532 {
532 {
533 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
533 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
534 #FFF;
534 #FFF;
535 min-width: 167px;
535 min-width: 167px;
536 margin: 0;
536 margin: 0;
537 padding: 12px 9px 7px 24px;
537 padding: 12px 9px 7px 24px;
538 }
538 }
539
539
540 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover
540 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover
541 {
541 {
542 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
542 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
543 9px #FFF;
543 9px #FFF;
544 min-width: 167px;
544 min-width: 167px;
545 margin: 0;
545 margin: 0;
546 padding: 12px 9px 7px 24px;
546 padding: 12px 9px 7px 24px;
547 }
547 }
548
548
549 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover
549 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover
550 {
550 {
551 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
551 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
552 #FFF;
552 #FFF;
553 min-width: 167px;
553 min-width: 167px;
554 margin: 0 0 0 14px;
554 margin: 0 0 0 14px;
555 padding: 12px 9px 7px 24px;
555 padding: 12px 9px 7px 24px;
556 }
556 }
557
557
558 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover
558 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover
559 {
559 {
560 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
560 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
561 #FFF;
561 #FFF;
562 min-width: 167px;
562 min-width: 167px;
563 margin: 0 0 0 14px;
563 margin: 0 0 0 14px;
564 padding: 12px 9px 7px 24px;
564 padding: 12px 9px 7px 24px;
565 }
565 }
566
566
567 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
567 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
568 {
568 {
569 background: url("../images/icons/database_edit.png") no-repeat scroll
569 background: url("../images/icons/database_edit.png") no-repeat scroll
570 4px 9px #FFF;
570 4px 9px #FFF;
571 width: 167px;
571 width: 167px;
572 margin: 0;
572 margin: 0;
573 padding: 12px 9px 7px 24px;
573 padding: 12px 9px 7px 24px;
574 }
574 }
575
575
576 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover
576 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover
577 {
577 {
578 background: url("../images/icons/database_link.png") no-repeat scroll
578 background: url("../images/icons/database_link.png") no-repeat scroll
579 4px 9px #FFF;
579 4px 9px #FFF;
580 width: 167px;
580 width: 167px;
581 margin: 0;
581 margin: 0;
582 padding: 12px 9px 7px 24px;
582 padding: 12px 9px 7px 24px;
583 }
583 }
584
584
585 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
585 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
586 {
586 {
587 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
587 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
588 width: 167px;
588 width: 167px;
589 margin: 0;
589 margin: 0;
590 padding: 12px 9px 7px 24px;
590 padding: 12px 9px 7px 24px;
591 }
591 }
592
592
593 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover
593 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover
594 {
594 {
595 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
595 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
596 width: 167px;
596 width: 167px;
597 margin: 0;
597 margin: 0;
598 padding: 12px 9px 7px 24px;
598 padding: 12px 9px 7px 24px;
599 }
599 }
600
600
601 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
601 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
602 {
602 {
603 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
603 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
604 width: 167px;
604 width: 167px;
605 margin: 0;
605 margin: 0;
606 padding: 12px 9px 7px 24px;
606 padding: 12px 9px 7px 24px;
607 }
607 }
608
608
609 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
609 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
610 {
610 {
611 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
611 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
612 width: 167px;
612 width: 167px;
613 margin: 0;
613 margin: 0;
614 padding: 12px 9px 7px 24px;
614 padding: 12px 9px 7px 24px;
615 }
615 }
616
616
617 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover
617 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover
618 {
618 {
619 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
619 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
620 width: 167px;
620 width: 167px;
621 margin: 0;
621 margin: 0;
622 padding: 12px 9px 7px 24px;
622 padding: 12px 9px 7px 24px;
623 }
623 }
624
624
625 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover
625 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover
626 {
626 {
627 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
627 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
628 9px;
628 9px;
629 width: 167px;
629 width: 167px;
630 margin: 0;
630 margin: 0;
631 padding: 12px 9px 7px 24px;
631 padding: 12px 9px 7px 24px;
632 }
632 }
633
633
634 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover
634 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover
635 {
635 {
636 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
636 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
637 width: 167px;
637 width: 167px;
638 margin: 0;
638 margin: 0;
639 padding: 12px 9px 7px 24px;
639 padding: 12px 9px 7px 24px;
640 }
640 }
641
641
642 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover
642 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover
643 {
643 {
644 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
644 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
645 width: 167px;
645 width: 167px;
646 margin: 0;
646 margin: 0;
647 padding: 12px 9px 7px 24px;
647 padding: 12px 9px 7px 24px;
648 }
648 }
649
649
650 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover
650 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover
651 {
651 {
652 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
652 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
653 9px;
653 9px;
654 width: 167px;
654 width: 167px;
655 margin: 0;
655 margin: 0;
656 padding: 12px 9px 7px 24px;
656 padding: 12px 9px 7px 24px;
657 }
657 }
658
658
659 #header #header-inner #quick li ul li a.tags,
659 #header #header-inner #quick li ul li a.tags,
660 #header #header-inner #quick li ul li a.tags:hover{
660 #header #header-inner #quick li ul li a.tags:hover{
661 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
661 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
662 width: 167px;
662 width: 167px;
663 margin: 0;
663 margin: 0;
664 padding: 12px 9px 7px 24px;
664 padding: 12px 9px 7px 24px;
665 }
665 }
666
666
667 #header #header-inner #quick li ul li a.bookmarks,
667 #header #header-inner #quick li ul li a.bookmarks,
668 #header #header-inner #quick li ul li a.bookmarks:hover{
668 #header #header-inner #quick li ul li a.bookmarks:hover{
669 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
669 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
670 width: 167px;
670 width: 167px;
671 margin: 0;
671 margin: 0;
672 padding: 12px 9px 7px 24px;
672 padding: 12px 9px 7px 24px;
673 }
673 }
674
674
675 #header #header-inner #quick li ul li a.admin,
675 #header #header-inner #quick li ul li a.admin,
676 #header #header-inner #quick li ul li a.admin:hover{
676 #header #header-inner #quick li ul li a.admin:hover{
677 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
677 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
678 width: 167px;
678 width: 167px;
679 margin: 0;
679 margin: 0;
680 padding: 12px 9px 7px 24px;
680 padding: 12px 9px 7px 24px;
681 }
681 }
682
682
683 .groups_breadcrumbs a {
683 .groups_breadcrumbs a {
684 color: #fff;
684 color: #fff;
685 }
685 }
686
686
687 .groups_breadcrumbs a:hover {
687 .groups_breadcrumbs a:hover {
688 color: #bfe3ff;
688 color: #bfe3ff;
689 text-decoration: none;
689 text-decoration: none;
690 }
690 }
691
691
692 td.quick_repo_menu {
692 td.quick_repo_menu {
693 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
693 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
694 cursor: pointer;
694 cursor: pointer;
695 width: 8px;
695 width: 8px;
696 border: 1px solid transparent;
696 border: 1px solid transparent;
697 }
697 }
698
698
699 td.quick_repo_menu.active {
699 td.quick_repo_menu.active {
700 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
700 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
701 border: 1px solid #003367;
701 border: 1px solid #003367;
702 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
702 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
703 cursor: pointer;
703 cursor: pointer;
704 }
704 }
705
705
706 td.quick_repo_menu .menu_items {
706 td.quick_repo_menu .menu_items {
707 margin-top: 10px;
707 margin-top: 10px;
708 margin-left:-6px;
708 margin-left:-6px;
709 width: 150px;
709 width: 150px;
710 position: absolute;
710 position: absolute;
711 background-color: #FFF;
711 background-color: #FFF;
712 background: none repeat scroll 0 0 #FFFFFF;
712 background: none repeat scroll 0 0 #FFFFFF;
713 border-color: #003367 #666666 #666666;
713 border-color: #003367 #666666 #666666;
714 border-right: 1px solid #666666;
714 border-right: 1px solid #666666;
715 border-style: solid;
715 border-style: solid;
716 border-width: 1px;
716 border-width: 1px;
717 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
717 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
718 border-top-style: none;
718 border-top-style: none;
719 }
719 }
720
720
721 td.quick_repo_menu .menu_items li {
721 td.quick_repo_menu .menu_items li {
722 padding: 0 !important;
722 padding: 0 !important;
723 }
723 }
724
724
725 td.quick_repo_menu .menu_items a {
725 td.quick_repo_menu .menu_items a {
726 display: block;
726 display: block;
727 padding: 4px 12px 4px 8px;
727 padding: 4px 12px 4px 8px;
728 }
728 }
729
729
730 td.quick_repo_menu .menu_items a:hover {
730 td.quick_repo_menu .menu_items a:hover {
731 background-color: #EEE;
731 background-color: #EEE;
732 text-decoration: none;
732 text-decoration: none;
733 }
733 }
734
734
735 td.quick_repo_menu .menu_items .icon img {
735 td.quick_repo_menu .menu_items .icon img {
736 margin-bottom: -2px;
736 margin-bottom: -2px;
737 }
737 }
738
738
739 td.quick_repo_menu .menu_items.hidden {
739 td.quick_repo_menu .menu_items.hidden {
740 display: none;
740 display: none;
741 }
741 }
742
742
743 .yui-dt-first th {
743 .yui-dt-first th {
744 text-align: left;
744 text-align: left;
745 }
745 }
746
746
747 /*
747 /*
748 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
748 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
749 Code licensed under the BSD License:
749 Code licensed under the BSD License:
750 http://developer.yahoo.com/yui/license.html
750 http://developer.yahoo.com/yui/license.html
751 version: 2.9.0
751 version: 2.9.0
752 */
752 */
753 .yui-skin-sam .yui-dt-mask {
753 .yui-skin-sam .yui-dt-mask {
754 position: absolute;
754 position: absolute;
755 z-index: 9500;
755 z-index: 9500;
756 }
756 }
757 .yui-dt-tmp {
757 .yui-dt-tmp {
758 position: absolute;
758 position: absolute;
759 left: -9000px;
759 left: -9000px;
760 }
760 }
761 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
761 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
762 .yui-dt-scrollable .yui-dt-hd {
762 .yui-dt-scrollable .yui-dt-hd {
763 overflow: hidden;
763 overflow: hidden;
764 position: relative;
764 position: relative;
765 }
765 }
766 .yui-dt-scrollable .yui-dt-bd thead tr,
766 .yui-dt-scrollable .yui-dt-bd thead tr,
767 .yui-dt-scrollable .yui-dt-bd thead th {
767 .yui-dt-scrollable .yui-dt-bd thead th {
768 position: absolute;
768 position: absolute;
769 left: -1500px;
769 left: -1500px;
770 }
770 }
771 .yui-dt-scrollable tbody { -moz-outline: 0 }
771 .yui-dt-scrollable tbody { -moz-outline: 0 }
772 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
772 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
773 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
773 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
774 .yui-dt-coltarget {
774 .yui-dt-coltarget {
775 position: absolute;
775 position: absolute;
776 z-index: 999;
776 z-index: 999;
777 }
777 }
778 .yui-dt-hd { zoom: 1 }
778 .yui-dt-hd { zoom: 1 }
779 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
779 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
780 .yui-dt-resizer {
780 .yui-dt-resizer {
781 position: absolute;
781 position: absolute;
782 right: 0;
782 right: 0;
783 bottom: 0;
783 bottom: 0;
784 height: 100%;
784 height: 100%;
785 cursor: e-resize;
785 cursor: e-resize;
786 cursor: col-resize;
786 cursor: col-resize;
787 background-color: #CCC;
787 background-color: #CCC;
788 opacity: 0;
788 opacity: 0;
789 filter: alpha(opacity=0);
789 filter: alpha(opacity=0);
790 }
790 }
791 .yui-dt-resizerproxy {
791 .yui-dt-resizerproxy {
792 visibility: hidden;
792 visibility: hidden;
793 position: absolute;
793 position: absolute;
794 z-index: 9000;
794 z-index: 9000;
795 background-color: #CCC;
795 background-color: #CCC;
796 opacity: 0;
796 opacity: 0;
797 filter: alpha(opacity=0);
797 filter: alpha(opacity=0);
798 }
798 }
799 th.yui-dt-hidden .yui-dt-liner,
799 th.yui-dt-hidden .yui-dt-liner,
800 td.yui-dt-hidden .yui-dt-liner,
800 td.yui-dt-hidden .yui-dt-liner,
801 th.yui-dt-hidden .yui-dt-resizer { display: none }
801 th.yui-dt-hidden .yui-dt-resizer { display: none }
802 .yui-dt-editor,
802 .yui-dt-editor,
803 .yui-dt-editor-shim {
803 .yui-dt-editor-shim {
804 position: absolute;
804 position: absolute;
805 z-index: 9000;
805 z-index: 9000;
806 }
806 }
807 .yui-skin-sam .yui-dt table {
807 .yui-skin-sam .yui-dt table {
808 margin: 0;
808 margin: 0;
809 padding: 0;
809 padding: 0;
810 font-family: arial;
810 font-family: arial;
811 font-size: inherit;
811 font-size: inherit;
812 border-collapse: separate;
812 border-collapse: separate;
813 *border-collapse: collapse;
813 *border-collapse: collapse;
814 border-spacing: 0;
814 border-spacing: 0;
815 border: 1px solid #7f7f7f;
815 border: 1px solid #7f7f7f;
816 }
816 }
817 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
817 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
818 .yui-skin-sam .yui-dt caption {
818 .yui-skin-sam .yui-dt caption {
819 color: #000;
819 color: #000;
820 font-size: 85%;
820 font-size: 85%;
821 font-weight: normal;
821 font-weight: normal;
822 font-style: italic;
822 font-style: italic;
823 line-height: 1;
823 line-height: 1;
824 padding: 1em 0;
824 padding: 1em 0;
825 text-align: center;
825 text-align: center;
826 }
826 }
827 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
827 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
828 .yui-skin-sam .yui-dt th,
828 .yui-skin-sam .yui-dt th,
829 .yui-skin-sam .yui-dt th a {
829 .yui-skin-sam .yui-dt th a {
830 font-weight: normal;
830 font-weight: normal;
831 text-decoration: none;
831 text-decoration: none;
832 color: #000;
832 color: #000;
833 vertical-align: bottom;
833 vertical-align: bottom;
834 }
834 }
835 .yui-skin-sam .yui-dt th {
835 .yui-skin-sam .yui-dt th {
836 margin: 0;
836 margin: 0;
837 padding: 0;
837 padding: 0;
838 border: 0;
838 border: 0;
839 border-right: 1px solid #cbcbcb;
839 border-right: 1px solid #cbcbcb;
840 }
840 }
841 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
841 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
842 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
842 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
843 .yui-skin-sam .yui-dt-liner {
843 .yui-skin-sam .yui-dt-liner {
844 margin: 0;
844 margin: 0;
845 padding: 0;
845 padding: 0;
846 }
846 }
847 .yui-skin-sam .yui-dt-coltarget {
847 .yui-skin-sam .yui-dt-coltarget {
848 width: 5px;
848 width: 5px;
849 background-color: red;
849 background-color: red;
850 }
850 }
851 .yui-skin-sam .yui-dt td {
851 .yui-skin-sam .yui-dt td {
852 margin: 0;
852 margin: 0;
853 padding: 0;
853 padding: 0;
854 border: 0;
854 border: 0;
855 border-right: 1px solid #cbcbcb;
855 border-right: 1px solid #cbcbcb;
856 text-align: left;
856 text-align: left;
857 }
857 }
858 .yui-skin-sam .yui-dt-list td { border-right: 0 }
858 .yui-skin-sam .yui-dt-list td { border-right: 0 }
859 .yui-skin-sam .yui-dt-resizer { width: 6px }
859 .yui-skin-sam .yui-dt-resizer { width: 6px }
860 .yui-skin-sam .yui-dt-mask {
860 .yui-skin-sam .yui-dt-mask {
861 background-color: #000;
861 background-color: #000;
862 opacity: .25;
862 opacity: .25;
863 filter: alpha(opacity=25);
863 filter: alpha(opacity=25);
864 }
864 }
865 .yui-skin-sam .yui-dt-message { background-color: #FFF }
865 .yui-skin-sam .yui-dt-message { background-color: #FFF }
866 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
866 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
867 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
867 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
868 border-left: 1px solid #7f7f7f;
868 border-left: 1px solid #7f7f7f;
869 border-top: 1px solid #7f7f7f;
869 border-top: 1px solid #7f7f7f;
870 border-right: 1px solid #7f7f7f;
870 border-right: 1px solid #7f7f7f;
871 }
871 }
872 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
872 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
873 border-left: 1px solid #7f7f7f;
873 border-left: 1px solid #7f7f7f;
874 border-bottom: 1px solid #7f7f7f;
874 border-bottom: 1px solid #7f7f7f;
875 border-right: 1px solid #7f7f7f;
875 border-right: 1px solid #7f7f7f;
876 background-color: #FFF;
876 background-color: #FFF;
877 }
877 }
878 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
878 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
879 .yui-skin-sam th.yui-dt-asc,
879 .yui-skin-sam th.yui-dt-asc,
880 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
880 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
881 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
881 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
882 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
882 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
883 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
883 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
884 tbody .yui-dt-editable { cursor: pointer }
884 tbody .yui-dt-editable { cursor: pointer }
885 .yui-dt-editor {
885 .yui-dt-editor {
886 text-align: left;
886 text-align: left;
887 background-color: #f2f2f2;
887 background-color: #f2f2f2;
888 border: 1px solid #808080;
888 border: 1px solid #808080;
889 padding: 6px;
889 padding: 6px;
890 }
890 }
891 .yui-dt-editor label {
891 .yui-dt-editor label {
892 padding-left: 4px;
892 padding-left: 4px;
893 padding-right: 6px;
893 padding-right: 6px;
894 }
894 }
895 .yui-dt-editor .yui-dt-button {
895 .yui-dt-editor .yui-dt-button {
896 padding-top: 6px;
896 padding-top: 6px;
897 text-align: right;
897 text-align: right;
898 }
898 }
899 .yui-dt-editor .yui-dt-button button {
899 .yui-dt-editor .yui-dt-button button {
900 background: url(../images/sprite.png) repeat-x 0 0;
900 background: url(../images/sprite.png) repeat-x 0 0;
901 border: 1px solid #999;
901 border: 1px solid #999;
902 width: 4em;
902 width: 4em;
903 height: 1.8em;
903 height: 1.8em;
904 margin-left: 6px;
904 margin-left: 6px;
905 }
905 }
906 .yui-dt-editor .yui-dt-button button.yui-dt-default {
906 .yui-dt-editor .yui-dt-button button.yui-dt-default {
907 background: url(../images/sprite.png) repeat-x 0 -1400px;
907 background: url(../images/sprite.png) repeat-x 0 -1400px;
908 background-color: #5584e0;
908 background-color: #5584e0;
909 border: 1px solid #304369;
909 border: 1px solid #304369;
910 color: #FFF;
910 color: #FFF;
911 }
911 }
912 .yui-dt-editor .yui-dt-button button:hover {
912 .yui-dt-editor .yui-dt-button button:hover {
913 background: url(../images/sprite.png) repeat-x 0 -1300px;
913 background: url(../images/sprite.png) repeat-x 0 -1300px;
914 color: #000;
914 color: #000;
915 }
915 }
916 .yui-dt-editor .yui-dt-button button:active {
916 .yui-dt-editor .yui-dt-button button:active {
917 background: url(../images/sprite.png) repeat-x 0 -1700px;
917 background: url(../images/sprite.png) repeat-x 0 -1700px;
918 color: #000;
918 color: #000;
919 }
919 }
920 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
920 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
921 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
921 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
922 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
922 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
923 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
923 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
924 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
924 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
925 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
925 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
926 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
926 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
927 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
927 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
928 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
928 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
929 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
929 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
930 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
930 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
931 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
931 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
932 .yui-skin-sam th.yui-dt-highlighted,
932 .yui-skin-sam th.yui-dt-highlighted,
933 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
933 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
934 .yui-skin-sam tr.yui-dt-highlighted,
934 .yui-skin-sam tr.yui-dt-highlighted,
935 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
935 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
936 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
936 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
937 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
937 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
938 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
938 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
939 cursor: pointer;
939 cursor: pointer;
940 background-color: #b2d2ff;
940 background-color: #b2d2ff;
941 }
941 }
942 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
942 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
943 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
943 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
944 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
944 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
945 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
945 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
946 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
946 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
947 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
947 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
948 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
948 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
949 cursor: pointer;
949 cursor: pointer;
950 background-color: #b2d2ff;
950 background-color: #b2d2ff;
951 }
951 }
952 .yui-skin-sam th.yui-dt-selected,
952 .yui-skin-sam th.yui-dt-selected,
953 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
953 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
954 .yui-skin-sam tr.yui-dt-selected td,
954 .yui-skin-sam tr.yui-dt-selected td,
955 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
955 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
956 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
956 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
957 background-color: #426fd9;
957 background-color: #426fd9;
958 color: #FFF;
958 color: #FFF;
959 }
959 }
960 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
960 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
961 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
961 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
962 background-color: #446cd7;
962 background-color: #446cd7;
963 color: #FFF;
963 color: #FFF;
964 }
964 }
965 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
965 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
966 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
966 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
967 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
967 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
968 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
968 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
969 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
969 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
970 background-color: #426fd9;
970 background-color: #426fd9;
971 color: #FFF;
971 color: #FFF;
972 }
972 }
973 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
973 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
974 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
974 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
975 background-color: #446cd7;
975 background-color: #446cd7;
976 color: #FFF;
976 color: #FFF;
977 }
977 }
978 .yui-skin-sam .yui-dt-paginator {
978 .yui-skin-sam .yui-dt-paginator {
979 display: block;
979 display: block;
980 margin: 6px 0;
980 margin: 6px 0;
981 white-space: nowrap;
981 white-space: nowrap;
982 }
982 }
983 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
983 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
984 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
984 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
985 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
985 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
986 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
986 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
987 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
987 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
988 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
988 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
989 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
989 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
990 .yui-skin-sam a.yui-dt-page {
990 .yui-skin-sam a.yui-dt-page {
991 border: 1px solid #cbcbcb;
991 border: 1px solid #cbcbcb;
992 padding: 2px 6px;
992 padding: 2px 6px;
993 text-decoration: none;
993 text-decoration: none;
994 background-color: #fff;
994 background-color: #fff;
995 }
995 }
996 .yui-skin-sam .yui-dt-selected {
996 .yui-skin-sam .yui-dt-selected {
997 border: 1px solid #fff;
997 border: 1px solid #fff;
998 background-color: #fff;
998 background-color: #fff;
999 }
999 }
1000
1000
1001 #content #left {
1001 #content #left {
1002 left: 0;
1002 left: 0;
1003 width: 280px;
1003 width: 280px;
1004 position: absolute;
1004 position: absolute;
1005 }
1005 }
1006
1006
1007 #content #right {
1007 #content #right {
1008 margin: 0 60px 10px 290px;
1008 margin: 0 60px 10px 290px;
1009 }
1009 }
1010
1010
1011 #content div.box {
1011 #content div.box {
1012 clear: both;
1012 clear: both;
1013 overflow: hidden;
1013 overflow: hidden;
1014 background: #fff;
1014 background: #fff;
1015 margin: 0 0 10px;
1015 margin: 0 0 10px;
1016 padding: 0 0 10px;
1016 padding: 0 0 10px;
1017 -webkit-border-radius: 4px 4px 4px 4px;
1017 -webkit-border-radius: 4px 4px 4px 4px;
1018 -khtml-border-radius: 4px 4px 4px 4px;
1018 -khtml-border-radius: 4px 4px 4px 4px;
1019 -moz-border-radius: 4px 4px 4px 4px;
1019 -moz-border-radius: 4px 4px 4px 4px;
1020 border-radius: 4px 4px 4px 4px;
1020 border-radius: 4px 4px 4px 4px;
1021 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1021 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1022 }
1022 }
1023
1023
1024 #content div.box-left {
1024 #content div.box-left {
1025 width: 49%;
1025 width: 49%;
1026 clear: none;
1026 clear: none;
1027 float: left;
1027 float: left;
1028 margin: 0 0 10px;
1028 margin: 0 0 10px;
1029 }
1029 }
1030
1030
1031 #content div.box-right {
1031 #content div.box-right {
1032 width: 49%;
1032 width: 49%;
1033 clear: none;
1033 clear: none;
1034 float: right;
1034 float: right;
1035 margin: 0 0 10px;
1035 margin: 0 0 10px;
1036 }
1036 }
1037
1037
1038 #content div.box div.title {
1038 #content div.box div.title {
1039 clear: both;
1039 clear: both;
1040 overflow: hidden;
1040 overflow: hidden;
1041 background-color: #003B76;
1041 background-color: #003B76;
1042 background-repeat: repeat-x;
1042 background-repeat: repeat-x;
1043 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1043 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1044 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1044 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1045 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1045 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1046 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1046 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1047 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1047 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1048 background-image: -o-linear-gradient(top, #003b76, #00376e);
1048 background-image: -o-linear-gradient(top, #003b76, #00376e);
1049 background-image: linear-gradient(top, #003b76, #00376e);
1049 background-image: linear-gradient(top, #003b76, #00376e);
1050 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1050 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1051 margin: 0 0 20px;
1051 margin: 0 0 20px;
1052 padding: 0;
1052 padding: 0;
1053 }
1053 }
1054
1054
1055 #content div.box div.title h5 {
1055 #content div.box div.title h5 {
1056 float: left;
1056 float: left;
1057 border: none;
1057 border: none;
1058 color: #fff;
1058 color: #fff;
1059 text-transform: uppercase;
1059 text-transform: uppercase;
1060 margin: 0;
1060 margin: 0;
1061 padding: 11px 0 11px 10px;
1061 padding: 11px 0 11px 10px;
1062 }
1062 }
1063
1063
1064 #content div.box div.title .link-white{
1064 #content div.box div.title .link-white{
1065 color: #FFFFFF;
1065 color: #FFFFFF;
1066 }
1066 }
1067
1067
1068 #content div.box div.title ul.links li {
1068 #content div.box div.title ul.links li {
1069 list-style: none;
1069 list-style: none;
1070 float: left;
1070 float: left;
1071 margin: 0;
1071 margin: 0;
1072 padding: 0;
1072 padding: 0;
1073 }
1073 }
1074
1074
1075 #content div.box div.title ul.links li a {
1075 #content div.box div.title ul.links li a {
1076 border-left: 1px solid #316293;
1076 border-left: 1px solid #316293;
1077 color: #FFFFFF;
1077 color: #FFFFFF;
1078 display: block;
1078 display: block;
1079 float: left;
1079 float: left;
1080 font-size: 13px;
1080 font-size: 13px;
1081 font-weight: 700;
1081 font-weight: 700;
1082 height: 1%;
1082 height: 1%;
1083 margin: 0;
1083 margin: 0;
1084 padding: 11px 22px 12px;
1084 padding: 11px 22px 12px;
1085 text-decoration: none;
1085 text-decoration: none;
1086 }
1086 }
1087
1087
1088 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6
1088 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6
1089 {
1089 {
1090 clear: both;
1090 clear: both;
1091 overflow: hidden;
1091 overflow: hidden;
1092 border-bottom: 1px solid #DDD;
1092 border-bottom: 1px solid #DDD;
1093 margin: 10px 20px;
1093 margin: 10px 20px;
1094 padding: 0 0 15px;
1094 padding: 0 0 15px;
1095 }
1095 }
1096
1096
1097 #content div.box p {
1097 #content div.box p {
1098 color: #5f5f5f;
1098 color: #5f5f5f;
1099 font-size: 12px;
1099 font-size: 12px;
1100 line-height: 150%;
1100 line-height: 150%;
1101 margin: 0 24px 10px;
1101 margin: 0 24px 10px;
1102 padding: 0;
1102 padding: 0;
1103 }
1103 }
1104
1104
1105 #content div.box blockquote {
1105 #content div.box blockquote {
1106 border-left: 4px solid #DDD;
1106 border-left: 4px solid #DDD;
1107 color: #5f5f5f;
1107 color: #5f5f5f;
1108 font-size: 11px;
1108 font-size: 11px;
1109 line-height: 150%;
1109 line-height: 150%;
1110 margin: 0 34px;
1110 margin: 0 34px;
1111 padding: 0 0 0 14px;
1111 padding: 0 0 0 14px;
1112 }
1112 }
1113
1113
1114 #content div.box blockquote p {
1114 #content div.box blockquote p {
1115 margin: 10px 0;
1115 margin: 10px 0;
1116 padding: 0;
1116 padding: 0;
1117 }
1117 }
1118
1118
1119 #content div.box dl {
1119 #content div.box dl {
1120 margin: 10px 0px;
1120 margin: 10px 0px;
1121 }
1121 }
1122
1122
1123 #content div.box dt {
1123 #content div.box dt {
1124 font-size: 12px;
1124 font-size: 12px;
1125 margin: 0;
1125 margin: 0;
1126 }
1126 }
1127
1127
1128 #content div.box dd {
1128 #content div.box dd {
1129 font-size: 12px;
1129 font-size: 12px;
1130 margin: 0;
1130 margin: 0;
1131 padding: 8px 0 8px 15px;
1131 padding: 8px 0 8px 15px;
1132 }
1132 }
1133
1133
1134 #content div.box li {
1134 #content div.box li {
1135 font-size: 12px;
1135 font-size: 12px;
1136 padding: 4px 0;
1136 padding: 4px 0;
1137 }
1137 }
1138
1138
1139 #content div.box ul.disc,#content div.box ul.circle {
1139 #content div.box ul.disc,#content div.box ul.circle {
1140 margin: 10px 24px 10px 38px;
1140 margin: 10px 24px 10px 38px;
1141 }
1141 }
1142
1142
1143 #content div.box ul.square {
1143 #content div.box ul.square {
1144 margin: 10px 24px 10px 40px;
1144 margin: 10px 24px 10px 40px;
1145 }
1145 }
1146
1146
1147 #content div.box img.left {
1147 #content div.box img.left {
1148 border: none;
1148 border: none;
1149 float: left;
1149 float: left;
1150 margin: 10px 10px 10px 0;
1150 margin: 10px 10px 10px 0;
1151 }
1151 }
1152
1152
1153 #content div.box img.right {
1153 #content div.box img.right {
1154 border: none;
1154 border: none;
1155 float: right;
1155 float: right;
1156 margin: 10px 0 10px 10px;
1156 margin: 10px 0 10px 10px;
1157 }
1157 }
1158
1158
1159 #content div.box div.messages {
1159 #content div.box div.messages {
1160 clear: both;
1160 clear: both;
1161 overflow: hidden;
1161 overflow: hidden;
1162 margin: 0 20px;
1162 margin: 0 20px;
1163 padding: 0;
1163 padding: 0;
1164 }
1164 }
1165
1165
1166 #content div.box div.message {
1166 #content div.box div.message {
1167 clear: both;
1167 clear: both;
1168 overflow: hidden;
1168 overflow: hidden;
1169 margin: 0;
1169 margin: 0;
1170 padding: 5px 0;
1170 padding: 5px 0;
1171 white-space: pre-wrap;
1171 white-space: pre-wrap;
1172 }
1172 }
1173 #content div.box div.expand {
1173 #content div.box div.expand {
1174 width: 110%;
1174 width: 110%;
1175 height:14px;
1175 height:14px;
1176 font-size:10px;
1176 font-size:10px;
1177 text-align:center;
1177 text-align:center;
1178 cursor: pointer;
1178 cursor: pointer;
1179 color:#666;
1179 color:#666;
1180
1180
1181 background:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,rgba(64,96,128,0.1)));
1181 background:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,rgba(64,96,128,0.1)));
1182 background:-webkit-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1182 background:-webkit-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1183 background:-moz-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1183 background:-moz-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1184 background:-o-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1184 background:-o-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1185 background:-ms-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1185 background:-ms-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1186 background:linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1186 background:linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1187
1187
1188 display: none;
1188 display: none;
1189 }
1189 }
1190 #content div.box div.expand .expandtext {
1190 #content div.box div.expand .expandtext {
1191 background-color: #ffffff;
1191 background-color: #ffffff;
1192 padding: 2px;
1192 padding: 2px;
1193 border-radius: 2px;
1193 border-radius: 2px;
1194 }
1194 }
1195
1195
1196 #content div.box div.message a {
1196 #content div.box div.message a {
1197 font-weight: 400 !important;
1197 font-weight: 400 !important;
1198 }
1198 }
1199
1199
1200 #content div.box div.message div.image {
1200 #content div.box div.message div.image {
1201 float: left;
1201 float: left;
1202 margin: 9px 0 0 5px;
1202 margin: 9px 0 0 5px;
1203 padding: 6px;
1203 padding: 6px;
1204 }
1204 }
1205
1205
1206 #content div.box div.message div.image img {
1206 #content div.box div.message div.image img {
1207 vertical-align: middle;
1207 vertical-align: middle;
1208 margin: 0;
1208 margin: 0;
1209 }
1209 }
1210
1210
1211 #content div.box div.message div.text {
1211 #content div.box div.message div.text {
1212 float: left;
1212 float: left;
1213 margin: 0;
1213 margin: 0;
1214 padding: 9px 6px;
1214 padding: 9px 6px;
1215 }
1215 }
1216
1216
1217 #content div.box div.message div.dismiss a {
1217 #content div.box div.message div.dismiss a {
1218 height: 16px;
1218 height: 16px;
1219 width: 16px;
1219 width: 16px;
1220 display: block;
1220 display: block;
1221 background: url("../images/icons/cross.png") no-repeat;
1221 background: url("../images/icons/cross.png") no-repeat;
1222 margin: 15px 14px 0 0;
1222 margin: 15px 14px 0 0;
1223 padding: 0;
1223 padding: 0;
1224 }
1224 }
1225
1225
1226 #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
1226 #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
1227 {
1227 {
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.message div.text span {
1233 #content div.box div.message div.text span {
1234 height: 1%;
1234 height: 1%;
1235 display: block;
1235 display: block;
1236 margin: 0;
1236 margin: 0;
1237 padding: 5px 0 0;
1237 padding: 5px 0 0;
1238 }
1238 }
1239
1239
1240 #content div.box div.message-error {
1240 #content div.box div.message-error {
1241 height: 1%;
1241 height: 1%;
1242 clear: both;
1242 clear: both;
1243 overflow: hidden;
1243 overflow: hidden;
1244 background: #FBE3E4;
1244 background: #FBE3E4;
1245 border: 1px solid #FBC2C4;
1245 border: 1px solid #FBC2C4;
1246 color: #860006;
1246 color: #860006;
1247 }
1247 }
1248
1248
1249 #content div.box div.message-error h6 {
1249 #content div.box div.message-error h6 {
1250 color: #860006;
1250 color: #860006;
1251 }
1251 }
1252
1252
1253 #content div.box div.message-warning {
1253 #content div.box div.message-warning {
1254 height: 1%;
1254 height: 1%;
1255 clear: both;
1255 clear: both;
1256 overflow: hidden;
1256 overflow: hidden;
1257 background: #FFF6BF;
1257 background: #FFF6BF;
1258 border: 1px solid #FFD324;
1258 border: 1px solid #FFD324;
1259 color: #5f5200;
1259 color: #5f5200;
1260 }
1260 }
1261
1261
1262 #content div.box div.message-warning h6 {
1262 #content div.box div.message-warning h6 {
1263 color: #5f5200;
1263 color: #5f5200;
1264 }
1264 }
1265
1265
1266 #content div.box div.message-notice {
1266 #content div.box div.message-notice {
1267 height: 1%;
1267 height: 1%;
1268 clear: both;
1268 clear: both;
1269 overflow: hidden;
1269 overflow: hidden;
1270 background: #8FBDE0;
1270 background: #8FBDE0;
1271 border: 1px solid #6BACDE;
1271 border: 1px solid #6BACDE;
1272 color: #003863;
1272 color: #003863;
1273 }
1273 }
1274
1274
1275 #content div.box div.message-notice h6 {
1275 #content div.box div.message-notice h6 {
1276 color: #003863;
1276 color: #003863;
1277 }
1277 }
1278
1278
1279 #content div.box div.message-success {
1279 #content div.box div.message-success {
1280 height: 1%;
1280 height: 1%;
1281 clear: both;
1281 clear: both;
1282 overflow: hidden;
1282 overflow: hidden;
1283 background: #E6EFC2;
1283 background: #E6EFC2;
1284 border: 1px solid #C6D880;
1284 border: 1px solid #C6D880;
1285 color: #4e6100;
1285 color: #4e6100;
1286 }
1286 }
1287
1287
1288 #content div.box div.message-success h6 {
1288 #content div.box div.message-success h6 {
1289 color: #4e6100;
1289 color: #4e6100;
1290 }
1290 }
1291
1291
1292 #content div.box div.form div.fields div.field {
1292 #content div.box div.form div.fields div.field {
1293 height: 1%;
1293 height: 1%;
1294 border-bottom: 1px solid #DDD;
1294 border-bottom: 1px solid #DDD;
1295 clear: both;
1295 clear: both;
1296 margin: 0;
1296 margin: 0;
1297 padding: 10px 0;
1297 padding: 10px 0;
1298 }
1298 }
1299
1299
1300 #content div.box div.form div.fields div.field-first {
1300 #content div.box div.form div.fields div.field-first {
1301 padding: 0 0 10px;
1301 padding: 0 0 10px;
1302 }
1302 }
1303
1303
1304 #content div.box div.form div.fields div.field-noborder {
1304 #content div.box div.form div.fields div.field-noborder {
1305 border-bottom: 0 !important;
1305 border-bottom: 0 !important;
1306 }
1306 }
1307
1307
1308 #content div.box div.form div.fields div.field span.error-message {
1308 #content div.box div.form div.fields div.field span.error-message {
1309 height: 1%;
1309 height: 1%;
1310 display: inline-block;
1310 display: inline-block;
1311 color: red;
1311 color: red;
1312 margin: 8px 0 0 4px;
1312 margin: 8px 0 0 4px;
1313 padding: 0;
1313 padding: 0;
1314 }
1314 }
1315
1315
1316 #content div.box div.form div.fields div.field span.success {
1316 #content div.box div.form div.fields div.field span.success {
1317 height: 1%;
1317 height: 1%;
1318 display: block;
1318 display: block;
1319 color: #316309;
1319 color: #316309;
1320 margin: 8px 0 0;
1320 margin: 8px 0 0;
1321 padding: 0;
1321 padding: 0;
1322 }
1322 }
1323
1323
1324 #content div.box div.form div.fields div.field div.label {
1324 #content div.box div.form div.fields div.field div.label {
1325 left: 70px;
1325 left: 70px;
1326 width: 155px;
1326 width: 155px;
1327 position: absolute;
1327 position: absolute;
1328 margin: 0;
1328 margin: 0;
1329 padding: 5px 0 0 0px;
1329 padding: 5px 0 0 0px;
1330 }
1330 }
1331
1331
1332 #content div.box div.form div.fields div.field div.label-summary {
1332 #content div.box div.form div.fields div.field div.label-summary {
1333 left: 30px;
1333 left: 30px;
1334 width: 155px;
1334 width: 155px;
1335 position: absolute;
1335 position: absolute;
1336 margin: 0;
1336 margin: 0;
1337 padding: 0px 0 0 0px;
1337 padding: 0px 0 0 0px;
1338 }
1338 }
1339
1339
1340 #content div.box-left div.form div.fields div.field div.label,
1340 #content div.box-left div.form div.fields div.field div.label,
1341 #content div.box-right div.form div.fields div.field div.label,
1341 #content div.box-right div.form div.fields div.field div.label,
1342 #content div.box-left div.form div.fields div.field div.label,
1342 #content div.box-left div.form div.fields div.field div.label,
1343 #content div.box-left div.form div.fields div.field div.label-summary,
1343 #content div.box-left div.form div.fields div.field div.label-summary,
1344 #content div.box-right div.form div.fields div.field div.label-summary,
1344 #content div.box-right div.form div.fields div.field div.label-summary,
1345 #content div.box-left div.form div.fields div.field div.label-summary
1345 #content div.box-left div.form div.fields div.field div.label-summary
1346 {
1346 {
1347 clear: both;
1347 clear: both;
1348 overflow: hidden;
1348 overflow: hidden;
1349 left: 0;
1349 left: 0;
1350 width: auto;
1350 width: auto;
1351 position: relative;
1351 position: relative;
1352 margin: 0;
1352 margin: 0;
1353 padding: 0 0 8px;
1353 padding: 0 0 8px;
1354 }
1354 }
1355
1355
1356 #content div.box div.form div.fields div.field div.label-select {
1356 #content div.box div.form div.fields div.field div.label-select {
1357 padding: 5px 0 0 5px;
1357 padding: 5px 0 0 5px;
1358 }
1358 }
1359
1359
1360 #content div.box-left div.form div.fields div.field div.label-select,
1360 #content div.box-left div.form div.fields div.field div.label-select,
1361 #content div.box-right div.form div.fields div.field div.label-select
1361 #content div.box-right div.form div.fields div.field div.label-select
1362 {
1362 {
1363 padding: 0 0 8px;
1363 padding: 0 0 8px;
1364 }
1364 }
1365
1365
1366 #content div.box-left div.form div.fields div.field div.label-textarea,
1366 #content div.box-left div.form div.fields div.field div.label-textarea,
1367 #content div.box-right div.form div.fields div.field div.label-textarea
1367 #content div.box-right div.form div.fields div.field div.label-textarea
1368 {
1368 {
1369 padding: 0 0 8px !important;
1369 padding: 0 0 8px !important;
1370 }
1370 }
1371
1371
1372 #content div.box div.form div.fields div.field div.label label,div.label label
1372 #content div.box div.form div.fields div.field div.label label,div.label label
1373 {
1373 {
1374 color: #393939;
1374 color: #393939;
1375 font-weight: 700;
1375 font-weight: 700;
1376 }
1376 }
1377 #content div.box div.form div.fields div.field div.label label,div.label-summary label
1377 #content div.box div.form div.fields div.field div.label label,div.label-summary label
1378 {
1378 {
1379 color: #393939;
1379 color: #393939;
1380 font-weight: 700;
1380 font-weight: 700;
1381 }
1381 }
1382 #content div.box div.form div.fields div.field div.input {
1382 #content div.box div.form div.fields div.field div.input {
1383 margin: 0 0 0 200px;
1383 margin: 0 0 0 200px;
1384 }
1384 }
1385
1385
1386 #content div.box div.form div.fields div.field div.input.summary {
1386 #content div.box div.form div.fields div.field div.input.summary {
1387 margin: 0 0 0 110px;
1387 margin: 0 0 0 110px;
1388 }
1388 }
1389 #content div.box div.form div.fields div.field div.input.summary-short {
1389 #content div.box div.form div.fields div.field div.input.summary-short {
1390 margin: 0 0 0 110px;
1390 margin: 0 0 0 110px;
1391 }
1391 }
1392 #content div.box div.form div.fields div.field div.file {
1392 #content div.box div.form div.fields div.field div.file {
1393 margin: 0 0 0 200px;
1393 margin: 0 0 0 200px;
1394 }
1394 }
1395
1395
1396 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input
1396 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input
1397 {
1397 {
1398 margin: 0 0 0 0px;
1398 margin: 0 0 0 0px;
1399 }
1399 }
1400
1400
1401 #content div.box div.form div.fields div.field div.input input {
1401 #content div.box div.form div.fields div.field div.input input {
1402 background: #FFF;
1402 background: #FFF;
1403 border-top: 1px solid #b3b3b3;
1403 border-top: 1px solid #b3b3b3;
1404 border-left: 1px solid #b3b3b3;
1404 border-left: 1px solid #b3b3b3;
1405 border-right: 1px solid #eaeaea;
1405 border-right: 1px solid #eaeaea;
1406 border-bottom: 1px solid #eaeaea;
1406 border-bottom: 1px solid #eaeaea;
1407 color: #000;
1407 color: #000;
1408 font-size: 11px;
1408 font-size: 11px;
1409 margin: 0;
1409 margin: 0;
1410 padding: 7px 7px 6px;
1410 padding: 7px 7px 6px;
1411 }
1411 }
1412
1412
1413 #content div.box div.form div.fields div.field div.input input#clone_url,
1413 #content div.box div.form div.fields div.field div.input input#clone_url,
1414 #content div.box div.form div.fields div.field div.input input#clone_url_id
1414 #content div.box div.form div.fields div.field div.input input#clone_url_id
1415 {
1415 {
1416 font-size: 16px;
1416 font-size: 16px;
1417 padding: 2px;
1417 padding: 2px;
1418 }
1418 }
1419
1419
1420 #content div.box div.form div.fields div.field div.file input {
1420 #content div.box div.form div.fields div.field div.file input {
1421 background: none repeat scroll 0 0 #FFFFFF;
1421 background: none repeat scroll 0 0 #FFFFFF;
1422 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1422 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1423 border-style: solid;
1423 border-style: solid;
1424 border-width: 1px;
1424 border-width: 1px;
1425 color: #000000;
1425 color: #000000;
1426 font-size: 11px;
1426 font-size: 11px;
1427 margin: 0;
1427 margin: 0;
1428 padding: 7px 7px 6px;
1428 padding: 7px 7px 6px;
1429 }
1429 }
1430
1430
1431 input.disabled {
1431 input.disabled {
1432 background-color: #F5F5F5 !important;
1432 background-color: #F5F5F5 !important;
1433 }
1433 }
1434 #content div.box div.form div.fields div.field div.input input.small {
1434 #content div.box div.form div.fields div.field div.input input.small {
1435 width: 30%;
1435 width: 30%;
1436 }
1436 }
1437
1437
1438 #content div.box div.form div.fields div.field div.input input.medium {
1438 #content div.box div.form div.fields div.field div.input input.medium {
1439 width: 55%;
1439 width: 55%;
1440 }
1440 }
1441
1441
1442 #content div.box div.form div.fields div.field div.input input.large {
1442 #content div.box div.form div.fields div.field div.input input.large {
1443 width: 85%;
1443 width: 85%;
1444 }
1444 }
1445
1445
1446 #content div.box div.form div.fields div.field div.input input.date {
1446 #content div.box div.form div.fields div.field div.input input.date {
1447 width: 177px;
1447 width: 177px;
1448 }
1448 }
1449
1449
1450 #content div.box div.form div.fields div.field div.input input.button {
1450 #content div.box div.form div.fields div.field div.input input.button {
1451 background: #D4D0C8;
1451 background: #D4D0C8;
1452 border-top: 1px solid #FFF;
1452 border-top: 1px solid #FFF;
1453 border-left: 1px solid #FFF;
1453 border-left: 1px solid #FFF;
1454 border-right: 1px solid #404040;
1454 border-right: 1px solid #404040;
1455 border-bottom: 1px solid #404040;
1455 border-bottom: 1px solid #404040;
1456 color: #000;
1456 color: #000;
1457 margin: 0;
1457 margin: 0;
1458 padding: 4px 8px;
1458 padding: 4px 8px;
1459 }
1459 }
1460
1460
1461 #content div.box div.form div.fields div.field div.textarea {
1461 #content div.box div.form div.fields div.field div.textarea {
1462 border-top: 1px solid #b3b3b3;
1462 border-top: 1px solid #b3b3b3;
1463 border-left: 1px solid #b3b3b3;
1463 border-left: 1px solid #b3b3b3;
1464 border-right: 1px solid #eaeaea;
1464 border-right: 1px solid #eaeaea;
1465 border-bottom: 1px solid #eaeaea;
1465 border-bottom: 1px solid #eaeaea;
1466 margin: 0 0 0 200px;
1466 margin: 0 0 0 200px;
1467 padding: 10px;
1467 padding: 10px;
1468 }
1468 }
1469
1469
1470 #content div.box div.form div.fields div.field div.textarea-editor {
1470 #content div.box div.form div.fields div.field div.textarea-editor {
1471 border: 1px solid #ddd;
1471 border: 1px solid #ddd;
1472 padding: 0;
1472 padding: 0;
1473 }
1473 }
1474
1474
1475 #content div.box div.form div.fields div.field div.textarea textarea {
1475 #content div.box div.form div.fields div.field div.textarea textarea {
1476 width: 100%;
1476 width: 100%;
1477 height: 220px;
1477 height: 220px;
1478 overflow: hidden;
1478 overflow: hidden;
1479 background: #FFF;
1479 background: #FFF;
1480 color: #000;
1480 color: #000;
1481 font-size: 11px;
1481 font-size: 11px;
1482 outline: none;
1482 outline: none;
1483 border-width: 0;
1483 border-width: 0;
1484 margin: 0;
1484 margin: 0;
1485 padding: 0;
1485 padding: 0;
1486 }
1486 }
1487
1487
1488 #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
1488 #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
1489 {
1489 {
1490 width: 100%;
1490 width: 100%;
1491 height: 100px;
1491 height: 100px;
1492 }
1492 }
1493
1493
1494 #content div.box div.form div.fields div.field div.textarea table {
1494 #content div.box div.form div.fields div.field div.textarea table {
1495 width: 100%;
1495 width: 100%;
1496 border: none;
1496 border: none;
1497 margin: 0;
1497 margin: 0;
1498 padding: 0;
1498 padding: 0;
1499 }
1499 }
1500
1500
1501 #content div.box div.form div.fields div.field div.textarea table td {
1501 #content div.box div.form div.fields div.field div.textarea table td {
1502 background: #DDD;
1502 background: #DDD;
1503 border: none;
1503 border: none;
1504 padding: 0;
1504 padding: 0;
1505 }
1505 }
1506
1506
1507 #content div.box div.form div.fields div.field div.textarea table td table
1507 #content div.box div.form div.fields div.field div.textarea table td table
1508 {
1508 {
1509 width: auto;
1509 width: auto;
1510 border: none;
1510 border: none;
1511 margin: 0;
1511 margin: 0;
1512 padding: 0;
1512 padding: 0;
1513 }
1513 }
1514
1514
1515 #content div.box div.form div.fields div.field div.textarea table td table td
1515 #content div.box div.form div.fields div.field div.textarea table td table td
1516 {
1516 {
1517 font-size: 11px;
1517 font-size: 11px;
1518 padding: 5px 5px 5px 0;
1518 padding: 5px 5px 5px 0;
1519 }
1519 }
1520
1520
1521 #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
1521 #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
1522 {
1522 {
1523 background: #f6f6f6;
1523 background: #f6f6f6;
1524 border-color: #666;
1524 border-color: #666;
1525 }
1525 }
1526
1526
1527 div.form div.fields div.field div.button {
1527 div.form div.fields div.field div.button {
1528 margin: 0;
1528 margin: 0;
1529 padding: 0 0 0 8px;
1529 padding: 0 0 0 8px;
1530 }
1530 }
1531 #content div.box table.noborder {
1531 #content div.box table.noborder {
1532 border: 1px solid transparent;
1532 border: 1px solid transparent;
1533 }
1533 }
1534
1534
1535 #content div.box table {
1535 #content div.box table {
1536 width: 100%;
1536 width: 100%;
1537 border-collapse: separate;
1537 border-collapse: separate;
1538 margin: 0;
1538 margin: 0;
1539 padding: 0;
1539 padding: 0;
1540 border: 1px solid #eee;
1540 border: 1px solid #eee;
1541 -webkit-border-radius: 4px;
1541 -webkit-border-radius: 4px;
1542 -moz-border-radius: 4px;
1542 -moz-border-radius: 4px;
1543 border-radius: 4px;
1543 border-radius: 4px;
1544 }
1544 }
1545
1545
1546 #content div.box table th {
1546 #content div.box table th {
1547 background: #eee;
1547 background: #eee;
1548 border-bottom: 1px solid #ddd;
1548 border-bottom: 1px solid #ddd;
1549 padding: 5px 0px 5px 5px;
1549 padding: 5px 0px 5px 5px;
1550 }
1550 }
1551
1551
1552 #content div.box table th.left {
1552 #content div.box table th.left {
1553 text-align: left;
1553 text-align: left;
1554 }
1554 }
1555
1555
1556 #content div.box table th.right {
1556 #content div.box table th.right {
1557 text-align: right;
1557 text-align: right;
1558 }
1558 }
1559
1559
1560 #content div.box table th.center {
1560 #content div.box table th.center {
1561 text-align: center;
1561 text-align: center;
1562 }
1562 }
1563
1563
1564 #content div.box table th.selected {
1564 #content div.box table th.selected {
1565 vertical-align: middle;
1565 vertical-align: middle;
1566 padding: 0;
1566 padding: 0;
1567 }
1567 }
1568
1568
1569 #content div.box table td {
1569 #content div.box table td {
1570 background: #fff;
1570 background: #fff;
1571 border-bottom: 1px solid #cdcdcd;
1571 border-bottom: 1px solid #cdcdcd;
1572 vertical-align: middle;
1572 vertical-align: middle;
1573 padding: 5px;
1573 padding: 5px;
1574 }
1574 }
1575
1575
1576 #content div.box table tr.selected td {
1576 #content div.box table tr.selected td {
1577 background: #FFC;
1577 background: #FFC;
1578 }
1578 }
1579
1579
1580 #content div.box table td.selected {
1580 #content div.box table td.selected {
1581 width: 3%;
1581 width: 3%;
1582 text-align: center;
1582 text-align: center;
1583 vertical-align: middle;
1583 vertical-align: middle;
1584 padding: 0;
1584 padding: 0;
1585 }
1585 }
1586
1586
1587 #content div.box table td.action {
1587 #content div.box table td.action {
1588 width: 45%;
1588 width: 45%;
1589 text-align: left;
1589 text-align: left;
1590 }
1590 }
1591
1591
1592 #content div.box table td.date {
1592 #content div.box table td.date {
1593 width: 33%;
1593 width: 33%;
1594 text-align: center;
1594 text-align: center;
1595 }
1595 }
1596
1596
1597 #content div.box div.action {
1597 #content div.box div.action {
1598 float: right;
1598 float: right;
1599 background: #FFF;
1599 background: #FFF;
1600 text-align: right;
1600 text-align: right;
1601 margin: 10px 0 0;
1601 margin: 10px 0 0;
1602 padding: 0;
1602 padding: 0;
1603 }
1603 }
1604
1604
1605 #content div.box div.action select {
1605 #content div.box div.action select {
1606 font-size: 11px;
1606 font-size: 11px;
1607 margin: 0;
1607 margin: 0;
1608 }
1608 }
1609
1609
1610 #content div.box div.action .ui-selectmenu {
1610 #content div.box div.action .ui-selectmenu {
1611 margin: 0;
1611 margin: 0;
1612 padding: 0;
1612 padding: 0;
1613 }
1613 }
1614
1614
1615 #content div.box div.pagination {
1615 #content div.box div.pagination {
1616 height: 1%;
1616 height: 1%;
1617 clear: both;
1617 clear: both;
1618 overflow: hidden;
1618 overflow: hidden;
1619 margin: 10px 0 0;
1619 margin: 10px 0 0;
1620 padding: 0;
1620 padding: 0;
1621 }
1621 }
1622
1622
1623 #content div.box div.pagination ul.pager {
1623 #content div.box div.pagination ul.pager {
1624 float: right;
1624 float: right;
1625 text-align: right;
1625 text-align: right;
1626 margin: 0;
1626 margin: 0;
1627 padding: 0;
1627 padding: 0;
1628 }
1628 }
1629
1629
1630 #content div.box div.pagination ul.pager li {
1630 #content div.box div.pagination ul.pager li {
1631 height: 1%;
1631 height: 1%;
1632 float: left;
1632 float: left;
1633 list-style: none;
1633 list-style: none;
1634 background: #ebebeb url("../images/pager.png") repeat-x;
1634 background: #ebebeb url("../images/pager.png") repeat-x;
1635 border-top: 1px solid #dedede;
1635 border-top: 1px solid #dedede;
1636 border-left: 1px solid #cfcfcf;
1636 border-left: 1px solid #cfcfcf;
1637 border-right: 1px solid #c4c4c4;
1637 border-right: 1px solid #c4c4c4;
1638 border-bottom: 1px solid #c4c4c4;
1638 border-bottom: 1px solid #c4c4c4;
1639 color: #4A4A4A;
1639 color: #4A4A4A;
1640 font-weight: 700;
1640 font-weight: 700;
1641 margin: 0 0 0 4px;
1641 margin: 0 0 0 4px;
1642 padding: 0;
1642 padding: 0;
1643 }
1643 }
1644
1644
1645 #content div.box div.pagination ul.pager li.separator {
1645 #content div.box div.pagination ul.pager li.separator {
1646 padding: 6px;
1646 padding: 6px;
1647 }
1647 }
1648
1648
1649 #content div.box div.pagination ul.pager li.current {
1649 #content div.box div.pagination ul.pager li.current {
1650 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1650 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1651 border-top: 1px solid #ccc;
1651 border-top: 1px solid #ccc;
1652 border-left: 1px solid #bebebe;
1652 border-left: 1px solid #bebebe;
1653 border-right: 1px solid #b1b1b1;
1653 border-right: 1px solid #b1b1b1;
1654 border-bottom: 1px solid #afafaf;
1654 border-bottom: 1px solid #afafaf;
1655 color: #515151;
1655 color: #515151;
1656 padding: 6px;
1656 padding: 6px;
1657 }
1657 }
1658
1658
1659 #content div.box div.pagination ul.pager li a {
1659 #content div.box div.pagination ul.pager li a {
1660 height: 1%;
1660 height: 1%;
1661 display: block;
1661 display: block;
1662 float: left;
1662 float: left;
1663 color: #515151;
1663 color: #515151;
1664 text-decoration: none;
1664 text-decoration: none;
1665 margin: 0;
1665 margin: 0;
1666 padding: 6px;
1666 padding: 6px;
1667 }
1667 }
1668
1668
1669 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active
1669 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active
1670 {
1670 {
1671 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1671 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1672 border-top: 1px solid #ccc;
1672 border-top: 1px solid #ccc;
1673 border-left: 1px solid #bebebe;
1673 border-left: 1px solid #bebebe;
1674 border-right: 1px solid #b1b1b1;
1674 border-right: 1px solid #b1b1b1;
1675 border-bottom: 1px solid #afafaf;
1675 border-bottom: 1px solid #afafaf;
1676 margin: -1px;
1676 margin: -1px;
1677 }
1677 }
1678
1678
1679 #content div.box div.pagination-wh {
1679 #content div.box div.pagination-wh {
1680 height: 1%;
1680 height: 1%;
1681 clear: both;
1681 clear: both;
1682 overflow: hidden;
1682 overflow: hidden;
1683 text-align: right;
1683 text-align: right;
1684 margin: 10px 0 0;
1684 margin: 10px 0 0;
1685 padding: 0;
1685 padding: 0;
1686 }
1686 }
1687
1687
1688 #content div.box div.pagination-right {
1688 #content div.box div.pagination-right {
1689 float: right;
1689 float: right;
1690 }
1690 }
1691
1691
1692 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot
1692 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot
1693 {
1693 {
1694 height: 1%;
1694 height: 1%;
1695 float: left;
1695 float: left;
1696 background: #ebebeb url("../images/pager.png") repeat-x;
1696 background: #ebebeb url("../images/pager.png") repeat-x;
1697 border-top: 1px solid #dedede;
1697 border-top: 1px solid #dedede;
1698 border-left: 1px solid #cfcfcf;
1698 border-left: 1px solid #cfcfcf;
1699 border-right: 1px solid #c4c4c4;
1699 border-right: 1px solid #c4c4c4;
1700 border-bottom: 1px solid #c4c4c4;
1700 border-bottom: 1px solid #c4c4c4;
1701 color: #4A4A4A;
1701 color: #4A4A4A;
1702 font-weight: 700;
1702 font-weight: 700;
1703 margin: 0 0 0 4px;
1703 margin: 0 0 0 4px;
1704 padding: 6px;
1704 padding: 6px;
1705 }
1705 }
1706
1706
1707 #content div.box div.pagination-wh span.pager_curpage {
1707 #content div.box div.pagination-wh span.pager_curpage {
1708 height: 1%;
1708 height: 1%;
1709 float: left;
1709 float: left;
1710 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1710 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1711 border-top: 1px solid #ccc;
1711 border-top: 1px solid #ccc;
1712 border-left: 1px solid #bebebe;
1712 border-left: 1px solid #bebebe;
1713 border-right: 1px solid #b1b1b1;
1713 border-right: 1px solid #b1b1b1;
1714 border-bottom: 1px solid #afafaf;
1714 border-bottom: 1px solid #afafaf;
1715 color: #515151;
1715 color: #515151;
1716 font-weight: 700;
1716 font-weight: 700;
1717 margin: 0 0 0 4px;
1717 margin: 0 0 0 4px;
1718 padding: 6px;
1718 padding: 6px;
1719 }
1719 }
1720
1720
1721 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active
1721 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active
1722 {
1722 {
1723 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1723 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1724 border-top: 1px solid #ccc;
1724 border-top: 1px solid #ccc;
1725 border-left: 1px solid #bebebe;
1725 border-left: 1px solid #bebebe;
1726 border-right: 1px solid #b1b1b1;
1726 border-right: 1px solid #b1b1b1;
1727 border-bottom: 1px solid #afafaf;
1727 border-bottom: 1px solid #afafaf;
1728 text-decoration: none;
1728 text-decoration: none;
1729 }
1729 }
1730
1730
1731 #content div.box div.traffic div.legend {
1731 #content div.box div.traffic div.legend {
1732 clear: both;
1732 clear: both;
1733 overflow: hidden;
1733 overflow: hidden;
1734 border-bottom: 1px solid #ddd;
1734 border-bottom: 1px solid #ddd;
1735 margin: 0 0 10px;
1735 margin: 0 0 10px;
1736 padding: 0 0 10px;
1736 padding: 0 0 10px;
1737 }
1737 }
1738
1738
1739 #content div.box div.traffic div.legend h6 {
1739 #content div.box div.traffic div.legend h6 {
1740 float: left;
1740 float: left;
1741 border: none;
1741 border: none;
1742 margin: 0;
1742 margin: 0;
1743 padding: 0;
1743 padding: 0;
1744 }
1744 }
1745
1745
1746 #content div.box div.traffic div.legend li {
1746 #content div.box div.traffic div.legend li {
1747 list-style: none;
1747 list-style: none;
1748 float: left;
1748 float: left;
1749 font-size: 11px;
1749 font-size: 11px;
1750 margin: 0;
1750 margin: 0;
1751 padding: 0 8px 0 4px;
1751 padding: 0 8px 0 4px;
1752 }
1752 }
1753
1753
1754 #content div.box div.traffic div.legend li.visits {
1754 #content div.box div.traffic div.legend li.visits {
1755 border-left: 12px solid #edc240;
1755 border-left: 12px solid #edc240;
1756 }
1756 }
1757
1757
1758 #content div.box div.traffic div.legend li.pageviews {
1758 #content div.box div.traffic div.legend li.pageviews {
1759 border-left: 12px solid #afd8f8;
1759 border-left: 12px solid #afd8f8;
1760 }
1760 }
1761
1761
1762 #content div.box div.traffic table {
1762 #content div.box div.traffic table {
1763 width: auto;
1763 width: auto;
1764 }
1764 }
1765
1765
1766 #content div.box div.traffic table td {
1766 #content div.box div.traffic table td {
1767 background: transparent;
1767 background: transparent;
1768 border: none;
1768 border: none;
1769 padding: 2px 3px 3px;
1769 padding: 2px 3px 3px;
1770 }
1770 }
1771
1771
1772 #content div.box div.traffic table td.legendLabel {
1772 #content div.box div.traffic table td.legendLabel {
1773 padding: 0 3px 2px;
1773 padding: 0 3px 2px;
1774 }
1774 }
1775
1775
1776 #summary {
1776 #summary {
1777
1777
1778 }
1778 }
1779
1779
1780 #summary .desc {
1780 #summary .desc {
1781 white-space: pre;
1781 white-space: pre;
1782 width: 100%;
1782 width: 100%;
1783 }
1783 }
1784
1784
1785 #summary .repo_name {
1785 #summary .repo_name {
1786 font-size: 1.6em;
1786 font-size: 1.6em;
1787 font-weight: bold;
1787 font-weight: bold;
1788 vertical-align: baseline;
1788 vertical-align: baseline;
1789 clear: right
1789 clear: right
1790 }
1790 }
1791
1791
1792 #footer {
1792 #footer {
1793 clear: both;
1793 clear: both;
1794 overflow: hidden;
1794 overflow: hidden;
1795 text-align: right;
1795 text-align: right;
1796 margin: 0;
1796 margin: 0;
1797 padding: 0 10px 4px;
1797 padding: 0 10px 4px;
1798 margin: -10px 0 0;
1798 margin: -10px 0 0;
1799 }
1799 }
1800
1800
1801 #footer div#footer-inner {
1801 #footer div#footer-inner {
1802 background-color: #003B76;
1802 background-color: #003B76;
1803 background-repeat : repeat-x;
1803 background-repeat : repeat-x;
1804 background-image : -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1804 background-image : -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1805 background-image : -moz-linear-gradient(top, #003b76, #00376e);
1805 background-image : -moz-linear-gradient(top, #003b76, #00376e);
1806 background-image : -ms-linear-gradient( top, #003b76, #00376e);
1806 background-image : -ms-linear-gradient( top, #003b76, #00376e);
1807 background-image : -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1807 background-image : -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1808 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1808 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1809 background-image : -o-linear-gradient( top, #003b76, #00376e));
1809 background-image : -o-linear-gradient( top, #003b76, #00376e));
1810 background-image : linear-gradient( top, #003b76, #00376e);
1810 background-image : linear-gradient( top, #003b76, #00376e);
1811 filter :progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1811 filter :progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1812 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1812 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1813 -webkit-border-radius: 4px 4px 4px 4px;
1813 -webkit-border-radius: 4px 4px 4px 4px;
1814 -khtml-border-radius: 4px 4px 4px 4px;
1814 -khtml-border-radius: 4px 4px 4px 4px;
1815 -moz-border-radius: 4px 4px 4px 4px;
1815 -moz-border-radius: 4px 4px 4px 4px;
1816 border-radius: 4px 4px 4px 4px;
1816 border-radius: 4px 4px 4px 4px;
1817 }
1817 }
1818
1818
1819 #footer div#footer-inner p {
1819 #footer div#footer-inner p {
1820 padding: 15px 25px 15px 0;
1820 padding: 15px 25px 15px 0;
1821 color: #FFF;
1821 color: #FFF;
1822 font-weight: 700;
1822 font-weight: 700;
1823 }
1823 }
1824
1824
1825 #footer div#footer-inner .footer-link {
1825 #footer div#footer-inner .footer-link {
1826 float: left;
1826 float: left;
1827 padding-left: 10px;
1827 padding-left: 10px;
1828 }
1828 }
1829
1829
1830 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a
1830 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a
1831 {
1831 {
1832 color: #FFF;
1832 color: #FFF;
1833 }
1833 }
1834
1834
1835 #login div.title {
1835 #login div.title {
1836 width: 420px;
1836 width: 420px;
1837 clear: both;
1837 clear: both;
1838 overflow: hidden;
1838 overflow: hidden;
1839 position: relative;
1839 position: relative;
1840 background-color: #003B76;
1840 background-color: #003B76;
1841 background-repeat : repeat-x;
1841 background-repeat : repeat-x;
1842 background-image : -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1842 background-image : -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1843 background-image : -moz-linear-gradient( top, #003b76, #00376e);
1843 background-image : -moz-linear-gradient( top, #003b76, #00376e);
1844 background-image : -ms-linear-gradient( top, #003b76, #00376e);
1844 background-image : -ms-linear-gradient( top, #003b76, #00376e);
1845 background-image : -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1845 background-image : -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1846 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1846 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1847 background-image : -o-linear-gradient( top, #003b76, #00376e));
1847 background-image : -o-linear-gradient( top, #003b76, #00376e));
1848 background-image : linear-gradient( top, #003b76, #00376e);
1848 background-image : linear-gradient( top, #003b76, #00376e);
1849 filter : progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1849 filter : progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1850 margin: 0 auto;
1850 margin: 0 auto;
1851 padding: 0;
1851 padding: 0;
1852 }
1852 }
1853
1853
1854 #login div.inner {
1854 #login div.inner {
1855 width: 380px;
1855 width: 380px;
1856 background: #FFF url("../images/login.png") no-repeat top left;
1856 background: #FFF url("../images/login.png") no-repeat top left;
1857 border-top: none;
1857 border-top: none;
1858 border-bottom: none;
1858 border-bottom: none;
1859 margin: 0 auto;
1859 margin: 0 auto;
1860 padding: 20px;
1860 padding: 20px;
1861 }
1861 }
1862
1862
1863 #login div.form div.fields div.field div.label {
1863 #login div.form div.fields div.field div.label {
1864 width: 173px;
1864 width: 173px;
1865 float: left;
1865 float: left;
1866 text-align: right;
1866 text-align: right;
1867 margin: 2px 10px 0 0;
1867 margin: 2px 10px 0 0;
1868 padding: 5px 0 0 5px;
1868 padding: 5px 0 0 5px;
1869 }
1869 }
1870
1870
1871 #login div.form div.fields div.field div.input input {
1871 #login div.form div.fields div.field div.input input {
1872 width: 176px;
1872 width: 176px;
1873 background: #FFF;
1873 background: #FFF;
1874 border-top: 1px solid #b3b3b3;
1874 border-top: 1px solid #b3b3b3;
1875 border-left: 1px solid #b3b3b3;
1875 border-left: 1px solid #b3b3b3;
1876 border-right: 1px solid #eaeaea;
1876 border-right: 1px solid #eaeaea;
1877 border-bottom: 1px solid #eaeaea;
1877 border-bottom: 1px solid #eaeaea;
1878 color: #000;
1878 color: #000;
1879 font-size: 11px;
1879 font-size: 11px;
1880 margin: 0;
1880 margin: 0;
1881 padding: 7px 7px 6px;
1881 padding: 7px 7px 6px;
1882 }
1882 }
1883
1883
1884 #login div.form div.fields div.buttons {
1884 #login div.form div.fields div.buttons {
1885 clear: both;
1885 clear: both;
1886 overflow: hidden;
1886 overflow: hidden;
1887 border-top: 1px solid #DDD;
1887 border-top: 1px solid #DDD;
1888 text-align: right;
1888 text-align: right;
1889 margin: 0;
1889 margin: 0;
1890 padding: 10px 0 0;
1890 padding: 10px 0 0;
1891 }
1891 }
1892
1892
1893 #login div.form div.links {
1893 #login div.form div.links {
1894 clear: both;
1894 clear: both;
1895 overflow: hidden;
1895 overflow: hidden;
1896 margin: 10px 0 0;
1896 margin: 10px 0 0;
1897 padding: 0 0 2px;
1897 padding: 0 0 2px;
1898 }
1898 }
1899
1899
1900 .user-menu{
1900 .user-menu{
1901 margin: 0px !important;
1901 margin: 0px !important;
1902 float: left;
1902 float: left;
1903 }
1903 }
1904
1904
1905 .user-menu .container{
1905 .user-menu .container{
1906 padding:0px 4px 0px 4px;
1906 padding:0px 4px 0px 4px;
1907 margin: 0px 0px 0px 0px;
1907 margin: 0px 0px 0px 0px;
1908 }
1908 }
1909
1909
1910 .user-menu .gravatar{
1910 .user-menu .gravatar{
1911 margin: 0px 0px 0px 0px;
1911 margin: 0px 0px 0px 0px;
1912 cursor: pointer;
1912 cursor: pointer;
1913 }
1913 }
1914 .user-menu .gravatar.enabled{
1914 .user-menu .gravatar.enabled{
1915 background-color: #FDF784 !important;
1915 background-color: #FDF784 !important;
1916 }
1916 }
1917 .user-menu .gravatar:hover{
1917 .user-menu .gravatar:hover{
1918 background-color: #FDF784 !important;
1918 background-color: #FDF784 !important;
1919 }
1919 }
1920 #quick_login{
1920 #quick_login{
1921 min-height: 80px;
1921 min-height: 80px;
1922 margin: 37px 0 0 -251px;
1922 margin: 37px 0 0 -251px;
1923 padding: 4px;
1923 padding: 4px;
1924 position: absolute;
1924 position: absolute;
1925 width: 278px;
1925 width: 278px;
1926
1926
1927 background-repeat: repeat-x;
1927 background-repeat: repeat-x;
1928 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1928 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1929 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1929 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1930 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1930 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1931 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1931 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1932 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1932 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1933 background-image: -o-linear-gradient(top, #003b76, #00376e);
1933 background-image: -o-linear-gradient(top, #003b76, #00376e);
1934 background-image: linear-gradient(top, #003b76, #00376e);
1934 background-image: linear-gradient(top, #003b76, #00376e);
1935 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1935 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1936
1936
1937 z-index: 999;
1937 z-index: 999;
1938 -webkit-border-radius: 0px 0px 4px 4px;
1938 -webkit-border-radius: 0px 0px 4px 4px;
1939 -khtml-border-radius: 0px 0px 4px 4px;
1939 -khtml-border-radius: 0px 0px 4px 4px;
1940 -moz-border-radius: 0px 0px 4px 4px;
1940 -moz-border-radius: 0px 0px 4px 4px;
1941 border-radius: 0px 0px 4px 4px;
1941 border-radius: 0px 0px 4px 4px;
1942 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1942 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1943 }
1943 }
1944 #quick_login h4{
1944 #quick_login h4{
1945 color: #fff;
1945 color: #fff;
1946 padding: 5px 0px 5px 14px;
1946 padding: 5px 0px 5px 14px;
1947 }
1947 }
1948
1948
1949 #quick_login .password_forgoten {
1949 #quick_login .password_forgoten {
1950 padding-right: 10px;
1950 padding-right: 10px;
1951 padding-top: 0px;
1951 padding-top: 0px;
1952 text-align: left;
1952 text-align: left;
1953 }
1953 }
1954
1954
1955 #quick_login .password_forgoten a {
1955 #quick_login .password_forgoten a {
1956 font-size: 10px;
1956 font-size: 10px;
1957 color: #fff;
1957 color: #fff;
1958 }
1958 }
1959
1959
1960 #quick_login .register {
1960 #quick_login .register {
1961 padding-right: 10px;
1961 padding-right: 10px;
1962 padding-top: 5px;
1962 padding-top: 5px;
1963 text-align: left;
1963 text-align: left;
1964 }
1964 }
1965
1965
1966 #quick_login .register a {
1966 #quick_login .register a {
1967 font-size: 10px;
1967 font-size: 10px;
1968 color: #fff;
1968 color: #fff;
1969 }
1969 }
1970
1970
1971 #quick_login .submit {
1971 #quick_login .submit {
1972 margin: -20px 0 0 0px;
1972 margin: -20px 0 0 0px;
1973 position: absolute;
1973 position: absolute;
1974 right: 15px;
1974 right: 15px;
1975 }
1975 }
1976
1976
1977 #quick_login .links_left{
1977 #quick_login .links_left{
1978 float: left;
1978 float: left;
1979 }
1979 }
1980 #quick_login .links_right{
1980 #quick_login .links_right{
1981 float: right;
1981 float: right;
1982 }
1982 }
1983 #quick_login .full_name{
1983 #quick_login .full_name{
1984 color: #FFFFFF;
1984 color: #FFFFFF;
1985 font-weight: bold;
1985 font-weight: bold;
1986 padding: 3px;
1986 padding: 3px;
1987 }
1987 }
1988 #quick_login .big_gravatar{
1988 #quick_login .big_gravatar{
1989 padding:4px 0px 0px 6px;
1989 padding:4px 0px 0px 6px;
1990 }
1990 }
1991 #quick_login .inbox{
1991 #quick_login .inbox{
1992 padding:4px 0px 0px 6px;
1992 padding:4px 0px 0px 6px;
1993 color: #FFFFFF;
1993 color: #FFFFFF;
1994 font-weight: bold;
1994 font-weight: bold;
1995 }
1995 }
1996 #quick_login .inbox a{
1996 #quick_login .inbox a{
1997 color: #FFFFFF;
1997 color: #FFFFFF;
1998 }
1998 }
1999 #quick_login .email,#quick_login .email a{
1999 #quick_login .email,#quick_login .email a{
2000 color: #FFFFFF;
2000 color: #FFFFFF;
2001 padding: 3px;
2001 padding: 3px;
2002
2002
2003 }
2003 }
2004 #quick_login .links .logout{
2004 #quick_login .links .logout{
2005
2005
2006 }
2006 }
2007
2007
2008 #quick_login div.form div.fields {
2008 #quick_login div.form div.fields {
2009 padding-top: 2px;
2009 padding-top: 2px;
2010 padding-left: 10px;
2010 padding-left: 10px;
2011 }
2011 }
2012
2012
2013 #quick_login div.form div.fields div.field {
2013 #quick_login div.form div.fields div.field {
2014 padding: 5px;
2014 padding: 5px;
2015 }
2015 }
2016
2016
2017 #quick_login div.form div.fields div.field div.label label {
2017 #quick_login div.form div.fields div.field div.label label {
2018 color: #fff;
2018 color: #fff;
2019 padding-bottom: 3px;
2019 padding-bottom: 3px;
2020 }
2020 }
2021
2021
2022 #quick_login div.form div.fields div.field div.input input {
2022 #quick_login div.form div.fields div.field div.input input {
2023 width: 236px;
2023 width: 236px;
2024 background: #FFF;
2024 background: #FFF;
2025 border-top: 1px solid #b3b3b3;
2025 border-top: 1px solid #b3b3b3;
2026 border-left: 1px solid #b3b3b3;
2026 border-left: 1px solid #b3b3b3;
2027 border-right: 1px solid #eaeaea;
2027 border-right: 1px solid #eaeaea;
2028 border-bottom: 1px solid #eaeaea;
2028 border-bottom: 1px solid #eaeaea;
2029 color: #000;
2029 color: #000;
2030 font-size: 11px;
2030 font-size: 11px;
2031 margin: 0;
2031 margin: 0;
2032 padding: 5px 7px 4px;
2032 padding: 5px 7px 4px;
2033 }
2033 }
2034
2034
2035 #quick_login div.form div.fields div.buttons {
2035 #quick_login div.form div.fields div.buttons {
2036 clear: both;
2036 clear: both;
2037 overflow: hidden;
2037 overflow: hidden;
2038 text-align: right;
2038 text-align: right;
2039 margin: 0;
2039 margin: 0;
2040 padding: 5px 14px 0px 5px;
2040 padding: 5px 14px 0px 5px;
2041 }
2041 }
2042
2042
2043 #quick_login div.form div.links {
2043 #quick_login div.form div.links {
2044 clear: both;
2044 clear: both;
2045 overflow: hidden;
2045 overflow: hidden;
2046 margin: 10px 0 0;
2046 margin: 10px 0 0;
2047 padding: 0 0 2px;
2047 padding: 0 0 2px;
2048 }
2048 }
2049
2049
2050 #quick_login ol.links{
2050 #quick_login ol.links{
2051 display: block;
2051 display: block;
2052 font-weight: bold;
2052 font-weight: bold;
2053 list-style: none outside none;
2053 list-style: none outside none;
2054 text-align: right;
2054 text-align: right;
2055 }
2055 }
2056 #quick_login ol.links li{
2056 #quick_login ol.links li{
2057 line-height: 27px;
2057 line-height: 27px;
2058 margin: 0;
2058 margin: 0;
2059 padding: 0;
2059 padding: 0;
2060 color: #fff;
2060 color: #fff;
2061 display: block;
2061 display: block;
2062 float:none !important;
2062 float:none !important;
2063 }
2063 }
2064
2064
2065 #quick_login ol.links li a{
2065 #quick_login ol.links li a{
2066 color: #fff;
2066 color: #fff;
2067 display: block;
2067 display: block;
2068 padding: 2px;
2068 padding: 2px;
2069 }
2069 }
2070 #quick_login ol.links li a:HOVER{
2070 #quick_login ol.links li a:HOVER{
2071 background-color: inherit !important;
2071 background-color: inherit !important;
2072 }
2072 }
2073
2073
2074 #register div.title {
2074 #register div.title {
2075 clear: both;
2075 clear: both;
2076 overflow: hidden;
2076 overflow: hidden;
2077 position: relative;
2077 position: relative;
2078 background-color: #003B76;
2078 background-color: #003B76;
2079 background-repeat: repeat-x;
2079 background-repeat: repeat-x;
2080 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2080 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2081 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2081 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2082 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2082 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2083 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2083 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2084 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2084 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2085 background-image: -o-linear-gradient(top, #003b76, #00376e);
2085 background-image: -o-linear-gradient(top, #003b76, #00376e);
2086 background-image: linear-gradient(top, #003b76, #00376e);
2086 background-image: linear-gradient(top, #003b76, #00376e);
2087 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
2087 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
2088 endColorstr='#00376e', GradientType=0 );
2088 endColorstr='#00376e', GradientType=0 );
2089 margin: 0 auto;
2089 margin: 0 auto;
2090 padding: 0;
2090 padding: 0;
2091 }
2091 }
2092
2092
2093 #register div.inner {
2093 #register div.inner {
2094 background: #FFF;
2094 background: #FFF;
2095 border-top: none;
2095 border-top: none;
2096 border-bottom: none;
2096 border-bottom: none;
2097 margin: 0 auto;
2097 margin: 0 auto;
2098 padding: 20px;
2098 padding: 20px;
2099 }
2099 }
2100
2100
2101 #register div.form div.fields div.field div.label {
2101 #register div.form div.fields div.field div.label {
2102 width: 135px;
2102 width: 135px;
2103 float: left;
2103 float: left;
2104 text-align: right;
2104 text-align: right;
2105 margin: 2px 10px 0 0;
2105 margin: 2px 10px 0 0;
2106 padding: 5px 0 0 5px;
2106 padding: 5px 0 0 5px;
2107 }
2107 }
2108
2108
2109 #register div.form div.fields div.field div.input input {
2109 #register div.form div.fields div.field div.input input {
2110 width: 300px;
2110 width: 300px;
2111 background: #FFF;
2111 background: #FFF;
2112 border-top: 1px solid #b3b3b3;
2112 border-top: 1px solid #b3b3b3;
2113 border-left: 1px solid #b3b3b3;
2113 border-left: 1px solid #b3b3b3;
2114 border-right: 1px solid #eaeaea;
2114 border-right: 1px solid #eaeaea;
2115 border-bottom: 1px solid #eaeaea;
2115 border-bottom: 1px solid #eaeaea;
2116 color: #000;
2116 color: #000;
2117 font-size: 11px;
2117 font-size: 11px;
2118 margin: 0;
2118 margin: 0;
2119 padding: 7px 7px 6px;
2119 padding: 7px 7px 6px;
2120 }
2120 }
2121
2121
2122 #register div.form div.fields div.buttons {
2122 #register div.form div.fields div.buttons {
2123 clear: both;
2123 clear: both;
2124 overflow: hidden;
2124 overflow: hidden;
2125 border-top: 1px solid #DDD;
2125 border-top: 1px solid #DDD;
2126 text-align: left;
2126 text-align: left;
2127 margin: 0;
2127 margin: 0;
2128 padding: 10px 0 0 150px;
2128 padding: 10px 0 0 150px;
2129 }
2129 }
2130
2130
2131 #register div.form div.activation_msg {
2131 #register div.form div.activation_msg {
2132 padding-top: 4px;
2132 padding-top: 4px;
2133 padding-bottom: 4px;
2133 padding-bottom: 4px;
2134 }
2134 }
2135
2135
2136 #journal .journal_day {
2136 #journal .journal_day {
2137 font-size: 20px;
2137 font-size: 20px;
2138 padding: 10px 0px;
2138 padding: 10px 0px;
2139 border-bottom: 2px solid #DDD;
2139 border-bottom: 2px solid #DDD;
2140 margin-left: 10px;
2140 margin-left: 10px;
2141 margin-right: 10px;
2141 margin-right: 10px;
2142 }
2142 }
2143
2143
2144 #journal .journal_container {
2144 #journal .journal_container {
2145 padding: 5px;
2145 padding: 5px;
2146 clear: both;
2146 clear: both;
2147 margin: 0px 5px 0px 10px;
2147 margin: 0px 5px 0px 10px;
2148 }
2148 }
2149
2149
2150 #journal .journal_action_container {
2150 #journal .journal_action_container {
2151 padding-left: 38px;
2151 padding-left: 38px;
2152 }
2152 }
2153
2153
2154 #journal .journal_user {
2154 #journal .journal_user {
2155 color: #747474;
2155 color: #747474;
2156 font-size: 14px;
2156 font-size: 14px;
2157 font-weight: bold;
2157 font-weight: bold;
2158 height: 30px;
2158 height: 30px;
2159 }
2159 }
2160
2160
2161 #journal .journal_icon {
2161 #journal .journal_icon {
2162 clear: both;
2162 clear: both;
2163 float: left;
2163 float: left;
2164 padding-right: 4px;
2164 padding-right: 4px;
2165 padding-top: 3px;
2165 padding-top: 3px;
2166 }
2166 }
2167
2167
2168 #journal .journal_action {
2168 #journal .journal_action {
2169 padding-top: 4px;
2169 padding-top: 4px;
2170 min-height: 2px;
2170 min-height: 2px;
2171 float: left
2171 float: left
2172 }
2172 }
2173
2173
2174 #journal .journal_action_params {
2174 #journal .journal_action_params {
2175 clear: left;
2175 clear: left;
2176 padding-left: 22px;
2176 padding-left: 22px;
2177 }
2177 }
2178
2178
2179 #journal .journal_repo {
2179 #journal .journal_repo {
2180 float: left;
2180 float: left;
2181 margin-left: 6px;
2181 margin-left: 6px;
2182 padding-top: 3px;
2182 padding-top: 3px;
2183 }
2183 }
2184
2184
2185 #journal .date {
2185 #journal .date {
2186 clear: both;
2186 clear: both;
2187 color: #777777;
2187 color: #777777;
2188 font-size: 11px;
2188 font-size: 11px;
2189 padding-left: 22px;
2189 padding-left: 22px;
2190 }
2190 }
2191
2191
2192 #journal .journal_repo .journal_repo_name {
2192 #journal .journal_repo .journal_repo_name {
2193 font-weight: bold;
2193 font-weight: bold;
2194 font-size: 1.1em;
2194 font-size: 1.1em;
2195 }
2195 }
2196
2196
2197 #journal .compare_view {
2197 #journal .compare_view {
2198 padding: 5px 0px 5px 0px;
2198 padding: 5px 0px 5px 0px;
2199 width: 95px;
2199 width: 95px;
2200 }
2200 }
2201
2201
2202 .journal_highlight {
2202 .journal_highlight {
2203 font-weight: bold;
2203 font-weight: bold;
2204 padding: 0 2px;
2204 padding: 0 2px;
2205 vertical-align: bottom;
2205 vertical-align: bottom;
2206 }
2206 }
2207
2207
2208 .trending_language_tbl,.trending_language_tbl td {
2208 .trending_language_tbl,.trending_language_tbl td {
2209 border: 0 !important;
2209 border: 0 !important;
2210 margin: 0 !important;
2210 margin: 0 !important;
2211 padding: 0 !important;
2211 padding: 0 !important;
2212 }
2212 }
2213
2213
2214 .trending_language_tbl,.trending_language_tbl tr {
2214 .trending_language_tbl,.trending_language_tbl tr {
2215 border-spacing: 1px;
2215 border-spacing: 1px;
2216 }
2216 }
2217
2217
2218 .trending_language {
2218 .trending_language {
2219 background-color: #003367;
2219 background-color: #003367;
2220 color: #FFF;
2220 color: #FFF;
2221 display: block;
2221 display: block;
2222 min-width: 20px;
2222 min-width: 20px;
2223 text-decoration: none;
2223 text-decoration: none;
2224 height: 12px;
2224 height: 12px;
2225 margin-bottom: 0px;
2225 margin-bottom: 0px;
2226 margin-left: 5px;
2226 margin-left: 5px;
2227 white-space: pre;
2227 white-space: pre;
2228 padding: 3px;
2228 padding: 3px;
2229 }
2229 }
2230
2230
2231 h3.files_location {
2231 h3.files_location {
2232 font-size: 1.8em;
2232 font-size: 1.8em;
2233 font-weight: 700;
2233 font-weight: 700;
2234 border-bottom: none !important;
2234 border-bottom: none !important;
2235 margin: 10px 0 !important;
2235 margin: 10px 0 !important;
2236 }
2236 }
2237
2237
2238 #files_data dl dt {
2238 #files_data dl dt {
2239 float: left;
2239 float: left;
2240 width: 60px;
2240 width: 60px;
2241 margin: 0 !important;
2241 margin: 0 !important;
2242 padding: 5px;
2242 padding: 5px;
2243 }
2243 }
2244
2244
2245 #files_data dl dd {
2245 #files_data dl dd {
2246 margin: 0 !important;
2246 margin: 0 !important;
2247 padding: 5px !important;
2247 padding: 5px !important;
2248 }
2248 }
2249
2249
2250 .tablerow0 {
2250 .tablerow0 {
2251 background-color: #F8F8F8;
2251 background-color: #F8F8F8;
2252 }
2252 }
2253
2253
2254 .tablerow1 {
2254 .tablerow1 {
2255 background-color: #FFFFFF;
2255 background-color: #FFFFFF;
2256 }
2256 }
2257
2257
2258 .changeset_id {
2258 .changeset_id {
2259 font-family: monospace;
2259 font-family: monospace;
2260 color: #666666;
2260 color: #666666;
2261 }
2261 }
2262
2262
2263 .changeset_hash {
2263 .changeset_hash {
2264 color: #000000;
2264 color: #000000;
2265 }
2265 }
2266
2266
2267 #changeset_content {
2267 #changeset_content {
2268 border-left: 1px solid #CCC;
2268 border-left: 1px solid #CCC;
2269 border-right: 1px solid #CCC;
2269 border-right: 1px solid #CCC;
2270 border-bottom: 1px solid #CCC;
2270 border-bottom: 1px solid #CCC;
2271 padding: 5px;
2271 padding: 5px;
2272 }
2272 }
2273
2273
2274 #changeset_compare_view_content {
2274 #changeset_compare_view_content {
2275 border: 1px solid #CCC;
2275 border: 1px solid #CCC;
2276 padding: 5px;
2276 padding: 5px;
2277 }
2277 }
2278
2278
2279 #changeset_content .container {
2279 #changeset_content .container {
2280 min-height: 100px;
2280 min-height: 100px;
2281 font-size: 1.2em;
2281 font-size: 1.2em;
2282 overflow: hidden;
2282 overflow: hidden;
2283 }
2283 }
2284
2284
2285 #changeset_compare_view_content .compare_view_commits {
2285 #changeset_compare_view_content .compare_view_commits {
2286 width: auto !important;
2286 width: auto !important;
2287 }
2287 }
2288
2288
2289 #changeset_compare_view_content .compare_view_commits td {
2289 #changeset_compare_view_content .compare_view_commits td {
2290 padding: 0px 0px 0px 12px !important;
2290 padding: 0px 0px 0px 12px !important;
2291 }
2291 }
2292
2292
2293 #changeset_content .container .right {
2293 #changeset_content .container .right {
2294 float: right;
2294 float: right;
2295 width: 20%;
2295 width: 20%;
2296 text-align: right;
2296 text-align: right;
2297 }
2297 }
2298
2298
2299 #changeset_content .container .left .message {
2299 #changeset_content .container .left .message {
2300 white-space: pre-wrap;
2300 white-space: pre-wrap;
2301 }
2301 }
2302 #changeset_content .container .left .message a:hover {
2302 #changeset_content .container .left .message a:hover {
2303 text-decoration: none;
2303 text-decoration: none;
2304 }
2304 }
2305 .cs_files .cur_cs {
2305 .cs_files .cur_cs {
2306 margin: 10px 2px;
2306 margin: 10px 2px;
2307 font-weight: bold;
2307 font-weight: bold;
2308 }
2308 }
2309
2309
2310 .cs_files .node {
2310 .cs_files .node {
2311 float: left;
2311 float: left;
2312 }
2312 }
2313
2313
2314 .cs_files .changes {
2314 .cs_files .changes {
2315 float: right;
2315 float: right;
2316 color:#003367;
2316 color:#003367;
2317
2317
2318 }
2318 }
2319
2319
2320 .cs_files .changes .added {
2320 .cs_files .changes .added {
2321 background-color: #BBFFBB;
2321 background-color: #BBFFBB;
2322 float: left;
2322 float: left;
2323 text-align: center;
2323 text-align: center;
2324 font-size: 9px;
2324 font-size: 9px;
2325 padding: 2px 0px 2px 0px;
2325 padding: 2px 0px 2px 0px;
2326 }
2326 }
2327
2327
2328 .cs_files .changes .deleted {
2328 .cs_files .changes .deleted {
2329 background-color: #FF8888;
2329 background-color: #FF8888;
2330 float: left;
2330 float: left;
2331 text-align: center;
2331 text-align: center;
2332 font-size: 9px;
2332 font-size: 9px;
2333 padding: 2px 0px 2px 0px;
2333 padding: 2px 0px 2px 0px;
2334 }
2334 }
2335
2335
2336 .cs_files .cs_added {
2336 .cs_files .cs_added {
2337 background: url("../images/icons/page_white_add.png") no-repeat scroll
2337 background: url("../images/icons/page_white_add.png") no-repeat scroll
2338 3px;
2338 3px;
2339 height: 16px;
2339 height: 16px;
2340 padding-left: 20px;
2340 padding-left: 20px;
2341 margin-top: 7px;
2341 margin-top: 7px;
2342 text-align: left;
2342 text-align: left;
2343 }
2343 }
2344
2344
2345 .cs_files .cs_changed {
2345 .cs_files .cs_changed {
2346 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2346 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2347 3px;
2347 3px;
2348 height: 16px;
2348 height: 16px;
2349 padding-left: 20px;
2349 padding-left: 20px;
2350 margin-top: 7px;
2350 margin-top: 7px;
2351 text-align: left;
2351 text-align: left;
2352 }
2352 }
2353
2353
2354 .cs_files .cs_removed {
2354 .cs_files .cs_removed {
2355 background: url("../images/icons/page_white_delete.png") no-repeat
2355 background: url("../images/icons/page_white_delete.png") no-repeat
2356 scroll 3px;
2356 scroll 3px;
2357 height: 16px;
2357 height: 16px;
2358 padding-left: 20px;
2358 padding-left: 20px;
2359 margin-top: 7px;
2359 margin-top: 7px;
2360 text-align: left;
2360 text-align: left;
2361 }
2361 }
2362
2362
2363 #graph {
2363 #graph {
2364 overflow: hidden;
2364 overflow: hidden;
2365 }
2365 }
2366
2366
2367 #graph_nodes {
2367 #graph_nodes {
2368 float: left;
2368 float: left;
2369 margin-right: -6px;
2369 margin-right: -6px;
2370 margin-top: 0px;
2370 margin-top: 0px;
2371 }
2371 }
2372
2372
2373 #graph_content {
2373 #graph_content {
2374 width: 80%;
2374 width: 80%;
2375 float: left;
2375 float: left;
2376 }
2376 }
2377
2377
2378 #graph_content .container_header {
2378 #graph_content .container_header {
2379 border-bottom: 1px solid #DDD;
2379 border-bottom: 1px solid #DDD;
2380 padding: 10px;
2380 padding: 10px;
2381 height: 25px;
2381 height: 25px;
2382 }
2382 }
2383
2383
2384 #graph_content #rev_range_container {
2384 #graph_content #rev_range_container {
2385 padding: 7px 20px;
2385 padding: 7px 20px;
2386 float: left;
2386 float: left;
2387 }
2387 }
2388
2388
2389 #graph_content .container {
2389 #graph_content .container {
2390 border-bottom: 1px solid #DDD;
2390 border-bottom: 1px solid #DDD;
2391 height: 56px;
2391 height: 56px;
2392 overflow: hidden;
2392 overflow: hidden;
2393 }
2393 }
2394
2394
2395 #graph_content .container .right {
2395 #graph_content .container .right {
2396 float: right;
2396 float: right;
2397 width: 23%;
2397 width: 23%;
2398 text-align: right;
2398 text-align: right;
2399 }
2399 }
2400
2400
2401 #graph_content .container .left {
2401 #graph_content .container .left {
2402 float: left;
2402 float: left;
2403 width: 25%;
2403 width: 25%;
2404 padding-left: 5px;
2404 padding-left: 5px;
2405 }
2405 }
2406
2406
2407 #graph_content .container .mid {
2407 #graph_content .container .mid {
2408 float: left;
2408 float: left;
2409 width: 49%;
2409 width: 49%;
2410 }
2410 }
2411
2411
2412
2412
2413 #graph_content .container .left .date {
2413 #graph_content .container .left .date {
2414 color: #666;
2414 color: #666;
2415 padding-left: 22px;
2415 padding-left: 22px;
2416 font-size: 10px;
2416 font-size: 10px;
2417 }
2417 }
2418
2418
2419 #graph_content .container .left .author {
2419 #graph_content .container .left .author {
2420 height: 22px;
2420 height: 22px;
2421 }
2421 }
2422
2422
2423 #graph_content .container .left .author .user {
2423 #graph_content .container .left .author .user {
2424 color: #444444;
2424 color: #444444;
2425 float: left;
2425 float: left;
2426 margin-left: -4px;
2426 margin-left: -4px;
2427 margin-top: 4px;
2427 margin-top: 4px;
2428 }
2428 }
2429
2429
2430 #graph_content .container .mid .message {
2430 #graph_content .container .mid .message {
2431 white-space: pre-wrap;
2431 white-space: pre-wrap;
2432 }
2432 }
2433
2433
2434 #graph_content .container .mid .message a:hover{
2434 #graph_content .container .mid .message a:hover{
2435 text-decoration: none;
2435 text-decoration: none;
2436 }
2436 }
2437 #content #graph_content .message .revision-link,
2437 #content #graph_content .message .revision-link,
2438 #changeset_content .container .message .revision-link
2438 #changeset_content .container .message .revision-link
2439 {
2439 {
2440 color:#3F6F9F;
2440 color:#3F6F9F;
2441 font-weight: bold !important;
2441 font-weight: bold !important;
2442 }
2442 }
2443
2443
2444 #content #graph_content .message .issue-tracker-link,
2444 #content #graph_content .message .issue-tracker-link,
2445 #changeset_content .container .message .issue-tracker-link{
2445 #changeset_content .container .message .issue-tracker-link{
2446 color:#3F6F9F;
2446 color:#3F6F9F;
2447 font-weight: bold !important;
2447 font-weight: bold !important;
2448 }
2448 }
2449
2449
2450 .right .comments-container{
2450 .right .comments-container{
2451 padding-right: 5px;
2451 padding-right: 5px;
2452 margin-top:1px;
2452 margin-top:1px;
2453 float:right;
2453 float:right;
2454 height:14px;
2454 height:14px;
2455 }
2455 }
2456
2456
2457 .right .comments-cnt{
2457 .right .comments-cnt{
2458 float: left;
2458 float: left;
2459 color: rgb(136, 136, 136);
2459 color: rgb(136, 136, 136);
2460 padding-right: 2px;
2460 padding-right: 2px;
2461 }
2461 }
2462
2462
2463 .right .changes{
2463 .right .changes{
2464 clear: both;
2464 clear: both;
2465 }
2465 }
2466
2466
2467 .right .changes .changed_total {
2467 .right .changes .changed_total {
2468 display: block;
2468 display: block;
2469 float: right;
2469 float: right;
2470 text-align: center;
2470 text-align: center;
2471 min-width: 45px;
2471 min-width: 45px;
2472 cursor: pointer;
2472 cursor: pointer;
2473 color: #444444;
2473 color: #444444;
2474 background: #FEA;
2474 background: #FEA;
2475 -webkit-border-radius: 0px 0px 0px 6px;
2475 -webkit-border-radius: 0px 0px 0px 6px;
2476 -moz-border-radius: 0px 0px 0px 6px;
2476 -moz-border-radius: 0px 0px 0px 6px;
2477 border-radius: 0px 0px 0px 6px;
2477 border-radius: 0px 0px 0px 6px;
2478 padding: 1px;
2478 padding: 1px;
2479 }
2479 }
2480
2480
2481 .right .changes .added,.changed,.removed {
2481 .right .changes .added,.changed,.removed {
2482 display: block;
2482 display: block;
2483 padding: 1px;
2483 padding: 1px;
2484 color: #444444;
2484 color: #444444;
2485 float: right;
2485 float: right;
2486 text-align: center;
2486 text-align: center;
2487 min-width: 15px;
2487 min-width: 15px;
2488 }
2488 }
2489
2489
2490 .right .changes .added {
2490 .right .changes .added {
2491 background: #CFC;
2491 background: #CFC;
2492 }
2492 }
2493
2493
2494 .right .changes .changed {
2494 .right .changes .changed {
2495 background: #FEA;
2495 background: #FEA;
2496 }
2496 }
2497
2497
2498 .right .changes .removed {
2498 .right .changes .removed {
2499 background: #FAA;
2499 background: #FAA;
2500 }
2500 }
2501
2501
2502 .right .merge {
2502 .right .merge {
2503 padding: 1px 3px 1px 3px;
2503 padding: 1px 3px 1px 3px;
2504 background-color: #fca062;
2504 background-color: #fca062;
2505 font-size: 10px;
2505 font-size: 10px;
2506 font-weight: bold;
2506 font-weight: bold;
2507 color: #ffffff;
2507 color: #ffffff;
2508 text-transform: uppercase;
2508 text-transform: uppercase;
2509 white-space: nowrap;
2509 white-space: nowrap;
2510 -webkit-border-radius: 3px;
2510 -webkit-border-radius: 3px;
2511 -moz-border-radius: 3px;
2511 -moz-border-radius: 3px;
2512 border-radius: 3px;
2512 border-radius: 3px;
2513 margin-right: 2px;
2513 margin-right: 2px;
2514 }
2514 }
2515
2515
2516 .right .parent {
2516 .right .parent {
2517 color: #666666;
2517 color: #666666;
2518 clear:both;
2518 clear:both;
2519 }
2519 }
2520 .right .logtags{
2520 .right .logtags{
2521 padding: 2px 2px 2px 2px;
2521 padding: 2px 2px 2px 2px;
2522 }
2522 }
2523 .right .logtags .branchtag,.logtags .branchtag {
2523 .right .logtags .branchtag,.logtags .branchtag {
2524 padding: 1px 3px 1px 3px;
2524 padding: 1px 3px 1px 3px;
2525 background-color: #bfbfbf;
2525 background-color: #bfbfbf;
2526 font-size: 10px;
2526 font-size: 10px;
2527 font-weight: bold;
2527 font-weight: bold;
2528 color: #ffffff;
2528 color: #ffffff;
2529 text-transform: uppercase;
2529 text-transform: uppercase;
2530 white-space: nowrap;
2530 white-space: nowrap;
2531 -webkit-border-radius: 3px;
2531 -webkit-border-radius: 3px;
2532 -moz-border-radius: 3px;
2532 -moz-border-radius: 3px;
2533 border-radius: 3px;
2533 border-radius: 3px;
2534 }
2534 }
2535 .right .logtags .branchtag a:hover,.logtags .branchtag a{
2535 .right .logtags .branchtag a:hover,.logtags .branchtag a{
2536 color: #ffffff;
2536 color: #ffffff;
2537 }
2537 }
2538 .right .logtags .branchtag a:hover,.logtags .branchtag a:hover{
2538 .right .logtags .branchtag a:hover,.logtags .branchtag a:hover{
2539 text-decoration: none;
2539 text-decoration: none;
2540 color: #ffffff;
2540 color: #ffffff;
2541 }
2541 }
2542 .right .logtags .tagtag,.logtags .tagtag {
2542 .right .logtags .tagtag,.logtags .tagtag {
2543 padding: 1px 3px 1px 3px;
2543 padding: 1px 3px 1px 3px;
2544 background-color: #62cffc;
2544 background-color: #62cffc;
2545 font-size: 10px;
2545 font-size: 10px;
2546 font-weight: bold;
2546 font-weight: bold;
2547 color: #ffffff;
2547 color: #ffffff;
2548 text-transform: uppercase;
2548 text-transform: uppercase;
2549 white-space: nowrap;
2549 white-space: nowrap;
2550 -webkit-border-radius: 3px;
2550 -webkit-border-radius: 3px;
2551 -moz-border-radius: 3px;
2551 -moz-border-radius: 3px;
2552 border-radius: 3px;
2552 border-radius: 3px;
2553 }
2553 }
2554 .right .logtags .tagtag a:hover,.logtags .tagtag a{
2554 .right .logtags .tagtag a:hover,.logtags .tagtag a{
2555 color: #ffffff;
2555 color: #ffffff;
2556 }
2556 }
2557 .right .logtags .tagtag a:hover,.logtags .tagtag a:hover{
2557 .right .logtags .tagtag a:hover,.logtags .tagtag a:hover{
2558 text-decoration: none;
2558 text-decoration: none;
2559 color: #ffffff;
2559 color: #ffffff;
2560 }
2560 }
2561 .right .logbooks .bookbook,.logbooks .bookbook {
2561 .right .logbooks .bookbook,.logbooks .bookbook {
2562 padding: 1px 3px 2px;
2562 padding: 1px 3px 2px;
2563 background-color: #46A546;
2563 background-color: #46A546;
2564 font-size: 9.75px;
2564 font-size: 9.75px;
2565 font-weight: bold;
2565 font-weight: bold;
2566 color: #ffffff;
2566 color: #ffffff;
2567 text-transform: uppercase;
2567 text-transform: uppercase;
2568 white-space: nowrap;
2568 white-space: nowrap;
2569 -webkit-border-radius: 3px;
2569 -webkit-border-radius: 3px;
2570 -moz-border-radius: 3px;
2570 -moz-border-radius: 3px;
2571 border-radius: 3px;
2571 border-radius: 3px;
2572 }
2572 }
2573 .right .logbooks .bookbook,.logbooks .bookbook a{
2573 .right .logbooks .bookbook,.logbooks .bookbook a{
2574 color: #ffffff;
2574 color: #ffffff;
2575 }
2575 }
2576 .right .logbooks .bookbook,.logbooks .bookbook a:hover{
2576 .right .logbooks .bookbook,.logbooks .bookbook a:hover{
2577 text-decoration: none;
2577 text-decoration: none;
2578 color: #ffffff;
2578 color: #ffffff;
2579 }
2579 }
2580 div.browserblock {
2580 div.browserblock {
2581 overflow: hidden;
2581 overflow: hidden;
2582 border: 1px solid #ccc;
2582 border: 1px solid #ccc;
2583 background: #f8f8f8;
2583 background: #f8f8f8;
2584 font-size: 100%;
2584 font-size: 100%;
2585 line-height: 125%;
2585 line-height: 125%;
2586 padding: 0;
2586 padding: 0;
2587 -webkit-border-radius: 6px 6px 0px 0px;
2587 -webkit-border-radius: 6px 6px 0px 0px;
2588 -moz-border-radius: 6px 6px 0px 0px;
2588 -moz-border-radius: 6px 6px 0px 0px;
2589 border-radius: 6px 6px 0px 0px;
2589 border-radius: 6px 6px 0px 0px;
2590 }
2590 }
2591
2591
2592 div.browserblock .browser-header {
2592 div.browserblock .browser-header {
2593 background: #FFF;
2593 background: #FFF;
2594 padding: 10px 0px 15px 0px;
2594 padding: 10px 0px 15px 0px;
2595 width: 100%;
2595 width: 100%;
2596 }
2596 }
2597
2597
2598 div.browserblock .browser-nav {
2598 div.browserblock .browser-nav {
2599 float: left
2599 float: left
2600 }
2600 }
2601
2601
2602 div.browserblock .browser-branch {
2602 div.browserblock .browser-branch {
2603 float: left;
2603 float: left;
2604 }
2604 }
2605
2605
2606 div.browserblock .browser-branch label {
2606 div.browserblock .browser-branch label {
2607 color: #4A4A4A;
2607 color: #4A4A4A;
2608 vertical-align: text-top;
2608 vertical-align: text-top;
2609 }
2609 }
2610
2610
2611 div.browserblock .browser-header span {
2611 div.browserblock .browser-header span {
2612 margin-left: 5px;
2612 margin-left: 5px;
2613 font-weight: 700;
2613 font-weight: 700;
2614 }
2614 }
2615
2615
2616 div.browserblock .browser-search {
2616 div.browserblock .browser-search {
2617 clear: both;
2617 clear: both;
2618 padding: 8px 8px 0px 5px;
2618 padding: 8px 8px 0px 5px;
2619 height: 20px;
2619 height: 20px;
2620 }
2620 }
2621
2621
2622 div.browserblock #node_filter_box {
2622 div.browserblock #node_filter_box {
2623
2623
2624 }
2624 }
2625
2625
2626 div.browserblock .search_activate {
2626 div.browserblock .search_activate {
2627 float: left
2627 float: left
2628 }
2628 }
2629
2629
2630 div.browserblock .add_node {
2630 div.browserblock .add_node {
2631 float: left;
2631 float: left;
2632 padding-left: 5px;
2632 padding-left: 5px;
2633 }
2633 }
2634
2634
2635 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover
2635 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover
2636 {
2636 {
2637 text-decoration: none !important;
2637 text-decoration: none !important;
2638 }
2638 }
2639
2639
2640 div.browserblock .browser-body {
2640 div.browserblock .browser-body {
2641 background: #EEE;
2641 background: #EEE;
2642 border-top: 1px solid #CCC;
2642 border-top: 1px solid #CCC;
2643 }
2643 }
2644
2644
2645 table.code-browser {
2645 table.code-browser {
2646 border-collapse: collapse;
2646 border-collapse: collapse;
2647 width: 100%;
2647 width: 100%;
2648 }
2648 }
2649
2649
2650 table.code-browser tr {
2650 table.code-browser tr {
2651 margin: 3px;
2651 margin: 3px;
2652 }
2652 }
2653
2653
2654 table.code-browser thead th {
2654 table.code-browser thead th {
2655 background-color: #EEE;
2655 background-color: #EEE;
2656 height: 20px;
2656 height: 20px;
2657 font-size: 1.1em;
2657 font-size: 1.1em;
2658 font-weight: 700;
2658 font-weight: 700;
2659 text-align: left;
2659 text-align: left;
2660 padding-left: 10px;
2660 padding-left: 10px;
2661 }
2661 }
2662
2662
2663 table.code-browser tbody td {
2663 table.code-browser tbody td {
2664 padding-left: 10px;
2664 padding-left: 10px;
2665 height: 20px;
2665 height: 20px;
2666 }
2666 }
2667
2667
2668 table.code-browser .browser-file {
2668 table.code-browser .browser-file {
2669 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2669 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2670 height: 16px;
2670 height: 16px;
2671 padding-left: 20px;
2671 padding-left: 20px;
2672 text-align: left;
2672 text-align: left;
2673 }
2673 }
2674 .diffblock .changeset_header {
2674 .diffblock .changeset_header {
2675 height: 16px;
2675 height: 16px;
2676 }
2676 }
2677 .diffblock .changeset_file {
2677 .diffblock .changeset_file {
2678 background: url("../images/icons/file.png") no-repeat scroll 3px;
2678 background: url("../images/icons/file.png") no-repeat scroll 3px;
2679 text-align: left;
2679 text-align: left;
2680 float: left;
2680 float: left;
2681 padding: 2px 0px 2px 22px;
2681 padding: 2px 0px 2px 22px;
2682 }
2682 }
2683 .diffblock .diff-menu-wrapper{
2683 .diffblock .diff-menu-wrapper{
2684 float: left;
2684 float: left;
2685 }
2685 }
2686
2686
2687 .diffblock .diff-menu{
2687 .diffblock .diff-menu{
2688 position: absolute;
2688 position: absolute;
2689 background: none repeat scroll 0 0 #FFFFFF;
2689 background: none repeat scroll 0 0 #FFFFFF;
2690 border-color: #003367 #666666 #666666;
2690 border-color: #003367 #666666 #666666;
2691 border-right: 1px solid #666666;
2691 border-right: 1px solid #666666;
2692 border-style: solid solid solid;
2692 border-style: solid solid solid;
2693 border-width: 1px;
2693 border-width: 1px;
2694 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2694 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2695 margin-top:5px;
2695 margin-top:5px;
2696 margin-left:1px;
2696 margin-left:1px;
2697
2697
2698 }
2698 }
2699 .diffblock .diff-actions {
2699 .diffblock .diff-actions {
2700 padding: 2px 0px 0px 2px;
2700 padding: 2px 0px 0px 2px;
2701 float: left;
2701 float: left;
2702 }
2702 }
2703 .diffblock .diff-menu ul li {
2703 .diffblock .diff-menu ul li {
2704 padding: 0px 0px 0px 0px !important;
2704 padding: 0px 0px 0px 0px !important;
2705 }
2705 }
2706 .diffblock .diff-menu ul li a{
2706 .diffblock .diff-menu ul li a{
2707 display: block;
2707 display: block;
2708 padding: 3px 8px 3px 8px !important;
2708 padding: 3px 8px 3px 8px !important;
2709 }
2709 }
2710 .diffblock .diff-menu ul li a:hover{
2710 .diffblock .diff-menu ul li a:hover{
2711 text-decoration: none;
2711 text-decoration: none;
2712 background-color: #EEEEEE;
2712 background-color: #EEEEEE;
2713 }
2713 }
2714 table.code-browser .browser-dir {
2714 table.code-browser .browser-dir {
2715 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2715 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2716 height: 16px;
2716 height: 16px;
2717 padding-left: 20px;
2717 padding-left: 20px;
2718 text-align: left;
2718 text-align: left;
2719 }
2719 }
2720
2720
2721 .box .search {
2721 .box .search {
2722 clear: both;
2722 clear: both;
2723 overflow: hidden;
2723 overflow: hidden;
2724 margin: 0;
2724 margin: 0;
2725 padding: 0 20px 10px;
2725 padding: 0 20px 10px;
2726 }
2726 }
2727
2727
2728 .box .search div.search_path {
2728 .box .search div.search_path {
2729 background: none repeat scroll 0 0 #EEE;
2729 background: none repeat scroll 0 0 #EEE;
2730 border: 1px solid #CCC;
2730 border: 1px solid #CCC;
2731 color: blue;
2731 color: blue;
2732 margin-bottom: 10px;
2732 margin-bottom: 10px;
2733 padding: 10px 0;
2733 padding: 10px 0;
2734 }
2734 }
2735
2735
2736 .box .search div.search_path div.link {
2736 .box .search div.search_path div.link {
2737 font-weight: 700;
2737 font-weight: 700;
2738 margin-left: 25px;
2738 margin-left: 25px;
2739 }
2739 }
2740
2740
2741 .box .search div.search_path div.link a {
2741 .box .search div.search_path div.link a {
2742 color: #003367;
2742 color: #003367;
2743 cursor: pointer;
2743 cursor: pointer;
2744 text-decoration: none;
2744 text-decoration: none;
2745 }
2745 }
2746
2746
2747 #path_unlock {
2747 #path_unlock {
2748 color: red;
2748 color: red;
2749 font-size: 1.2em;
2749 font-size: 1.2em;
2750 padding-left: 4px;
2750 padding-left: 4px;
2751 }
2751 }
2752
2752
2753 .info_box span {
2753 .info_box span {
2754 margin-left: 3px;
2754 margin-left: 3px;
2755 margin-right: 3px;
2755 margin-right: 3px;
2756 }
2756 }
2757
2757
2758 .info_box .rev {
2758 .info_box .rev {
2759 color: #003367;
2759 color: #003367;
2760 font-size: 1.6em;
2760 font-size: 1.6em;
2761 font-weight: bold;
2761 font-weight: bold;
2762 vertical-align: sub;
2762 vertical-align: sub;
2763 }
2763 }
2764
2764
2765 .info_box input#at_rev,.info_box input#size {
2765 .info_box input#at_rev,.info_box input#size {
2766 background: #FFF;
2766 background: #FFF;
2767 border-top: 1px solid #b3b3b3;
2767 border-top: 1px solid #b3b3b3;
2768 border-left: 1px solid #b3b3b3;
2768 border-left: 1px solid #b3b3b3;
2769 border-right: 1px solid #eaeaea;
2769 border-right: 1px solid #eaeaea;
2770 border-bottom: 1px solid #eaeaea;
2770 border-bottom: 1px solid #eaeaea;
2771 color: #000;
2771 color: #000;
2772 font-size: 12px;
2772 font-size: 12px;
2773 margin: 0;
2773 margin: 0;
2774 padding: 1px 5px 1px;
2774 padding: 1px 5px 1px;
2775 }
2775 }
2776
2776
2777 .info_box input#view {
2777 .info_box input#view {
2778 text-align: center;
2778 text-align: center;
2779 padding: 4px 3px 2px 2px;
2779 padding: 4px 3px 2px 2px;
2780 }
2780 }
2781
2781
2782 .yui-overlay,.yui-panel-container {
2782 .yui-overlay,.yui-panel-container {
2783 visibility: hidden;
2783 visibility: hidden;
2784 position: absolute;
2784 position: absolute;
2785 z-index: 2;
2785 z-index: 2;
2786 }
2786 }
2787
2787
2788 .yui-tt {
2788 .yui-tt {
2789 visibility: hidden;
2789 visibility: hidden;
2790 position: absolute;
2790 position: absolute;
2791 color: #666;
2791 color: #666;
2792 background-color: #FFF;
2792 background-color: #FFF;
2793 border: 2px solid #003367;
2793 border: 2px solid #003367;
2794 font: 100% sans-serif;
2794 font: 100% sans-serif;
2795 width: auto;
2795 width: auto;
2796 opacity: 1px;
2796 opacity: 1px;
2797 padding: 8px;
2797 padding: 8px;
2798 white-space: pre-wrap;
2798 white-space: pre-wrap;
2799 -webkit-border-radius: 8px 8px 8px 8px;
2799 -webkit-border-radius: 8px 8px 8px 8px;
2800 -khtml-border-radius: 8px 8px 8px 8px;
2800 -khtml-border-radius: 8px 8px 8px 8px;
2801 -moz-border-radius: 8px 8px 8px 8px;
2801 -moz-border-radius: 8px 8px 8px 8px;
2802 border-radius: 8px 8px 8px 8px;
2802 border-radius: 8px 8px 8px 8px;
2803 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2803 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2804 }
2804 }
2805
2805
2806 .ac {
2806 .ac {
2807 vertical-align: top;
2807 vertical-align: top;
2808 }
2808 }
2809
2809
2810 .ac .yui-ac {
2810 .ac .yui-ac {
2811 position: inherit;
2811 position: inherit;
2812 font-size: 100%;
2812 font-size: 100%;
2813 }
2813 }
2814
2814
2815 .ac .perm_ac {
2815 .ac .perm_ac {
2816 width: 20em;
2816 width: 20em;
2817 }
2817 }
2818
2818
2819 .ac .yui-ac-input {
2819 .ac .yui-ac-input {
2820 width: 100%;
2820 width: 100%;
2821 }
2821 }
2822
2822
2823 .ac .yui-ac-container {
2823 .ac .yui-ac-container {
2824 position: absolute;
2824 position: absolute;
2825 top: 1.6em;
2825 top: 1.6em;
2826 width: auto;
2826 width: auto;
2827 }
2827 }
2828
2828
2829 .ac .yui-ac-content {
2829 .ac .yui-ac-content {
2830 position: absolute;
2830 position: absolute;
2831 border: 1px solid gray;
2831 border: 1px solid gray;
2832 background: #fff;
2832 background: #fff;
2833 z-index: 9050;
2833 z-index: 9050;
2834
2834
2835 }
2835 }
2836
2836
2837 .ac .yui-ac-shadow {
2837 .ac .yui-ac-shadow {
2838 position: absolute;
2838 position: absolute;
2839 width: 100%;
2839 width: 100%;
2840 background: #000;
2840 background: #000;
2841 -moz-opacity: 0.1px;
2841 -moz-opacity: 0.1px;
2842 opacity: .10;
2842 opacity: .10;
2843 filter: alpha(opacity = 10);
2843 filter: alpha(opacity = 10);
2844 z-index: 9049;
2844 z-index: 9049;
2845 margin: .3em;
2845 margin: .3em;
2846 }
2846 }
2847
2847
2848 .ac .yui-ac-content ul {
2848 .ac .yui-ac-content ul {
2849 width: 100%;
2849 width: 100%;
2850 margin: 0;
2850 margin: 0;
2851 padding: 0;
2851 padding: 0;
2852 z-index: 9050;
2852 z-index: 9050;
2853 }
2853 }
2854
2854
2855 .ac .yui-ac-content li {
2855 .ac .yui-ac-content li {
2856 cursor: default;
2856 cursor: default;
2857 white-space: nowrap;
2857 white-space: nowrap;
2858 margin: 0;
2858 margin: 0;
2859 padding: 2px 5px;
2859 padding: 2px 5px;
2860 height: 18px;
2860 height: 18px;
2861 z-index: 9050;
2861 z-index: 9050;
2862 display: block;
2862 display: block;
2863 width: auto !important;
2863 width: auto !important;
2864 }
2864 }
2865
2865
2866 .ac .yui-ac-content li .ac-container-wrap{
2866 .ac .yui-ac-content li .ac-container-wrap{
2867 width: auto;
2867 width: auto;
2868 }
2868 }
2869
2869
2870 .ac .yui-ac-content li.yui-ac-prehighlight {
2870 .ac .yui-ac-content li.yui-ac-prehighlight {
2871 background: #B3D4FF;
2871 background: #B3D4FF;
2872 z-index: 9050;
2872 z-index: 9050;
2873 }
2873 }
2874
2874
2875 .ac .yui-ac-content li.yui-ac-highlight {
2875 .ac .yui-ac-content li.yui-ac-highlight {
2876 background: #556CB5;
2876 background: #556CB5;
2877 color: #FFF;
2877 color: #FFF;
2878 z-index: 9050;
2878 z-index: 9050;
2879 }
2879 }
2880 .ac .yui-ac-bd{
2880 .ac .yui-ac-bd{
2881 z-index: 9050;
2881 z-index: 9050;
2882 }
2882 }
2883
2883
2884 .follow {
2884 .follow {
2885 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2885 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2886 height: 16px;
2886 height: 16px;
2887 width: 20px;
2887 width: 20px;
2888 cursor: pointer;
2888 cursor: pointer;
2889 display: block;
2889 display: block;
2890 float: right;
2890 float: right;
2891 margin-top: 2px;
2891 margin-top: 2px;
2892 }
2892 }
2893
2893
2894 .following {
2894 .following {
2895 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2895 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2896 height: 16px;
2896 height: 16px;
2897 width: 20px;
2897 width: 20px;
2898 cursor: pointer;
2898 cursor: pointer;
2899 display: block;
2899 display: block;
2900 float: right;
2900 float: right;
2901 margin-top: 2px;
2901 margin-top: 2px;
2902 }
2902 }
2903
2903
2904 .currently_following {
2904 .currently_following {
2905 padding-left: 10px;
2905 padding-left: 10px;
2906 padding-bottom: 5px;
2906 padding-bottom: 5px;
2907 }
2907 }
2908
2908
2909 .add_icon {
2909 .add_icon {
2910 background: url("../images/icons/add.png") no-repeat scroll 3px;
2910 background: url("../images/icons/add.png") no-repeat scroll 3px;
2911 padding-left: 20px;
2911 padding-left: 20px;
2912 padding-top: 0px;
2912 padding-top: 0px;
2913 text-align: left;
2913 text-align: left;
2914 }
2914 }
2915
2915
2916 .edit_icon {
2916 .edit_icon {
2917 background: url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2917 background: url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2918 padding-left: 20px;
2918 padding-left: 20px;
2919 padding-top: 0px;
2919 padding-top: 0px;
2920 text-align: left;
2920 text-align: left;
2921 }
2921 }
2922
2922
2923 .delete_icon {
2923 .delete_icon {
2924 background: url("../images/icons/delete.png") no-repeat scroll 3px;
2924 background: url("../images/icons/delete.png") no-repeat scroll 3px;
2925 padding-left: 20px;
2925 padding-left: 20px;
2926 padding-top: 0px;
2926 padding-top: 0px;
2927 text-align: left;
2927 text-align: left;
2928 }
2928 }
2929
2929
2930 .refresh_icon {
2930 .refresh_icon {
2931 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
2931 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
2932 3px;
2932 3px;
2933 padding-left: 20px;
2933 padding-left: 20px;
2934 padding-top: 0px;
2934 padding-top: 0px;
2935 text-align: left;
2935 text-align: left;
2936 }
2936 }
2937
2937
2938 .pull_icon {
2938 .pull_icon {
2939 background: url("../images/icons/connect.png") no-repeat scroll 3px;
2939 background: url("../images/icons/connect.png") no-repeat scroll 3px;
2940 padding-left: 20px;
2940 padding-left: 20px;
2941 padding-top: 0px;
2941 padding-top: 0px;
2942 text-align: left;
2942 text-align: left;
2943 }
2943 }
2944
2944
2945 .rss_icon {
2945 .rss_icon {
2946 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
2946 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
2947 padding-left: 20px;
2947 padding-left: 20px;
2948 padding-top: 4px;
2948 padding-top: 4px;
2949 text-align: left;
2949 text-align: left;
2950 font-size: 8px
2950 font-size: 8px
2951 }
2951 }
2952
2952
2953 .atom_icon {
2953 .atom_icon {
2954 background: url("../images/icons/atom.png") no-repeat scroll 3px;
2954 background: url("../images/icons/atom.png") no-repeat scroll 3px;
2955 padding-left: 20px;
2955 padding-left: 20px;
2956 padding-top: 4px;
2956 padding-top: 4px;
2957 text-align: left;
2957 text-align: left;
2958 font-size: 8px
2958 font-size: 8px
2959 }
2959 }
2960
2960
2961 .archive_icon {
2961 .archive_icon {
2962 background: url("../images/icons/compress.png") no-repeat scroll 3px;
2962 background: url("../images/icons/compress.png") no-repeat scroll 3px;
2963 padding-left: 20px;
2963 padding-left: 20px;
2964 text-align: left;
2964 text-align: left;
2965 padding-top: 1px;
2965 padding-top: 1px;
2966 }
2966 }
2967
2967
2968 .start_following_icon {
2968 .start_following_icon {
2969 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2969 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2970 padding-left: 20px;
2970 padding-left: 20px;
2971 text-align: left;
2971 text-align: left;
2972 padding-top: 0px;
2972 padding-top: 0px;
2973 }
2973 }
2974
2974
2975 .stop_following_icon {
2975 .stop_following_icon {
2976 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2976 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2977 padding-left: 20px;
2977 padding-left: 20px;
2978 text-align: left;
2978 text-align: left;
2979 padding-top: 0px;
2979 padding-top: 0px;
2980 }
2980 }
2981
2981
2982 .action_button {
2982 .action_button {
2983 border: 0;
2983 border: 0;
2984 display: inline;
2984 display: inline;
2985 }
2985 }
2986
2986
2987 .action_button:hover {
2987 .action_button:hover {
2988 border: 0;
2988 border: 0;
2989 text-decoration: underline;
2989 text-decoration: underline;
2990 cursor: pointer;
2990 cursor: pointer;
2991 }
2991 }
2992
2992
2993 #switch_repos {
2993 #switch_repos {
2994 position: absolute;
2994 position: absolute;
2995 height: 25px;
2995 height: 25px;
2996 z-index: 1;
2996 z-index: 1;
2997 }
2997 }
2998
2998
2999 #switch_repos select {
2999 #switch_repos select {
3000 min-width: 150px;
3000 min-width: 150px;
3001 max-height: 250px;
3001 max-height: 250px;
3002 z-index: 1;
3002 z-index: 1;
3003 }
3003 }
3004
3004
3005 .breadcrumbs {
3005 .breadcrumbs {
3006 border: medium none;
3006 border: medium none;
3007 color: #FFF;
3007 color: #FFF;
3008 float: left;
3008 float: left;
3009 text-transform: uppercase;
3009 text-transform: uppercase;
3010 font-weight: 700;
3010 font-weight: 700;
3011 font-size: 14px;
3011 font-size: 14px;
3012 margin: 0;
3012 margin: 0;
3013 padding: 11px 0 11px 10px;
3013 padding: 11px 0 11px 10px;
3014 }
3014 }
3015
3015
3016 .breadcrumbs .hash {
3016 .breadcrumbs .hash {
3017 text-transform: none;
3017 text-transform: none;
3018 color: #fff;
3018 color: #fff;
3019 }
3019 }
3020
3020
3021 .breadcrumbs a {
3021 .breadcrumbs a {
3022 color: #FFF;
3022 color: #FFF;
3023 }
3023 }
3024
3024
3025 .flash_msg {
3025 .flash_msg {
3026
3026
3027 }
3027 }
3028
3028
3029 .flash_msg ul {
3029 .flash_msg ul {
3030
3030
3031 }
3031 }
3032
3032
3033 .error_msg {
3033 .error_msg {
3034 background-color: #c43c35;
3034 background-color: #c43c35;
3035 background-repeat: repeat-x;
3035 background-repeat: repeat-x;
3036 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35) );
3036 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35) );
3037 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3037 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3038 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3038 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3039 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35) );
3039 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35) );
3040 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3040 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3041 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3041 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3042 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3042 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3043 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35', GradientType=0 );
3043 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35', GradientType=0 );
3044 border-color: #c43c35 #c43c35 #882a25;
3044 border-color: #c43c35 #c43c35 #882a25;
3045 }
3045 }
3046
3046
3047 .warning_msg {
3047 .warning_msg {
3048 color: #404040 !important;
3048 color: #404040 !important;
3049 background-color: #eedc94;
3049 background-color: #eedc94;
3050 background-repeat: repeat-x;
3050 background-repeat: repeat-x;
3051 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94) );
3051 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94) );
3052 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
3052 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
3053 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
3053 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
3054 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94) );
3054 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94) );
3055 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
3055 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
3056 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
3056 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
3057 background-image: linear-gradient(top, #fceec1, #eedc94);
3057 background-image: linear-gradient(top, #fceec1, #eedc94);
3058 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0 );
3058 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0 );
3059 border-color: #eedc94 #eedc94 #e4c652;
3059 border-color: #eedc94 #eedc94 #e4c652;
3060 }
3060 }
3061
3061
3062 .success_msg {
3062 .success_msg {
3063 background-color: #57a957;
3063 background-color: #57a957;
3064 background-repeat: repeat-x !important;
3064 background-repeat: repeat-x !important;
3065 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957) );
3065 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957) );
3066 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3066 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3067 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3067 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3068 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957) );
3068 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957) );
3069 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3069 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3070 background-image: -o-linear-gradient(top, #62c462, #57a957);
3070 background-image: -o-linear-gradient(top, #62c462, #57a957);
3071 background-image: linear-gradient(top, #62c462, #57a957);
3071 background-image: linear-gradient(top, #62c462, #57a957);
3072 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0 );
3072 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0 );
3073 border-color: #57a957 #57a957 #3d773d;
3073 border-color: #57a957 #57a957 #3d773d;
3074 }
3074 }
3075
3075
3076 .notice_msg {
3076 .notice_msg {
3077 background-color: #339bb9;
3077 background-color: #339bb9;
3078 background-repeat: repeat-x;
3078 background-repeat: repeat-x;
3079 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9) );
3079 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9) );
3080 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3080 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3081 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3081 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3082 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9) );
3082 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9) );
3083 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3083 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3084 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3084 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3085 background-image: linear-gradient(top, #5bc0de, #339bb9);
3085 background-image: linear-gradient(top, #5bc0de, #339bb9);
3086 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0 );
3086 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0 );
3087 border-color: #339bb9 #339bb9 #22697d;
3087 border-color: #339bb9 #339bb9 #22697d;
3088 }
3088 }
3089
3089
3090 .success_msg,.error_msg,.notice_msg,.warning_msg {
3090 .success_msg,.error_msg,.notice_msg,.warning_msg {
3091 font-size: 12px;
3091 font-size: 12px;
3092 font-weight: 700;
3092 font-weight: 700;
3093 min-height: 14px;
3093 min-height: 14px;
3094 line-height: 14px;
3094 line-height: 14px;
3095 margin-bottom: 10px;
3095 margin-bottom: 10px;
3096 margin-top: 0;
3096 margin-top: 0;
3097 display: block;
3097 display: block;
3098 overflow: auto;
3098 overflow: auto;
3099 padding: 6px 10px 6px 10px;
3099 padding: 6px 10px 6px 10px;
3100 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3100 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3101 position: relative;
3101 position: relative;
3102 color: #FFF;
3102 color: #FFF;
3103 border-width: 1px;
3103 border-width: 1px;
3104 border-style: solid;
3104 border-style: solid;
3105 -webkit-border-radius: 4px;
3105 -webkit-border-radius: 4px;
3106 -moz-border-radius: 4px;
3106 -moz-border-radius: 4px;
3107 border-radius: 4px;
3107 border-radius: 4px;
3108 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3108 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3109 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3109 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3110 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3110 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3111 }
3111 }
3112
3112
3113 #msg_close {
3113 #msg_close {
3114 background: transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
3114 background: transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
3115 cursor: pointer;
3115 cursor: pointer;
3116 height: 16px;
3116 height: 16px;
3117 position: absolute;
3117 position: absolute;
3118 right: 5px;
3118 right: 5px;
3119 top: 5px;
3119 top: 5px;
3120 width: 16px;
3120 width: 16px;
3121 }
3121 }
3122 div#legend_data{
3122 div#legend_data{
3123 padding-left:10px;
3123 padding-left:10px;
3124 }
3124 }
3125 div#legend_container table{
3125 div#legend_container table{
3126 border: none !important;
3126 border: none !important;
3127 }
3127 }
3128 div#legend_container table,div#legend_choices table {
3128 div#legend_container table,div#legend_choices table {
3129 width: auto !important;
3129 width: auto !important;
3130 }
3130 }
3131
3131
3132 table#permissions_manage {
3132 table#permissions_manage {
3133 width: 0 !important;
3133 width: 0 !important;
3134 }
3134 }
3135
3135
3136 table#permissions_manage span.private_repo_msg {
3136 table#permissions_manage span.private_repo_msg {
3137 font-size: 0.8em;
3137 font-size: 0.8em;
3138 opacity: 0.6px;
3138 opacity: 0.6px;
3139 }
3139 }
3140
3140
3141 table#permissions_manage td.private_repo_msg {
3141 table#permissions_manage td.private_repo_msg {
3142 font-size: 0.8em;
3142 font-size: 0.8em;
3143 }
3143 }
3144
3144
3145 table#permissions_manage tr#add_perm_input td {
3145 table#permissions_manage tr#add_perm_input td {
3146 vertical-align: middle;
3146 vertical-align: middle;
3147 }
3147 }
3148
3148
3149 div.gravatar {
3149 div.gravatar {
3150 background-color: #FFF;
3150 background-color: #FFF;
3151 float: left;
3151 float: left;
3152 margin-right: 0.7em;
3152 margin-right: 0.7em;
3153 padding: 1px 1px 1px 1px;
3153 padding: 1px 1px 1px 1px;
3154 line-height:0;
3154 line-height:0;
3155 -webkit-border-radius: 3px;
3155 -webkit-border-radius: 3px;
3156 -khtml-border-radius: 3px;
3156 -khtml-border-radius: 3px;
3157 -moz-border-radius: 3px;
3157 -moz-border-radius: 3px;
3158 border-radius: 3px;
3158 border-radius: 3px;
3159 }
3159 }
3160
3160
3161 div.gravatar img {
3161 div.gravatar img {
3162 -webkit-border-radius: 2px;
3162 -webkit-border-radius: 2px;
3163 -khtml-border-radius: 2px;
3163 -khtml-border-radius: 2px;
3164 -moz-border-radius: 2px;
3164 -moz-border-radius: 2px;
3165 border-radius: 2px;
3165 border-radius: 2px;
3166 }
3166 }
3167
3167
3168 #header,#content,#footer {
3168 #header,#content,#footer {
3169 min-width: 978px;
3169 min-width: 978px;
3170 }
3170 }
3171
3171
3172 #content {
3172 #content {
3173 clear: both;
3173 clear: both;
3174 overflow: hidden;
3174 overflow: hidden;
3175 padding: 54px 10px 14px 10px;
3175 padding: 54px 10px 14px 10px;
3176 }
3176 }
3177
3177
3178 #content div.box div.title div.search {
3178 #content div.box div.title div.search {
3179
3179
3180 border-left: 1px solid #316293;
3180 border-left: 1px solid #316293;
3181 }
3181 }
3182
3182
3183 #content div.box div.title div.search div.input input {
3183 #content div.box div.title div.search div.input input {
3184 border: 1px solid #316293;
3184 border: 1px solid #316293;
3185 }
3185 }
3186
3186
3187 .ui-btn{
3187 .ui-btn{
3188 color: #515151;
3188 color: #515151;
3189 background-color: #DADADA;
3189 background-color: #DADADA;
3190 background-repeat: repeat-x;
3190 background-repeat: repeat-x;
3191 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3191 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3192 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3192 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3193 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3193 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3194 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3194 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3195 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3195 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3196 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3196 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3197 background-image: linear-gradient(top, #F4F4F4, #DADADA);
3197 background-image: linear-gradient(top, #F4F4F4, #DADADA);
3198 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3198 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3199
3199
3200 border-top: 1px solid #DDD;
3200 border-top: 1px solid #DDD;
3201 border-left: 1px solid #c6c6c6;
3201 border-left: 1px solid #c6c6c6;
3202 border-right: 1px solid #DDD;
3202 border-right: 1px solid #DDD;
3203 border-bottom: 1px solid #c6c6c6;
3203 border-bottom: 1px solid #c6c6c6;
3204 color: #515151;
3204 color: #515151;
3205 outline: none;
3205 outline: none;
3206 margin: 0px 3px 3px 0px;
3206 margin: 0px 3px 3px 0px;
3207 -webkit-border-radius: 4px 4px 4px 4px !important;
3207 -webkit-border-radius: 4px 4px 4px 4px !important;
3208 -khtml-border-radius: 4px 4px 4px 4px !important;
3208 -khtml-border-radius: 4px 4px 4px 4px !important;
3209 -moz-border-radius: 4px 4px 4px 4px !important;
3209 -moz-border-radius: 4px 4px 4px 4px !important;
3210 border-radius: 4px 4px 4px 4px !important;
3210 border-radius: 4px 4px 4px 4px !important;
3211 cursor: pointer !important;
3211 cursor: pointer !important;
3212 padding: 3px 3px 3px 3px;
3212 padding: 3px 3px 3px 3px;
3213 background-position: 0 -15px;
3213 background-position: 0 -15px;
3214
3214
3215 }
3215 }
3216 .ui-btn.xsmall{
3216 .ui-btn.xsmall{
3217 padding: 1px 2px 1px 1px;
3217 padding: 1px 2px 1px 1px;
3218 }
3218 }
3219 .ui-btn.clone{
3219 .ui-btn.clone{
3220 padding: 5px 2px 6px 1px;
3220 padding: 5px 2px 6px 1px;
3221 margin: 0px -4px 3px 0px;
3221 margin: 0px -4px 3px 0px;
3222 -webkit-border-radius: 4px 0px 0px 4px !important;
3222 -webkit-border-radius: 4px 0px 0px 4px !important;
3223 -khtml-border-radius: 4px 0px 0px 4px !important;
3223 -khtml-border-radius: 4px 0px 0px 4px !important;
3224 -moz-border-radius: 4px 0px 0px 4px !important;
3224 -moz-border-radius: 4px 0px 0px 4px !important;
3225 border-radius: 4px 0px 0px 4px !important;
3225 border-radius: 4px 0px 0px 4px !important;
3226 width: 100px;
3226 width: 100px;
3227 text-align: center;
3227 text-align: center;
3228 float: left;
3228 float: left;
3229 position: absolute;
3229 position: absolute;
3230 }
3230 }
3231 .ui-btn:focus {
3231 .ui-btn:focus {
3232 outline: none;
3232 outline: none;
3233 }
3233 }
3234 .ui-btn:hover{
3234 .ui-btn:hover{
3235 background-position: 0 0px;
3235 background-position: 0 0px;
3236 text-decoration: none;
3236 text-decoration: none;
3237 color: #515151;
3237 color: #515151;
3238 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3238 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3239 }
3239 }
3240
3240
3241 .ui-btn.red{
3241 .ui-btn.red{
3242 color:#fff;
3242 color:#fff;
3243 background-color: #c43c35;
3243 background-color: #c43c35;
3244 background-repeat: repeat-x;
3244 background-repeat: repeat-x;
3245 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3245 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3246 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3246 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3247 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3247 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3248 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3248 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3249 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3249 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3250 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3250 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3251 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3251 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3252 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3252 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3253 border-color: #c43c35 #c43c35 #882a25;
3253 border-color: #c43c35 #c43c35 #882a25;
3254 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3254 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3255 }
3255 }
3256
3256
3257
3257
3258 .ui-btn.blue{
3258 .ui-btn.blue{
3259 background-color: #339bb9;
3259 background-color: #339bb9;
3260 background-repeat: repeat-x;
3260 background-repeat: repeat-x;
3261 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3261 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3262 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3262 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3263 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3263 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3264 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3264 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3265 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3265 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3266 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3266 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3267 background-image: linear-gradient(top, #5bc0de, #339bb9);
3267 background-image: linear-gradient(top, #5bc0de, #339bb9);
3268 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3268 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3269 border-color: #339bb9 #339bb9 #22697d;
3269 border-color: #339bb9 #339bb9 #22697d;
3270 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3270 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3271 }
3271 }
3272
3272
3273 .ui-btn.green{
3273 .ui-btn.green{
3274 background-color: #57a957;
3274 background-color: #57a957;
3275 background-repeat: repeat-x;
3275 background-repeat: repeat-x;
3276 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3276 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3277 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3277 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3278 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3278 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3279 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3279 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3280 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3280 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3281 background-image: -o-linear-gradient(top, #62c462, #57a957);
3281 background-image: -o-linear-gradient(top, #62c462, #57a957);
3282 background-image: linear-gradient(top, #62c462, #57a957);
3282 background-image: linear-gradient(top, #62c462, #57a957);
3283 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3283 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3284 border-color: #57a957 #57a957 #3d773d;
3284 border-color: #57a957 #57a957 #3d773d;
3285 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3285 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3286 }
3286 }
3287
3287
3288 ins,div.options a:hover {
3288 ins,div.options a:hover {
3289 text-decoration: none;
3289 text-decoration: none;
3290 }
3290 }
3291
3291
3292 img,
3292 img,
3293 #header #header-inner #quick li a:hover span.normal,
3293 #header #header-inner #quick li a:hover span.normal,
3294 #header #header-inner #quick li ul li.last,
3294 #header #header-inner #quick li ul li.last,
3295 #content div.box div.form div.fields div.field div.textarea table td table td a,
3295 #content div.box div.form div.fields div.field div.textarea table td table td a,
3296 #clone_url,
3296 #clone_url,
3297 #clone_url_id
3297 #clone_url_id
3298 {
3298 {
3299 border: none;
3299 border: none;
3300 }
3300 }
3301
3301
3302 img.icon,.right .merge img {
3302 img.icon,.right .merge img {
3303 vertical-align: bottom;
3303 vertical-align: bottom;
3304 }
3304 }
3305
3305
3306 #header ul#logged-user,#content div.box div.title ul.links,
3306 #header ul#logged-user,#content div.box div.title ul.links,
3307 #content div.box div.message div.dismiss,
3307 #content div.box div.message div.dismiss,
3308 #content div.box div.traffic div.legend ul
3308 #content div.box div.traffic div.legend ul
3309 {
3309 {
3310 float: right;
3310 float: right;
3311 margin: 0;
3311 margin: 0;
3312 padding: 0;
3312 padding: 0;
3313 }
3313 }
3314
3314
3315 #header #header-inner #home,#header #header-inner #logo,
3315 #header #header-inner #home,#header #header-inner #logo,
3316 #content div.box ul.left,#content div.box ol.left,
3316 #content div.box ul.left,#content div.box ol.left,
3317 #content div.box div.pagination-left,div#commit_history,
3317 #content div.box div.pagination-left,div#commit_history,
3318 div#legend_data,div#legend_container,div#legend_choices
3318 div#legend_data,div#legend_container,div#legend_choices
3319 {
3319 {
3320 float: left;
3320 float: left;
3321 }
3321 }
3322
3322
3323 #header #header-inner #quick li:hover ul ul,
3323 #header #header-inner #quick li:hover ul ul,
3324 #header #header-inner #quick li:hover ul ul ul,
3324 #header #header-inner #quick li:hover ul ul ul,
3325 #header #header-inner #quick li:hover ul ul ul ul,
3325 #header #header-inner #quick li:hover ul ul ul ul,
3326 #content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow
3326 #content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow
3327 {
3327 {
3328 display: none;
3328 display: none;
3329 }
3329 }
3330
3330
3331 #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
3331 #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
3332 {
3332 {
3333 display: block;
3333 display: block;
3334 }
3334 }
3335
3335
3336 #content div.graph {
3336 #content div.graph {
3337 padding: 0 10px 10px;
3337 padding: 0 10px 10px;
3338 }
3338 }
3339
3339
3340 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a
3340 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a
3341 {
3341 {
3342 color: #bfe3ff;
3342 color: #bfe3ff;
3343 }
3343 }
3344
3344
3345 #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
3345 #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
3346 {
3346 {
3347 margin: 10px 24px 10px 44px;
3347 margin: 10px 24px 10px 44px;
3348 }
3348 }
3349
3349
3350 #content div.box div.form,#content div.box div.table,#content div.box div.traffic
3350 #content div.box div.form,#content div.box div.table,#content div.box div.traffic
3351 {
3351 {
3352 clear: both;
3352 clear: both;
3353 overflow: hidden;
3353 overflow: hidden;
3354 margin: 0;
3354 margin: 0;
3355 padding: 0 20px 10px;
3355 padding: 0 20px 10px;
3356 }
3356 }
3357
3357
3358 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields
3358 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields
3359 {
3359 {
3360 clear: both;
3360 clear: both;
3361 overflow: hidden;
3361 overflow: hidden;
3362 margin: 0;
3362 margin: 0;
3363 padding: 0;
3363 padding: 0;
3364 }
3364 }
3365
3365
3366 #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
3366 #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
3367 {
3367 {
3368 height: 1%;
3368 height: 1%;
3369 display: block;
3369 display: block;
3370 color: #363636;
3370 color: #363636;
3371 margin: 0;
3371 margin: 0;
3372 padding: 2px 0 0;
3372 padding: 2px 0 0;
3373 }
3373 }
3374
3374
3375 #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
3375 #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
3376 {
3376 {
3377 background: #FBE3E4;
3377 background: #FBE3E4;
3378 border-top: 1px solid #e1b2b3;
3378 border-top: 1px solid #e1b2b3;
3379 border-left: 1px solid #e1b2b3;
3379 border-left: 1px solid #e1b2b3;
3380 border-right: 1px solid #FBC2C4;
3380 border-right: 1px solid #FBC2C4;
3381 border-bottom: 1px solid #FBC2C4;
3381 border-bottom: 1px solid #FBC2C4;
3382 }
3382 }
3383
3383
3384 #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
3384 #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
3385 {
3385 {
3386 background: #E6EFC2;
3386 background: #E6EFC2;
3387 border-top: 1px solid #cebb98;
3387 border-top: 1px solid #cebb98;
3388 border-left: 1px solid #cebb98;
3388 border-left: 1px solid #cebb98;
3389 border-right: 1px solid #c6d880;
3389 border-right: 1px solid #c6d880;
3390 border-bottom: 1px solid #c6d880;
3390 border-bottom: 1px solid #c6d880;
3391 }
3391 }
3392
3392
3393 #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
3393 #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
3394 {
3394 {
3395 margin: 0;
3395 margin: 0;
3396 }
3396 }
3397
3397
3398 #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
3398 #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
3399 {
3399 {
3400 margin: 0 0 0 0px !important;
3400 margin: 0 0 0 0px !important;
3401 padding: 0;
3401 padding: 0;
3402 }
3402 }
3403
3403
3404 #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
3404 #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
3405 {
3405 {
3406 margin: 0 0 0 200px;
3406 margin: 0 0 0 200px;
3407 padding: 0;
3407 padding: 0;
3408 }
3408 }
3409
3409
3410 #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
3410 #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
3411 {
3411 {
3412 color: #000;
3412 color: #000;
3413 text-decoration: none;
3413 text-decoration: none;
3414 }
3414 }
3415
3415
3416 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus
3416 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus
3417 {
3417 {
3418 border: 1px solid #666;
3418 border: 1px solid #666;
3419 }
3419 }
3420
3420
3421 #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
3421 #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
3422 {
3422 {
3423 clear: both;
3423 clear: both;
3424 overflow: hidden;
3424 overflow: hidden;
3425 margin: 0;
3425 margin: 0;
3426 padding: 8px 0 2px;
3426 padding: 8px 0 2px;
3427 }
3427 }
3428
3428
3429 #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
3429 #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
3430 {
3430 {
3431 float: left;
3431 float: left;
3432 margin: 0;
3432 margin: 0;
3433 }
3433 }
3434
3434
3435 #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
3435 #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
3436 {
3436 {
3437 height: 1%;
3437 height: 1%;
3438 display: block;
3438 display: block;
3439 float: left;
3439 float: left;
3440 margin: 2px 0 0 4px;
3440 margin: 2px 0 0 4px;
3441 }
3441 }
3442
3442
3443 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
3443 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
3444 {
3444 {
3445 color: #000;
3445 color: #000;
3446 font-size: 11px;
3446 font-size: 11px;
3447 font-weight: 700;
3447 font-weight: 700;
3448 margin: 0;
3448 margin: 0;
3449 }
3449 }
3450
3450
3451 input.ui-button {
3451 input.ui-button {
3452 background: #e5e3e3 url("../images/button.png") repeat-x;
3452 background: #e5e3e3 url("../images/button.png") repeat-x;
3453 border-top: 1px solid #DDD;
3453 border-top: 1px solid #DDD;
3454 border-left: 1px solid #c6c6c6;
3454 border-left: 1px solid #c6c6c6;
3455 border-right: 1px solid #DDD;
3455 border-right: 1px solid #DDD;
3456 border-bottom: 1px solid #c6c6c6;
3456 border-bottom: 1px solid #c6c6c6;
3457 color: #515151 !important;
3457 color: #515151 !important;
3458 outline: none;
3458 outline: none;
3459 margin: 0;
3459 margin: 0;
3460 padding: 6px 12px;
3460 padding: 6px 12px;
3461 -webkit-border-radius: 4px 4px 4px 4px;
3461 -webkit-border-radius: 4px 4px 4px 4px;
3462 -khtml-border-radius: 4px 4px 4px 4px;
3462 -khtml-border-radius: 4px 4px 4px 4px;
3463 -moz-border-radius: 4px 4px 4px 4px;
3463 -moz-border-radius: 4px 4px 4px 4px;
3464 border-radius: 4px 4px 4px 4px;
3464 border-radius: 4px 4px 4px 4px;
3465 box-shadow: 0 1px 0 #ececec;
3465 box-shadow: 0 1px 0 #ececec;
3466 cursor: pointer;
3466 cursor: pointer;
3467 }
3467 }
3468
3468
3469 input.ui-button:hover {
3469 input.ui-button:hover {
3470 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3470 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3471 border-top: 1px solid #ccc;
3471 border-top: 1px solid #ccc;
3472 border-left: 1px solid #bebebe;
3472 border-left: 1px solid #bebebe;
3473 border-right: 1px solid #b1b1b1;
3473 border-right: 1px solid #b1b1b1;
3474 border-bottom: 1px solid #afafaf;
3474 border-bottom: 1px solid #afafaf;
3475 }
3475 }
3476
3476
3477 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight
3477 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight
3478 {
3478 {
3479 display: inline;
3479 display: inline;
3480 }
3480 }
3481
3481
3482 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons
3482 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons
3483 {
3483 {
3484 margin: 10px 0 0 200px;
3484 margin: 10px 0 0 200px;
3485 padding: 0;
3485 padding: 0;
3486 }
3486 }
3487
3487
3488 #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
3488 #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
3489 {
3489 {
3490 margin: 10px 0 0;
3490 margin: 10px 0 0;
3491 }
3491 }
3492
3492
3493 #content div.box table td.user,#content div.box table td.address {
3493 #content div.box table td.user,#content div.box table td.address {
3494 width: 10%;
3494 width: 10%;
3495 text-align: center;
3495 text-align: center;
3496 }
3496 }
3497
3497
3498 #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
3498 #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
3499 {
3499 {
3500 text-align: right;
3500 text-align: right;
3501 margin: 6px 0 0;
3501 margin: 6px 0 0;
3502 padding: 0;
3502 padding: 0;
3503 }
3503 }
3504
3504
3505 #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
3505 #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
3506 {
3506 {
3507 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3507 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3508 border-top: 1px solid #ccc;
3508 border-top: 1px solid #ccc;
3509 border-left: 1px solid #bebebe;
3509 border-left: 1px solid #bebebe;
3510 border-right: 1px solid #b1b1b1;
3510 border-right: 1px solid #b1b1b1;
3511 border-bottom: 1px solid #afafaf;
3511 border-bottom: 1px solid #afafaf;
3512 color: #515151;
3512 color: #515151;
3513 margin: 0;
3513 margin: 0;
3514 padding: 6px 12px;
3514 padding: 6px 12px;
3515 }
3515 }
3516
3516
3517 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results
3517 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results
3518 {
3518 {
3519 text-align: left;
3519 text-align: left;
3520 float: left;
3520 float: left;
3521 margin: 0;
3521 margin: 0;
3522 padding: 0;
3522 padding: 0;
3523 }
3523 }
3524
3524
3525 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span
3525 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span
3526 {
3526 {
3527 height: 1%;
3527 height: 1%;
3528 display: block;
3528 display: block;
3529 float: left;
3529 float: left;
3530 background: #ebebeb url("../images/pager.png") repeat-x;
3530 background: #ebebeb url("../images/pager.png") repeat-x;
3531 border-top: 1px solid #dedede;
3531 border-top: 1px solid #dedede;
3532 border-left: 1px solid #cfcfcf;
3532 border-left: 1px solid #cfcfcf;
3533 border-right: 1px solid #c4c4c4;
3533 border-right: 1px solid #c4c4c4;
3534 border-bottom: 1px solid #c4c4c4;
3534 border-bottom: 1px solid #c4c4c4;
3535 color: #4A4A4A;
3535 color: #4A4A4A;
3536 font-weight: 700;
3536 font-weight: 700;
3537 margin: 0;
3537 margin: 0;
3538 padding: 6px 8px;
3538 padding: 6px 8px;
3539 }
3539 }
3540
3540
3541 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled
3541 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled
3542 {
3542 {
3543 color: #B4B4B4;
3543 color: #B4B4B4;
3544 padding: 6px;
3544 padding: 6px;
3545 }
3545 }
3546
3546
3547 #login,#register {
3547 #login,#register {
3548 width: 520px;
3548 width: 520px;
3549 margin: 10% auto 0;
3549 margin: 10% auto 0;
3550 padding: 0;
3550 padding: 0;
3551 }
3551 }
3552
3552
3553 #login div.color,#register div.color {
3553 #login div.color,#register div.color {
3554 clear: both;
3554 clear: both;
3555 overflow: hidden;
3555 overflow: hidden;
3556 background: #FFF;
3556 background: #FFF;
3557 margin: 10px auto 0;
3557 margin: 10px auto 0;
3558 padding: 3px 3px 3px 0;
3558 padding: 3px 3px 3px 0;
3559 }
3559 }
3560
3560
3561 #login div.color a,#register div.color a {
3561 #login div.color a,#register div.color a {
3562 width: 20px;
3562 width: 20px;
3563 height: 20px;
3563 height: 20px;
3564 display: block;
3564 display: block;
3565 float: left;
3565 float: left;
3566 margin: 0 0 0 3px;
3566 margin: 0 0 0 3px;
3567 padding: 0;
3567 padding: 0;
3568 }
3568 }
3569
3569
3570 #login div.title h5,#register div.title h5 {
3570 #login div.title h5,#register div.title h5 {
3571 color: #fff;
3571 color: #fff;
3572 margin: 10px;
3572 margin: 10px;
3573 padding: 0;
3573 padding: 0;
3574 }
3574 }
3575
3575
3576 #login div.form div.fields div.field,#register div.form div.fields div.field
3576 #login div.form div.fields div.field,#register div.form div.fields div.field
3577 {
3577 {
3578 clear: both;
3578 clear: both;
3579 overflow: hidden;
3579 overflow: hidden;
3580 margin: 0;
3580 margin: 0;
3581 padding: 0 0 10px;
3581 padding: 0 0 10px;
3582 }
3582 }
3583
3583
3584 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message
3584 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message
3585 {
3585 {
3586 height: 1%;
3586 height: 1%;
3587 display: block;
3587 display: block;
3588 color: red;
3588 color: red;
3589 margin: 8px 0 0;
3589 margin: 8px 0 0;
3590 padding: 0;
3590 padding: 0;
3591 max-width: 320px;
3591 max-width: 320px;
3592 }
3592 }
3593
3593
3594 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label
3594 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label
3595 {
3595 {
3596 color: #000;
3596 color: #000;
3597 font-weight: 700;
3597 font-weight: 700;
3598 }
3598 }
3599
3599
3600 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input
3600 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input
3601 {
3601 {
3602 float: left;
3602 float: left;
3603 margin: 0;
3603 margin: 0;
3604 padding: 0;
3604 padding: 0;
3605 }
3605 }
3606
3606
3607 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox
3607 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox
3608 {
3608 {
3609 margin: 0 0 0 184px;
3609 margin: 0 0 0 184px;
3610 padding: 0;
3610 padding: 0;
3611 }
3611 }
3612
3612
3613 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label
3613 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label
3614 {
3614 {
3615 color: #565656;
3615 color: #565656;
3616 font-weight: 700;
3616 font-weight: 700;
3617 }
3617 }
3618
3618
3619 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input
3619 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input
3620 {
3620 {
3621 color: #000;
3621 color: #000;
3622 font-size: 1em;
3622 font-size: 1em;
3623 font-weight: 700;
3623 font-weight: 700;
3624 margin: 0;
3624 margin: 0;
3625 }
3625 }
3626
3626
3627 #changeset_content .container .wrapper,#graph_content .container .wrapper
3627 #changeset_content .container .wrapper,#graph_content .container .wrapper
3628 {
3628 {
3629 width: 600px;
3629 width: 600px;
3630 }
3630 }
3631
3631
3632 #changeset_content .container .left {
3632 #changeset_content .container .left {
3633 float: left;
3633 float: left;
3634 width: 75%;
3634 width: 75%;
3635 padding-left: 5px;
3635 padding-left: 5px;
3636 }
3636 }
3637
3637
3638 #changeset_content .container .left .date,.ac .match {
3638 #changeset_content .container .left .date,.ac .match {
3639 font-weight: 700;
3639 font-weight: 700;
3640 padding-top: 5px;
3640 padding-top: 5px;
3641 padding-bottom: 5px;
3641 padding-bottom: 5px;
3642 }
3642 }
3643
3643
3644 div#legend_container table td,div#legend_choices table td {
3644 div#legend_container table td,div#legend_choices table td {
3645 border: none !important;
3645 border: none !important;
3646 height: 20px !important;
3646 height: 20px !important;
3647 padding: 0 !important;
3647 padding: 0 !important;
3648 }
3648 }
3649
3649
3650 .q_filter_box {
3650 .q_filter_box {
3651 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3651 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3652 -webkit-border-radius: 4px;
3652 -webkit-border-radius: 4px;
3653 -moz-border-radius: 4px;
3653 -moz-border-radius: 4px;
3654 border-radius: 4px;
3654 border-radius: 4px;
3655 border: 0 none;
3655 border: 0 none;
3656 color: #AAAAAA;
3656 color: #AAAAAA;
3657 margin-bottom: -4px;
3657 margin-bottom: -4px;
3658 margin-top: -4px;
3658 margin-top: -4px;
3659 padding-left: 3px;
3659 padding-left: 3px;
3660 }
3660 }
3661
3661
3662 #node_filter {
3662 #node_filter {
3663 border: 0px solid #545454;
3663 border: 0px solid #545454;
3664 color: #AAAAAA;
3664 color: #AAAAAA;
3665 padding-left: 3px;
3665 padding-left: 3px;
3666 }
3666 }
3667
3667
3668
3668
3669 .group_members_wrap{
3669 .group_members_wrap{
3670
3670
3671 }
3671 }
3672
3672
3673 .group_members .group_member{
3673 .group_members .group_member{
3674 height: 30px;
3674 height: 30px;
3675 padding:0px 0px 0px 10px;
3675 padding:0px 0px 0px 10px;
3676 }
3676 }
3677
3677
3678 /*README STYLE*/
3678 /*README STYLE*/
3679
3679
3680 div.readme {
3680 div.readme {
3681 padding:0px;
3681 padding:0px;
3682 }
3682 }
3683
3683
3684 div.readme h2 {
3684 div.readme h2 {
3685 font-weight: normal;
3685 font-weight: normal;
3686 }
3686 }
3687
3687
3688 div.readme .readme_box {
3688 div.readme .readme_box {
3689 background-color: #fafafa;
3689 background-color: #fafafa;
3690 }
3690 }
3691
3691
3692 div.readme .readme_box {
3692 div.readme .readme_box {
3693 clear:both;
3693 clear:both;
3694 overflow:hidden;
3694 overflow:hidden;
3695 margin:0;
3695 margin:0;
3696 padding:0 20px 10px;
3696 padding:0 20px 10px;
3697 }
3697 }
3698
3698
3699 div.readme .readme_box h1, div.readme .readme_box h2, div.readme .readme_box h3, div.readme .readme_box h4, div.readme .readme_box h5, div.readme .readme_box h6 {
3699 div.readme .readme_box h1, div.readme .readme_box h2, div.readme .readme_box h3, div.readme .readme_box h4, div.readme .readme_box h5, div.readme .readme_box h6 {
3700 border-bottom: 0 !important;
3700 border-bottom: 0 !important;
3701 margin: 0 !important;
3701 margin: 0 !important;
3702 padding: 0 !important;
3702 padding: 0 !important;
3703 line-height: 1.5em !important;
3703 line-height: 1.5em !important;
3704 }
3704 }
3705
3705
3706
3706
3707 div.readme .readme_box h1:first-child {
3707 div.readme .readme_box h1:first-child {
3708 padding-top: .25em !important;
3708 padding-top: .25em !important;
3709 }
3709 }
3710
3710
3711 div.readme .readme_box h2, div.readme .readme_box h3 {
3711 div.readme .readme_box h2, div.readme .readme_box h3 {
3712 margin: 1em 0 !important;
3712 margin: 1em 0 !important;
3713 }
3713 }
3714
3714
3715 div.readme .readme_box h2 {
3715 div.readme .readme_box h2 {
3716 margin-top: 1.5em !important;
3716 margin-top: 1.5em !important;
3717 border-top: 4px solid #e0e0e0 !important;
3717 border-top: 4px solid #e0e0e0 !important;
3718 padding-top: .5em !important;
3718 padding-top: .5em !important;
3719 }
3719 }
3720
3720
3721 div.readme .readme_box p {
3721 div.readme .readme_box p {
3722 color: black !important;
3722 color: black !important;
3723 margin: 1em 0 !important;
3723 margin: 1em 0 !important;
3724 line-height: 1.5em !important;
3724 line-height: 1.5em !important;
3725 }
3725 }
3726
3726
3727 div.readme .readme_box ul {
3727 div.readme .readme_box ul {
3728 list-style: disc !important;
3728 list-style: disc !important;
3729 margin: 1em 0 1em 2em !important;
3729 margin: 1em 0 1em 2em !important;
3730 }
3730 }
3731
3731
3732 div.readme .readme_box ol {
3732 div.readme .readme_box ol {
3733 list-style: decimal;
3733 list-style: decimal;
3734 margin: 1em 0 1em 2em !important;
3734 margin: 1em 0 1em 2em !important;
3735 }
3735 }
3736
3736
3737 div.readme .readme_box pre, code {
3737 div.readme .readme_box pre, code {
3738 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3738 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3739 }
3739 }
3740
3740
3741 div.readme .readme_box code {
3741 div.readme .readme_box code {
3742 font-size: 12px !important;
3742 font-size: 12px !important;
3743 background-color: ghostWhite !important;
3743 background-color: ghostWhite !important;
3744 color: #444 !important;
3744 color: #444 !important;
3745 padding: 0 .2em !important;
3745 padding: 0 .2em !important;
3746 border: 1px solid #dedede !important;
3746 border: 1px solid #dedede !important;
3747 }
3747 }
3748
3748
3749 div.readme .readme_box pre code {
3749 div.readme .readme_box pre code {
3750 padding: 0 !important;
3750 padding: 0 !important;
3751 font-size: 12px !important;
3751 font-size: 12px !important;
3752 background-color: #eee !important;
3752 background-color: #eee !important;
3753 border: none !important;
3753 border: none !important;
3754 }
3754 }
3755
3755
3756 div.readme .readme_box pre {
3756 div.readme .readme_box pre {
3757 margin: 1em 0;
3757 margin: 1em 0;
3758 font-size: 12px;
3758 font-size: 12px;
3759 background-color: #eee;
3759 background-color: #eee;
3760 border: 1px solid #ddd;
3760 border: 1px solid #ddd;
3761 padding: 5px;
3761 padding: 5px;
3762 color: #444;
3762 color: #444;
3763 overflow: auto;
3763 overflow: auto;
3764 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3764 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3765 -webkit-border-radius: 3px;
3765 -webkit-border-radius: 3px;
3766 -moz-border-radius: 3px;
3766 -moz-border-radius: 3px;
3767 border-radius: 3px;
3767 border-radius: 3px;
3768 }
3768 }
3769
3769
3770
3770
3771 /** RST STYLE **/
3771 /** RST STYLE **/
3772
3772
3773
3773
3774 div.rst-block {
3774 div.rst-block {
3775 padding:0px;
3775 padding:0px;
3776 }
3776 }
3777
3777
3778 div.rst-block h2 {
3778 div.rst-block h2 {
3779 font-weight: normal;
3779 font-weight: normal;
3780 }
3780 }
3781
3781
3782 div.rst-block {
3782 div.rst-block {
3783 background-color: #fafafa;
3783 background-color: #fafafa;
3784 }
3784 }
3785
3785
3786 div.rst-block {
3786 div.rst-block {
3787 clear:both;
3787 clear:both;
3788 overflow:hidden;
3788 overflow:hidden;
3789 margin:0;
3789 margin:0;
3790 padding:0 20px 10px;
3790 padding:0 20px 10px;
3791 }
3791 }
3792
3792
3793 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
3793 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
3794 border-bottom: 0 !important;
3794 border-bottom: 0 !important;
3795 margin: 0 !important;
3795 margin: 0 !important;
3796 padding: 0 !important;
3796 padding: 0 !important;
3797 line-height: 1.5em !important;
3797 line-height: 1.5em !important;
3798 }
3798 }
3799
3799
3800
3800
3801 div.rst-block h1:first-child {
3801 div.rst-block h1:first-child {
3802 padding-top: .25em !important;
3802 padding-top: .25em !important;
3803 }
3803 }
3804
3804
3805 div.rst-block h2, div.rst-block h3 {
3805 div.rst-block h2, div.rst-block h3 {
3806 margin: 1em 0 !important;
3806 margin: 1em 0 !important;
3807 }
3807 }
3808
3808
3809 div.rst-block h2 {
3809 div.rst-block h2 {
3810 margin-top: 1.5em !important;
3810 margin-top: 1.5em !important;
3811 border-top: 4px solid #e0e0e0 !important;
3811 border-top: 4px solid #e0e0e0 !important;
3812 padding-top: .5em !important;
3812 padding-top: .5em !important;
3813 }
3813 }
3814
3814
3815 div.rst-block p {
3815 div.rst-block p {
3816 color: black !important;
3816 color: black !important;
3817 margin: 1em 0 !important;
3817 margin: 1em 0 !important;
3818 line-height: 1.5em !important;
3818 line-height: 1.5em !important;
3819 }
3819 }
3820
3820
3821 div.rst-block ul {
3821 div.rst-block ul {
3822 list-style: disc !important;
3822 list-style: disc !important;
3823 margin: 1em 0 1em 2em !important;
3823 margin: 1em 0 1em 2em !important;
3824 }
3824 }
3825
3825
3826 div.rst-block ol {
3826 div.rst-block ol {
3827 list-style: decimal;
3827 list-style: decimal;
3828 margin: 1em 0 1em 2em !important;
3828 margin: 1em 0 1em 2em !important;
3829 }
3829 }
3830
3830
3831 div.rst-block pre, code {
3831 div.rst-block pre, code {
3832 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3832 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3833 }
3833 }
3834
3834
3835 div.rst-block code {
3835 div.rst-block code {
3836 font-size: 12px !important;
3836 font-size: 12px !important;
3837 background-color: ghostWhite !important;
3837 background-color: ghostWhite !important;
3838 color: #444 !important;
3838 color: #444 !important;
3839 padding: 0 .2em !important;
3839 padding: 0 .2em !important;
3840 border: 1px solid #dedede !important;
3840 border: 1px solid #dedede !important;
3841 }
3841 }
3842
3842
3843 div.rst-block pre code {
3843 div.rst-block pre code {
3844 padding: 0 !important;
3844 padding: 0 !important;
3845 font-size: 12px !important;
3845 font-size: 12px !important;
3846 background-color: #eee !important;
3846 background-color: #eee !important;
3847 border: none !important;
3847 border: none !important;
3848 }
3848 }
3849
3849
3850 div.rst-block pre {
3850 div.rst-block pre {
3851 margin: 1em 0;
3851 margin: 1em 0;
3852 font-size: 12px;
3852 font-size: 12px;
3853 background-color: #eee;
3853 background-color: #eee;
3854 border: 1px solid #ddd;
3854 border: 1px solid #ddd;
3855 padding: 5px;
3855 padding: 5px;
3856 color: #444;
3856 color: #444;
3857 overflow: auto;
3857 overflow: auto;
3858 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3858 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3859 -webkit-border-radius: 3px;
3859 -webkit-border-radius: 3px;
3860 -moz-border-radius: 3px;
3860 -moz-border-radius: 3px;
3861 border-radius: 3px;
3861 border-radius: 3px;
3862 }
3862 }
3863
3863
3864
3864
3865 /** comment main **/
3865 /** comment main **/
3866 .comments {
3866 .comments {
3867 padding:10px 20px;
3867 padding:10px 20px;
3868 }
3868 }
3869
3869
3870 .comments .comment {
3870 .comments .comment {
3871 border: 1px solid #ddd;
3871 border: 1px solid #ddd;
3872 margin-top: 10px;
3872 margin-top: 10px;
3873 -webkit-border-radius: 4px;
3873 -webkit-border-radius: 4px;
3874 -moz-border-radius: 4px;
3874 -moz-border-radius: 4px;
3875 border-radius: 4px;
3875 border-radius: 4px;
3876 }
3876 }
3877
3877
3878 .comments .comment .meta {
3878 .comments .comment .meta {
3879 background: #f8f8f8;
3879 background: #f8f8f8;
3880 padding: 4px;
3880 padding: 4px;
3881 border-bottom: 1px solid #ddd;
3881 border-bottom: 1px solid #ddd;
3882 }
3882 }
3883
3883
3884 .comments .comment .meta img {
3884 .comments .comment .meta img {
3885 vertical-align: middle;
3885 vertical-align: middle;
3886 }
3886 }
3887
3887
3888 .comments .comment .meta .user {
3888 .comments .comment .meta .user {
3889 font-weight: bold;
3889 font-weight: bold;
3890 }
3890 }
3891
3891
3892 .comments .comment .meta .date {
3892 .comments .comment .meta .date {
3893 }
3893 }
3894
3894
3895 .comments .comment .text {
3895 .comments .comment .text {
3896 background-color: #FAFAFA;
3896 background-color: #FAFAFA;
3897 }
3897 }
3898 .comment .text div.rst-block p {
3898 .comment .text div.rst-block p {
3899 margin: 0.5em 0px !important;
3899 margin: 0.5em 0px !important;
3900 }
3900 }
3901
3901
3902 .comments .comments-number{
3902 .comments .comments-number{
3903 padding:0px 0px 10px 0px;
3903 padding:0px 0px 10px 0px;
3904 font-weight: bold;
3904 font-weight: bold;
3905 color: #666;
3905 color: #666;
3906 font-size: 16px;
3906 font-size: 16px;
3907 }
3907 }
3908
3908
3909 /** comment form **/
3909 /** comment form **/
3910
3910
3911 .comment-form .clearfix{
3911 .comment-form .clearfix{
3912 background: #EEE;
3912 background: #EEE;
3913 -webkit-border-radius: 4px;
3913 -webkit-border-radius: 4px;
3914 -moz-border-radius: 4px;
3914 -moz-border-radius: 4px;
3915 border-radius: 4px;
3915 border-radius: 4px;
3916 padding: 10px;
3916 padding: 10px;
3917 }
3917 }
3918
3918
3919 div.comment-form {
3919 div.comment-form {
3920 margin-top: 20px;
3920 margin-top: 20px;
3921 }
3921 }
3922
3922
3923 .comment-form strong {
3923 .comment-form strong {
3924 display: block;
3924 display: block;
3925 margin-bottom: 15px;
3925 margin-bottom: 15px;
3926 }
3926 }
3927
3927
3928 .comment-form textarea {
3928 .comment-form textarea {
3929 width: 100%;
3929 width: 100%;
3930 height: 100px;
3930 height: 100px;
3931 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3931 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3932 }
3932 }
3933
3933
3934 form.comment-form {
3934 form.comment-form {
3935 margin-top: 10px;
3935 margin-top: 10px;
3936 margin-left: 10px;
3936 margin-left: 10px;
3937 }
3937 }
3938
3938
3939 .comment-form-submit {
3939 .comment-form-submit {
3940 margin-top: 5px;
3940 margin-top: 5px;
3941 margin-left: 525px;
3941 margin-left: 525px;
3942 }
3942 }
3943
3943
3944 .file-comments {
3944 .file-comments {
3945 display: none;
3945 display: none;
3946 }
3946 }
3947
3947
3948 .comment-form .comment {
3948 .comment-form .comment {
3949 margin-left: 10px;
3949 margin-left: 10px;
3950 }
3950 }
3951
3951
3952 .comment-form .comment-help{
3952 .comment-form .comment-help{
3953 padding: 0px 0px 5px 0px;
3953 padding: 0px 0px 5px 0px;
3954 color: #666;
3954 color: #666;
3955 }
3955 }
3956
3956
3957 .comment-form .comment-button{
3957 .comment-form .comment-button{
3958 padding-top:5px;
3958 padding-top:5px;
3959 }
3959 }
3960
3960
3961 .add-another-button {
3961 .add-another-button {
3962 margin-left: 10px;
3962 margin-left: 10px;
3963 margin-top: 10px;
3963 margin-top: 10px;
3964 margin-bottom: 10px;
3964 margin-bottom: 10px;
3965 }
3965 }
3966
3966
3967 .comment .buttons {
3967 .comment .buttons {
3968 float: right;
3968 float: right;
3969 padding:2px 2px 0px 0px;
3969 }
3970 }
3970
3971
3971
3972
3972 .show-inline-comments{
3973 .show-inline-comments{
3973 position: relative;
3974 position: relative;
3974 top:1px
3975 top:1px
3975 }
3976 }
3976
3977
3977 /** comment inline form **/
3978 /** comment inline form **/
3979 .comment-inline-form .overlay{
3980 display: none;
3981 }
3982 .comment-inline-form .overlay.submitting{
3983 display:block;
3984 background: none repeat scroll 0 0 white;
3985 font-size: 16px;
3986 opacity: 0.5;
3987 position: absolute;
3988 text-align: center;
3989 vertical-align: top;
3990
3991 }
3992 .comment-inline-form .overlay.submitting .overlay-text{
3993 width:100%;
3994 margin-top:5%;
3995 }
3978
3996
3979 .comment-inline-form .clearfix{
3997 .comment-inline-form .clearfix{
3980 background: #EEE;
3998 background: #EEE;
3981 -webkit-border-radius: 4px;
3999 -webkit-border-radius: 4px;
3982 -moz-border-radius: 4px;
4000 -moz-border-radius: 4px;
3983 border-radius: 4px;
4001 border-radius: 4px;
3984 padding: 5px;
4002 padding: 5px;
3985 }
4003 }
3986
4004
3987 div.comment-inline-form {
4005 div.comment-inline-form {
3988 margin-top: 5px;
4006 margin-top: 5px;
3989 padding:2px 6px 8px 6px;
4007 padding:2px 6px 8px 6px;
4008
3990 }
4009 }
3991
4010
3992 .comment-inline-form strong {
4011 .comment-inline-form strong {
3993 display: block;
4012 display: block;
3994 margin-bottom: 15px;
4013 margin-bottom: 15px;
3995 }
4014 }
3996
4015
3997 .comment-inline-form textarea {
4016 .comment-inline-form textarea {
3998 width: 100%;
4017 width: 100%;
3999 height: 100px;
4018 height: 100px;
4000 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4019 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4001 }
4020 }
4002
4021
4003 form.comment-inline-form {
4022 form.comment-inline-form {
4004 margin-top: 10px;
4023 margin-top: 10px;
4005 margin-left: 10px;
4024 margin-left: 10px;
4006 }
4025 }
4007
4026
4008 .comment-inline-form-submit {
4027 .comment-inline-form-submit {
4009 margin-top: 5px;
4028 margin-top: 5px;
4010 margin-left: 525px;
4029 margin-left: 525px;
4011 }
4030 }
4012
4031
4013 .file-comments {
4032 .file-comments {
4014 display: none;
4033 display: none;
4015 }
4034 }
4016
4035
4017 .comment-inline-form .comment {
4036 .comment-inline-form .comment {
4018 margin-left: 10px;
4037 margin-left: 10px;
4019 }
4038 }
4020
4039
4021 .comment-inline-form .comment-help{
4040 .comment-inline-form .comment-help{
4022 padding: 0px 0px 2px 0px;
4041 padding: 0px 0px 2px 0px;
4023 color: #666666;
4042 color: #666666;
4024 font-size: 10px;
4043 font-size: 10px;
4025 }
4044 }
4026
4045
4027 .comment-inline-form .comment-button{
4046 .comment-inline-form .comment-button{
4028 padding-top:5px;
4047 padding-top:5px;
4029 }
4048 }
4030
4049
4031 /** comment inline **/
4050 /** comment inline **/
4032 .inline-comments {
4051 .inline-comments {
4033 padding:10px 20px;
4052 padding:10px 20px;
4034 }
4053 }
4035
4054
4036 .inline-comments div.rst-block {
4055 .inline-comments div.rst-block {
4037 clear:both;
4056 clear:both;
4038 overflow:hidden;
4057 overflow:hidden;
4039 margin:0;
4058 margin:0;
4040 padding:0 20px 0px;
4059 padding:0 20px 0px;
4041 }
4060 }
4042 .inline-comments .comment {
4061 .inline-comments .comment {
4043 border: 1px solid #ddd;
4062 border: 1px solid #ddd;
4044 -webkit-border-radius: 4px;
4063 -webkit-border-radius: 4px;
4045 -moz-border-radius: 4px;
4064 -moz-border-radius: 4px;
4046 border-radius: 4px;
4065 border-radius: 4px;
4047 margin: 3px 3px 5px 5px;
4066 margin: 3px 3px 5px 5px;
4048 background-color: #FAFAFA;
4067 background-color: #FAFAFA;
4049 }
4068 }
4069 .inline-comments .add-comment {
4070 padding: 2px 4px 8px 5px;
4071 }
4072
4050 .inline-comments .comment-wrapp{
4073 .inline-comments .comment-wrapp{
4051 padding:1px;
4074 padding:1px;
4052 }
4075 }
4053 .inline-comments .comment .meta {
4076 .inline-comments .comment .meta {
4054 background: #f8f8f8;
4077 background: #f8f8f8;
4055 padding: 4px;
4078 padding: 4px;
4056 border-bottom: 1px solid #ddd;
4079 border-bottom: 1px solid #ddd;
4057 }
4080 }
4058
4081
4059 .inline-comments .comment .meta img {
4082 .inline-comments .comment .meta img {
4060 vertical-align: middle;
4083 vertical-align: middle;
4061 }
4084 }
4062
4085
4063 .inline-comments .comment .meta .user {
4086 .inline-comments .comment .meta .user {
4064 font-weight: bold;
4087 font-weight: bold;
4065 }
4088 }
4066
4089
4067 .inline-comments .comment .meta .date {
4090 .inline-comments .comment .meta .date {
4068 }
4091 }
4069
4092
4070 .inline-comments .comment .text {
4093 .inline-comments .comment .text {
4071 background-color: #FAFAFA;
4094 background-color: #FAFAFA;
4072 }
4095 }
4073
4096
4074 .inline-comments .comments-number{
4097 .inline-comments .comments-number{
4075 padding:0px 0px 10px 0px;
4098 padding:0px 0px 10px 0px;
4076 font-weight: bold;
4099 font-weight: bold;
4077 color: #666;
4100 color: #666;
4078 font-size: 16px;
4101 font-size: 16px;
4079 }
4102 }
4080 .inline-comments-button .add-comment{
4103 .inline-comments-button .add-comment{
4081 margin:10px 5px !important;
4104 margin:2px 0px 8px 5px !important
4082 }
4105 }
4083 .notifications{
4106 .notifications{
4084 border-radius: 4px 4px 4px 4px;
4107 border-radius: 4px 4px 4px 4px;
4085 -webkit-border-radius: 4px;
4108 -webkit-border-radius: 4px;
4086 -moz-border-radius: 4px;
4109 -moz-border-radius: 4px;
4087 float: right;
4110 float: right;
4088 margin: 20px 0px 0px 0px;
4111 margin: 20px 0px 0px 0px;
4089 position: absolute;
4112 position: absolute;
4090 text-align: center;
4113 text-align: center;
4091 width: 26px;
4114 width: 26px;
4092 z-index: 1000;
4115 z-index: 1000;
4093 }
4116 }
4094 .notifications a{
4117 .notifications a{
4095 color:#888 !important;
4118 color:#888 !important;
4096 display: block;
4119 display: block;
4097 font-size: 10px;
4120 font-size: 10px;
4098 background-color: #DEDEDE !important;
4121 background-color: #DEDEDE !important;
4099 border-radius: 2px !important;
4122 border-radius: 2px !important;
4100 -webkit-border-radius: 2px !important;
4123 -webkit-border-radius: 2px !important;
4101 -moz-border-radius: 2px !important;
4124 -moz-border-radius: 2px !important;
4102 }
4125 }
4103 .notifications a:hover{
4126 .notifications a:hover{
4104 text-decoration: none !important;
4127 text-decoration: none !important;
4105 background-color: #EEEFFF !important;
4128 background-color: #EEEFFF !important;
4106 }
4129 }
4107 .notification-header{
4130 .notification-header{
4108 padding-top:6px;
4131 padding-top:6px;
4109 }
4132 }
4110 .notification-header .desc{
4133 .notification-header .desc{
4111 font-size: 16px;
4134 font-size: 16px;
4112 height: 24px;
4135 height: 24px;
4113 float: left
4136 float: left
4114 }
4137 }
4115 .notification-list .container.unread{
4138 .notification-list .container.unread{
4116
4139
4117 }
4140 }
4118 .notification-header .gravatar{
4141 .notification-header .gravatar{
4119
4142
4120 }
4143 }
4121 .notification-header .desc.unread{
4144 .notification-header .desc.unread{
4122 font-weight: bold;
4145 font-weight: bold;
4123 font-size: 17px;
4146 font-size: 17px;
4124 }
4147 }
4125
4148
4126 .notification-header .delete-notifications{
4149 .notification-header .delete-notifications{
4127 float: right;
4150 float: right;
4128 padding-top: 8px;
4151 padding-top: 8px;
4129 cursor: pointer;
4152 cursor: pointer;
4130 }
4153 }
4131 .notification-subject{
4154 .notification-subject{
4132 clear:both;
4155 clear:both;
4133 border-bottom: 1px solid #eee;
4156 border-bottom: 1px solid #eee;
4134 padding:5px 0px 5px 38px;
4157 padding:5px 0px 5px 38px;
4135 }
4158 }
4136
4159
4137 /****
4160 /****
4138 PERMS
4161 PERMS
4139 *****/
4162 *****/
4140 #perms .perms_section_head {
4163 #perms .perms_section_head {
4141 padding:10px 10px 10px 0px;
4164 padding:10px 10px 10px 0px;
4142 font-size:16px;
4165 font-size:16px;
4143 font-weight: bold;
4166 font-weight: bold;
4144 }
4167 }
4145
4168
4146 #perms .perm_tag{
4169 #perms .perm_tag{
4147 padding: 1px 3px 1px 3px;
4170 padding: 1px 3px 1px 3px;
4148 font-size: 10px;
4171 font-size: 10px;
4149 font-weight: bold;
4172 font-weight: bold;
4150 text-transform: uppercase;
4173 text-transform: uppercase;
4151 white-space: nowrap;
4174 white-space: nowrap;
4152 -webkit-border-radius: 3px;
4175 -webkit-border-radius: 3px;
4153 -moz-border-radius: 3px;
4176 -moz-border-radius: 3px;
4154 border-radius: 3px;
4177 border-radius: 3px;
4155 }
4178 }
4156
4179
4157 #perms .perm_tag.admin{
4180 #perms .perm_tag.admin{
4158 background-color: #B94A48;
4181 background-color: #B94A48;
4159 color: #ffffff;
4182 color: #ffffff;
4160 }
4183 }
4161
4184
4162 #perms .perm_tag.write{
4185 #perms .perm_tag.write{
4163 background-color: #B94A48;
4186 background-color: #B94A48;
4164 color: #ffffff;
4187 color: #ffffff;
4165 }
4188 }
4166
4189
4167 #perms .perm_tag.read{
4190 #perms .perm_tag.read{
4168 background-color: #468847;
4191 background-color: #468847;
4169 color: #ffffff;
4192 color: #ffffff;
4170 }
4193 }
4171
4194
4172 #perms .perm_tag.none{
4195 #perms .perm_tag.none{
4173 background-color: #bfbfbf;
4196 background-color: #bfbfbf;
4174 color: #ffffff;
4197 color: #ffffff;
4175 }
4198 }
4176
4199
4177 .perm-gravatar{
4200 .perm-gravatar{
4178 vertical-align:middle;
4201 vertical-align:middle;
4179 padding:2px;
4202 padding:2px;
4180 }
4203 }
4181 .perm-gravatar-ac{
4204 .perm-gravatar-ac{
4182 vertical-align:middle;
4205 vertical-align:middle;
4183 padding:2px;
4206 padding:2px;
4184 width: 14px;
4207 width: 14px;
4185 height: 14px;
4208 height: 14px;
4186 }
4209 }
4187
4210
4188 /*****************************************************************************
4211 /*****************************************************************************
4189 DIFFS CSS
4212 DIFFS CSS
4190 ******************************************************************************/
4213 ******************************************************************************/
4191
4214
4192 div.diffblock {
4215 div.diffblock {
4193 overflow: auto;
4216 overflow: auto;
4194 padding: 0px;
4217 padding: 0px;
4195 border: 1px solid #ccc;
4218 border: 1px solid #ccc;
4196 background: #f8f8f8;
4219 background: #f8f8f8;
4197 font-size: 100%;
4220 font-size: 100%;
4198 line-height: 100%;
4221 line-height: 100%;
4199 /* new */
4222 /* new */
4200 line-height: 125%;
4223 line-height: 125%;
4201 -webkit-border-radius: 6px 6px 0px 0px;
4224 -webkit-border-radius: 6px 6px 0px 0px;
4202 -moz-border-radius: 6px 6px 0px 0px;
4225 -moz-border-radius: 6px 6px 0px 0px;
4203 border-radius: 6px 6px 0px 0px;
4226 border-radius: 6px 6px 0px 0px;
4204 }
4227 }
4205 div.diffblock.margined{
4228 div.diffblock.margined{
4206 margin: 0px 20px 0px 20px;
4229 margin: 0px 20px 0px 20px;
4207 }
4230 }
4208 div.diffblock .code-header{
4231 div.diffblock .code-header{
4209 border-bottom: 1px solid #CCCCCC;
4232 border-bottom: 1px solid #CCCCCC;
4210 background: #EEEEEE;
4233 background: #EEEEEE;
4211 padding:10px 0 10px 0;
4234 padding:10px 0 10px 0;
4212 height: 14px;
4235 height: 14px;
4213 }
4236 }
4214 div.diffblock .code-header.cv{
4237 div.diffblock .code-header.cv{
4215 height: 34px;
4238 height: 34px;
4216 }
4239 }
4217 div.diffblock .code-header-title{
4240 div.diffblock .code-header-title{
4218 padding: 0px 0px 10px 5px !important;
4241 padding: 0px 0px 10px 5px !important;
4219 margin: 0 !important;
4242 margin: 0 !important;
4220 }
4243 }
4221 div.diffblock .code-header .hash{
4244 div.diffblock .code-header .hash{
4222 float: left;
4245 float: left;
4223 padding: 2px 0 0 2px;
4246 padding: 2px 0 0 2px;
4224 }
4247 }
4225 div.diffblock .code-header .date{
4248 div.diffblock .code-header .date{
4226 float:left;
4249 float:left;
4227 text-transform: uppercase;
4250 text-transform: uppercase;
4228 padding: 2px 0px 0px 2px;
4251 padding: 2px 0px 0px 2px;
4229 }
4252 }
4230 div.diffblock .code-header div{
4253 div.diffblock .code-header div{
4231 margin-left:4px;
4254 margin-left:4px;
4232 font-weight: bold;
4255 font-weight: bold;
4233 font-size: 14px;
4256 font-size: 14px;
4234 }
4257 }
4235 div.diffblock .code-body{
4258 div.diffblock .code-body{
4236 background: #FFFFFF;
4259 background: #FFFFFF;
4237 }
4260 }
4238 div.diffblock pre.raw{
4261 div.diffblock pre.raw{
4239 background: #FFFFFF;
4262 background: #FFFFFF;
4240 color:#000000;
4263 color:#000000;
4241 }
4264 }
4242 table.code-difftable{
4265 table.code-difftable{
4243 border-collapse: collapse;
4266 border-collapse: collapse;
4244 width: 99%;
4267 width: 99%;
4245 }
4268 }
4246 table.code-difftable td {
4269 table.code-difftable td {
4247 padding: 0 !important;
4270 padding: 0 !important;
4248 background: none !important;
4271 background: none !important;
4249 border:0 !important;
4272 border:0 !important;
4250 vertical-align: none !important;
4273 vertical-align: none !important;
4251 }
4274 }
4252 table.code-difftable .context{
4275 table.code-difftable .context{
4253 background:none repeat scroll 0 0 #DDE7EF;
4276 background:none repeat scroll 0 0 #DDE7EF;
4254 }
4277 }
4255 table.code-difftable .add{
4278 table.code-difftable .add{
4256 background:none repeat scroll 0 0 #DDFFDD;
4279 background:none repeat scroll 0 0 #DDFFDD;
4257 }
4280 }
4258 table.code-difftable .add ins{
4281 table.code-difftable .add ins{
4259 background:none repeat scroll 0 0 #AAFFAA;
4282 background:none repeat scroll 0 0 #AAFFAA;
4260 text-decoration:none;
4283 text-decoration:none;
4261 }
4284 }
4262 table.code-difftable .del{
4285 table.code-difftable .del{
4263 background:none repeat scroll 0 0 #FFDDDD;
4286 background:none repeat scroll 0 0 #FFDDDD;
4264 }
4287 }
4265 table.code-difftable .del del{
4288 table.code-difftable .del del{
4266 background:none repeat scroll 0 0 #FFAAAA;
4289 background:none repeat scroll 0 0 #FFAAAA;
4267 text-decoration:none;
4290 text-decoration:none;
4268 }
4291 }
4269
4292
4270 /** LINE NUMBERS **/
4293 /** LINE NUMBERS **/
4271 table.code-difftable .lineno{
4294 table.code-difftable .lineno{
4272
4295
4273 padding-left:2px;
4296 padding-left:2px;
4274 padding-right:2px;
4297 padding-right:2px;
4275 text-align:right;
4298 text-align:right;
4276 width:32px;
4299 width:32px;
4277 -moz-user-select:none;
4300 -moz-user-select:none;
4278 -webkit-user-select: none;
4301 -webkit-user-select: none;
4279 border-right: 1px solid #CCC !important;
4302 border-right: 1px solid #CCC !important;
4280 border-left: 0px solid #CCC !important;
4303 border-left: 0px solid #CCC !important;
4281 border-top: 0px solid #CCC !important;
4304 border-top: 0px solid #CCC !important;
4282 border-bottom: none !important;
4305 border-bottom: none !important;
4283 vertical-align: middle !important;
4306 vertical-align: middle !important;
4284
4307
4285 }
4308 }
4286 table.code-difftable .lineno.new {
4309 table.code-difftable .lineno.new {
4287 }
4310 }
4288 table.code-difftable .lineno.old {
4311 table.code-difftable .lineno.old {
4289 }
4312 }
4290 table.code-difftable .lineno a{
4313 table.code-difftable .lineno a{
4291 color:#747474 !important;
4314 color:#747474 !important;
4292 font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4315 font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4293 letter-spacing:-1px;
4316 letter-spacing:-1px;
4294 text-align:right;
4317 text-align:right;
4295 padding-right: 2px;
4318 padding-right: 2px;
4296 cursor: pointer;
4319 cursor: pointer;
4297 display: block;
4320 display: block;
4298 width: 32px;
4321 width: 32px;
4299 }
4322 }
4300
4323
4301 table.code-difftable .lineno-inline{
4324 table.code-difftable .lineno-inline{
4302 background:none repeat scroll 0 0 #FFF !important;
4325 background:none repeat scroll 0 0 #FFF !important;
4303 padding-left:2px;
4326 padding-left:2px;
4304 padding-right:2px;
4327 padding-right:2px;
4305 text-align:right;
4328 text-align:right;
4306 width:30px;
4329 width:30px;
4307 -moz-user-select:none;
4330 -moz-user-select:none;
4308 -webkit-user-select: none;
4331 -webkit-user-select: none;
4309 }
4332 }
4310
4333
4311 /** CODE **/
4334 /** CODE **/
4312 table.code-difftable .code {
4335 table.code-difftable .code {
4313 display: block;
4336 display: block;
4314 width: 100%;
4337 width: 100%;
4315 }
4338 }
4316 table.code-difftable .code td{
4339 table.code-difftable .code td{
4317 margin:0;
4340 margin:0;
4318 padding:0;
4341 padding:0;
4319 }
4342 }
4320 table.code-difftable .code pre{
4343 table.code-difftable .code pre{
4321 margin:0;
4344 margin:0;
4322 padding:0;
4345 padding:0;
4323 height: 17px;
4346 height: 17px;
4324 line-height: 17px;
4347 line-height: 17px;
4325 }
4348 }
4326
4349
4327
4350
4328 .diffblock.margined.comm .line .code:hover{
4351 .diffblock.margined.comm .line .code:hover{
4329 background-color:#FFFFCC !important;
4352 background-color:#FFFFCC !important;
4330 cursor: pointer !important;
4353 cursor: pointer !important;
4331 background-image:url("../images/icons/comment_add.png") !important;
4354 background-image:url("../images/icons/comment_add.png") !important;
4332 background-repeat:no-repeat !important;
4355 background-repeat:no-repeat !important;
4333 background-position: right !important;
4356 background-position: right !important;
4334 background-position: 0% 50% !important;
4357 background-position: 0% 50% !important;
4335 }
4358 }
4336 .diffblock.margined.comm .line .code.no-comment:hover{
4359 .diffblock.margined.comm .line .code.no-comment:hover{
4337 background-image: none !important;
4360 background-image: none !important;
4338 cursor: auto !important;
4361 cursor: auto !important;
4339 background-color: inherit !important;
4362 background-color: inherit !important;
4340
4363
4341 }
4364 }
@@ -1,911 +1,1112 b''
1 /**
1 /**
2 RhodeCode JS Files
2 RhodeCode JS Files
3 **/
3 **/
4
4
5 if (typeof console == "undefined" || typeof console.log == "undefined"){
5 if (typeof console == "undefined" || typeof console.log == "undefined"){
6 console = { log: function() {} }
6 console = { log: function() {} }
7 }
7 }
8
8
9
9
10 var str_repeat = function(i, m) {
10 var str_repeat = function(i, m) {
11 for (var o = []; m > 0; o[--m] = i);
11 for (var o = []; m > 0; o[--m] = i);
12 return o.join('');
12 return o.join('');
13 };
13 };
14
14
15 /**
15 /**
16 * INJECT .format function into String
16 * INJECT .format function into String
17 * Usage: "My name is {0} {1}".format("Johny","Bravo")
17 * Usage: "My name is {0} {1}".format("Johny","Bravo")
18 * Return "My name is Johny Bravo"
18 * Return "My name is Johny Bravo"
19 * Inspired by https://gist.github.com/1049426
19 * Inspired by https://gist.github.com/1049426
20 */
20 */
21 String.prototype.format = function() {
21 String.prototype.format = function() {
22
22
23 function format() {
23 function format() {
24 var str = this;
24 var str = this;
25 var len = arguments.length+1;
25 var len = arguments.length+1;
26 var safe = undefined;
26 var safe = undefined;
27 var arg = undefined;
27 var arg = undefined;
28
28
29 // For each {0} {1} {n...} replace with the argument in that position. If
29 // For each {0} {1} {n...} replace with the argument in that position. If
30 // the argument is an object or an array it will be stringified to JSON.
30 // the argument is an object or an array it will be stringified to JSON.
31 for (var i=0; i < len; arg = arguments[i++]) {
31 for (var i=0; i < len; arg = arguments[i++]) {
32 safe = typeof arg === 'object' ? JSON.stringify(arg) : arg;
32 safe = typeof arg === 'object' ? JSON.stringify(arg) : arg;
33 str = str.replace(RegExp('\\{'+(i-1)+'\\}', 'g'), safe);
33 str = str.replace(RegExp('\\{'+(i-1)+'\\}', 'g'), safe);
34 }
34 }
35 return str;
35 return str;
36 }
36 }
37
37
38 // Save a reference of what may already exist under the property native.
38 // Save a reference of what may already exist under the property native.
39 // Allows for doing something like: if("".format.native) { /* use native */ }
39 // Allows for doing something like: if("".format.native) { /* use native */ }
40 format.native = String.prototype.format;
40 format.native = String.prototype.format;
41
41
42 // Replace the prototype property
42 // Replace the prototype property
43 return format;
43 return format;
44
44
45 }();
45 }();
46
46
47
47
48 /**
48 /**
49 * SmartColorGenerator
49 * SmartColorGenerator
50 *
50 *
51 *usage::
51 *usage::
52 * var CG = new ColorGenerator();
52 * var CG = new ColorGenerator();
53 * var col = CG.getColor(key); //returns array of RGB
53 * var col = CG.getColor(key); //returns array of RGB
54 * 'rgb({0})'.format(col.join(',')
54 * 'rgb({0})'.format(col.join(',')
55 *
55 *
56 * @returns {ColorGenerator}
56 * @returns {ColorGenerator}
57 */
57 */
58 var ColorGenerator = function(){
58 var ColorGenerator = function(){
59 this.GOLDEN_RATIO = 0.618033988749895;
59 this.GOLDEN_RATIO = 0.618033988749895;
60 this.CURRENT_RATIO = 0.22717784590367374 // this can be random
60 this.CURRENT_RATIO = 0.22717784590367374 // this can be random
61 this.HSV_1 = 0.75;//saturation
61 this.HSV_1 = 0.75;//saturation
62 this.HSV_2 = 0.95;
62 this.HSV_2 = 0.95;
63 this.color;
63 this.color;
64 this.cacheColorMap = {};
64 this.cacheColorMap = {};
65 };
65 };
66
66
67 ColorGenerator.prototype = {
67 ColorGenerator.prototype = {
68 getColor:function(key){
68 getColor:function(key){
69 if(this.cacheColorMap[key] !== undefined){
69 if(this.cacheColorMap[key] !== undefined){
70 return this.cacheColorMap[key];
70 return this.cacheColorMap[key];
71 }
71 }
72 else{
72 else{
73 this.cacheColorMap[key] = this.generateColor();
73 this.cacheColorMap[key] = this.generateColor();
74 return this.cacheColorMap[key];
74 return this.cacheColorMap[key];
75 }
75 }
76 },
76 },
77 _hsvToRgb:function(h,s,v){
77 _hsvToRgb:function(h,s,v){
78 if (s == 0.0)
78 if (s == 0.0)
79 return [v, v, v];
79 return [v, v, v];
80 i = parseInt(h * 6.0)
80 i = parseInt(h * 6.0)
81 f = (h * 6.0) - i
81 f = (h * 6.0) - i
82 p = v * (1.0 - s)
82 p = v * (1.0 - s)
83 q = v * (1.0 - s * f)
83 q = v * (1.0 - s * f)
84 t = v * (1.0 - s * (1.0 - f))
84 t = v * (1.0 - s * (1.0 - f))
85 i = i % 6
85 i = i % 6
86 if (i == 0)
86 if (i == 0)
87 return [v, t, p]
87 return [v, t, p]
88 if (i == 1)
88 if (i == 1)
89 return [q, v, p]
89 return [q, v, p]
90 if (i == 2)
90 if (i == 2)
91 return [p, v, t]
91 return [p, v, t]
92 if (i == 3)
92 if (i == 3)
93 return [p, q, v]
93 return [p, q, v]
94 if (i == 4)
94 if (i == 4)
95 return [t, p, v]
95 return [t, p, v]
96 if (i == 5)
96 if (i == 5)
97 return [v, p, q]
97 return [v, p, q]
98 },
98 },
99 generateColor:function(){
99 generateColor:function(){
100 this.CURRENT_RATIO = this.CURRENT_RATIO+this.GOLDEN_RATIO;
100 this.CURRENT_RATIO = this.CURRENT_RATIO+this.GOLDEN_RATIO;
101 this.CURRENT_RATIO = this.CURRENT_RATIO %= 1;
101 this.CURRENT_RATIO = this.CURRENT_RATIO %= 1;
102 HSV_tuple = [this.CURRENT_RATIO, this.HSV_1, this.HSV_2]
102 HSV_tuple = [this.CURRENT_RATIO, this.HSV_1, this.HSV_2]
103 RGB_tuple = this._hsvToRgb(HSV_tuple[0],HSV_tuple[1],HSV_tuple[2]);
103 RGB_tuple = this._hsvToRgb(HSV_tuple[0],HSV_tuple[1],HSV_tuple[2]);
104 function toRgb(v){
104 function toRgb(v){
105 return ""+parseInt(v*256)
105 return ""+parseInt(v*256)
106 }
106 }
107 return [toRgb(RGB_tuple[0]),toRgb(RGB_tuple[1]),toRgb(RGB_tuple[2])];
107 return [toRgb(RGB_tuple[0]),toRgb(RGB_tuple[1]),toRgb(RGB_tuple[2])];
108
108
109 }
109 }
110 }
110 }
111
111
112
112
113
113
114
114
115
115
116 /**
116 /**
117 * GLOBAL YUI Shortcuts
117 * GLOBAL YUI Shortcuts
118 */
118 */
119 var YUC = YAHOO.util.Connect;
119 var YUC = YAHOO.util.Connect;
120 var YUD = YAHOO.util.Dom;
120 var YUD = YAHOO.util.Dom;
121 var YUE = YAHOO.util.Event;
121 var YUE = YAHOO.util.Event;
122 var YUQ = YAHOO.util.Selector.query;
122 var YUQ = YAHOO.util.Selector.query;
123
123
124 // defines if push state is enabled for this browser ?
124 // defines if push state is enabled for this browser ?
125 var push_state_enabled = Boolean(
125 var push_state_enabled = Boolean(
126 window.history && window.history.pushState && window.history.replaceState
126 window.history && window.history.pushState && window.history.replaceState
127 && !( /* disable for versions of iOS before version 4.3 (8F190) */
127 && !( /* disable for versions of iOS before version 4.3 (8F190) */
128 (/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i).test(navigator.userAgent)
128 (/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i).test(navigator.userAgent)
129 /* disable for the mercury iOS browser, or at least older versions of the webkit engine */
129 /* disable for the mercury iOS browser, or at least older versions of the webkit engine */
130 || (/AppleWebKit\/5([0-2]|3[0-2])/i).test(navigator.userAgent)
130 || (/AppleWebKit\/5([0-2]|3[0-2])/i).test(navigator.userAgent)
131 )
131 )
132 );
132 );
133
133
134 var _run_callbacks = function(callbacks){
134 var _run_callbacks = function(callbacks){
135 if (callbacks !== undefined){
135 if (callbacks !== undefined){
136 var _l = callbacks.length;
136 var _l = callbacks.length;
137 for (var i=0;i<_l;i++){
137 for (var i=0;i<_l;i++){
138 var func = callbacks[i];
138 var func = callbacks[i];
139 if(typeof(func)=='function'){
139 if(typeof(func)=='function'){
140 try{
140 try{
141 func();
141 func();
142 }catch (err){};
142 }catch (err){};
143 }
143 }
144 }
144 }
145 }
145 }
146 }
146 }
147
147
148 /**
148 /**
149 * Partial Ajax Implementation
149 * Partial Ajax Implementation
150 *
150 *
151 * @param url: defines url to make partial request
151 * @param url: defines url to make partial request
152 * @param container: defines id of container to input partial result
152 * @param container: defines id of container to input partial result
153 * @param s_call: success callback function that takes o as arg
153 * @param s_call: success callback function that takes o as arg
154 * o.tId
154 * o.tId
155 * o.status
155 * o.status
156 * o.statusText
156 * o.statusText
157 * o.getResponseHeader[ ]
157 * o.getResponseHeader[ ]
158 * o.getAllResponseHeaders
158 * o.getAllResponseHeaders
159 * o.responseText
159 * o.responseText
160 * o.responseXML
160 * o.responseXML
161 * o.argument
161 * o.argument
162 * @param f_call: failure callback
162 * @param f_call: failure callback
163 * @param args arguments
163 * @param args arguments
164 */
164 */
165 function ypjax(url,container,s_call,f_call,args){
165 function ypjax(url,container,s_call,f_call,args){
166 var method='GET';
166 var method='GET';
167 if(args===undefined){
167 if(args===undefined){
168 args=null;
168 args=null;
169 }
169 }
170
170
171 // Set special header for partial ajax == HTTP_X_PARTIAL_XHR
171 // Set special header for partial ajax == HTTP_X_PARTIAL_XHR
172 YUC.initHeader('X-PARTIAL-XHR',true);
172 YUC.initHeader('X-PARTIAL-XHR',true);
173
173
174 // wrapper of passed callback
174 // wrapper of passed callback
175 var s_wrapper = (function(o){
175 var s_wrapper = (function(o){
176 return function(o){
176 return function(o){
177 YUD.get(container).innerHTML=o.responseText;
177 YUD.get(container).innerHTML=o.responseText;
178 YUD.setStyle(container,'opacity','1.0');
178 YUD.setStyle(container,'opacity','1.0');
179 //execute the given original callback
179 //execute the given original callback
180 if (s_call !== undefined){
180 if (s_call !== undefined){
181 s_call(o);
181 s_call(o);
182 }
182 }
183 }
183 }
184 })()
184 })()
185 YUD.setStyle(container,'opacity','0.3');
185 YUD.setStyle(container,'opacity','0.3');
186 YUC.asyncRequest(method,url,{
186 YUC.asyncRequest(method,url,{
187 success:s_wrapper,
187 success:s_wrapper,
188 failure:function(o){
188 failure:function(o){
189 console.log(o);
189 console.log(o);
190 YUD.get(container).innerHTML='ERROR';
190 YUD.get(container).innerHTML='ERROR';
191 YUD.setStyle(container,'opacity','1.0');
191 YUD.setStyle(container,'opacity','1.0');
192 YUD.setStyle(container,'color','red');
192 YUD.setStyle(container,'color','red');
193 }
193 }
194 },args);
194 },args);
195
195
196 };
196 };
197
197
198 var ajaxPOST = function(url,postData,success) {
199 var toQueryString = function(o) {
200 if(typeof o !== 'object') {
201 return false;
202 }
203 var _p, _qs = [];
204 for(_p in o) {
205 _qs.push(encodeURIComponent(_p) + '=' + encodeURIComponent(o[_p]));
206 }
207 return _qs.join('&');
208 };
209
210 var sUrl = url;
211 var callback = {
212 success: success,
213 failure: function (o) {
214 alert("error");
215 },
216 };
217 var postData = toQueryString(postData);
218 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
219 return request;
220 };
221
222
198 /**
223 /**
199 * tooltip activate
224 * tooltip activate
200 */
225 */
201 var tooltip_activate = function(){
226 var tooltip_activate = function(){
202 function toolTipsId(){
227 function toolTipsId(){
203 var ids = [];
228 var ids = [];
204 var tts = YUQ('.tooltip');
229 var tts = YUQ('.tooltip');
205 for (var i = 0; i < tts.length; i++) {
230 for (var i = 0; i < tts.length; i++) {
206 // if element doesn't not have and id
231 // if element doesn't not have and id
207 // autogenerate one for tooltip
232 // autogenerate one for tooltip
208 if (!tts[i].id){
233 if (!tts[i].id){
209 tts[i].id='tt'+((i*100)+tts.length);
234 tts[i].id='tt'+((i*100)+tts.length);
210 }
235 }
211 ids.push(tts[i].id);
236 ids.push(tts[i].id);
212 }
237 }
213 return ids
238 return ids
214 };
239 };
215 var myToolTips = new YAHOO.widget.Tooltip("tooltip", {
240 var myToolTips = new YAHOO.widget.Tooltip("tooltip", {
216 context: [[toolTipsId()],"tl","bl",null,[0,5]],
241 context: [[toolTipsId()],"tl","bl",null,[0,5]],
217 monitorresize:false,
242 monitorresize:false,
218 xyoffset :[0,0],
243 xyoffset :[0,0],
219 autodismissdelay:300000,
244 autodismissdelay:300000,
220 hidedelay:5,
245 hidedelay:5,
221 showdelay:20,
246 showdelay:20,
222 });
247 });
223 };
248 };
224
249
225 /**
250 /**
226 * show more
251 * show more
227 */
252 */
228 var show_more_event = function(){
253 var show_more_event = function(){
229 YUE.on(YUD.getElementsByClassName('show_more'),'click',function(e){
254 YUE.on(YUD.getElementsByClassName('show_more'),'click',function(e){
230 var el = e.target;
255 var el = e.target;
231 YUD.setStyle(YUD.get(el.id.substring(1)),'display','');
256 YUD.setStyle(YUD.get(el.id.substring(1)),'display','');
232 YUD.setStyle(el.parentNode,'display','none');
257 YUD.setStyle(el.parentNode,'display','none');
233 });
258 });
234 };
259 };
235
260
236
261
237 /**
262 /**
238 * Quick filter widget
263 * Quick filter widget
239 *
264 *
240 * @param target: filter input target
265 * @param target: filter input target
241 * @param nodes: list of nodes in html we want to filter.
266 * @param nodes: list of nodes in html we want to filter.
242 * @param display_element function that takes current node from nodes and
267 * @param display_element function that takes current node from nodes and
243 * does hide or show based on the node
268 * does hide or show based on the node
244 *
269 *
245 */
270 */
246 var q_filter = function(target,nodes,display_element){
271 var q_filter = function(target,nodes,display_element){
247
272
248 var nodes = nodes;
273 var nodes = nodes;
249 var q_filter_field = YUD.get(target);
274 var q_filter_field = YUD.get(target);
250 var F = YAHOO.namespace(target);
275 var F = YAHOO.namespace(target);
251
276
252 YUE.on(q_filter_field,'click',function(){
277 YUE.on(q_filter_field,'click',function(){
253 q_filter_field.value = '';
278 q_filter_field.value = '';
254 });
279 });
255
280
256 YUE.on(q_filter_field,'keyup',function(e){
281 YUE.on(q_filter_field,'keyup',function(e){
257 clearTimeout(F.filterTimeout);
282 clearTimeout(F.filterTimeout);
258 F.filterTimeout = setTimeout(F.updateFilter,600);
283 F.filterTimeout = setTimeout(F.updateFilter,600);
259 });
284 });
260
285
261 F.filterTimeout = null;
286 F.filterTimeout = null;
262
287
263 var show_node = function(node){
288 var show_node = function(node){
264 YUD.setStyle(node,'display','')
289 YUD.setStyle(node,'display','')
265 }
290 }
266 var hide_node = function(node){
291 var hide_node = function(node){
267 YUD.setStyle(node,'display','none');
292 YUD.setStyle(node,'display','none');
268 }
293 }
269
294
270 F.updateFilter = function() {
295 F.updateFilter = function() {
271 // Reset timeout
296 // Reset timeout
272 F.filterTimeout = null;
297 F.filterTimeout = null;
273
298
274 var obsolete = [];
299 var obsolete = [];
275
300
276 var req = q_filter_field.value.toLowerCase();
301 var req = q_filter_field.value.toLowerCase();
277
302
278 var l = nodes.length;
303 var l = nodes.length;
279 var i;
304 var i;
280 var showing = 0;
305 var showing = 0;
281
306
282 for (i=0;i<l;i++ ){
307 for (i=0;i<l;i++ ){
283 var n = nodes[i];
308 var n = nodes[i];
284 var target_element = display_element(n)
309 var target_element = display_element(n)
285 if(req && n.innerHTML.toLowerCase().indexOf(req) == -1){
310 if(req && n.innerHTML.toLowerCase().indexOf(req) == -1){
286 hide_node(target_element);
311 hide_node(target_element);
287 }
312 }
288 else{
313 else{
289 show_node(target_element);
314 show_node(target_element);
290 showing+=1;
315 showing+=1;
291 }
316 }
292 }
317 }
293
318
294 // if repo_count is set update the number
319 // if repo_count is set update the number
295 var cnt = YUD.get('repo_count');
320 var cnt = YUD.get('repo_count');
296 if(cnt){
321 if(cnt){
297 YUD.get('repo_count').innerHTML = showing;
322 YUD.get('repo_count').innerHTML = showing;
298 }
323 }
299
324
300 }
325 }
301 };
326 };
302
327
303 var ajaxPOST = function(url,postData,success) {
328 var tableTr = function(cls,body){
304 var sUrl = url;
329 var tr = document.createElement('tr');
305 var callback = {
330 YUD.addClass(tr, cls);
306 success: success,
331
307 failure: function (o) {
332
308 alert("error");
333 var cont = new YAHOO.util.Element(body);
309 },
334 var comment_id = fromHTML(body).children[0].id.split('comment-')[1];
310 };
335 tr.id = 'comment-tr-{0}'.format(comment_id);
311 var postData = postData;
336 tr.innerHTML = '<td class="lineno-inline new-inline"></td>'+
312 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
337 '<td class="lineno-inline old-inline"></td>'+
338 '<td>{0}</td>'.format(body);
339 return tr;
313 };
340 };
314
341
315
316 /** comments **/
342 /** comments **/
317 var removeInlineForm = function(form) {
343 var removeInlineForm = function(form) {
318 form.parentNode.removeChild(form);
344 form.parentNode.removeChild(form);
319 };
345 };
320
346
321 var tableTr = function(cls,body){
322 var form = document.createElement('tr');
323 YUD.addClass(form, cls);
324 form.innerHTML = '<td class="lineno-inline new-inline"></td>'+
325 '<td class="lineno-inline old-inline"></td>'+
326 '<td>{0}</td>'.format(body);
327 return form;
328 };
329
330 var createInlineForm = function(parent_tr, f_path, line) {
347 var createInlineForm = function(parent_tr, f_path, line) {
331 var tmpl = YUD.get('comment-inline-form-template').innerHTML;
348 var tmpl = YUD.get('comment-inline-form-template').innerHTML;
332 tmpl = tmpl.format(f_path, line);
349 tmpl = tmpl.format(f_path, line);
333 var form = tableTr('comment-form-inline',tmpl)
350 var form = tableTr('comment-form-inline',tmpl)
334
351
335 // create event for hide button
352 // create event for hide button
336 form = new YAHOO.util.Element(form);
353 form = new YAHOO.util.Element(form);
337 var form_hide_button = new YAHOO.util.Element(form.getElementsByClassName('hide-inline-form')[0]);
354 var form_hide_button = new YAHOO.util.Element(form.getElementsByClassName('hide-inline-form')[0]);
338 form_hide_button.on('click', function(e) {
355 form_hide_button.on('click', function(e) {
339 var newtr = e.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode;
356 var newtr = e.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode;
357 if(YUD.hasClass(newtr.nextElementSibling,'inline-comments-button')){
358 YUD.setStyle(newtr.nextElementSibling,'display','');
359 }
340 removeInlineForm(newtr);
360 removeInlineForm(newtr);
341 YUD.removeClass(parent_tr, 'form-open');
361 YUD.removeClass(parent_tr, 'form-open');
362
342 });
363 });
364
343 return form
365 return form
344 };
366 };
367
368 /**
369 * Inject inline comment for on given TR this tr should be always an .line
370 * tr containing the line. Code will detect comment, and always put the comment
371 * block at the very bottom
372 */
345 var injectInlineForm = function(tr){
373 var injectInlineForm = function(tr){
374 if(!YUD.hasClass(tr, 'line')){
375 return
376 }
377 var submit_url = AJAX_COMMENT_URL;
346 if(YUD.hasClass(tr,'form-open') || YUD.hasClass(tr,'context') || YUD.hasClass(tr,'no-comment')){
378 if(YUD.hasClass(tr,'form-open') || YUD.hasClass(tr,'context') || YUD.hasClass(tr,'no-comment')){
347 return
379 return
348 }
380 }
349 YUD.addClass(tr,'form-open');
381 YUD.addClass(tr,'form-open');
350 var node = tr.parentNode.parentNode.parentNode.getElementsByClassName('full_f_path')[0];
382 var node = tr.parentNode.parentNode.parentNode.getElementsByClassName('full_f_path')[0];
351 var f_path = YUD.getAttribute(node,'path');
383 var f_path = YUD.getAttribute(node,'path');
352 var lineno = getLineNo(tr);
384 var lineno = getLineNo(tr);
353 var form = createInlineForm(tr, f_path, lineno);
385 var form = createInlineForm(tr, f_path, lineno, submit_url);
354 var target_tr = tr;
386
355 if(YUD.hasClass(YUD.getNextSibling(tr),'inline-comments')){
387 var parent = tr;
356 target_tr = YUD.getNextSibling(tr);
388 while (1){
357 }
389 var n = parent.nextElementSibling;
358 YUD.insertAfter(form,target_tr);
390 // next element are comments !
391 if(YUD.hasClass(n,'inline-comments')){
392 parent = n;
393 }
394 else{
395 break;
396 }
397 }
398 YUD.insertAfter(form,parent);
399
359 YUD.get('text_'+lineno).focus();
400 YUD.get('text_'+lineno).focus();
401 var f = YUD.get(form);
402
403 var overlay = f.getElementsByClassName('overlay')[0];
404 var _form = f.getElementsByClassName('inline-form')[0];
405
406 form.on('submit',function(e){
407 YUE.preventDefault(e);
408
409 //ajax submit
410 var text = YUD.get('text_'+lineno).value;
411 var postData = {
412 'text':text,
413 'f_path':f_path,
414 'line':lineno
415 };
416
417 if(lineno === undefined){
418 alert('missing line !');
419 return
420 }
421 if(f_path === undefined){
422 alert('missing file path !');
423 return
424 }
425
426 var success = function(o){
427 YUD.removeClass(tr, 'form-open');
428 removeInlineForm(f);
429 var json_data = JSON.parse(o.responseText);
430 renderInlineComment(json_data);
431 };
432
433 if (YUD.hasClass(overlay,'overlay')){
434 var w = _form.offsetWidth;
435 var h = _form.offsetHeight;
436 YUD.setStyle(overlay,'width',w+'px');
437 YUD.setStyle(overlay,'height',h+'px');
438 }
439 YUD.addClass(overlay, 'submitting');
440
441 ajaxPOST(submit_url, postData, success);
442 });
443
360 tooltip_activate();
444 tooltip_activate();
361 };
445 };
362
446
363 var createInlineAddButton = function(tr,label){
447 var deleteComment = function(comment_id){
364 var html = '<div class="add-comment"><span class="ui-btn">{0}</span></div>'.format(label);
448 var url = AJAX_COMMENT_DELETE_URL.replace('__COMMENT_ID__',comment_id);
365
449 var postData = {'_method':'delete'};
366 var add = new YAHOO.util.Element(tableTr('inline-comments-button',html));
450 var success = function(o){
451 var n = YUD.get('comment-tr-'+comment_id);
452 var root = n.previousElementSibling.previousElementSibling;
453 n.parentNode.removeChild(n);
454
455 // scann nodes, and attach add button to last one
456 placeAddButton(root);
457 }
458 ajaxPOST(url,postData,success);
459 }
460
461
462 var createInlineAddButton = function(tr){
463
464 var label = TRANSLATION_MAP['add another comment'];
465
466 var html_el = document.createElement('div');
467 YUD.addClass(html_el, 'add-comment');
468 html_el.innerHTML = '<span class="ui-btn">{0}</span>'.format(label);
469
470 var add = new YAHOO.util.Element(html_el);
367 add.on('click', function(e) {
471 add.on('click', function(e) {
368 injectInlineForm(tr);
472 injectInlineForm(tr);
369 });
473 });
370 return add;
474 return add;
371 };
475 };
372
476
373 var getLineNo = function(tr) {
477 var getLineNo = function(tr) {
374 var line;
478 var line;
375 var o = tr.children[0].id.split('_');
479 var o = tr.children[0].id.split('_');
376 var n = tr.children[1].id.split('_');
480 var n = tr.children[1].id.split('_');
377
481
378 if (n.length >= 2) {
482 if (n.length >= 2) {
379 line = n[n.length-1];
483 line = n[n.length-1];
380 } else if (o.length >= 2) {
484 } else if (o.length >= 2) {
381 line = o[o.length-1];
485 line = o[o.length-1];
382 }
486 }
383
487
384 return line
488 return line
385 };
489 };
386
490
491 var placeAddButton = function(target_tr){
492 if(!target_tr){
493 return
494 }
495 var last_node = target_tr;
496 //scann
497 while (1){
498 var n = last_node.nextElementSibling;
499 // next element are comments !
500 if(YUD.hasClass(n,'inline-comments')){
501 last_node = n;
502 //also remove the comment button from previos
503 var comment_add_buttons = last_node.getElementsByClassName('add-comment');
504 for(var i=0;i<comment_add_buttons.length;i++){
505 var b = comment_add_buttons[i];
506 b.parentNode.removeChild(b);
507 }
508 }
509 else{
510 break;
511 }
512 }
513
514 var add = createInlineAddButton(target_tr);
515 // get the comment div
516 var comment_block = last_node.getElementsByClassName('comment')[0];
517 // attach add button
518 YUD.insertAfter(add,comment_block);
519 }
520
521 /**
522 * Places the inline comment into the changeset block in proper line position
523 */
524 var placeInline = function(target_container,lineno,html){
525 var lineid = "{0}_{1}".format(target_container,lineno);
526 var target_line = YUD.get(lineid);
527 var comment = new YAHOO.util.Element(tableTr('inline-comments',html))
528
529 // check if there are comments already !
530 var parent = target_line.parentNode;
531 var root_parent = parent;
532 while (1){
533 var n = parent.nextElementSibling;
534 // next element are comments !
535 if(YUD.hasClass(n,'inline-comments')){
536 parent = n;
537 }
538 else{
539 break;
540 }
541 }
542 // put in the comment at the bottom
543 YUD.insertAfter(comment,parent);
544
545 // scann nodes, and attach add button to last one
546 placeAddButton(root_parent);
547
548 return target_line;
549 }
550
551 /**
552 * make a single inline comment and place it inside
553 */
554 var renderInlineComment = function(json_data){
555 try{
556 var html = json_data['rendered_text'];
557 var lineno = json_data['line_no'];
558 var target_id = json_data['target_id'];
559 placeInline(target_id, lineno, html);
560
561 }catch(e){
562 console.log(e);
563 }
564 }
565
566 /**
567 * Iterates over all the inlines, and places them inside proper blocks of data
568 */
569 var renderInlineComments = function(file_comments){
570 for (f in file_comments){
571 // holding all comments for a FILE
572 var box = file_comments[f];
573
574 var target_id = YUD.getAttribute(box,'target_id');
575 // actually comments with line numbers
576 var comments = box.children;
577 for(var i=0; i<comments.length; i++){
578 var data = {
579 'rendered_text': comments[i].outerHTML,
580 'line_no': YUD.getAttribute(comments[i],'line'),
581 'target_id': target_id
582 }
583 renderInlineComment(data);
584 }
585 }
586 }
587
387
588
388 var fileBrowserListeners = function(current_url, node_list_url, url_base,
589 var fileBrowserListeners = function(current_url, node_list_url, url_base,
389 truncated_lbl, nomatch_lbl){
590 truncated_lbl, nomatch_lbl){
390 var current_url_branch = +"?branch=__BRANCH__";
591 var current_url_branch = +"?branch=__BRANCH__";
391 var url = url_base;
592 var url = url_base;
392 var node_url = node_list_url;
593 var node_url = node_list_url;
393
594
394 YUE.on('stay_at_branch','click',function(e){
595 YUE.on('stay_at_branch','click',function(e){
395 if(e.target.checked){
596 if(e.target.checked){
396 var uri = current_url_branch;
597 var uri = current_url_branch;
397 uri = uri.replace('__BRANCH__',e.target.value);
598 uri = uri.replace('__BRANCH__',e.target.value);
398 window.location = uri;
599 window.location = uri;
399 }
600 }
400 else{
601 else{
401 window.location = current_url;
602 window.location = current_url;
402 }
603 }
403 })
604 })
404
605
405 var n_filter = YUD.get('node_filter');
606 var n_filter = YUD.get('node_filter');
406 var F = YAHOO.namespace('node_filter');
607 var F = YAHOO.namespace('node_filter');
407
608
408 F.filterTimeout = null;
609 F.filterTimeout = null;
409 var nodes = null;
610 var nodes = null;
410
611
411 F.initFilter = function(){
612 F.initFilter = function(){
412 YUD.setStyle('node_filter_box_loading','display','');
613 YUD.setStyle('node_filter_box_loading','display','');
413 YUD.setStyle('search_activate_id','display','none');
614 YUD.setStyle('search_activate_id','display','none');
414 YUD.setStyle('add_node_id','display','none');
615 YUD.setStyle('add_node_id','display','none');
415 YUC.initHeader('X-PARTIAL-XHR',true);
616 YUC.initHeader('X-PARTIAL-XHR',true);
416 YUC.asyncRequest('GET',url,{
617 YUC.asyncRequest('GET',url,{
417 success:function(o){
618 success:function(o){
418 nodes = JSON.parse(o.responseText);
619 nodes = JSON.parse(o.responseText);
419 YUD.setStyle('node_filter_box_loading','display','none');
620 YUD.setStyle('node_filter_box_loading','display','none');
420 YUD.setStyle('node_filter_box','display','');
621 YUD.setStyle('node_filter_box','display','');
421 n_filter.focus();
622 n_filter.focus();
422 if(YUD.hasClass(n_filter,'init')){
623 if(YUD.hasClass(n_filter,'init')){
423 n_filter.value = '';
624 n_filter.value = '';
424 YUD.removeClass(n_filter,'init');
625 YUD.removeClass(n_filter,'init');
425 }
626 }
426 },
627 },
427 failure:function(o){
628 failure:function(o){
428 console.log('failed to load');
629 console.log('failed to load');
429 }
630 }
430 },null);
631 },null);
431 }
632 }
432
633
433 F.updateFilter = function(e) {
634 F.updateFilter = function(e) {
434
635
435 return function(){
636 return function(){
436 // Reset timeout
637 // Reset timeout
437 F.filterTimeout = null;
638 F.filterTimeout = null;
438 var query = e.target.value.toLowerCase();
639 var query = e.target.value.toLowerCase();
439 var match = [];
640 var match = [];
440 var matches = 0;
641 var matches = 0;
441 var matches_max = 20;
642 var matches_max = 20;
442 if (query != ""){
643 if (query != ""){
443 for(var i=0;i<nodes.length;i++){
644 for(var i=0;i<nodes.length;i++){
444
645
445 var pos = nodes[i].name.toLowerCase().indexOf(query)
646 var pos = nodes[i].name.toLowerCase().indexOf(query)
446 if(query && pos != -1){
647 if(query && pos != -1){
447
648
448 matches++
649 matches++
449 //show only certain amount to not kill browser
650 //show only certain amount to not kill browser
450 if (matches > matches_max){
651 if (matches > matches_max){
451 break;
652 break;
452 }
653 }
453
654
454 var n = nodes[i].name;
655 var n = nodes[i].name;
455 var t = nodes[i].type;
656 var t = nodes[i].type;
456 var n_hl = n.substring(0,pos)
657 var n_hl = n.substring(0,pos)
457 +"<b>{0}</b>".format(n.substring(pos,pos+query.length))
658 +"<b>{0}</b>".format(n.substring(pos,pos+query.length))
458 +n.substring(pos+query.length)
659 +n.substring(pos+query.length)
459 match.push('<tr><td><a class="browser-{0}" href="{1}">{2}</a></td><td colspan="5"></td></tr>'.format(t,node_url.replace('__FPATH__',n),n_hl));
660 match.push('<tr><td><a class="browser-{0}" href="{1}">{2}</a></td><td colspan="5"></td></tr>'.format(t,node_url.replace('__FPATH__',n),n_hl));
460 }
661 }
461 if(match.length >= matches_max){
662 if(match.length >= matches_max){
462 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(truncated_lbl));
663 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(truncated_lbl));
463 }
664 }
464
665
465 }
666 }
466 }
667 }
467 if(query != ""){
668 if(query != ""){
468 YUD.setStyle('tbody','display','none');
669 YUD.setStyle('tbody','display','none');
469 YUD.setStyle('tbody_filtered','display','');
670 YUD.setStyle('tbody_filtered','display','');
470
671
471 if (match.length==0){
672 if (match.length==0){
472 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(nomatch_lbl));
673 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(nomatch_lbl));
473 }
674 }
474
675
475 YUD.get('tbody_filtered').innerHTML = match.join("");
676 YUD.get('tbody_filtered').innerHTML = match.join("");
476 }
677 }
477 else{
678 else{
478 YUD.setStyle('tbody','display','');
679 YUD.setStyle('tbody','display','');
479 YUD.setStyle('tbody_filtered','display','none');
680 YUD.setStyle('tbody_filtered','display','none');
480 }
681 }
481
682
482 }
683 }
483 };
684 };
484
685
485 YUE.on(YUD.get('filter_activate'),'click',function(){
686 YUE.on(YUD.get('filter_activate'),'click',function(){
486 F.initFilter();
687 F.initFilter();
487 })
688 })
488 YUE.on(n_filter,'click',function(){
689 YUE.on(n_filter,'click',function(){
489 if(YUD.hasClass(n_filter,'init')){
690 if(YUD.hasClass(n_filter,'init')){
490 n_filter.value = '';
691 n_filter.value = '';
491 YUD.removeClass(n_filter,'init');
692 YUD.removeClass(n_filter,'init');
492 }
693 }
493 });
694 });
494 YUE.on(n_filter,'keyup',function(e){
695 YUE.on(n_filter,'keyup',function(e){
495 clearTimeout(F.filterTimeout);
696 clearTimeout(F.filterTimeout);
496 F.filterTimeout = setTimeout(F.updateFilter(e),600);
697 F.filterTimeout = setTimeout(F.updateFilter(e),600);
497 });
698 });
498 };
699 };
499
700
500
701
501 var initCodeMirror = function(textAreadId,resetUrl){
702 var initCodeMirror = function(textAreadId,resetUrl){
502 var myCodeMirror = CodeMirror.fromTextArea(YUD.get(textAreadId),{
703 var myCodeMirror = CodeMirror.fromTextArea(YUD.get(textAreadId),{
503 mode: "null",
704 mode: "null",
504 lineNumbers:true
705 lineNumbers:true
505 });
706 });
506 YUE.on('reset','click',function(e){
707 YUE.on('reset','click',function(e){
507 window.location=resetUrl
708 window.location=resetUrl
508 });
709 });
509
710
510 YUE.on('file_enable','click',function(){
711 YUE.on('file_enable','click',function(){
511 YUD.setStyle('editor_container','display','');
712 YUD.setStyle('editor_container','display','');
512 YUD.setStyle('upload_file_container','display','none');
713 YUD.setStyle('upload_file_container','display','none');
513 YUD.setStyle('filename_container','display','');
714 YUD.setStyle('filename_container','display','');
514 });
715 });
515
716
516 YUE.on('upload_file_enable','click',function(){
717 YUE.on('upload_file_enable','click',function(){
517 YUD.setStyle('editor_container','display','none');
718 YUD.setStyle('editor_container','display','none');
518 YUD.setStyle('upload_file_container','display','');
719 YUD.setStyle('upload_file_container','display','');
519 YUD.setStyle('filename_container','display','none');
720 YUD.setStyle('filename_container','display','none');
520 });
721 });
521 };
722 };
522
723
523
724
524
725
525 var getIdentNode = function(n){
726 var getIdentNode = function(n){
526 //iterate thru nodes untill matched interesting node !
727 //iterate thru nodes untill matched interesting node !
527
728
528 if (typeof n == 'undefined'){
729 if (typeof n == 'undefined'){
529 return -1
730 return -1
530 }
731 }
531
732
532 if(typeof n.id != "undefined" && n.id.match('L[0-9]+')){
733 if(typeof n.id != "undefined" && n.id.match('L[0-9]+')){
533 return n
734 return n
534 }
735 }
535 else{
736 else{
536 return getIdentNode(n.parentNode);
737 return getIdentNode(n.parentNode);
537 }
738 }
538 };
739 };
539
740
540 var getSelectionLink = function(selection_link_label) {
741 var getSelectionLink = function(selection_link_label) {
541 return function(){
742 return function(){
542 //get selection from start/to nodes
743 //get selection from start/to nodes
543 if (typeof window.getSelection != "undefined") {
744 if (typeof window.getSelection != "undefined") {
544 s = window.getSelection();
745 s = window.getSelection();
545
746
546 from = getIdentNode(s.anchorNode);
747 from = getIdentNode(s.anchorNode);
547 till = getIdentNode(s.focusNode);
748 till = getIdentNode(s.focusNode);
548
749
549 f_int = parseInt(from.id.replace('L',''));
750 f_int = parseInt(from.id.replace('L',''));
550 t_int = parseInt(till.id.replace('L',''));
751 t_int = parseInt(till.id.replace('L',''));
551
752
552 if (f_int > t_int){
753 if (f_int > t_int){
553 //highlight from bottom
754 //highlight from bottom
554 offset = -35;
755 offset = -35;
555 ranges = [t_int,f_int];
756 ranges = [t_int,f_int];
556
757
557 }
758 }
558 else{
759 else{
559 //highligth from top
760 //highligth from top
560 offset = 35;
761 offset = 35;
561 ranges = [f_int,t_int];
762 ranges = [f_int,t_int];
562 }
763 }
563
764
564 if (ranges[0] != ranges[1]){
765 if (ranges[0] != ranges[1]){
565 if(YUD.get('linktt') == null){
766 if(YUD.get('linktt') == null){
566 hl_div = document.createElement('div');
767 hl_div = document.createElement('div');
567 hl_div.id = 'linktt';
768 hl_div.id = 'linktt';
568 }
769 }
569 anchor = '#L'+ranges[0]+'-'+ranges[1];
770 anchor = '#L'+ranges[0]+'-'+ranges[1];
570 hl_div.innerHTML = '';
771 hl_div.innerHTML = '';
571 l = document.createElement('a');
772 l = document.createElement('a');
572 l.href = location.href.substring(0,location.href.indexOf('#'))+anchor;
773 l.href = location.href.substring(0,location.href.indexOf('#'))+anchor;
573 l.innerHTML = selection_link_label;
774 l.innerHTML = selection_link_label;
574 hl_div.appendChild(l);
775 hl_div.appendChild(l);
575
776
576 YUD.get('body').appendChild(hl_div);
777 YUD.get('body').appendChild(hl_div);
577
778
578 xy = YUD.getXY(till.id);
779 xy = YUD.getXY(till.id);
579
780
580 YUD.addClass('linktt','yui-tt');
781 YUD.addClass('linktt','yui-tt');
581 YUD.setStyle('linktt','top',xy[1]+offset+'px');
782 YUD.setStyle('linktt','top',xy[1]+offset+'px');
582 YUD.setStyle('linktt','left',xy[0]+'px');
783 YUD.setStyle('linktt','left',xy[0]+'px');
583 YUD.setStyle('linktt','visibility','visible');
784 YUD.setStyle('linktt','visibility','visible');
584 }
785 }
585 else{
786 else{
586 YUD.setStyle('linktt','visibility','hidden');
787 YUD.setStyle('linktt','visibility','hidden');
587 }
788 }
588 }
789 }
589 }
790 }
590 };
791 };
591
792
592 var deleteNotification = function(url, notification_id,callbacks){
793 var deleteNotification = function(url, notification_id,callbacks){
593 var callback = {
794 var callback = {
594 success:function(o){
795 success:function(o){
595 var obj = YUD.get(String("notification_"+notification_id));
796 var obj = YUD.get(String("notification_"+notification_id));
596 if(obj.parentNode !== undefined){
797 if(obj.parentNode !== undefined){
597 obj.parentNode.removeChild(obj);
798 obj.parentNode.removeChild(obj);
598 }
799 }
599 _run_callbacks(callbacks);
800 _run_callbacks(callbacks);
600 },
801 },
601 failure:function(o){
802 failure:function(o){
602 alert("error");
803 alert("error");
603 },
804 },
604 };
805 };
605 var postData = '_method=delete';
806 var postData = '_method=delete';
606 var sUrl = url.replace('__NOTIFICATION_ID__',notification_id);
807 var sUrl = url.replace('__NOTIFICATION_ID__',notification_id);
607 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl,
808 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl,
608 callback, postData);
809 callback, postData);
609 };
810 };
610
811
611
812
612 /** MEMBERS AUTOCOMPLETE WIDGET **/
813 /** MEMBERS AUTOCOMPLETE WIDGET **/
613
814
614 var MembersAutoComplete = function (users_list, groups_list, group_lbl, members_lbl) {
815 var MembersAutoComplete = function (users_list, groups_list, group_lbl, members_lbl) {
615 var myUsers = users_list;
816 var myUsers = users_list;
616 var myGroups = groups_list;
817 var myGroups = groups_list;
617
818
618 // Define a custom search function for the DataSource of users
819 // Define a custom search function for the DataSource of users
619 var matchUsers = function (sQuery) {
820 var matchUsers = function (sQuery) {
620 // Case insensitive matching
821 // Case insensitive matching
621 var query = sQuery.toLowerCase();
822 var query = sQuery.toLowerCase();
622 var i = 0;
823 var i = 0;
623 var l = myUsers.length;
824 var l = myUsers.length;
624 var matches = [];
825 var matches = [];
625
826
626 // Match against each name of each contact
827 // Match against each name of each contact
627 for (; i < l; i++) {
828 for (; i < l; i++) {
628 contact = myUsers[i];
829 contact = myUsers[i];
629 if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) {
830 if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) {
630 matches[matches.length] = contact;
831 matches[matches.length] = contact;
631 }
832 }
632 }
833 }
633 return matches;
834 return matches;
634 };
835 };
635
836
636 // Define a custom search function for the DataSource of usersGroups
837 // Define a custom search function for the DataSource of usersGroups
637 var matchGroups = function (sQuery) {
838 var matchGroups = function (sQuery) {
638 // Case insensitive matching
839 // Case insensitive matching
639 var query = sQuery.toLowerCase();
840 var query = sQuery.toLowerCase();
640 var i = 0;
841 var i = 0;
641 var l = myGroups.length;
842 var l = myGroups.length;
642 var matches = [];
843 var matches = [];
643
844
644 // Match against each name of each contact
845 // Match against each name of each contact
645 for (; i < l; i++) {
846 for (; i < l; i++) {
646 matched_group = myGroups[i];
847 matched_group = myGroups[i];
647 if (matched_group.grname.toLowerCase().indexOf(query) > -1) {
848 if (matched_group.grname.toLowerCase().indexOf(query) > -1) {
648 matches[matches.length] = matched_group;
849 matches[matches.length] = matched_group;
649 }
850 }
650 }
851 }
651 return matches;
852 return matches;
652 };
853 };
653
854
654 //match all
855 //match all
655 var matchAll = function (sQuery) {
856 var matchAll = function (sQuery) {
656 u = matchUsers(sQuery);
857 u = matchUsers(sQuery);
657 g = matchGroups(sQuery);
858 g = matchGroups(sQuery);
658 return u.concat(g);
859 return u.concat(g);
659 };
860 };
660
861
661 // DataScheme for members
862 // DataScheme for members
662 var memberDS = new YAHOO.util.FunctionDataSource(matchAll);
863 var memberDS = new YAHOO.util.FunctionDataSource(matchAll);
663 memberDS.responseSchema = {
864 memberDS.responseSchema = {
664 fields: ["id", "fname", "lname", "nname", "grname", "grmembers", "gravatar_lnk"]
865 fields: ["id", "fname", "lname", "nname", "grname", "grmembers", "gravatar_lnk"]
665 };
866 };
666
867
667 // DataScheme for owner
868 // DataScheme for owner
668 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
869 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
669 ownerDS.responseSchema = {
870 ownerDS.responseSchema = {
670 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"]
871 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"]
671 };
872 };
672
873
673 // Instantiate AutoComplete for perms
874 // Instantiate AutoComplete for perms
674 var membersAC = new YAHOO.widget.AutoComplete("perm_new_member_name", "perm_container", memberDS);
875 var membersAC = new YAHOO.widget.AutoComplete("perm_new_member_name", "perm_container", memberDS);
675 membersAC.useShadow = false;
876 membersAC.useShadow = false;
676 membersAC.resultTypeList = false;
877 membersAC.resultTypeList = false;
677
878
678 // Instantiate AutoComplete for owner
879 // Instantiate AutoComplete for owner
679 var ownerAC = new YAHOO.widget.AutoComplete("user", "owner_container", ownerDS);
880 var ownerAC = new YAHOO.widget.AutoComplete("user", "owner_container", ownerDS);
680 ownerAC.useShadow = false;
881 ownerAC.useShadow = false;
681 ownerAC.resultTypeList = false;
882 ownerAC.resultTypeList = false;
682
883
683
884
684 // Helper highlight function for the formatter
885 // Helper highlight function for the formatter
685 var highlightMatch = function (full, snippet, matchindex) {
886 var highlightMatch = function (full, snippet, matchindex) {
686 return full.substring(0, matchindex)
887 return full.substring(0, matchindex)
687 + "<span class='match'>"
888 + "<span class='match'>"
688 + full.substr(matchindex, snippet.length)
889 + full.substr(matchindex, snippet.length)
689 + "</span>" + full.substring(matchindex + snippet.length);
890 + "</span>" + full.substring(matchindex + snippet.length);
690 };
891 };
691
892
692 // Custom formatter to highlight the matching letters
893 // Custom formatter to highlight the matching letters
693 var custom_formatter = function (oResultData, sQuery, sResultMatch) {
894 var custom_formatter = function (oResultData, sQuery, sResultMatch) {
694 var query = sQuery.toLowerCase();
895 var query = sQuery.toLowerCase();
695 var _gravatar = function(res, em, group){
896 var _gravatar = function(res, em, group){
696 if (group !== undefined){
897 if (group !== undefined){
697 em = '/images/icons/group.png'
898 em = '/images/icons/group.png'
698 }
899 }
699 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>'
900 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>'
700 return tmpl.format(em,res)
901 return tmpl.format(em,res)
701 }
902 }
702 // group
903 // group
703 if (oResultData.grname != undefined) {
904 if (oResultData.grname != undefined) {
704 var grname = oResultData.grname;
905 var grname = oResultData.grname;
705 var grmembers = oResultData.grmembers;
906 var grmembers = oResultData.grmembers;
706 var grnameMatchIndex = grname.toLowerCase().indexOf(query);
907 var grnameMatchIndex = grname.toLowerCase().indexOf(query);
707 var grprefix = "{0}: ".format(group_lbl);
908 var grprefix = "{0}: ".format(group_lbl);
708 var grsuffix = " (" + grmembers + " )";
909 var grsuffix = " (" + grmembers + " )";
709 var grsuffix = " ({0} {1})".format(grmembers, members_lbl);
910 var grsuffix = " ({0} {1})".format(grmembers, members_lbl);
710
911
711 if (grnameMatchIndex > -1) {
912 if (grnameMatchIndex > -1) {
712 return _gravatar(grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix,null,true);
913 return _gravatar(grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix,null,true);
713 }
914 }
714 return _gravatar(grprefix + oResultData.grname + grsuffix, null,true);
915 return _gravatar(grprefix + oResultData.grname + grsuffix, null,true);
715 // Users
916 // Users
716 } else if (oResultData.fname != undefined) {
917 } else if (oResultData.fname != undefined) {
717 var fname = oResultData.fname,
918 var fname = oResultData.fname,
718 lname = oResultData.lname,
919 lname = oResultData.lname,
719 nname = oResultData.nname || "",
920 nname = oResultData.nname || "",
720 // Guard against null value
921 // Guard against null value
721 fnameMatchIndex = fname.toLowerCase().indexOf(query),
922 fnameMatchIndex = fname.toLowerCase().indexOf(query),
722 lnameMatchIndex = lname.toLowerCase().indexOf(query),
923 lnameMatchIndex = lname.toLowerCase().indexOf(query),
723 nnameMatchIndex = nname.toLowerCase().indexOf(query),
924 nnameMatchIndex = nname.toLowerCase().indexOf(query),
724 displayfname, displaylname, displaynname;
925 displayfname, displaylname, displaynname;
725
926
726 if (fnameMatchIndex > -1) {
927 if (fnameMatchIndex > -1) {
727 displayfname = highlightMatch(fname, query, fnameMatchIndex);
928 displayfname = highlightMatch(fname, query, fnameMatchIndex);
728 } else {
929 } else {
729 displayfname = fname;
930 displayfname = fname;
730 }
931 }
731
932
732 if (lnameMatchIndex > -1) {
933 if (lnameMatchIndex > -1) {
733 displaylname = highlightMatch(lname, query, lnameMatchIndex);
934 displaylname = highlightMatch(lname, query, lnameMatchIndex);
734 } else {
935 } else {
735 displaylname = lname;
936 displaylname = lname;
736 }
937 }
737
938
738 if (nnameMatchIndex > -1) {
939 if (nnameMatchIndex > -1) {
739 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
940 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
740 } else {
941 } else {
741 displaynname = nname ? "(" + nname + ")" : "";
942 displaynname = nname ? "(" + nname + ")" : "";
742 }
943 }
743
944
744 return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk);
945 return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk);
745 } else {
946 } else {
746 return '';
947 return '';
747 }
948 }
748 };
949 };
749 membersAC.formatResult = custom_formatter;
950 membersAC.formatResult = custom_formatter;
750 ownerAC.formatResult = custom_formatter;
951 ownerAC.formatResult = custom_formatter;
751
952
752 var myHandler = function (sType, aArgs) {
953 var myHandler = function (sType, aArgs) {
753
954
754 var myAC = aArgs[0]; // reference back to the AC instance
955 var myAC = aArgs[0]; // reference back to the AC instance
755 var elLI = aArgs[1]; // reference to the selected LI element
956 var elLI = aArgs[1]; // reference to the selected LI element
756 var oData = aArgs[2]; // object literal of selected item's result data
957 var oData = aArgs[2]; // object literal of selected item's result data
757 //fill the autocomplete with value
958 //fill the autocomplete with value
758 if (oData.nname != undefined) {
959 if (oData.nname != undefined) {
759 //users
960 //users
760 myAC.getInputEl().value = oData.nname;
961 myAC.getInputEl().value = oData.nname;
761 YUD.get('perm_new_member_type').value = 'user';
962 YUD.get('perm_new_member_type').value = 'user';
762 } else {
963 } else {
763 //groups
964 //groups
764 myAC.getInputEl().value = oData.grname;
965 myAC.getInputEl().value = oData.grname;
765 YUD.get('perm_new_member_type').value = 'users_group';
966 YUD.get('perm_new_member_type').value = 'users_group';
766 }
967 }
767 };
968 };
768
969
769 membersAC.itemSelectEvent.subscribe(myHandler);
970 membersAC.itemSelectEvent.subscribe(myHandler);
770 if(ownerAC.itemSelectEvent){
971 if(ownerAC.itemSelectEvent){
771 ownerAC.itemSelectEvent.subscribe(myHandler);
972 ownerAC.itemSelectEvent.subscribe(myHandler);
772 }
973 }
773
974
774 return {
975 return {
775 memberDS: memberDS,
976 memberDS: memberDS,
776 ownerDS: ownerDS,
977 ownerDS: ownerDS,
777 membersAC: membersAC,
978 membersAC: membersAC,
778 ownerAC: ownerAC,
979 ownerAC: ownerAC,
779 };
980 };
780 }
981 }
781
982
782
983
783
984
784 /**
985 /**
785 * QUICK REPO MENU
986 * QUICK REPO MENU
786 */
987 */
787 var quick_repo_menu = function(){
988 var quick_repo_menu = function(){
788 YUE.on(YUQ('.quick_repo_menu'),'mouseenter',function(e){
989 YUE.on(YUQ('.quick_repo_menu'),'mouseenter',function(e){
789 var menu = e.currentTarget.firstElementChild.firstElementChild;
990 var menu = e.currentTarget.firstElementChild.firstElementChild;
790 if(YUD.hasClass(menu,'hidden')){
991 if(YUD.hasClass(menu,'hidden')){
791 YUD.replaceClass(e.currentTarget,'hidden', 'active');
992 YUD.replaceClass(e.currentTarget,'hidden', 'active');
792 YUD.replaceClass(menu, 'hidden', 'active');
993 YUD.replaceClass(menu, 'hidden', 'active');
793 }
994 }
794 })
995 })
795 YUE.on(YUQ('.quick_repo_menu'),'mouseleave',function(e){
996 YUE.on(YUQ('.quick_repo_menu'),'mouseleave',function(e){
796 var menu = e.currentTarget.firstElementChild.firstElementChild;
997 var menu = e.currentTarget.firstElementChild.firstElementChild;
797 if(YUD.hasClass(menu,'active')){
998 if(YUD.hasClass(menu,'active')){
798 YUD.replaceClass(e.currentTarget, 'active', 'hidden');
999 YUD.replaceClass(e.currentTarget, 'active', 'hidden');
799 YUD.replaceClass(menu, 'active', 'hidden');
1000 YUD.replaceClass(menu, 'active', 'hidden');
800 }
1001 }
801 })
1002 })
802 };
1003 };
803
1004
804
1005
805 /**
1006 /**
806 * TABLE SORTING
1007 * TABLE SORTING
807 */
1008 */
808
1009
809 // returns a node from given html;
1010 // returns a node from given html;
810 var fromHTML = function(html){
1011 var fromHTML = function(html){
811 var _html = document.createElement('element');
1012 var _html = document.createElement('element');
812 _html.innerHTML = html;
1013 _html.innerHTML = html;
813 return _html;
1014 return _html;
814 }
1015 }
815 var get_rev = function(node){
1016 var get_rev = function(node){
816 var n = node.firstElementChild.firstElementChild;
1017 var n = node.firstElementChild.firstElementChild;
817
1018
818 if (n===null){
1019 if (n===null){
819 return -1
1020 return -1
820 }
1021 }
821 else{
1022 else{
822 out = n.firstElementChild.innerHTML.split(':')[0].replace('r','');
1023 out = n.firstElementChild.innerHTML.split(':')[0].replace('r','');
823 return parseInt(out);
1024 return parseInt(out);
824 }
1025 }
825 }
1026 }
826
1027
827 var get_name = function(node){
1028 var get_name = function(node){
828 var name = node.firstElementChild.children[2].innerHTML;
1029 var name = node.firstElementChild.children[2].innerHTML;
829 return name
1030 return name
830 }
1031 }
831 var get_group_name = function(node){
1032 var get_group_name = function(node){
832 var name = node.firstElementChild.children[1].innerHTML;
1033 var name = node.firstElementChild.children[1].innerHTML;
833 return name
1034 return name
834 }
1035 }
835 var get_date = function(node){
1036 var get_date = function(node){
836 var date_ = node.firstElementChild.innerHTML;
1037 var date_ = node.firstElementChild.innerHTML;
837 return date_
1038 return date_
838 }
1039 }
839
1040
840 var revisionSort = function(a, b, desc, field) {
1041 var revisionSort = function(a, b, desc, field) {
841
1042
842 var a_ = fromHTML(a.getData(field));
1043 var a_ = fromHTML(a.getData(field));
843 var b_ = fromHTML(b.getData(field));
1044 var b_ = fromHTML(b.getData(field));
844
1045
845 // extract revisions from string nodes
1046 // extract revisions from string nodes
846 a_ = get_rev(a_)
1047 a_ = get_rev(a_)
847 b_ = get_rev(b_)
1048 b_ = get_rev(b_)
848
1049
849 var comp = YAHOO.util.Sort.compare;
1050 var comp = YAHOO.util.Sort.compare;
850 var compState = comp(a_, b_, desc);
1051 var compState = comp(a_, b_, desc);
851 return compState;
1052 return compState;
852 };
1053 };
853 var ageSort = function(a, b, desc, field) {
1054 var ageSort = function(a, b, desc, field) {
854 var a_ = a.getData(field);
1055 var a_ = a.getData(field);
855 var b_ = b.getData(field);
1056 var b_ = b.getData(field);
856
1057
857 var comp = YAHOO.util.Sort.compare;
1058 var comp = YAHOO.util.Sort.compare;
858 var compState = comp(a_, b_, desc);
1059 var compState = comp(a_, b_, desc);
859 return compState;
1060 return compState;
860 };
1061 };
861
1062
862 var nameSort = function(a, b, desc, field) {
1063 var nameSort = function(a, b, desc, field) {
863 var a_ = fromHTML(a.getData(field));
1064 var a_ = fromHTML(a.getData(field));
864 var b_ = fromHTML(b.getData(field));
1065 var b_ = fromHTML(b.getData(field));
865
1066
866 // extract name from table
1067 // extract name from table
867 a_ = get_name(a_)
1068 a_ = get_name(a_)
868 b_ = get_name(b_)
1069 b_ = get_name(b_)
869
1070
870 var comp = YAHOO.util.Sort.compare;
1071 var comp = YAHOO.util.Sort.compare;
871 var compState = comp(a_, b_, desc);
1072 var compState = comp(a_, b_, desc);
872 return compState;
1073 return compState;
873 };
1074 };
874
1075
875 var permNameSort = function(a, b, desc, field) {
1076 var permNameSort = function(a, b, desc, field) {
876 var a_ = fromHTML(a.getData(field));
1077 var a_ = fromHTML(a.getData(field));
877 var b_ = fromHTML(b.getData(field));
1078 var b_ = fromHTML(b.getData(field));
878 // extract name from table
1079 // extract name from table
879
1080
880 a_ = a_.children[0].innerHTML;
1081 a_ = a_.children[0].innerHTML;
881 b_ = b_.children[0].innerHTML;
1082 b_ = b_.children[0].innerHTML;
882
1083
883 var comp = YAHOO.util.Sort.compare;
1084 var comp = YAHOO.util.Sort.compare;
884 var compState = comp(a_, b_, desc);
1085 var compState = comp(a_, b_, desc);
885 return compState;
1086 return compState;
886 };
1087 };
887
1088
888 var groupNameSort = function(a, b, desc, field) {
1089 var groupNameSort = function(a, b, desc, field) {
889 var a_ = fromHTML(a.getData(field));
1090 var a_ = fromHTML(a.getData(field));
890 var b_ = fromHTML(b.getData(field));
1091 var b_ = fromHTML(b.getData(field));
891
1092
892 // extract name from table
1093 // extract name from table
893 a_ = get_group_name(a_)
1094 a_ = get_group_name(a_)
894 b_ = get_group_name(b_)
1095 b_ = get_group_name(b_)
895
1096
896 var comp = YAHOO.util.Sort.compare;
1097 var comp = YAHOO.util.Sort.compare;
897 var compState = comp(a_, b_, desc);
1098 var compState = comp(a_, b_, desc);
898 return compState;
1099 return compState;
899 };
1100 };
900 var dateSort = function(a, b, desc, field) {
1101 var dateSort = function(a, b, desc, field) {
901 var a_ = fromHTML(a.getData(field));
1102 var a_ = fromHTML(a.getData(field));
902 var b_ = fromHTML(b.getData(field));
1103 var b_ = fromHTML(b.getData(field));
903
1104
904 // extract name from table
1105 // extract name from table
905 a_ = get_date(a_)
1106 a_ = get_date(a_)
906 b_ = get_date(b_)
1107 b_ = get_date(b_)
907
1108
908 var comp = YAHOO.util.Sort.compare;
1109 var comp = YAHOO.util.Sort.compare;
909 var compState = comp(a_, b_, desc);
1110 var compState = comp(a_, b_, desc);
910 return compState;
1111 return compState;
911 }; No newline at end of file
1112 };
@@ -1,146 +1,150 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <!DOCTYPE html>
2 <!DOCTYPE html>
3 <html xmlns="http://www.w3.org/1999/xhtml">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
4 <head>
5 <title>${self.title()}</title>
5 <title>${self.title()}</title>
6 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
7 <meta name="robots" content="index, nofollow"/>
7 <meta name="robots" content="index, nofollow"/>
8 <link rel="icon" href="${h.url('/images/icons/database_gear.png')}" type="image/png" />
8 <link rel="icon" href="${h.url('/images/icons/database_gear.png')}" type="image/png" />
9
9
10 ## CSS ###
10 ## CSS ###
11 <%def name="css()">
11 <%def name="css()">
12 <link rel="stylesheet" type="text/css" href="${h.url('/css/style.css')}" media="screen"/>
12 <link rel="stylesheet" type="text/css" href="${h.url('/css/style.css')}" media="screen"/>
13 <link rel="stylesheet" type="text/css" href="${h.url('/css/pygments.css')}"/>
13 <link rel="stylesheet" type="text/css" href="${h.url('/css/pygments.css')}"/>
14 ## EXTRA FOR CSS
14 ## EXTRA FOR CSS
15 ${self.css_extra()}
15 ${self.css_extra()}
16 </%def>
16 </%def>
17 <%def name="css_extra()">
17 <%def name="css_extra()">
18 </%def>
18 </%def>
19
19
20 ${self.css()}
20 ${self.css()}
21
21
22 %if c.ga_code:
22 %if c.ga_code:
23 <!-- Analytics -->
23 <!-- Analytics -->
24 <script type="text/javascript">
24 <script type="text/javascript">
25 var _gaq = _gaq || [];
25 var _gaq = _gaq || [];
26 _gaq.push(['_setAccount', '${c.ga_code}']);
26 _gaq.push(['_setAccount', '${c.ga_code}']);
27 _gaq.push(['_trackPageview']);
27 _gaq.push(['_trackPageview']);
28
28
29 (function() {
29 (function() {
30 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
30 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
31 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
31 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
32 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
32 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
33 })();
33 })();
34 </script>
34 </script>
35 %endif
35 %endif
36
36
37 ## JAVASCRIPT ##
37 ## JAVASCRIPT ##
38 <%def name="js()">
38 <%def name="js()">
39 <script type="text/javascript" src="${h.url('/js/yui.2.9.js')}"></script>
39 <script type="text/javascript" src="${h.url('/js/yui.2.9.js')}"></script>
40 <!--[if lt IE 9]>
40 <!--[if lt IE 9]>
41 <script language="javascript" type="text/javascript" src="${h.url('/js/excanvas.min.js')}"></script>
41 <script language="javascript" type="text/javascript" src="${h.url('/js/excanvas.min.js')}"></script>
42 <![endif]-->
42 <![endif]-->
43 <script type="text/javascript" src="${h.url('/js/yui.flot.js')}"></script>
43 <script type="text/javascript" src="${h.url('/js/yui.flot.js')}"></script>
44 <script type="text/javascript" src="${h.url('/js/rhodecode.js')}"></script>
44 <script type="text/javascript" src="${h.url('/js/rhodecode.js')}"></script>
45 ## EXTRA FOR JS
45 ## EXTRA FOR JS
46 ${self.js_extra()}
46 ${self.js_extra()}
47
47
48 <script type="text/javascript">
48 <script type="text/javascript">
49 var follow_base_url = "${h.url('toggle_following')}";
49 var follow_base_url = "${h.url('toggle_following')}";
50 var stop_follow_text = "${_('Stop following this repository')}";
50
51 var start_follow_text = "${_('Start following this repository')}";
51 //JS translations map
52
52 var TRANSLATION_MAP = {
53 'add another comment':'${_("add another comment")}',
54 'Stop following this repository':"${_('Stop following this repository')}",
55 'Start following this repository':"${_('Start following this repository')}",
56 };
53
57
54 var onSuccessFollow = function(target){
58 var onSuccessFollow = function(target){
55 var f = YUD.get(target.id);
59 var f = YUD.get(target.id);
56 var f_cnt = YUD.get('current_followers_count');
60 var f_cnt = YUD.get('current_followers_count');
57
61
58 if(f.getAttribute('class')=='follow'){
62 if(f.getAttribute('class')=='follow'){
59 f.setAttribute('class','following');
63 f.setAttribute('class','following');
60 f.setAttribute('title',stop_follow_text);
64 f.setAttribute('title',TRANSLATION_MAP['Stop following this repository']);
61
65
62 if(f_cnt){
66 if(f_cnt){
63 var cnt = Number(f_cnt.innerHTML)+1;
67 var cnt = Number(f_cnt.innerHTML)+1;
64 f_cnt.innerHTML = cnt;
68 f_cnt.innerHTML = cnt;
65 }
69 }
66 }
70 }
67 else{
71 else{
68 f.setAttribute('class','follow');
72 f.setAttribute('class','follow');
69 f.setAttribute('title',start_follow_text);
73 f.setAttribute('title',TRANSLATION_MAP['Start following this repository']);
70 if(f_cnt){
74 if(f_cnt){
71 var cnt = Number(f_cnt.innerHTML)+1;
75 var cnt = Number(f_cnt.innerHTML)+1;
72 f_cnt.innerHTML = cnt;
76 f_cnt.innerHTML = cnt;
73 }
77 }
74 }
78 }
75 }
79 }
76
80
77 var toggleFollowingUser = function(target,fallows_user_id,token,user_id){
81 var toggleFollowingUser = function(target,fallows_user_id,token,user_id){
78 args = 'follows_user_id='+fallows_user_id;
82 args = 'follows_user_id='+fallows_user_id;
79 args+= '&amp;auth_token='+token;
83 args+= '&amp;auth_token='+token;
80 if(user_id != undefined){
84 if(user_id != undefined){
81 args+="&amp;user_id="+user_id;
85 args+="&amp;user_id="+user_id;
82 }
86 }
83 YUC.asyncRequest('POST',follow_base_url,{
87 YUC.asyncRequest('POST',follow_base_url,{
84 success:function(o){
88 success:function(o){
85 onSuccessFollow(target);
89 onSuccessFollow(target);
86 }
90 }
87 },args);
91 },args);
88 return false;
92 return false;
89 }
93 }
90
94
91 var toggleFollowingRepo = function(target,fallows_repo_id,token,user_id){
95 var toggleFollowingRepo = function(target,fallows_repo_id,token,user_id){
92
96
93 args = 'follows_repo_id='+fallows_repo_id;
97 args = 'follows_repo_id='+fallows_repo_id;
94 args+= '&amp;auth_token='+token;
98 args+= '&amp;auth_token='+token;
95 if(user_id != undefined){
99 if(user_id != undefined){
96 args+="&amp;user_id="+user_id;
100 args+="&amp;user_id="+user_id;
97 }
101 }
98 YUC.asyncRequest('POST',follow_base_url,{
102 YUC.asyncRequest('POST',follow_base_url,{
99 success:function(o){
103 success:function(o){
100 onSuccessFollow(target);
104 onSuccessFollow(target);
101 }
105 }
102 },args);
106 },args);
103 return false;
107 return false;
104 }
108 }
105 YUE.onDOMReady(function(){
109 YUE.onDOMReady(function(){
106 tooltip_activate();
110 tooltip_activate();
107 show_more_event();
111 show_more_event();
108
112
109 YUE.on('quick_login_link','click',function(e){
113 YUE.on('quick_login_link','click',function(e){
110 // make sure we don't redirect
114 // make sure we don't redirect
111 YUE.preventDefault(e);
115 YUE.preventDefault(e);
112
116
113 if(YUD.hasClass('quick_login_link','enabled')){
117 if(YUD.hasClass('quick_login_link','enabled')){
114 YUD.setStyle('quick_login','display','none');
118 YUD.setStyle('quick_login','display','none');
115 YUD.removeClass('quick_login_link','enabled');
119 YUD.removeClass('quick_login_link','enabled');
116 }
120 }
117 else{
121 else{
118 YUD.setStyle('quick_login','display','');
122 YUD.setStyle('quick_login','display','');
119 YUD.addClass('quick_login_link','enabled');
123 YUD.addClass('quick_login_link','enabled');
120 var usr = YUD.get('username');
124 var usr = YUD.get('username');
121 if(usr){
125 if(usr){
122 usr.focus();
126 usr.focus();
123 }
127 }
124 }
128 }
125 });
129 });
126 })
130 })
127 </script>
131 </script>
128 </%def>
132 </%def>
129 <%def name="js_extra()"></%def>
133 <%def name="js_extra()"></%def>
130 ${self.js()}
134 ${self.js()}
131 </head>
135 </head>
132 <body id="body">
136 <body id="body">
133 ## IE hacks
137 ## IE hacks
134 <!--[if IE 7]>
138 <!--[if IE 7]>
135 <script>YUD.addClass(document.body,'ie7')</script>
139 <script>YUD.addClass(document.body,'ie7')</script>
136 <![endif]-->
140 <![endif]-->
137 <!--[if IE 8]>
141 <!--[if IE 8]>
138 <script>YUD.addClass(document.body,'ie8')</script>
142 <script>YUD.addClass(document.body,'ie8')</script>
139 <![endif]-->
143 <![endif]-->
140 <!--[if IE 9]>
144 <!--[if IE 9]>
141 <script>YUD.addClass(document.body,'ie9')</script>
145 <script>YUD.addClass(document.body,'ie9')</script>
142 <![endif]-->
146 <![endif]-->
143
147
144 ${next.body()}
148 ${next.body()}
145 </body>
149 </body>
146 </html>
150 </html>
@@ -1,192 +1,161 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2
2
3 <%inherit file="/base/base.html"/>
3 <%inherit file="/base/base.html"/>
4
4
5 <%def name="title()">
5 <%def name="title()">
6 ${c.repo_name} ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} - ${c.rhodecode_name}
6 ${c.repo_name} ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} - ${c.rhodecode_name}
7 </%def>
7 </%def>
8
8
9 <%def name="breadcrumbs_links()">
9 <%def name="breadcrumbs_links()">
10 ${h.link_to(u'Home',h.url('/'))}
10 ${h.link_to(u'Home',h.url('/'))}
11 &raquo;
11 &raquo;
12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
13 &raquo;
13 &raquo;
14 ${_('Changeset')} - <span class='hash'>r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}</span>
14 ${_('Changeset')} - <span class='hash'>r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}</span>
15 </%def>
15 </%def>
16
16
17 <%def name="page_nav()">
17 <%def name="page_nav()">
18 ${self.menu('changelog')}
18 ${self.menu('changelog')}
19 </%def>
19 </%def>
20
20
21 <%def name="main()">
21 <%def name="main()">
22 <div class="box">
22 <div class="box">
23 <!-- box / title -->
23 <!-- box / title -->
24 <div class="title">
24 <div class="title">
25 ${self.breadcrumbs()}
25 ${self.breadcrumbs()}
26 </div>
26 </div>
27 <div class="table">
27 <div class="table">
28 <div class="diffblock">
28 <div class="diffblock">
29 <div class="code-header">
29 <div class="code-header">
30 <div class="hash">
30 <div class="hash">
31 r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
31 r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
32 </div>
32 </div>
33 <div class="date">
33 <div class="date">
34 ${c.changeset.date}
34 ${c.changeset.date}
35 </div>
35 </div>
36 <div class="diff-actions">
36 <div class="diff-actions">
37 <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show')}" title="${_('raw diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
37 <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show')}" title="${_('raw diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
38 <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}" title="${_('download diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white_get.png')}"/></a>
38 <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}" title="${_('download diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white_get.png')}"/></a>
39 ${c.ignorews_url(request.GET)}
39 ${c.ignorews_url(request.GET)}
40 ${c.context_url(request.GET)}
40 ${c.context_url(request.GET)}
41 </div>
41 </div>
42 <div class="comments-number" style="float:right;padding-right:5px">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
42 <div class="comments-number" style="float:right;padding-right:5px">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
43 </div>
43 </div>
44 </div>
44 </div>
45 <div id="changeset_content">
45 <div id="changeset_content">
46 <div class="container">
46 <div class="container">
47 <div class="left">
47 <div class="left">
48 <div class="author">
48 <div class="author">
49 <div class="gravatar">
49 <div class="gravatar">
50 <img alt="gravatar" src="${h.gravatar_url(h.email(c.changeset.author),20)}"/>
50 <img alt="gravatar" src="${h.gravatar_url(h.email(c.changeset.author),20)}"/>
51 </div>
51 </div>
52 <span>${h.person(c.changeset.author)}</span><br/>
52 <span>${h.person(c.changeset.author)}</span><br/>
53 <span><a href="mailto:${h.email_or_none(c.changeset.author)}">${h.email_or_none(c.changeset.author)}</a></span><br/>
53 <span><a href="mailto:${h.email_or_none(c.changeset.author)}">${h.email_or_none(c.changeset.author)}</a></span><br/>
54 </div>
54 </div>
55 <div class="message">${h.urlify_commit(h.wrap_paragraphs(c.changeset.message),c.repo_name)}</div>
55 <div class="message">${h.urlify_commit(h.wrap_paragraphs(c.changeset.message),c.repo_name)}</div>
56 </div>
56 </div>
57 <div class="right">
57 <div class="right">
58 <div class="changes">
58 <div class="changes">
59 % if len(c.changeset.affected_files) <= c.affected_files_cut_off:
59 % if len(c.changeset.affected_files) <= c.affected_files_cut_off:
60 <span class="removed" title="${_('removed')}">${len(c.changeset.removed)}</span>
60 <span class="removed" title="${_('removed')}">${len(c.changeset.removed)}</span>
61 <span class="changed" title="${_('changed')}">${len(c.changeset.changed)}</span>
61 <span class="changed" title="${_('changed')}">${len(c.changeset.changed)}</span>
62 <span class="added" title="${_('added')}">${len(c.changeset.added)}</span>
62 <span class="added" title="${_('added')}">${len(c.changeset.added)}</span>
63 % else:
63 % else:
64 <span class="removed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
64 <span class="removed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
65 <span class="changed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
65 <span class="changed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
66 <span class="added" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
66 <span class="added" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
67 % endif
67 % endif
68 </div>
68 </div>
69
69
70 %if c.changeset.parents:
70 %if c.changeset.parents:
71 %for p_cs in reversed(c.changeset.parents):
71 %for p_cs in reversed(c.changeset.parents):
72 <div class="parent">${_('Parent')}
72 <div class="parent">${_('Parent')}
73 <span class="changeset_id">${p_cs.revision}:<span class="changeset_hash">${h.link_to(h.short_id(p_cs.raw_id),
73 <span class="changeset_id">${p_cs.revision}:<span class="changeset_hash">${h.link_to(h.short_id(p_cs.raw_id),
74 h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}</span></span>
74 h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}</span></span>
75 </div>
75 </div>
76 %endfor
76 %endfor
77 %else:
77 %else:
78 <div class="parent">${_('No parents')}</div>
78 <div class="parent">${_('No parents')}</div>
79 %endif
79 %endif
80 <span class="logtags">
80 <span class="logtags">
81 %if len(c.changeset.parents)>1:
81 %if len(c.changeset.parents)>1:
82 <span class="merge">${_('merge')}</span>
82 <span class="merge">${_('merge')}</span>
83 %endif
83 %endif
84 <span class="branchtag" title="${'%s %s' % (_('branch'),c.changeset.branch)}">
84 <span class="branchtag" title="${'%s %s' % (_('branch'),c.changeset.branch)}">
85 ${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
85 ${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
86 %for tag in c.changeset.tags:
86 %for tag in c.changeset.tags:
87 <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
87 <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
88 ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
88 ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
89 %endfor
89 %endfor
90 </span>
90 </span>
91 </div>
91 </div>
92 </div>
92 </div>
93 <span>
93 <span>
94 ${_('%s files affected with %s insertions and %s deletions:') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
94 ${_('%s files affected with %s insertions and %s deletions:') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
95 </span>
95 </span>
96 <div class="cs_files">
96 <div class="cs_files">
97 %for change,filenode,diff,cs1,cs2,stat in c.changes:
97 %for change,filenode,diff,cs1,cs2,stat in c.changes:
98 <div class="cs_${change}">
98 <div class="cs_${change}">
99 <div class="node">
99 <div class="node">
100 %if change != 'removed':
100 %if change != 'removed':
101 ${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path,request.GET)+"_target")}
101 ${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path,request.GET)+"_target")}
102 %else:
102 %else:
103 ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID('',filenode.path)))}
103 ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID('',filenode.path)))}
104 %endif
104 %endif
105 </div>
105 </div>
106 <div class="changes">${h.fancy_file_stats(stat)}</div>
106 <div class="changes">${h.fancy_file_stats(stat)}</div>
107 </div>
107 </div>
108 %endfor
108 %endfor
109 % if c.cut_off:
109 % if c.cut_off:
110 ${_('Changeset was too big and was cut off...')}
110 ${_('Changeset was too big and was cut off...')}
111 % endif
111 % endif
112 </div>
112 </div>
113 </div>
113 </div>
114
114
115 </div>
115 </div>
116
116
117 ## diff block
117 ## diff block
118 <%namespace name="diff_block" file="/changeset/diff_block.html"/>
118 <%namespace name="diff_block" file="/changeset/diff_block.html"/>
119 ${diff_block.diff_block(c.changes)}
119 ${diff_block.diff_block(c.changes)}
120
120
121 ## template for inline comment form
121 ## template for inline comment form
122 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
122 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
123 ${comment.comment_inline_form(c.changeset)}
123 ${comment.comment_inline_form(c.changeset)}
124
124
125 ## render comments
125 ${comment.comments(c.changeset)}
126 ${comment.comments(c.changeset)}
126
127 <script type="text/javascript">
127 <script type="text/javascript">
128 var deleteComment = function(comment_id){
129
130 var url = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}".replace('__COMMENT_ID__',comment_id);
131 var postData = '_method=delete';
132 var success = function(o){
133 var n = YUD.get('comment-'+comment_id);
134 n.parentNode.removeChild(n);
135 }
136 ajaxPOST(url,postData,success);
137 }
138
139 YUE.onDOMReady(function(){
128 YUE.onDOMReady(function(){
140
129 AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
130 AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}"
141 YUE.on(YUQ('.show-inline-comments'),'change',function(e){
131 YUE.on(YUQ('.show-inline-comments'),'change',function(e){
142 var show = 'none';
132 var show = 'none';
143 var target = e.currentTarget;
133 var target = e.currentTarget;
144 if(target.checked){
134 if(target.checked){
145 var show = ''
135 var show = ''
146 }
136 }
147 var boxid = YUD.getAttribute(target,'id_for');
137 var boxid = YUD.getAttribute(target,'id_for');
148 var comments = YUQ('#{0} .inline-comments'.format(boxid));
138 var comments = YUQ('#{0} .inline-comments'.format(boxid));
149 for(c in comments){
139 for(c in comments){
150 YUD.setStyle(comments[c],'display',show);
140 YUD.setStyle(comments[c],'display',show);
151 }
141 }
152 var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
142 var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
153 for(c in btns){
143 for(c in btns){
154 YUD.setStyle(btns[c],'display',show);
144 YUD.setStyle(btns[c],'display',show);
155 }
145 }
156 })
146 })
157
147
158 YUE.on(YUQ('.line'),'click',function(e){
148 YUE.on(YUQ('.line'),'click',function(e){
159 var tr = e.currentTarget;
149 var tr = e.currentTarget;
160 injectInlineForm(tr);
150 injectInlineForm(tr);
161 });
151 });
162
152
163 // inject comments into they proper positions
153 // inject comments into they proper positions
164 var file_comments = YUQ('.inline-comment-placeholder');
154 var file_comments = YUQ('.inline-comment-placeholder');
165
155 renderInlineComments(file_comments);
166 for (f in file_comments){
167 var box = file_comments[f];
168 var inlines = box.children;
169 for(var i=0; i<inlines.length; i++){
170 try{
171
172 var inline = inlines[i];
173 var lineno = YUD.getAttribute(inlines[i],'line');
174 var lineid = "{0}_{1}".format(YUD.getAttribute(inline,'target_id'),lineno);
175 var target_line = YUD.get(lineid);
176
177 var add = createInlineAddButton(target_line.parentNode,'${_("add another comment")}');
178 YUD.insertAfter(add,target_line.parentNode);
179
180 var comment = new YAHOO.util.Element(tableTr('inline-comments',inline.innerHTML))
181 YUD.insertAfter(comment,target_line.parentNode);
182 }catch(e){
183 console.log(e);
184 }
185 }
186 }
187 })
156 })
188
157
189 </script>
158 </script>
190
159
191 </div>
160 </div>
192 </%def>
161 </%def>
@@ -1,105 +1,110 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 ## usage:
2 ## usage:
3 ## <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
3 ## <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
4 ## ${comment.comment_block(co)}
4 ## ${comment.comment_block(co)}
5 ##
5 ##
6 <%def name="comment_block(co)">
6 <%def name="comment_block(co)">
7 <div class="comment" id="comment-${co.comment_id}">
7 <div class="comment" id="comment-${co.comment_id}" line="${co.line_no}">
8 <div class="comment-wrapp">
8 <div class="comment-wrapp">
9 <div class="meta">
9 <div class="meta">
10 <span class="user">
10 <span class="user">
11 <img src="${h.gravatar_url(co.author.email, 20)}" />
11 <img src="${h.gravatar_url(co.author.email, 20)}" />
12 ${co.author.username}
12 ${co.author.username}
13 </span>
13 </span>
14 <span class="date">
14 <span class="date">
15 ${h.age(co.modified_at)}
15 ${h.age(co.modified_at)}
16 </span>
16 </span>
17 %if h.HasPermissionAny('hg.admin', 'repository.admin')() or co.author.user_id == c.rhodecode_user.user_id:
17 %if h.HasPermissionAny('hg.admin', 'repository.admin')() or co.author.user_id == c.rhodecode_user.user_id:
18 <span class="buttons">
18 <span class="buttons">
19 <span onClick="deleteComment(${co.comment_id})" class="delete-comment ui-btn">${_('Delete')}</span>
19 <span onClick="deleteComment(${co.comment_id})" class="delete-comment ui-btn">${_('Delete')}</span>
20 </span>
20 </span>
21 %endif
21 %endif
22 </div>
22 </div>
23 <div class="text">
23 <div class="text">
24 ${h.rst_w_mentions(co.text)|n}
24 ${h.rst_w_mentions(co.text)|n}
25 </div>
25 </div>
26 </div>
26 </div>
27 </div>
27 </div>
28 </%def>
28 </%def>
29
29
30
30
31 <%def name="comment_inline_form(changeset)">
31 <%def name="comment_inline_form(changeset)">
32 <div id='comment-inline-form-template' style="display:none">
32 <div id='comment-inline-form-template' style="display:none">
33 <div class="comment-inline-form">
33 <div class="comment-inline-form">
34 %if c.rhodecode_user.username != 'default':
34 %if c.rhodecode_user.username != 'default':
35 ${h.form(h.url('changeset_comment', repo_name=c.repo_name, revision=changeset.raw_id))}
35 <div class="overlay"><div class="overlay-text">${_('Submitting...')}</div></div>
36 ${h.form(h.url('changeset_comment', repo_name=c.repo_name, revision=changeset.raw_id),class_='inline-form')}
36 <div class="clearfix">
37 <div class="clearfix">
37 <div class="comment-help">${_('Commenting on line')} {1}. ${_('Comments parsed using')}
38 <div class="comment-help">${_('Commenting on line')} {1}. ${_('Comments parsed using')}
38 <a href="${h.url('rst_help')}">RST</a> ${_('syntax')} ${_('with')}
39 <a href="${h.url('rst_help')}">RST</a> ${_('syntax')} ${_('with')}
39 <span style="color:#003367" class="tooltip" title="${_('Use @username inside this text to send notification to this RhodeCode user')}">@mention</span> ${_('support')}
40 <span style="color:#003367" class="tooltip" title="${_('Use @username inside this text to send notification to this RhodeCode user')}">@mention</span> ${_('support')}
40 </div>
41 </div>
41 <textarea id="text_{1}" name="text"></textarea>
42 <textarea id="text_{1}" name="text"></textarea>
42 </div>
43 </div>
43 <div class="comment-button">
44 <div class="comment-button">
44 <input type="hidden" name="f_path" value="{0}">
45 <input type="hidden" name="f_path" value="{0}">
45 <input type="hidden" name="line" value="{1}">
46 <input type="hidden" name="line" value="{1}">
46 ${h.submit('save', _('Comment'), class_='ui-btn')}
47 ${h.submit('save', _('Comment'), class_='ui-btn save-inline-form')}
47 ${h.reset('hide-inline-form', _('Hide'), class_='ui-btn hide-inline-form')}
48 ${h.reset('hide-inline-form', _('Hide'), class_='ui-btn hide-inline-form')}
48 </div>
49 </div>
49 ${h.end_form()}
50 ${h.end_form()}
50 %else:
51 %else:
51 ${h.form('')}
52 ${h.form('')}
52 <div class="clearfix">
53 <div class="clearfix">
53 <div class="comment-help">
54 <div class="comment-help">
54 ${'You need to be logged in to comment.'} <a href="${h.url('login_home',came_from=h.url.current())}">${_('Login now')}</a>
55 ${'You need to be logged in to comment.'} <a href="${h.url('login_home',came_from=h.url.current())}">${_('Login now')}</a>
55 </div>
56 </div>
56 </div>
57 </div>
57 <div class="comment-button">
58 <div class="comment-button">
58 ${h.reset('hide-inline-form', _('Hide'), class_='ui-btn hide-inline-form')}
59 ${h.reset('hide-inline-form', _('Hide'), class_='ui-btn hide-inline-form')}
59 </div>
60 </div>
60 ${h.end_form()}
61 ${h.end_form()}
61 %endif
62 %endif
62 </div>
63 </div>
63 </div>
64 </div>
64 </%def>
65 </%def>
65
66
66
67
67 <%def name="comments(changeset)">
68 <%def name="inlines(changeset)">
68
69 <div class="comments">
70 <div class="comments-number">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
69 <div class="comments-number">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
71
72 %for path, lines in c.inline_comments:
70 %for path, lines in c.inline_comments:
73 <div style="display:none" class="inline-comment-placeholder" path="${path}" target_id="${h.FID(changeset.raw_id,path)}">
74 % for line,comments in lines.iteritems():
71 % for line,comments in lines.iteritems():
75 <div class="inline-comment-placeholder-line" line="${line}" target_id="${h.safeid(h.safe_unicode(path))}">
72 <div style="display:none" class="inline-comment-placeholder" path="${path}" target_id="${h.safeid(h.safe_unicode(path))}">
76 %for co in comments:
73 %for co in comments:
77 ${comment_block(co)}
74 ${comment_block(co)}
78 %endfor
75 %endfor
79 </div>
76 </div>
80 %endfor
77 %endfor
81 </div>
82 %endfor
78 %endfor
79
80 </%def>
83
81
82 <%def name="comments(changeset)">
83
84 <div class="comments">
85 <div id="inline-comments-container">
86 ${inlines(changeset)}
87 </div>
88
84 %for co in c.comments:
89 %for co in c.comments:
85 ${comment_block(co)}
90 ${comment_block(co)}
86 %endfor
91 %endfor
87 %if c.rhodecode_user.username != 'default':
92 %if c.rhodecode_user.username != 'default':
88 <div class="comment-form">
93 <div class="comment-form">
89 ${h.form(h.url('changeset_comment', repo_name=c.repo_name, revision=changeset.raw_id))}
94 ${h.form(h.url('changeset_comment', repo_name=c.repo_name, revision=changeset.raw_id))}
90 <strong>${_('Leave a comment')}</strong>
95 <strong>${_('Leave a comment')}</strong>
91 <div class="clearfix">
96 <div class="clearfix">
92 <div class="comment-help">
97 <div class="comment-help">
93 ${_('Comments parsed using')} <a href="${h.url('rst_help')}">RST</a> ${_('syntax')}
98 ${_('Comments parsed using')} <a href="${h.url('rst_help')}">RST</a> ${_('syntax')}
94 ${_('with')} <span style="color:#003367" class="tooltip" title="${_('Use @username inside this text to send notification to this RhodeCode user')}">@mention</span> ${_('support')}
99 ${_('with')} <span style="color:#003367" class="tooltip" title="${_('Use @username inside this text to send notification to this RhodeCode user')}">@mention</span> ${_('support')}
95 </div>
100 </div>
96 ${h.textarea('text')}
101 ${h.textarea('text')}
97 </div>
102 </div>
98 <div class="comment-button">
103 <div class="comment-button">
99 ${h.submit('save', _('Comment'), class_='ui-button')}
104 ${h.submit('save', _('Comment'), class_='ui-button')}
100 </div>
105 </div>
101 ${h.end_form()}
106 ${h.end_form()}
102 </div>
107 </div>
103 %endif
108 %endif
104 </div>
109 </div>
105 </%def>
110 </%def>
General Comments 0
You need to be logged in to leave comments. Login now