##// END OF EJS Templates
new files views...
marcink -
r1737:61eda8bf beta
parent child Browse files
Show More
@@ -1,512 +1,512 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.controllers.files
3 rhodecode.controllers.files
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
5
6 Files controller for RhodeCode
6 Files controller for RhodeCode
7
7
8 :created_on: Apr 21, 2010
8 :created_on: Apr 21, 2010
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2009-2011 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 os
26 import os
27 import logging
27 import logging
28 import traceback
28 import traceback
29
29
30 from os.path import join as jn
30 from os.path import join as jn
31
31
32 from pylons import request, response, session, tmpl_context as c, url
32 from pylons import request, response, session, tmpl_context as c, url
33 from pylons.i18n.translation import _
33 from pylons.i18n.translation import _
34 from pylons.controllers.util import redirect
34 from pylons.controllers.util import redirect
35 from pylons.decorators import jsonify
35 from pylons.decorators import jsonify
36
36
37 from vcs.conf import settings
37 from vcs.conf import settings
38 from vcs.exceptions import RepositoryError, ChangesetDoesNotExistError, \
38 from vcs.exceptions import RepositoryError, ChangesetDoesNotExistError, \
39 EmptyRepositoryError, ImproperArchiveTypeError, VCSError, NodeAlreadyExistsError
39 EmptyRepositoryError, ImproperArchiveTypeError, VCSError, NodeAlreadyExistsError
40 from vcs.nodes import FileNode, NodeKind
40 from vcs.nodes import FileNode, NodeKind
41 from vcs.utils import diffs as differ
41 from vcs.utils import diffs as differ
42
42
43 from rhodecode.lib import convert_line_endings, detect_mode, safe_str
43 from rhodecode.lib import convert_line_endings, detect_mode, safe_str
44 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
44 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
45 from rhodecode.lib.base import BaseRepoController, render
45 from rhodecode.lib.base import BaseRepoController, render
46 from rhodecode.lib.utils import EmptyChangeset
46 from rhodecode.lib.utils import EmptyChangeset
47 import rhodecode.lib.helpers as h
47 import rhodecode.lib.helpers as h
48 from rhodecode.model.repo import RepoModel
48 from rhodecode.model.repo import RepoModel
49
49
50 log = logging.getLogger(__name__)
50 log = logging.getLogger(__name__)
51
51
52
52
53 class FilesController(BaseRepoController):
53 class FilesController(BaseRepoController):
54
54
55 @LoginRequired()
55 @LoginRequired()
56 def __before__(self):
56 def __before__(self):
57 super(FilesController, self).__before__()
57 super(FilesController, self).__before__()
58 c.cut_off_limit = self.cut_off_limit
58 c.cut_off_limit = self.cut_off_limit
59
59
60 def __get_cs_or_redirect(self, rev, repo_name, redirect_after=True):
60 def __get_cs_or_redirect(self, rev, repo_name, redirect_after=True):
61 """
61 """
62 Safe way to get changeset if error occur it redirects to tip with
62 Safe way to get changeset if error occur it redirects to tip with
63 proper message
63 proper message
64
64
65 :param rev: revision to fetch
65 :param rev: revision to fetch
66 :param repo_name: repo name to redirect after
66 :param repo_name: repo name to redirect after
67 """
67 """
68
68
69 try:
69 try:
70 return c.rhodecode_repo.get_changeset(rev)
70 return c.rhodecode_repo.get_changeset(rev)
71 except EmptyRepositoryError, e:
71 except EmptyRepositoryError, e:
72 if not redirect_after:
72 if not redirect_after:
73 return None
73 return None
74 url_ = url('files_add_home',
74 url_ = url('files_add_home',
75 repo_name=c.repo_name,
75 repo_name=c.repo_name,
76 revision=0, f_path='')
76 revision=0, f_path='')
77 add_new = '<a href="%s">[%s]</a>' % (url_, _('add new'))
77 add_new = '<a href="%s">[%s]</a>' % (url_, _('add new'))
78 h.flash(h.literal(_('There are no files yet %s' % add_new)),
78 h.flash(h.literal(_('There are no files yet %s' % add_new)),
79 category='warning')
79 category='warning')
80 redirect(h.url('summary_home', repo_name=repo_name))
80 redirect(h.url('summary_home', repo_name=repo_name))
81
81
82 except RepositoryError, e:
82 except RepositoryError, e:
83 h.flash(str(e), category='warning')
83 h.flash(str(e), category='warning')
84 redirect(h.url('files_home', repo_name=repo_name, revision='tip'))
84 redirect(h.url('files_home', repo_name=repo_name, revision='tip'))
85
85
86 def __get_filenode_or_redirect(self, repo_name, cs, path):
86 def __get_filenode_or_redirect(self, repo_name, cs, path):
87 """
87 """
88 Returns file_node, if error occurs or given path is directory,
88 Returns file_node, if error occurs or given path is directory,
89 it'll redirect to top level path
89 it'll redirect to top level path
90
90
91 :param repo_name: repo_name
91 :param repo_name: repo_name
92 :param cs: given changeset
92 :param cs: given changeset
93 :param path: path to lookup
93 :param path: path to lookup
94 """
94 """
95
95
96 try:
96 try:
97 file_node = cs.get_node(path)
97 file_node = cs.get_node(path)
98 if file_node.is_dir():
98 if file_node.is_dir():
99 raise RepositoryError('given path is a directory')
99 raise RepositoryError('given path is a directory')
100 except RepositoryError, e:
100 except RepositoryError, e:
101 h.flash(str(e), category='warning')
101 h.flash(str(e), category='warning')
102 redirect(h.url('files_home', repo_name=repo_name,
102 redirect(h.url('files_home', repo_name=repo_name,
103 revision=cs.raw_id))
103 revision=cs.raw_id))
104
104
105 return file_node
105 return file_node
106
106
107
107
108 def __get_paths(self, changeset, starting_path):
108 def __get_paths(self, changeset, starting_path):
109 """recursive walk in root dir and return a set of all path in that dir
109 """recursive walk in root dir and return a set of all path in that dir
110 based on repository walk function
110 based on repository walk function
111 """
111 """
112 _files = list()
112 _files = list()
113 _dirs = list()
113 _dirs = list()
114
114
115 try:
115 try:
116 tip = changeset
116 tip = changeset
117 for topnode, dirs, files in tip.walk(starting_path):
117 for topnode, dirs, files in tip.walk(starting_path):
118 for f in files:
118 for f in files:
119 _files.append(f.path)
119 _files.append(f.path)
120 for d in dirs:
120 for d in dirs:
121 _dirs.append(d.path)
121 _dirs.append(d.path)
122 except RepositoryError, e:
122 except RepositoryError, e:
123 log.debug(traceback.format_exc())
123 log.debug(traceback.format_exc())
124 pass
124 pass
125 return _dirs, _files
125 return _dirs, _files
126
126
127 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
127 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
128 'repository.admin')
128 'repository.admin')
129 def index(self, repo_name, revision, f_path):
129 def index(self, repo_name, revision, f_path):
130 #reditect to given revision from form if given
130 #reditect to given revision from form if given
131 post_revision = request.POST.get('at_rev', None)
131 post_revision = request.POST.get('at_rev', None)
132 if post_revision:
132 if post_revision:
133 cs = self.__get_cs_or_redirect(post_revision, repo_name)
133 cs = self.__get_cs_or_redirect(post_revision, repo_name)
134 redirect(url('files_home', repo_name=c.repo_name,
134 redirect(url('files_home', repo_name=c.repo_name,
135 revision=cs.raw_id, f_path=f_path))
135 revision=cs.raw_id, f_path=f_path))
136
136
137 c.changeset = self.__get_cs_or_redirect(revision, repo_name)
137 c.changeset = self.__get_cs_or_redirect(revision, repo_name)
138 c.branch = request.GET.get('branch', None)
138 c.branch = request.GET.get('branch', None)
139 c.f_path = f_path
139 c.f_path = f_path
140
140
141 cur_rev = c.changeset.revision
141 cur_rev = c.changeset.revision
142
142
143 #prev link
143 #prev link
144 try:
144 try:
145 prev_rev = c.rhodecode_repo.get_changeset(cur_rev).prev(c.branch)
145 prev_rev = c.rhodecode_repo.get_changeset(cur_rev).prev(c.branch)
146 c.url_prev = url('files_home', repo_name=c.repo_name,
146 c.url_prev = url('files_home', repo_name=c.repo_name,
147 revision=prev_rev.raw_id, f_path=f_path)
147 revision=prev_rev.raw_id, f_path=f_path)
148 if c.branch:
148 if c.branch:
149 c.url_prev += '?branch=%s' % c.branch
149 c.url_prev += '?branch=%s' % c.branch
150 except (ChangesetDoesNotExistError, VCSError):
150 except (ChangesetDoesNotExistError, VCSError):
151 c.url_prev = '#'
151 c.url_prev = '#'
152
152
153 #next link
153 #next link
154 try:
154 try:
155 next_rev = c.rhodecode_repo.get_changeset(cur_rev).next(c.branch)
155 next_rev = c.rhodecode_repo.get_changeset(cur_rev).next(c.branch)
156 c.url_next = url('files_home', repo_name=c.repo_name,
156 c.url_next = url('files_home', repo_name=c.repo_name,
157 revision=next_rev.raw_id, f_path=f_path)
157 revision=next_rev.raw_id, f_path=f_path)
158 if c.branch:
158 if c.branch:
159 c.url_next += '?branch=%s' % c.branch
159 c.url_next += '?branch=%s' % c.branch
160 except (ChangesetDoesNotExistError, VCSError):
160 except (ChangesetDoesNotExistError, VCSError):
161 c.url_next = '#'
161 c.url_next = '#'
162
162
163 #files or dirs
163 #files or dirs
164 try:
164 try:
165 c.files_list = c.changeset.get_node(f_path)
165 c.file = c.changeset.get_node(f_path)
166
166
167 if c.files_list.is_file():
167 if c.file.is_file():
168 c.file_history = self._get_node_history(c.changeset, f_path)
168 c.file_history = self._get_node_history(c.changeset, f_path)
169 else:
169 else:
170 c.file_history = []
170 c.file_history = []
171 except RepositoryError, e:
171 except RepositoryError, e:
172 h.flash(str(e), category='warning')
172 h.flash(str(e), category='warning')
173 redirect(h.url('files_home', repo_name=repo_name,
173 redirect(h.url('files_home', repo_name=repo_name,
174 revision=revision))
174 revision=revision))
175
175
176 return render('files/files.html')
176 return render('files/files.html')
177
177
178 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
178 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
179 'repository.admin')
179 'repository.admin')
180 def rawfile(self, repo_name, revision, f_path):
180 def rawfile(self, repo_name, revision, f_path):
181 cs = self.__get_cs_or_redirect(revision, repo_name)
181 cs = self.__get_cs_or_redirect(revision, repo_name)
182 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
182 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
183
183
184 response.content_disposition = 'attachment; filename=%s' % \
184 response.content_disposition = 'attachment; filename=%s' % \
185 safe_str(f_path.split(os.sep)[-1])
185 safe_str(f_path.split(os.sep)[-1])
186
186
187 response.content_type = file_node.mimetype
187 response.content_type = file_node.mimetype
188 return file_node.content
188 return file_node.content
189
189
190 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
190 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
191 'repository.admin')
191 'repository.admin')
192 def raw(self, repo_name, revision, f_path):
192 def raw(self, repo_name, revision, f_path):
193 cs = self.__get_cs_or_redirect(revision, repo_name)
193 cs = self.__get_cs_or_redirect(revision, repo_name)
194 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
194 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
195
195
196 raw_mimetype_mapping = {
196 raw_mimetype_mapping = {
197 # map original mimetype to a mimetype used for "show as raw"
197 # map original mimetype to a mimetype used for "show as raw"
198 # you can also provide a content-disposition to override the
198 # you can also provide a content-disposition to override the
199 # default "attachment" disposition.
199 # default "attachment" disposition.
200 # orig_type: (new_type, new_dispo)
200 # orig_type: (new_type, new_dispo)
201
201
202 # show images inline:
202 # show images inline:
203 'image/x-icon': ('image/x-icon', 'inline'),
203 'image/x-icon': ('image/x-icon', 'inline'),
204 'image/png': ('image/png', 'inline'),
204 'image/png': ('image/png', 'inline'),
205 'image/gif': ('image/gif', 'inline'),
205 'image/gif': ('image/gif', 'inline'),
206 'image/jpeg': ('image/jpeg', 'inline'),
206 'image/jpeg': ('image/jpeg', 'inline'),
207 'image/svg+xml': ('image/svg+xml', 'inline'),
207 'image/svg+xml': ('image/svg+xml', 'inline'),
208 }
208 }
209
209
210 mimetype = file_node.mimetype
210 mimetype = file_node.mimetype
211 try:
211 try:
212 mimetype, dispo = raw_mimetype_mapping[mimetype]
212 mimetype, dispo = raw_mimetype_mapping[mimetype]
213 except KeyError:
213 except KeyError:
214 # we don't know anything special about this, handle it safely
214 # we don't know anything special about this, handle it safely
215 if file_node.is_binary:
215 if file_node.is_binary:
216 # do same as download raw for binary files
216 # do same as download raw for binary files
217 mimetype, dispo = 'application/octet-stream', 'attachment'
217 mimetype, dispo = 'application/octet-stream', 'attachment'
218 else:
218 else:
219 # do not just use the original mimetype, but force text/plain,
219 # do not just use the original mimetype, but force text/plain,
220 # otherwise it would serve text/html and that might be unsafe.
220 # otherwise it would serve text/html and that might be unsafe.
221 # Note: underlying vcs library fakes text/plain mimetype if the
221 # Note: underlying vcs library fakes text/plain mimetype if the
222 # mimetype can not be determined and it thinks it is not
222 # mimetype can not be determined and it thinks it is not
223 # binary.This might lead to erroneous text display in some
223 # binary.This might lead to erroneous text display in some
224 # cases, but helps in other cases, like with text files
224 # cases, but helps in other cases, like with text files
225 # without extension.
225 # without extension.
226 mimetype, dispo = 'text/plain', 'inline'
226 mimetype, dispo = 'text/plain', 'inline'
227
227
228 if dispo == 'attachment':
228 if dispo == 'attachment':
229 dispo = 'attachment; filename=%s' % \
229 dispo = 'attachment; filename=%s' % \
230 safe_str(f_path.split(os.sep)[-1])
230 safe_str(f_path.split(os.sep)[-1])
231
231
232 response.content_disposition = dispo
232 response.content_disposition = dispo
233 response.content_type = mimetype
233 response.content_type = mimetype
234 return file_node.content
234 return file_node.content
235
235
236 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
236 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
237 'repository.admin')
237 'repository.admin')
238 def annotate(self, repo_name, revision, f_path):
238 def annotate(self, repo_name, revision, f_path):
239 c.cs = self.__get_cs_or_redirect(revision, repo_name)
239 c.cs = self.__get_cs_or_redirect(revision, repo_name)
240 c.file = self.__get_filenode_or_redirect(repo_name, c.cs, f_path)
240 c.file = self.__get_filenode_or_redirect(repo_name, c.cs, f_path)
241
241
242 c.file_history = self._get_node_history(c.cs, f_path)
242 c.file_history = self._get_node_history(c.cs, f_path)
243 c.f_path = f_path
243 c.f_path = f_path
244 return render('files/files_annotate.html')
244 return render('files/files_annotate.html')
245
245
246 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
246 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
247 def edit(self, repo_name, revision, f_path):
247 def edit(self, repo_name, revision, f_path):
248 r_post = request.POST
248 r_post = request.POST
249
249
250 c.cs = self.__get_cs_or_redirect(revision, repo_name)
250 c.cs = self.__get_cs_or_redirect(revision, repo_name)
251 c.file = self.__get_filenode_or_redirect(repo_name, c.cs, f_path)
251 c.file = self.__get_filenode_or_redirect(repo_name, c.cs, f_path)
252
252
253 if c.file.is_binary:
253 if c.file.is_binary:
254 return redirect(url('files_home', repo_name=c.repo_name,
254 return redirect(url('files_home', repo_name=c.repo_name,
255 revision=c.cs.raw_id, f_path=f_path))
255 revision=c.cs.raw_id, f_path=f_path))
256
256
257 c.f_path = f_path
257 c.f_path = f_path
258
258
259 if r_post:
259 if r_post:
260
260
261 old_content = c.file.content
261 old_content = c.file.content
262 sl = old_content.splitlines(1)
262 sl = old_content.splitlines(1)
263 first_line = sl[0] if sl else ''
263 first_line = sl[0] if sl else ''
264 # modes: 0 - Unix, 1 - Mac, 2 - DOS
264 # modes: 0 - Unix, 1 - Mac, 2 - DOS
265 mode = detect_mode(first_line, 0)
265 mode = detect_mode(first_line, 0)
266 content = convert_line_endings(r_post.get('content'), mode)
266 content = convert_line_endings(r_post.get('content'), mode)
267
267
268 message = r_post.get('message') or (_('Edited %s via RhodeCode')
268 message = r_post.get('message') or (_('Edited %s via RhodeCode')
269 % (f_path))
269 % (f_path))
270 author = self.rhodecode_user.full_contact
270 author = self.rhodecode_user.full_contact
271
271
272 if content == old_content:
272 if content == old_content:
273 h.flash(_('No changes'),
273 h.flash(_('No changes'),
274 category='warning')
274 category='warning')
275 return redirect(url('changeset_home', repo_name=c.repo_name,
275 return redirect(url('changeset_home', repo_name=c.repo_name,
276 revision='tip'))
276 revision='tip'))
277
277
278 try:
278 try:
279 self.scm_model.commit_change(repo=c.rhodecode_repo,
279 self.scm_model.commit_change(repo=c.rhodecode_repo,
280 repo_name=repo_name, cs=c.cs,
280 repo_name=repo_name, cs=c.cs,
281 user=self.rhodecode_user,
281 user=self.rhodecode_user,
282 author=author, message=message,
282 author=author, message=message,
283 content=content, f_path=f_path)
283 content=content, f_path=f_path)
284 h.flash(_('Successfully committed to %s' % f_path),
284 h.flash(_('Successfully committed to %s' % f_path),
285 category='success')
285 category='success')
286
286
287 except Exception:
287 except Exception:
288 log.error(traceback.format_exc())
288 log.error(traceback.format_exc())
289 h.flash(_('Error occurred during commit'), category='error')
289 h.flash(_('Error occurred during commit'), category='error')
290 return redirect(url('changeset_home',
290 return redirect(url('changeset_home',
291 repo_name=c.repo_name, revision='tip'))
291 repo_name=c.repo_name, revision='tip'))
292
292
293 return render('files/files_edit.html')
293 return render('files/files_edit.html')
294
294
295 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
295 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
296 def add(self, repo_name, revision, f_path):
296 def add(self, repo_name, revision, f_path):
297 r_post = request.POST
297 r_post = request.POST
298 c.cs = self.__get_cs_or_redirect(revision, repo_name,
298 c.cs = self.__get_cs_or_redirect(revision, repo_name,
299 redirect_after=False)
299 redirect_after=False)
300 if c.cs is None:
300 if c.cs is None:
301 c.cs = EmptyChangeset(alias=c.rhodecode_repo.alias)
301 c.cs = EmptyChangeset(alias=c.rhodecode_repo.alias)
302
302
303 c.f_path = f_path
303 c.f_path = f_path
304
304
305 if r_post:
305 if r_post:
306 unix_mode = 0
306 unix_mode = 0
307 content = convert_line_endings(r_post.get('content'), unix_mode)
307 content = convert_line_endings(r_post.get('content'), unix_mode)
308
308
309 message = r_post.get('message') or (_('Added %s via RhodeCode')
309 message = r_post.get('message') or (_('Added %s via RhodeCode')
310 % (f_path))
310 % (f_path))
311 location = r_post.get('location')
311 location = r_post.get('location')
312 filename = r_post.get('filename')
312 filename = r_post.get('filename')
313 file_obj = r_post.get('upload_file', None)
313 file_obj = r_post.get('upload_file', None)
314
314
315 if file_obj is not None and hasattr(file_obj, 'filename'):
315 if file_obj is not None and hasattr(file_obj, 'filename'):
316 filename = file_obj.filename
316 filename = file_obj.filename
317 content = file_obj.file
317 content = file_obj.file
318
318
319 node_path = os.path.join(location, filename)
319 node_path = os.path.join(location, filename)
320 author = self.rhodecode_user.full_contact
320 author = self.rhodecode_user.full_contact
321
321
322 if not content:
322 if not content:
323 h.flash(_('No content'), category='warning')
323 h.flash(_('No content'), category='warning')
324 return redirect(url('changeset_home', repo_name=c.repo_name,
324 return redirect(url('changeset_home', repo_name=c.repo_name,
325 revision='tip'))
325 revision='tip'))
326 if not filename:
326 if not filename:
327 h.flash(_('No filename'), category='warning')
327 h.flash(_('No filename'), category='warning')
328 return redirect(url('changeset_home', repo_name=c.repo_name,
328 return redirect(url('changeset_home', repo_name=c.repo_name,
329 revision='tip'))
329 revision='tip'))
330
330
331 try:
331 try:
332 self.scm_model.create_node(repo=c.rhodecode_repo,
332 self.scm_model.create_node(repo=c.rhodecode_repo,
333 repo_name=repo_name, cs=c.cs,
333 repo_name=repo_name, cs=c.cs,
334 user=self.rhodecode_user,
334 user=self.rhodecode_user,
335 author=author, message=message,
335 author=author, message=message,
336 content=content, f_path=node_path)
336 content=content, f_path=node_path)
337 h.flash(_('Successfully committed to %s' % node_path),
337 h.flash(_('Successfully committed to %s' % node_path),
338 category='success')
338 category='success')
339 except NodeAlreadyExistsError, e:
339 except NodeAlreadyExistsError, e:
340 h.flash(_(e), category='error')
340 h.flash(_(e), category='error')
341 except Exception:
341 except Exception:
342 log.error(traceback.format_exc())
342 log.error(traceback.format_exc())
343 h.flash(_('Error occurred during commit'), category='error')
343 h.flash(_('Error occurred during commit'), category='error')
344 return redirect(url('changeset_home',
344 return redirect(url('changeset_home',
345 repo_name=c.repo_name, revision='tip'))
345 repo_name=c.repo_name, revision='tip'))
346
346
347 return render('files/files_add.html')
347 return render('files/files_add.html')
348
348
349 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
349 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
350 'repository.admin')
350 'repository.admin')
351 def archivefile(self, repo_name, fname):
351 def archivefile(self, repo_name, fname):
352
352
353 fileformat = None
353 fileformat = None
354 revision = None
354 revision = None
355 ext = None
355 ext = None
356 subrepos = request.GET.get('subrepos') == 'true'
356 subrepos = request.GET.get('subrepos') == 'true'
357
357
358 for a_type, ext_data in settings.ARCHIVE_SPECS.items():
358 for a_type, ext_data in settings.ARCHIVE_SPECS.items():
359 archive_spec = fname.split(ext_data[1])
359 archive_spec = fname.split(ext_data[1])
360 if len(archive_spec) == 2 and archive_spec[1] == '':
360 if len(archive_spec) == 2 and archive_spec[1] == '':
361 fileformat = a_type or ext_data[1]
361 fileformat = a_type or ext_data[1]
362 revision = archive_spec[0]
362 revision = archive_spec[0]
363 ext = ext_data[1]
363 ext = ext_data[1]
364
364
365 try:
365 try:
366 dbrepo = RepoModel().get_by_repo_name(repo_name)
366 dbrepo = RepoModel().get_by_repo_name(repo_name)
367 if dbrepo.enable_downloads is False:
367 if dbrepo.enable_downloads is False:
368 return _('downloads disabled')
368 return _('downloads disabled')
369
369
370 # patch and reset hooks section of UI config to not run any
370 # patch and reset hooks section of UI config to not run any
371 # hooks on fetching archives with subrepos
371 # hooks on fetching archives with subrepos
372 for k, v in c.rhodecode_repo._repo.ui.configitems('hooks'):
372 for k, v in c.rhodecode_repo._repo.ui.configitems('hooks'):
373 c.rhodecode_repo._repo.ui.setconfig('hooks', k, None)
373 c.rhodecode_repo._repo.ui.setconfig('hooks', k, None)
374
374
375 cs = c.rhodecode_repo.get_changeset(revision)
375 cs = c.rhodecode_repo.get_changeset(revision)
376 content_type = settings.ARCHIVE_SPECS[fileformat][0]
376 content_type = settings.ARCHIVE_SPECS[fileformat][0]
377 except ChangesetDoesNotExistError:
377 except ChangesetDoesNotExistError:
378 return _('Unknown revision %s') % revision
378 return _('Unknown revision %s') % revision
379 except EmptyRepositoryError:
379 except EmptyRepositoryError:
380 return _('Empty repository')
380 return _('Empty repository')
381 except (ImproperArchiveTypeError, KeyError):
381 except (ImproperArchiveTypeError, KeyError):
382 return _('Unknown archive type')
382 return _('Unknown archive type')
383
383
384 response.content_type = content_type
384 response.content_type = content_type
385 response.content_disposition = 'attachment; filename=%s-%s%s' \
385 response.content_disposition = 'attachment; filename=%s-%s%s' \
386 % (repo_name, revision, ext)
386 % (repo_name, revision, ext)
387
387
388 import tempfile
388 import tempfile
389 archive = tempfile.mkstemp()[1]
389 archive = tempfile.mkstemp()[1]
390 t = open(archive, 'wb')
390 t = open(archive, 'wb')
391 cs.fill_archive(stream=t, kind=fileformat, subrepos=subrepos)
391 cs.fill_archive(stream=t, kind=fileformat, subrepos=subrepos)
392
392
393 def get_chunked_archive(archive):
393 def get_chunked_archive(archive):
394 stream = open(archive, 'rb')
394 stream = open(archive, 'rb')
395 while True:
395 while True:
396 data = stream.read(4096)
396 data = stream.read(4096)
397 if not data:
397 if not data:
398 os.remove(archive)
398 os.remove(archive)
399 break
399 break
400 yield data
400 yield data
401
401
402 return get_chunked_archive(archive)
402 return get_chunked_archive(archive)
403
403
404 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
404 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
405 'repository.admin')
405 'repository.admin')
406 def diff(self, repo_name, f_path):
406 def diff(self, repo_name, f_path):
407 diff1 = request.GET.get('diff1')
407 diff1 = request.GET.get('diff1')
408 diff2 = request.GET.get('diff2')
408 diff2 = request.GET.get('diff2')
409 c.action = request.GET.get('diff')
409 c.action = request.GET.get('diff')
410 c.no_changes = diff1 == diff2
410 c.no_changes = diff1 == diff2
411 c.f_path = f_path
411 c.f_path = f_path
412 c.big_diff = False
412 c.big_diff = False
413
413
414 try:
414 try:
415 if diff1 not in ['', None, 'None', '0' * 12, '0' * 40]:
415 if diff1 not in ['', None, 'None', '0' * 12, '0' * 40]:
416 c.changeset_1 = c.rhodecode_repo.get_changeset(diff1)
416 c.changeset_1 = c.rhodecode_repo.get_changeset(diff1)
417 node1 = c.changeset_1.get_node(f_path)
417 node1 = c.changeset_1.get_node(f_path)
418 else:
418 else:
419 c.changeset_1 = EmptyChangeset(repo=c.rhodecode_repo)
419 c.changeset_1 = EmptyChangeset(repo=c.rhodecode_repo)
420 node1 = FileNode('.', '', changeset=c.changeset_1)
420 node1 = FileNode('.', '', changeset=c.changeset_1)
421
421
422 if diff2 not in ['', None, 'None', '0' * 12, '0' * 40]:
422 if diff2 not in ['', None, 'None', '0' * 12, '0' * 40]:
423 c.changeset_2 = c.rhodecode_repo.get_changeset(diff2)
423 c.changeset_2 = c.rhodecode_repo.get_changeset(diff2)
424 node2 = c.changeset_2.get_node(f_path)
424 node2 = c.changeset_2.get_node(f_path)
425 else:
425 else:
426 c.changeset_2 = EmptyChangeset(repo=c.rhodecode_repo)
426 c.changeset_2 = EmptyChangeset(repo=c.rhodecode_repo)
427 node2 = FileNode('.', '', changeset=c.changeset_2)
427 node2 = FileNode('.', '', changeset=c.changeset_2)
428 except RepositoryError:
428 except RepositoryError:
429 return redirect(url('files_home',
429 return redirect(url('files_home',
430 repo_name=c.repo_name, f_path=f_path))
430 repo_name=c.repo_name, f_path=f_path))
431
431
432 if c.action == 'download':
432 if c.action == 'download':
433 diff = differ.DiffProcessor(differ.get_gitdiff(node1, node2),
433 diff = differ.DiffProcessor(differ.get_gitdiff(node1, node2),
434 format='gitdiff')
434 format='gitdiff')
435
435
436 diff_name = '%s_vs_%s.diff' % (diff1, diff2)
436 diff_name = '%s_vs_%s.diff' % (diff1, diff2)
437 response.content_type = 'text/plain'
437 response.content_type = 'text/plain'
438 response.content_disposition = 'attachment; filename=%s' \
438 response.content_disposition = 'attachment; filename=%s' \
439 % diff_name
439 % diff_name
440 return diff.raw_diff()
440 return diff.raw_diff()
441
441
442 elif c.action == 'raw':
442 elif c.action == 'raw':
443 diff = differ.DiffProcessor(differ.get_gitdiff(node1, node2),
443 diff = differ.DiffProcessor(differ.get_gitdiff(node1, node2),
444 format='gitdiff')
444 format='gitdiff')
445 response.content_type = 'text/plain'
445 response.content_type = 'text/plain'
446 return diff.raw_diff()
446 return diff.raw_diff()
447
447
448 elif c.action == 'diff':
448 elif c.action == 'diff':
449 if node1.is_binary or node2.is_binary:
449 if node1.is_binary or node2.is_binary:
450 c.cur_diff = _('Binary file')
450 c.cur_diff = _('Binary file')
451 elif node1.size > self.cut_off_limit or \
451 elif node1.size > self.cut_off_limit or \
452 node2.size > self.cut_off_limit:
452 node2.size > self.cut_off_limit:
453 c.cur_diff = ''
453 c.cur_diff = ''
454 c.big_diff = True
454 c.big_diff = True
455 else:
455 else:
456 diff = differ.DiffProcessor(differ.get_gitdiff(node1, node2),
456 diff = differ.DiffProcessor(differ.get_gitdiff(node1, node2),
457 format='gitdiff')
457 format='gitdiff')
458 c.cur_diff = diff.as_html()
458 c.cur_diff = diff.as_html()
459 else:
459 else:
460
460
461 #default option
461 #default option
462 if node1.is_binary or node2.is_binary:
462 if node1.is_binary or node2.is_binary:
463 c.cur_diff = _('Binary file')
463 c.cur_diff = _('Binary file')
464 elif node1.size > self.cut_off_limit or \
464 elif node1.size > self.cut_off_limit or \
465 node2.size > self.cut_off_limit:
465 node2.size > self.cut_off_limit:
466 c.cur_diff = ''
466 c.cur_diff = ''
467 c.big_diff = True
467 c.big_diff = True
468
468
469 else:
469 else:
470 diff = differ.DiffProcessor(differ.get_gitdiff(node1, node2),
470 diff = differ.DiffProcessor(differ.get_gitdiff(node1, node2),
471 format='gitdiff')
471 format='gitdiff')
472 c.cur_diff = diff.as_html()
472 c.cur_diff = diff.as_html()
473
473
474 if not c.cur_diff and not c.big_diff:
474 if not c.cur_diff and not c.big_diff:
475 c.no_changes = True
475 c.no_changes = True
476 return render('files/file_diff.html')
476 return render('files/file_diff.html')
477
477
478 def _get_node_history(self, cs, f_path):
478 def _get_node_history(self, cs, f_path):
479 changesets = cs.get_file_history(f_path)
479 changesets = cs.get_file_history(f_path)
480 hist_l = []
480 hist_l = []
481
481
482 changesets_group = ([], _("Changesets"))
482 changesets_group = ([], _("Changesets"))
483 branches_group = ([], _("Branches"))
483 branches_group = ([], _("Branches"))
484 tags_group = ([], _("Tags"))
484 tags_group = ([], _("Tags"))
485
485
486 for chs in changesets:
486 for chs in changesets:
487 n_desc = 'r%s:%s' % (chs.revision, chs.short_id)
487 n_desc = 'r%s:%s' % (chs.revision, chs.short_id)
488 changesets_group[0].append((chs.raw_id, n_desc,))
488 changesets_group[0].append((chs.raw_id, n_desc,))
489
489
490 hist_l.append(changesets_group)
490 hist_l.append(changesets_group)
491
491
492 for name, chs in c.rhodecode_repo.branches.items():
492 for name, chs in c.rhodecode_repo.branches.items():
493 #chs = chs.split(':')[-1]
493 #chs = chs.split(':')[-1]
494 branches_group[0].append((chs, name),)
494 branches_group[0].append((chs, name),)
495 hist_l.append(branches_group)
495 hist_l.append(branches_group)
496
496
497 for name, chs in c.rhodecode_repo.tags.items():
497 for name, chs in c.rhodecode_repo.tags.items():
498 #chs = chs.split(':')[-1]
498 #chs = chs.split(':')[-1]
499 tags_group[0].append((chs, name),)
499 tags_group[0].append((chs, name),)
500 hist_l.append(tags_group)
500 hist_l.append(tags_group)
501
501
502 return hist_l
502 return hist_l
503
503
504 @jsonify
504 @jsonify
505 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
505 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
506 'repository.admin')
506 'repository.admin')
507 def nodelist(self, repo_name, revision, f_path):
507 def nodelist(self, repo_name, revision, f_path):
508 if request.environ.get('HTTP_X_PARTIAL_XHR'):
508 if request.environ.get('HTTP_X_PARTIAL_XHR'):
509 cs = self.__get_cs_or_redirect(revision, repo_name)
509 cs = self.__get_cs_or_redirect(revision, repo_name)
510 _d, _f = self.__get_paths(cs, f_path)
510 _d, _f = self.__get_paths(cs, f_path)
511 return _d + _f
511 return _d + _f
512
512
@@ -1,127 +1,159 b''
1 div.codeblock {
1 div.codeblock {
2 overflow: auto;
2 overflow: auto;
3 padding: 0px;
3 padding: 0px;
4 border: 1px solid #ccc;
4 border: 1px solid #ccc;
5 background: #f8f8f8;
5 background: #f8f8f8;
6 font-size: 100%;
6 font-size: 100%;
7 line-height: 100%;
7 line-height: 100%;
8 /* new */
8 /* new */
9 line-height: 125%;
9 line-height: 125%;
10 -webkit-border-radius: 4px;
11 -moz-border-radius: 4px;
12 border-radius: 4px;
10 }
13 }
11 div.codeblock .code-header{
14 div.codeblock .code-header{
12 border-bottom: 1px solid #CCCCCC;
15 border-bottom: 1px solid #CCCCCC;
13 background: #EEEEEE;
16 background: #EEEEEE;
14 padding:10px 0 10px 0;
17 padding:10px 0 10px 0;
15 }
18 }
16 div.codeblock .code-header .revision{
19
20 div.codeblock .code-header .stats{
21 clear: both;
22 margin-top:-3px;
23 padding-left: 8px;
24 border-bottom: 1px solid rgb(204, 204, 204);
25 margin-bottom: 5px; height: 23px;
26 }
27
28 div.codeblock .code-header .stats .left{
29 float:left;
30 }
31 div.codeblock .code-header .stats .left.item{
32 float:left;
33 padding: 0 9px 0 9px;
34 border-right:1px solid #ccc;
35 }
36 div.codeblock .code-header .stats .left.item.last{
37 border-right:none;
38 }
39 div.codeblock .code-header .stats .buttons{
40 float:right;
41 padding-right:4px;
42 }
43
44 div.codeblock .code-header .author{
17 margin-left:25px;
45 margin-left:25px;
18 font-weight: bold;
46 font-weight: bold;
47 height: 25px;
48 }
49 div.codeblock .code-header .author .user{
50 padding-top:3px;
19 }
51 }
20 div.codeblock .code-header .commit{
52 div.codeblock .code-header .commit{
21 margin-left:25px;
53 margin-left:25px;
22 font-weight: normal;
54 font-weight: normal;
23 white-space:pre;
55 white-space:pre;
24 }
56 }
25
57
26 div.codeblock .code-body table{
58 div.codeblock .code-body table{
27 width: 0 !important;
59 width: 0 !important;
28 border: 0px !important;
60 border: 0px !important;
29 }
61 }
30 div.codeblock .code-body table td {
62 div.codeblock .code-body table td {
31 border: 0px !important;
63 border: 0px !important;
32 }
64 }
33 div.code-body {
65 div.code-body {
34 background-color: #FFFFFF;
66 background-color: #FFFFFF;
35 }
67 }
36 div.code-body pre .match{
68 div.code-body pre .match{
37 background-color: #FAFFA6;
69 background-color: #FAFFA6;
38 }
70 }
39 div.code-body pre .break{
71 div.code-body pre .break{
40 background-color: #DDE7EF;
72 background-color: #DDE7EF;
41 width: 100%;
73 width: 100%;
42 color: #747474;
74 color: #747474;
43 display: block;
75 display: block;
44
76
45 }
77 }
46 div.annotatediv{
78 div.annotatediv{
47 margin-left:2px;
79 margin-left:2px;
48 margin-right:4px;
80 margin-right:4px;
49 }
81 }
50 .code-highlight {
82 .code-highlight {
51 padding: 0px;
83 padding: 0px;
52 margin-top: 5px;
84 margin-top: 5px;
53 margin-bottom: 5px;
85 margin-bottom: 5px;
54 border-left: 2px solid #ccc;
86 border-left: 2px solid #ccc;
55 }
87 }
56 .code-highlight pre, .linenodiv pre {
88 .code-highlight pre, .linenodiv pre {
57 padding: 5px;
89 padding: 5px;
58 margin: 0;
90 margin: 0;
59 }
91 }
60 .code-highlight pre div:target {
92 .code-highlight pre div:target {
61 background-color: #FFFFBE !important;
93 background-color: #FFFFBE !important;
62 }
94 }
63
95
64 .linenos a { text-decoration: none; }
96 .linenos a { text-decoration: none; }
65
97
66 .code { display: block; }
98 .code { display: block; }
67 .code-highlight .hll { background-color: #ffffcc }
99 .code-highlight .hll { background-color: #ffffcc }
68 .code-highlight .c { color: #408080; font-style: italic } /* Comment */
100 .code-highlight .c { color: #408080; font-style: italic } /* Comment */
69 .code-highlight .err { border: 1px solid #FF0000 } /* Error */
101 .code-highlight .err { border: 1px solid #FF0000 } /* Error */
70 .code-highlight .k { color: #008000; font-weight: bold } /* Keyword */
102 .code-highlight .k { color: #008000; font-weight: bold } /* Keyword */
71 .code-highlight .o { color: #666666 } /* Operator */
103 .code-highlight .o { color: #666666 } /* Operator */
72 .code-highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
104 .code-highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
73 .code-highlight .cp { color: #BC7A00 } /* Comment.Preproc */
105 .code-highlight .cp { color: #BC7A00 } /* Comment.Preproc */
74 .code-highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
106 .code-highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
75 .code-highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
107 .code-highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
76 .code-highlight .gd { color: #A00000 } /* Generic.Deleted */
108 .code-highlight .gd { color: #A00000 } /* Generic.Deleted */
77 .code-highlight .ge { font-style: italic } /* Generic.Emph */
109 .code-highlight .ge { font-style: italic } /* Generic.Emph */
78 .code-highlight .gr { color: #FF0000 } /* Generic.Error */
110 .code-highlight .gr { color: #FF0000 } /* Generic.Error */
79 .code-highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
111 .code-highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
80 .code-highlight .gi { color: #00A000 } /* Generic.Inserted */
112 .code-highlight .gi { color: #00A000 } /* Generic.Inserted */
81 .code-highlight .go { color: #808080 } /* Generic.Output */
113 .code-highlight .go { color: #808080 } /* Generic.Output */
82 .code-highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
114 .code-highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
83 .code-highlight .gs { font-weight: bold } /* Generic.Strong */
115 .code-highlight .gs { font-weight: bold } /* Generic.Strong */
84 .code-highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
116 .code-highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
85 .code-highlight .gt { color: #0040D0 } /* Generic.Traceback */
117 .code-highlight .gt { color: #0040D0 } /* Generic.Traceback */
86 .code-highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
118 .code-highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
87 .code-highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
119 .code-highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
88 .code-highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
120 .code-highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
89 .code-highlight .kp { color: #008000 } /* Keyword.Pseudo */
121 .code-highlight .kp { color: #008000 } /* Keyword.Pseudo */
90 .code-highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
122 .code-highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
91 .code-highlight .kt { color: #B00040 } /* Keyword.Type */
123 .code-highlight .kt { color: #B00040 } /* Keyword.Type */
92 .code-highlight .m { color: #666666 } /* Literal.Number */
124 .code-highlight .m { color: #666666 } /* Literal.Number */
93 .code-highlight .s { color: #BA2121 } /* Literal.String */
125 .code-highlight .s { color: #BA2121 } /* Literal.String */
94 .code-highlight .na { color: #7D9029 } /* Name.Attribute */
126 .code-highlight .na { color: #7D9029 } /* Name.Attribute */
95 .code-highlight .nb { color: #008000 } /* Name.Builtin */
127 .code-highlight .nb { color: #008000 } /* Name.Builtin */
96 .code-highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
128 .code-highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
97 .code-highlight .no { color: #880000 } /* Name.Constant */
129 .code-highlight .no { color: #880000 } /* Name.Constant */
98 .code-highlight .nd { color: #AA22FF } /* Name.Decorator */
130 .code-highlight .nd { color: #AA22FF } /* Name.Decorator */
99 .code-highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
131 .code-highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
100 .code-highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
132 .code-highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
101 .code-highlight .nf { color: #0000FF } /* Name.Function */
133 .code-highlight .nf { color: #0000FF } /* Name.Function */
102 .code-highlight .nl { color: #A0A000 } /* Name.Label */
134 .code-highlight .nl { color: #A0A000 } /* Name.Label */
103 .code-highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
135 .code-highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
104 .code-highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
136 .code-highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
105 .code-highlight .nv { color: #19177C } /* Name.Variable */
137 .code-highlight .nv { color: #19177C } /* Name.Variable */
106 .code-highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
138 .code-highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
107 .code-highlight .w { color: #bbbbbb } /* Text.Whitespace */
139 .code-highlight .w { color: #bbbbbb } /* Text.Whitespace */
108 .code-highlight .mf { color: #666666 } /* Literal.Number.Float */
140 .code-highlight .mf { color: #666666 } /* Literal.Number.Float */
109 .code-highlight .mh { color: #666666 } /* Literal.Number.Hex */
141 .code-highlight .mh { color: #666666 } /* Literal.Number.Hex */
110 .code-highlight .mi { color: #666666 } /* Literal.Number.Integer */
142 .code-highlight .mi { color: #666666 } /* Literal.Number.Integer */
111 .code-highlight .mo { color: #666666 } /* Literal.Number.Oct */
143 .code-highlight .mo { color: #666666 } /* Literal.Number.Oct */
112 .code-highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
144 .code-highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
113 .code-highlight .sc { color: #BA2121 } /* Literal.String.Char */
145 .code-highlight .sc { color: #BA2121 } /* Literal.String.Char */
114 .code-highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
146 .code-highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
115 .code-highlight .s2 { color: #BA2121 } /* Literal.String.Double */
147 .code-highlight .s2 { color: #BA2121 } /* Literal.String.Double */
116 .code-highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
148 .code-highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
117 .code-highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
149 .code-highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
118 .code-highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
150 .code-highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
119 .code-highlight .sx { color: #008000 } /* Literal.String.Other */
151 .code-highlight .sx { color: #008000 } /* Literal.String.Other */
120 .code-highlight .sr { color: #BB6688 } /* Literal.String.Regex */
152 .code-highlight .sr { color: #BB6688 } /* Literal.String.Regex */
121 .code-highlight .s1 { color: #BA2121 } /* Literal.String.Single */
153 .code-highlight .s1 { color: #BA2121 } /* Literal.String.Single */
122 .code-highlight .ss { color: #19177C } /* Literal.String.Symbol */
154 .code-highlight .ss { color: #19177C } /* Literal.String.Symbol */
123 .code-highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
155 .code-highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
124 .code-highlight .vc { color: #19177C } /* Name.Variable.Class */
156 .code-highlight .vc { color: #19177C } /* Name.Variable.Class */
125 .code-highlight .vg { color: #19177C } /* Name.Variable.Global */
157 .code-highlight .vg { color: #19177C } /* Name.Variable.Global */
126 .code-highlight .vi { color: #19177C } /* Name.Variable.Instance */
158 .code-highlight .vi { color: #19177C } /* Name.Variable.Instance */
127 .code-highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
159 .code-highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
@@ -1,3541 +1,3544 b''
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
2 {
2 {
3 border: 0;
3 border: 0;
4 outline: 0;
4 outline: 0;
5 font-size: 100%;
5 font-size: 100%;
6 vertical-align: baseline;
6 vertical-align: baseline;
7 background: transparent;
7 background: transparent;
8 margin: 0;
8 margin: 0;
9 padding: 0;
9 padding: 0;
10 }
10 }
11
11
12 body {
12 body {
13 line-height: 1;
13 line-height: 1;
14 height: 100%;
14 height: 100%;
15 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
16 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
16 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
17 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
17 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
18 color: #000;
18 color: #000;
19 margin: 0;
19 margin: 0;
20 padding: 0;
20 padding: 0;
21 font-size: 12px;
21 font-size: 12px;
22 }
22 }
23
23
24 ol,ul {
24 ol,ul {
25 list-style: none;
25 list-style: none;
26 }
26 }
27
27
28 blockquote,q {
28 blockquote,q {
29 quotes: none;
29 quotes: none;
30 }
30 }
31
31
32 blockquote:before,blockquote:after,q:before,q:after {
32 blockquote:before,blockquote:after,q:before,q:after {
33 content: none;
33 content: none;
34 }
34 }
35
35
36 :focus {
36 :focus {
37 outline: 0;
37 outline: 0;
38 }
38 }
39
39
40 del {
40 del {
41 text-decoration: line-through;
41 text-decoration: line-through;
42 }
42 }
43
43
44 table {
44 table {
45 border-collapse: collapse;
45 border-collapse: collapse;
46 border-spacing: 0;
46 border-spacing: 0;
47 }
47 }
48
48
49 html {
49 html {
50 height: 100%;
50 height: 100%;
51 }
51 }
52
52
53 a {
53 a {
54 color: #003367;
54 color: #003367;
55 text-decoration: none;
55 text-decoration: none;
56 cursor: pointer;
56 cursor: pointer;
57 }
57 }
58
58
59 a:hover {
59 a:hover {
60 color: #316293;
60 color: #316293;
61 text-decoration: underline;
61 text-decoration: underline;
62 }
62 }
63
63
64 h1,h2,h3,h4,h5,h6 {
64 h1,h2,h3,h4,h5,h6 {
65 color: #292929;
65 color: #292929;
66 font-weight: 700;
66 font-weight: 700;
67 }
67 }
68
68
69 h1 {
69 h1 {
70 font-size: 22px;
70 font-size: 22px;
71 }
71 }
72
72
73 h2 {
73 h2 {
74 font-size: 20px;
74 font-size: 20px;
75 }
75 }
76
76
77 h3 {
77 h3 {
78 font-size: 18px;
78 font-size: 18px;
79 }
79 }
80
80
81 h4 {
81 h4 {
82 font-size: 16px;
82 font-size: 16px;
83 }
83 }
84
84
85 h5 {
85 h5 {
86 font-size: 14px;
86 font-size: 14px;
87 }
87 }
88
88
89 h6 {
89 h6 {
90 font-size: 11px;
90 font-size: 11px;
91 }
91 }
92
92
93 ul.circle {
93 ul.circle {
94 list-style-type: circle;
94 list-style-type: circle;
95 }
95 }
96
96
97 ul.disc {
97 ul.disc {
98 list-style-type: disc;
98 list-style-type: disc;
99 }
99 }
100
100
101 ul.square {
101 ul.square {
102 list-style-type: square;
102 list-style-type: square;
103 }
103 }
104
104
105 ol.lower-roman {
105 ol.lower-roman {
106 list-style-type: lower-roman;
106 list-style-type: lower-roman;
107 }
107 }
108
108
109 ol.upper-roman {
109 ol.upper-roman {
110 list-style-type: upper-roman;
110 list-style-type: upper-roman;
111 }
111 }
112
112
113 ol.lower-alpha {
113 ol.lower-alpha {
114 list-style-type: lower-alpha;
114 list-style-type: lower-alpha;
115 }
115 }
116
116
117 ol.upper-alpha {
117 ol.upper-alpha {
118 list-style-type: upper-alpha;
118 list-style-type: upper-alpha;
119 }
119 }
120
120
121 ol.decimal {
121 ol.decimal {
122 list-style-type: decimal;
122 list-style-type: decimal;
123 }
123 }
124
124
125 div.color {
125 div.color {
126 clear: both;
126 clear: both;
127 overflow: hidden;
127 overflow: hidden;
128 position: absolute;
128 position: absolute;
129 background: #FFF;
129 background: #FFF;
130 margin: 7px 0 0 60px;
130 margin: 7px 0 0 60px;
131 padding: 1px 1px 1px 0;
131 padding: 1px 1px 1px 0;
132 }
132 }
133
133
134 div.color a {
134 div.color a {
135 width: 15px;
135 width: 15px;
136 height: 15px;
136 height: 15px;
137 display: block;
137 display: block;
138 float: left;
138 float: left;
139 margin: 0 0 0 1px;
139 margin: 0 0 0 1px;
140 padding: 0;
140 padding: 0;
141 }
141 }
142
142
143 div.options {
143 div.options {
144 clear: both;
144 clear: both;
145 overflow: hidden;
145 overflow: hidden;
146 position: absolute;
146 position: absolute;
147 background: #FFF;
147 background: #FFF;
148 margin: 7px 0 0 162px;
148 margin: 7px 0 0 162px;
149 padding: 0;
149 padding: 0;
150 }
150 }
151
151
152 div.options a {
152 div.options a {
153 height: 1%;
153 height: 1%;
154 display: block;
154 display: block;
155 text-decoration: none;
155 text-decoration: none;
156 margin: 0;
156 margin: 0;
157 padding: 3px 8px;
157 padding: 3px 8px;
158 }
158 }
159
159
160 .top-left-rounded-corner {
160 .top-left-rounded-corner {
161 -webkit-border-top-left-radius: 8px;
161 -webkit-border-top-left-radius: 8px;
162 -khtml-border-radius-topleft: 8px;
162 -khtml-border-radius-topleft: 8px;
163 -moz-border-radius-topleft: 8px;
163 -moz-border-radius-topleft: 8px;
164 border-top-left-radius: 8px;
164 border-top-left-radius: 8px;
165 }
165 }
166
166
167 .top-right-rounded-corner {
167 .top-right-rounded-corner {
168 -webkit-border-top-right-radius: 8px;
168 -webkit-border-top-right-radius: 8px;
169 -khtml-border-radius-topright: 8px;
169 -khtml-border-radius-topright: 8px;
170 -moz-border-radius-topright: 8px;
170 -moz-border-radius-topright: 8px;
171 border-top-right-radius: 8px;
171 border-top-right-radius: 8px;
172 }
172 }
173
173
174 .bottom-left-rounded-corner {
174 .bottom-left-rounded-corner {
175 -webkit-border-bottom-left-radius: 8px;
175 -webkit-border-bottom-left-radius: 8px;
176 -khtml-border-radius-bottomleft: 8px;
176 -khtml-border-radius-bottomleft: 8px;
177 -moz-border-radius-bottomleft: 8px;
177 -moz-border-radius-bottomleft: 8px;
178 border-bottom-left-radius: 8px;
178 border-bottom-left-radius: 8px;
179 }
179 }
180
180
181 .bottom-right-rounded-corner {
181 .bottom-right-rounded-corner {
182 -webkit-border-bottom-right-radius: 8px;
182 -webkit-border-bottom-right-radius: 8px;
183 -khtml-border-radius-bottomright: 8px;
183 -khtml-border-radius-bottomright: 8px;
184 -moz-border-radius-bottomright: 8px;
184 -moz-border-radius-bottomright: 8px;
185 border-bottom-right-radius: 8px;
185 border-bottom-right-radius: 8px;
186 }
186 }
187
187
188 #header {
188 #header {
189 margin: 0;
189 margin: 0;
190 padding: 0 10px;
190 padding: 0 10px;
191 }
191 }
192
192
193 #header ul#logged-user {
193 #header ul#logged-user {
194 margin-bottom: 5px !important;
194 margin-bottom: 5px !important;
195 -webkit-border-radius: 0px 0px 8px 8px;
195 -webkit-border-radius: 0px 0px 8px 8px;
196 -khtml-border-radius: 0px 0px 8px 8px;
196 -khtml-border-radius: 0px 0px 8px 8px;
197 -moz-border-radius: 0px 0px 8px 8px;
197 -moz-border-radius: 0px 0px 8px 8px;
198 border-radius: 0px 0px 8px 8px;
198 border-radius: 0px 0px 8px 8px;
199 height: 37px;
199 height: 37px;
200 background-color: #eedc94;
200 background-color: #eedc94;
201 background-repeat: repeat-x;
201 background-repeat: repeat-x;
202 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
202 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
203 to(#eedc94) );
203 to(#eedc94) );
204 background-image: -moz-linear-gradient(top, #003b76, #00376e);
204 background-image: -moz-linear-gradient(top, #003b76, #00376e);
205 background-image: -ms-linear-gradient(top, #003b76, #00376e);
205 background-image: -ms-linear-gradient(top, #003b76, #00376e);
206 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
206 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
207 color-stop(100%, #00376e) );
207 color-stop(100%, #00376e) );
208 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
208 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
209 background-image: -o-linear-gradient(top, #003b76, #00376e) );
209 background-image: -o-linear-gradient(top, #003b76, #00376e) );
210 background-image: linear-gradient(top, #003b76, #00376e);
210 background-image: linear-gradient(top, #003b76, #00376e);
211 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
211 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
212 endColorstr='#00376e', GradientType=0 );
212 endColorstr='#00376e', GradientType=0 );
213 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
213 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
214 }
214 }
215
215
216 #header ul#logged-user li {
216 #header ul#logged-user li {
217 list-style: none;
217 list-style: none;
218 float: left;
218 float: left;
219 margin: 8px 0 0;
219 margin: 8px 0 0;
220 padding: 4px 12px;
220 padding: 4px 12px;
221 border-left: 1px solid #316293;
221 border-left: 1px solid #316293;
222 }
222 }
223
223
224 #header ul#logged-user li.first {
224 #header ul#logged-user li.first {
225 border-left: none;
225 border-left: none;
226 margin: 4px;
226 margin: 4px;
227 }
227 }
228
228
229 #header ul#logged-user li.first div.gravatar {
229 #header ul#logged-user li.first div.gravatar {
230 margin-top: -2px;
230 margin-top: -2px;
231 }
231 }
232
232
233 #header ul#logged-user li.first div.account {
233 #header ul#logged-user li.first div.account {
234 padding-top: 4px;
234 padding-top: 4px;
235 float: left;
235 float: left;
236 }
236 }
237
237
238 #header ul#logged-user li.last {
238 #header ul#logged-user li.last {
239 border-right: none;
239 border-right: none;
240 }
240 }
241
241
242 #header ul#logged-user li a {
242 #header ul#logged-user li a {
243 color: #fff;
243 color: #fff;
244 font-weight: 700;
244 font-weight: 700;
245 text-decoration: none;
245 text-decoration: none;
246 }
246 }
247
247
248 #header ul#logged-user li a:hover {
248 #header ul#logged-user li a:hover {
249 text-decoration: underline;
249 text-decoration: underline;
250 }
250 }
251
251
252 #header ul#logged-user li.highlight a {
252 #header ul#logged-user li.highlight a {
253 color: #fff;
253 color: #fff;
254 }
254 }
255
255
256 #header ul#logged-user li.highlight a:hover {
256 #header ul#logged-user li.highlight a:hover {
257 color: #FFF;
257 color: #FFF;
258 }
258 }
259
259
260 #header #header-inner {
260 #header #header-inner {
261 min-height: 40px;
261 min-height: 40px;
262 clear: both;
262 clear: both;
263 position: relative;
263 position: relative;
264 background-color: #eedc94;
264 background-color: #eedc94;
265 background-repeat: repeat-x;
265 background-repeat: repeat-x;
266 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
266 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
267 to(#eedc94) );
267 to(#eedc94) );
268 background-image: -moz-linear-gradient(top, #003b76, #00376e);
268 background-image: -moz-linear-gradient(top, #003b76, #00376e);
269 background-image: -ms-linear-gradient(top, #003b76, #00376e);
269 background-image: -ms-linear-gradient(top, #003b76, #00376e);
270 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
270 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
271 color-stop(100%, #00376e) );
271 color-stop(100%, #00376e) );
272 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
272 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
273 background-image: -o-linear-gradient(top, #003b76, #00376e) );
273 background-image: -o-linear-gradient(top, #003b76, #00376e) );
274 background-image: linear-gradient(top, #003b76, #00376e);
274 background-image: linear-gradient(top, #003b76, #00376e);
275 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
275 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
276 endColorstr='#00376e', GradientType=0 );
276 endColorstr='#00376e', GradientType=0 );
277 margin: 0;
277 margin: 0;
278 padding: 0;
278 padding: 0;
279 display: block;
279 display: block;
280 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
280 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
281 -webkit-border-radius: 4px 4px 4px 4px;
281 -webkit-border-radius: 4px 4px 4px 4px;
282 -khtml-border-radius: 4px 4px 4px 4px;
282 -khtml-border-radius: 4px 4px 4px 4px;
283 -moz-border-radius: 4px 4px 4px 4px;
283 -moz-border-radius: 4px 4px 4px 4px;
284 border-radius: 4px 4px 4px 4px;
284 border-radius: 4px 4px 4px 4px;
285 }
285 }
286 #header #header-inner.hover{
286 #header #header-inner.hover{
287 position: fixed !important;
287 position: fixed !important;
288 width: 100% !important;
288 width: 100% !important;
289 margin-left: -10px !important;
289 margin-left: -10px !important;
290 z-index: 10000;
290 z-index: 10000;
291 border-radius: 0px 0px 4px 4px;
291 border-radius: 0px 0px 4px 4px;
292 }
292 }
293 #header #header-inner #home a {
293 #header #header-inner #home a {
294 height: 40px;
294 height: 40px;
295 width: 46px;
295 width: 46px;
296 display: block;
296 display: block;
297 background: url("../images/button_home.png");
297 background: url("../images/button_home.png");
298 background-position: 0 0;
298 background-position: 0 0;
299 margin: 0;
299 margin: 0;
300 padding: 0;
300 padding: 0;
301 }
301 }
302
302
303 #header #header-inner #home a:hover {
303 #header #header-inner #home a:hover {
304 background-position: 0 -40px;
304 background-position: 0 -40px;
305 }
305 }
306
306
307 #header #header-inner #logo {
307 #header #header-inner #logo {
308 float: left;
308 float: left;
309 position: absolute;
309 position: absolute;
310 }
310 }
311
311
312 #header #header-inner #logo h1 {
312 #header #header-inner #logo h1 {
313 color: #FFF;
313 color: #FFF;
314 font-size: 18px;
314 font-size: 18px;
315 margin: 10px 0 0 13px;
315 margin: 10px 0 0 13px;
316 padding: 0;
316 padding: 0;
317 }
317 }
318
318
319 #header #header-inner #logo a {
319 #header #header-inner #logo a {
320 color: #fff;
320 color: #fff;
321 text-decoration: none;
321 text-decoration: none;
322 }
322 }
323
323
324 #header #header-inner #logo a:hover {
324 #header #header-inner #logo a:hover {
325 color: #bfe3ff;
325 color: #bfe3ff;
326 }
326 }
327
327
328 #header #header-inner #quick,#header #header-inner #quick ul {
328 #header #header-inner #quick,#header #header-inner #quick ul {
329 position: relative;
329 position: relative;
330 float: right;
330 float: right;
331 list-style-type: none;
331 list-style-type: none;
332 list-style-position: outside;
332 list-style-position: outside;
333 margin: 6px 5px 0 0;
333 margin: 6px 5px 0 0;
334 padding: 0;
334 padding: 0;
335 }
335 }
336
336
337 #header #header-inner #quick li {
337 #header #header-inner #quick li {
338 position: relative;
338 position: relative;
339 float: left;
339 float: left;
340 margin: 0 5px 0 0;
340 margin: 0 5px 0 0;
341 padding: 0;
341 padding: 0;
342 }
342 }
343
343
344 #header #header-inner #quick li a {
344 #header #header-inner #quick li a {
345 top: 0;
345 top: 0;
346 left: 0;
346 left: 0;
347 height: 1%;
347 height: 1%;
348 display: block;
348 display: block;
349 clear: both;
349 clear: both;
350 overflow: hidden;
350 overflow: hidden;
351 color: #FFF;
351 color: #FFF;
352 font-weight: 700;
352 font-weight: 700;
353 text-decoration: none;
353 text-decoration: none;
354 background: #369;
354 background: #369;
355 padding: 0;
355 padding: 0;
356 -webkit-border-radius: 4px 4px 4px 4px;
356 -webkit-border-radius: 4px 4px 4px 4px;
357 -khtml-border-radius: 4px 4px 4px 4px;
357 -khtml-border-radius: 4px 4px 4px 4px;
358 -moz-border-radius: 4px 4px 4px 4px;
358 -moz-border-radius: 4px 4px 4px 4px;
359 border-radius: 4px 4px 4px 4px;
359 border-radius: 4px 4px 4px 4px;
360 }
360 }
361
361
362 #header #header-inner #quick li span.short {
362 #header #header-inner #quick li span.short {
363 padding: 9px 6px 8px 6px;
363 padding: 9px 6px 8px 6px;
364 }
364 }
365
365
366 #header #header-inner #quick li span {
366 #header #header-inner #quick li span {
367 top: 0;
367 top: 0;
368 right: 0;
368 right: 0;
369 height: 1%;
369 height: 1%;
370 display: block;
370 display: block;
371 float: left;
371 float: left;
372 border-left: 1px solid #3f6f9f;
372 border-left: 1px solid #3f6f9f;
373 margin: 0;
373 margin: 0;
374 padding: 10px 12px 8px 10px;
374 padding: 10px 12px 8px 10px;
375 }
375 }
376
376
377 #header #header-inner #quick li span.normal {
377 #header #header-inner #quick li span.normal {
378 border: none;
378 border: none;
379 padding: 10px 12px 8px;
379 padding: 10px 12px 8px;
380 }
380 }
381
381
382 #header #header-inner #quick li span.icon {
382 #header #header-inner #quick li span.icon {
383 top: 0;
383 top: 0;
384 left: 0;
384 left: 0;
385 border-left: none;
385 border-left: none;
386 border-right: 1px solid #2e5c89;
386 border-right: 1px solid #2e5c89;
387 padding: 8px 6px 4px;
387 padding: 8px 6px 4px;
388 }
388 }
389
389
390 #header #header-inner #quick li span.icon_short {
390 #header #header-inner #quick li span.icon_short {
391 top: 0;
391 top: 0;
392 left: 0;
392 left: 0;
393 border-left: none;
393 border-left: none;
394 border-right: 1px solid #2e5c89;
394 border-right: 1px solid #2e5c89;
395 padding: 8px 6px 4px;
395 padding: 8px 6px 4px;
396 }
396 }
397
397
398 #header #header-inner #quick li span.icon img,#header #header-inner #quick li span.icon_short img
398 #header #header-inner #quick li span.icon img,#header #header-inner #quick li span.icon_short img
399 {
399 {
400 margin: 0px -2px 0px 0px;
400 margin: 0px -2px 0px 0px;
401 }
401 }
402
402
403 #header #header-inner #quick li a:hover {
403 #header #header-inner #quick li a:hover {
404 background: #4e4e4e no-repeat top left;
404 background: #4e4e4e no-repeat top left;
405 }
405 }
406
406
407 #header #header-inner #quick li a:hover span {
407 #header #header-inner #quick li a:hover span {
408 border-left: 1px solid #545454;
408 border-left: 1px solid #545454;
409 }
409 }
410
410
411 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short
411 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short
412 {
412 {
413 border-left: none;
413 border-left: none;
414 border-right: 1px solid #464646;
414 border-right: 1px solid #464646;
415 }
415 }
416
416
417 #header #header-inner #quick ul {
417 #header #header-inner #quick ul {
418 top: 29px;
418 top: 29px;
419 right: 0;
419 right: 0;
420 min-width: 200px;
420 min-width: 200px;
421 display: none;
421 display: none;
422 position: absolute;
422 position: absolute;
423 background: #FFF;
423 background: #FFF;
424 border: 1px solid #666;
424 border: 1px solid #666;
425 border-top: 1px solid #003367;
425 border-top: 1px solid #003367;
426 z-index: 100;
426 z-index: 100;
427 margin: 0;
427 margin: 0;
428 padding: 0;
428 padding: 0;
429 }
429 }
430
430
431 #header #header-inner #quick ul.repo_switcher {
431 #header #header-inner #quick ul.repo_switcher {
432 max-height: 275px;
432 max-height: 275px;
433 overflow-x: hidden;
433 overflow-x: hidden;
434 overflow-y: auto;
434 overflow-y: auto;
435 }
435 }
436
436
437 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
437 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
438 float: none;
438 float: none;
439 margin: 0;
439 margin: 0;
440 border-bottom: 2px solid #003367;
440 border-bottom: 2px solid #003367;
441 }
441 }
442
442
443 #header #header-inner #quick .repo_switcher_type {
443 #header #header-inner #quick .repo_switcher_type {
444 position: absolute;
444 position: absolute;
445 left: 0;
445 left: 0;
446 top: 9px;
446 top: 9px;
447 }
447 }
448
448
449 #header #header-inner #quick li ul li {
449 #header #header-inner #quick li ul li {
450 border-bottom: 1px solid #ddd;
450 border-bottom: 1px solid #ddd;
451 }
451 }
452
452
453 #header #header-inner #quick li ul li a {
453 #header #header-inner #quick li ul li a {
454 width: 182px;
454 width: 182px;
455 height: auto;
455 height: auto;
456 display: block;
456 display: block;
457 float: left;
457 float: left;
458 background: #FFF;
458 background: #FFF;
459 color: #003367;
459 color: #003367;
460 font-weight: 400;
460 font-weight: 400;
461 margin: 0;
461 margin: 0;
462 padding: 7px 9px;
462 padding: 7px 9px;
463 }
463 }
464
464
465 #header #header-inner #quick li ul li a:hover {
465 #header #header-inner #quick li ul li a:hover {
466 color: #000;
466 color: #000;
467 background: #FFF;
467 background: #FFF;
468 }
468 }
469
469
470 #header #header-inner #quick ul ul {
470 #header #header-inner #quick ul ul {
471 top: auto;
471 top: auto;
472 }
472 }
473
473
474 #header #header-inner #quick li ul ul {
474 #header #header-inner #quick li ul ul {
475 right: 200px;
475 right: 200px;
476 max-height: 275px;
476 max-height: 275px;
477 overflow: auto;
477 overflow: auto;
478 overflow-x: hidden;
478 overflow-x: hidden;
479 white-space: normal;
479 white-space: normal;
480 }
480 }
481
481
482 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover
482 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover
483 {
483 {
484 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
484 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
485 #FFF;
485 #FFF;
486 width: 167px;
486 width: 167px;
487 margin: 0;
487 margin: 0;
488 padding: 12px 9px 7px 24px;
488 padding: 12px 9px 7px 24px;
489 }
489 }
490
490
491 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover
491 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover
492 {
492 {
493 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
493 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
494 #FFF;
494 #FFF;
495 min-width: 167px;
495 min-width: 167px;
496 margin: 0;
496 margin: 0;
497 padding: 12px 9px 7px 24px;
497 padding: 12px 9px 7px 24px;
498 }
498 }
499
499
500 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover
500 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover
501 {
501 {
502 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
502 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
503 9px #FFF;
503 9px #FFF;
504 min-width: 167px;
504 min-width: 167px;
505 margin: 0;
505 margin: 0;
506 padding: 12px 9px 7px 24px;
506 padding: 12px 9px 7px 24px;
507 }
507 }
508
508
509 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover
509 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover
510 {
510 {
511 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
511 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
512 #FFF;
512 #FFF;
513 min-width: 167px;
513 min-width: 167px;
514 margin: 0 0 0 14px;
514 margin: 0 0 0 14px;
515 padding: 12px 9px 7px 24px;
515 padding: 12px 9px 7px 24px;
516 }
516 }
517
517
518 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover
518 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover
519 {
519 {
520 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
520 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
521 #FFF;
521 #FFF;
522 min-width: 167px;
522 min-width: 167px;
523 margin: 0 0 0 14px;
523 margin: 0 0 0 14px;
524 padding: 12px 9px 7px 24px;
524 padding: 12px 9px 7px 24px;
525 }
525 }
526
526
527 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
527 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
528 {
528 {
529 background: url("../images/icons/database_edit.png") no-repeat scroll
529 background: url("../images/icons/database_edit.png") no-repeat scroll
530 4px 9px #FFF;
530 4px 9px #FFF;
531 width: 167px;
531 width: 167px;
532 margin: 0;
532 margin: 0;
533 padding: 12px 9px 7px 24px;
533 padding: 12px 9px 7px 24px;
534 }
534 }
535
535
536 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover
536 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover
537 {
537 {
538 background: url("../images/icons/database_link.png") no-repeat scroll
538 background: url("../images/icons/database_link.png") no-repeat scroll
539 4px 9px #FFF;
539 4px 9px #FFF;
540 width: 167px;
540 width: 167px;
541 margin: 0;
541 margin: 0;
542 padding: 12px 9px 7px 24px;
542 padding: 12px 9px 7px 24px;
543 }
543 }
544
544
545 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
545 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
546 {
546 {
547 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
547 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
548 width: 167px;
548 width: 167px;
549 margin: 0;
549 margin: 0;
550 padding: 12px 9px 7px 24px;
550 padding: 12px 9px 7px 24px;
551 }
551 }
552
552
553 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover
553 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover
554 {
554 {
555 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
555 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
556 width: 167px;
556 width: 167px;
557 margin: 0;
557 margin: 0;
558 padding: 12px 9px 7px 24px;
558 padding: 12px 9px 7px 24px;
559 }
559 }
560
560
561 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
561 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
562 {
562 {
563 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
563 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
564 width: 167px;
564 width: 167px;
565 margin: 0;
565 margin: 0;
566 padding: 12px 9px 7px 24px;
566 padding: 12px 9px 7px 24px;
567 }
567 }
568
568
569 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
569 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
570 {
570 {
571 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
571 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
572 width: 167px;
572 width: 167px;
573 margin: 0;
573 margin: 0;
574 padding: 12px 9px 7px 24px;
574 padding: 12px 9px 7px 24px;
575 }
575 }
576
576
577 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover
577 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover
578 {
578 {
579 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
579 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
580 width: 167px;
580 width: 167px;
581 margin: 0;
581 margin: 0;
582 padding: 12px 9px 7px 24px;
582 padding: 12px 9px 7px 24px;
583 }
583 }
584
584
585 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover
585 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover
586 {
586 {
587 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
587 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
588 9px;
588 9px;
589 width: 167px;
589 width: 167px;
590 margin: 0;
590 margin: 0;
591 padding: 12px 9px 7px 24px;
591 padding: 12px 9px 7px 24px;
592 }
592 }
593
593
594 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover
594 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover
595 {
595 {
596 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
596 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
597 width: 167px;
597 width: 167px;
598 margin: 0;
598 margin: 0;
599 padding: 12px 9px 7px 24px;
599 padding: 12px 9px 7px 24px;
600 }
600 }
601
601
602 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover
602 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover
603 {
603 {
604 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
604 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
605 width: 167px;
605 width: 167px;
606 margin: 0;
606 margin: 0;
607 padding: 12px 9px 7px 24px;
607 padding: 12px 9px 7px 24px;
608 }
608 }
609
609
610 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover
610 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover
611 {
611 {
612 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
612 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
613 9px;
613 9px;
614 width: 167px;
614 width: 167px;
615 margin: 0;
615 margin: 0;
616 padding: 12px 9px 7px 24px;
616 padding: 12px 9px 7px 24px;
617 }
617 }
618
618
619 #header #header-inner #quick li ul li a.tags,#header #header-inner #quick li ul li a.tags:hover
619 #header #header-inner #quick li ul li a.tags,#header #header-inner #quick li ul li a.tags:hover
620 {
620 {
621 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
621 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
622 width: 167px;
622 width: 167px;
623 margin: 0;
623 margin: 0;
624 padding: 12px 9px 7px 24px;
624 padding: 12px 9px 7px 24px;
625 }
625 }
626
626
627 #header #header-inner #quick li ul li a.admin,#header #header-inner #quick li ul li a.admin:hover
627 #header #header-inner #quick li ul li a.admin,#header #header-inner #quick li ul li a.admin:hover
628 {
628 {
629 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
629 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
630 width: 167px;
630 width: 167px;
631 margin: 0;
631 margin: 0;
632 padding: 12px 9px 7px 24px;
632 padding: 12px 9px 7px 24px;
633 }
633 }
634
634
635 .groups_breadcrumbs a {
635 .groups_breadcrumbs a {
636 color: #fff;
636 color: #fff;
637 }
637 }
638
638
639 .groups_breadcrumbs a:hover {
639 .groups_breadcrumbs a:hover {
640 color: #bfe3ff;
640 color: #bfe3ff;
641 text-decoration: none;
641 text-decoration: none;
642 }
642 }
643
643
644 .quick_repo_menu {
644 .quick_repo_menu {
645 background: #FFF url("../images/vertical-indicator.png") 8px 50%
645 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
646 no-repeat !important;
647 cursor: pointer;
646 cursor: pointer;
648 width: 8px;
647 width: 8px;
648 border: 1px solid transparent;
649 }
649 }
650
650
651 .quick_repo_menu.active {
651 .quick_repo_menu.active {
652 background: #FFF url("../images/horizontal-indicator.png") 4px 50%
652 background: url("../images/horizontal-indicator.png") no-repeat scroll 5px 50% #FFFFFF !important;
653 no-repeat !important;
653 border: 1px solid #003367;
654 cursor: pointer;
654 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
655 cursor: pointer;
655 }
656 }
656
657
657 .quick_repo_menu .menu_items {
658 .quick_repo_menu .menu_items {
658 margin-top: 6px;
659 margin-top: 10px;
660 margin-left:-6px;
659 width: 150px;
661 width: 150px;
660 position: absolute;
662 position: absolute;
661 background-color: #FFF;
663 background-color: #FFF;
662 background: none repeat scroll 0 0 #FFFFFF;
664 background: none repeat scroll 0 0 #FFFFFF;
663 border-color: #003367 #666666 #666666;
665 border-color: #003367 #666666 #666666;
664 border-right: 1px solid #666666;
666 border-right: 1px solid #666666;
665 border-style: solid;
667 border-style: solid;
666 border-width: 1px;
668 border-width: 1px;
667 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
669 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
670 border-top-style: none;
668 }
671 }
669
672
670 .quick_repo_menu .menu_items li {
673 .quick_repo_menu .menu_items li {
671 padding: 0 !important;
674 padding: 0 !important;
672 }
675 }
673
676
674 .quick_repo_menu .menu_items a {
677 .quick_repo_menu .menu_items a {
675 display: block;
678 display: block;
676 padding: 4px 12px 4px 8px;
679 padding: 4px 12px 4px 8px;
677 }
680 }
678
681
679 .quick_repo_menu .menu_items a:hover {
682 .quick_repo_menu .menu_items a:hover {
680 background-color: #EEE;
683 background-color: #EEE;
681 text-decoration: none;
684 text-decoration: none;
682 }
685 }
683
686
684 .quick_repo_menu .menu_items .icon img {
687 .quick_repo_menu .menu_items .icon img {
685 margin-bottom: -2px;
688 margin-bottom: -2px;
686 }
689 }
687
690
688 .quick_repo_menu .menu_items.hidden {
691 .quick_repo_menu .menu_items.hidden {
689 display: none;
692 display: none;
690 }
693 }
691
694
692 #content #left {
695 #content #left {
693 left: 0;
696 left: 0;
694 width: 280px;
697 width: 280px;
695 position: absolute;
698 position: absolute;
696 }
699 }
697
700
698 #content #right {
701 #content #right {
699 margin: 0 60px 10px 290px;
702 margin: 0 60px 10px 290px;
700 }
703 }
701
704
702 #content div.box {
705 #content div.box {
703 clear: both;
706 clear: both;
704 overflow: hidden;
707 overflow: hidden;
705 background: #fff;
708 background: #fff;
706 margin: 0 0 10px;
709 margin: 0 0 10px;
707 padding: 0 0 10px;
710 padding: 0 0 10px;
708 -webkit-border-radius: 4px 4px 4px 4px;
711 -webkit-border-radius: 4px 4px 4px 4px;
709 -khtml-border-radius: 4px 4px 4px 4px;
712 -khtml-border-radius: 4px 4px 4px 4px;
710 -moz-border-radius: 4px 4px 4px 4px;
713 -moz-border-radius: 4px 4px 4px 4px;
711 border-radius: 4px 4px 4px 4px;
714 border-radius: 4px 4px 4px 4px;
712 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
715 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
713 }
716 }
714
717
715 #content div.box-left {
718 #content div.box-left {
716 width: 49%;
719 width: 49%;
717 clear: none;
720 clear: none;
718 float: left;
721 float: left;
719 margin: 0 0 10px;
722 margin: 0 0 10px;
720 }
723 }
721
724
722 #content div.box-right {
725 #content div.box-right {
723 width: 49%;
726 width: 49%;
724 clear: none;
727 clear: none;
725 float: right;
728 float: right;
726 margin: 0 0 10px;
729 margin: 0 0 10px;
727 }
730 }
728
731
729 #content div.box div.title {
732 #content div.box div.title {
730 clear: both;
733 clear: both;
731 overflow: hidden;
734 overflow: hidden;
732 background-color: #eedc94;
735 background-color: #eedc94;
733 background-repeat: repeat-x;
736 background-repeat: repeat-x;
734 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
737 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
735 to(#eedc94) );
738 to(#eedc94) );
736 background-image: -moz-linear-gradient(top, #003b76, #00376e);
739 background-image: -moz-linear-gradient(top, #003b76, #00376e);
737 background-image: -ms-linear-gradient(top, #003b76, #00376e);
740 background-image: -ms-linear-gradient(top, #003b76, #00376e);
738 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
741 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
739 color-stop(100%, #00376e) );
742 color-stop(100%, #00376e) );
740 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
743 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
741 background-image: -o-linear-gradient(top, #003b76, #00376e) );
744 background-image: -o-linear-gradient(top, #003b76, #00376e) );
742 background-image: linear-gradient(top, #003b76, #00376e);
745 background-image: linear-gradient(top, #003b76, #00376e);
743 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
746 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
744 endColorstr='#00376e', GradientType=0 );
747 endColorstr='#00376e', GradientType=0 );
745 margin: 0 0 20px;
748 margin: 0 0 20px;
746 padding: 0;
749 padding: 0;
747 }
750 }
748
751
749 #content div.box div.title h5 {
752 #content div.box div.title h5 {
750 float: left;
753 float: left;
751 border: none;
754 border: none;
752 color: #fff;
755 color: #fff;
753 text-transform: uppercase;
756 text-transform: uppercase;
754 margin: 0;
757 margin: 0;
755 padding: 11px 0 11px 10px;
758 padding: 11px 0 11px 10px;
756 }
759 }
757
760
758 #content div.box div.title ul.links li {
761 #content div.box div.title ul.links li {
759 list-style: none;
762 list-style: none;
760 float: left;
763 float: left;
761 margin: 0;
764 margin: 0;
762 padding: 0;
765 padding: 0;
763 }
766 }
764
767
765 #content div.box div.title ul.links li a {
768 #content div.box div.title ul.links li a {
766 border-left: 1px solid #316293;
769 border-left: 1px solid #316293;
767 color: #FFFFFF;
770 color: #FFFFFF;
768 display: block;
771 display: block;
769 float: left;
772 float: left;
770 font-size: 13px;
773 font-size: 13px;
771 font-weight: 700;
774 font-weight: 700;
772 height: 1%;
775 height: 1%;
773 margin: 0;
776 margin: 0;
774 padding: 11px 22px 12px;
777 padding: 11px 22px 12px;
775 text-decoration: none;
778 text-decoration: none;
776 }
779 }
777
780
778 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6
781 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6
779 {
782 {
780 clear: both;
783 clear: both;
781 overflow: hidden;
784 overflow: hidden;
782 border-bottom: 1px solid #DDD;
785 border-bottom: 1px solid #DDD;
783 margin: 10px 20px;
786 margin: 10px 20px;
784 padding: 0 0 15px;
787 padding: 0 0 15px;
785 }
788 }
786
789
787 #content div.box p {
790 #content div.box p {
788 color: #5f5f5f;
791 color: #5f5f5f;
789 font-size: 12px;
792 font-size: 12px;
790 line-height: 150%;
793 line-height: 150%;
791 margin: 0 24px 10px;
794 margin: 0 24px 10px;
792 padding: 0;
795 padding: 0;
793 }
796 }
794
797
795 #content div.box blockquote {
798 #content div.box blockquote {
796 border-left: 4px solid #DDD;
799 border-left: 4px solid #DDD;
797 color: #5f5f5f;
800 color: #5f5f5f;
798 font-size: 11px;
801 font-size: 11px;
799 line-height: 150%;
802 line-height: 150%;
800 margin: 0 34px;
803 margin: 0 34px;
801 padding: 0 0 0 14px;
804 padding: 0 0 0 14px;
802 }
805 }
803
806
804 #content div.box blockquote p {
807 #content div.box blockquote p {
805 margin: 10px 0;
808 margin: 10px 0;
806 padding: 0;
809 padding: 0;
807 }
810 }
808
811
809 #content div.box dl {
812 #content div.box dl {
810 margin: 10px 24px;
813 margin: 10px 0px;
811 }
814 }
812
815
813 #content div.box dt {
816 #content div.box dt {
814 font-size: 12px;
817 font-size: 12px;
815 margin: 0;
818 margin: 0;
816 }
819 }
817
820
818 #content div.box dd {
821 #content div.box dd {
819 font-size: 12px;
822 font-size: 12px;
820 margin: 0;
823 margin: 0;
821 padding: 8px 0 8px 15px;
824 padding: 8px 0 8px 15px;
822 }
825 }
823
826
824 #content div.box li {
827 #content div.box li {
825 font-size: 12px;
828 font-size: 12px;
826 padding: 4px 0;
829 padding: 4px 0;
827 }
830 }
828
831
829 #content div.box ul.disc,#content div.box ul.circle {
832 #content div.box ul.disc,#content div.box ul.circle {
830 margin: 10px 24px 10px 38px;
833 margin: 10px 24px 10px 38px;
831 }
834 }
832
835
833 #content div.box ul.square {
836 #content div.box ul.square {
834 margin: 10px 24px 10px 40px;
837 margin: 10px 24px 10px 40px;
835 }
838 }
836
839
837 #content div.box img.left {
840 #content div.box img.left {
838 border: none;
841 border: none;
839 float: left;
842 float: left;
840 margin: 10px 10px 10px 0;
843 margin: 10px 10px 10px 0;
841 }
844 }
842
845
843 #content div.box img.right {
846 #content div.box img.right {
844 border: none;
847 border: none;
845 float: right;
848 float: right;
846 margin: 10px 0 10px 10px;
849 margin: 10px 0 10px 10px;
847 }
850 }
848
851
849 #content div.box div.messages {
852 #content div.box div.messages {
850 clear: both;
853 clear: both;
851 overflow: hidden;
854 overflow: hidden;
852 margin: 0 20px;
855 margin: 0 20px;
853 padding: 0;
856 padding: 0;
854 }
857 }
855
858
856 #content div.box div.message {
859 #content div.box div.message {
857 clear: both;
860 clear: both;
858 overflow: hidden;
861 overflow: hidden;
859 margin: 0;
862 margin: 0;
860 padding: 10px 0;
863 padding: 10px 0;
861 }
864 }
862
865
863 #content div.box div.message a {
866 #content div.box div.message a {
864 font-weight: 400 !important;
867 font-weight: 400 !important;
865 }
868 }
866
869
867 #content div.box div.message div.image {
870 #content div.box div.message div.image {
868 float: left;
871 float: left;
869 margin: 9px 0 0 5px;
872 margin: 9px 0 0 5px;
870 padding: 6px;
873 padding: 6px;
871 }
874 }
872
875
873 #content div.box div.message div.image img {
876 #content div.box div.message div.image img {
874 vertical-align: middle;
877 vertical-align: middle;
875 margin: 0;
878 margin: 0;
876 }
879 }
877
880
878 #content div.box div.message div.text {
881 #content div.box div.message div.text {
879 float: left;
882 float: left;
880 margin: 0;
883 margin: 0;
881 padding: 9px 6px;
884 padding: 9px 6px;
882 }
885 }
883
886
884 #content div.box div.message div.dismiss a {
887 #content div.box div.message div.dismiss a {
885 height: 16px;
888 height: 16px;
886 width: 16px;
889 width: 16px;
887 display: block;
890 display: block;
888 background: url("../images/icons/cross.png") no-repeat;
891 background: url("../images/icons/cross.png") no-repeat;
889 margin: 15px 14px 0 0;
892 margin: 15px 14px 0 0;
890 padding: 0;
893 padding: 0;
891 }
894 }
892
895
893 #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
896 #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
894 {
897 {
895 border: none;
898 border: none;
896 margin: 0;
899 margin: 0;
897 padding: 0;
900 padding: 0;
898 }
901 }
899
902
900 #content div.box div.message div.text span {
903 #content div.box div.message div.text span {
901 height: 1%;
904 height: 1%;
902 display: block;
905 display: block;
903 margin: 0;
906 margin: 0;
904 padding: 5px 0 0;
907 padding: 5px 0 0;
905 }
908 }
906
909
907 #content div.box div.message-error {
910 #content div.box div.message-error {
908 height: 1%;
911 height: 1%;
909 clear: both;
912 clear: both;
910 overflow: hidden;
913 overflow: hidden;
911 background: #FBE3E4;
914 background: #FBE3E4;
912 border: 1px solid #FBC2C4;
915 border: 1px solid #FBC2C4;
913 color: #860006;
916 color: #860006;
914 }
917 }
915
918
916 #content div.box div.message-error h6 {
919 #content div.box div.message-error h6 {
917 color: #860006;
920 color: #860006;
918 }
921 }
919
922
920 #content div.box div.message-warning {
923 #content div.box div.message-warning {
921 height: 1%;
924 height: 1%;
922 clear: both;
925 clear: both;
923 overflow: hidden;
926 overflow: hidden;
924 background: #FFF6BF;
927 background: #FFF6BF;
925 border: 1px solid #FFD324;
928 border: 1px solid #FFD324;
926 color: #5f5200;
929 color: #5f5200;
927 }
930 }
928
931
929 #content div.box div.message-warning h6 {
932 #content div.box div.message-warning h6 {
930 color: #5f5200;
933 color: #5f5200;
931 }
934 }
932
935
933 #content div.box div.message-notice {
936 #content div.box div.message-notice {
934 height: 1%;
937 height: 1%;
935 clear: both;
938 clear: both;
936 overflow: hidden;
939 overflow: hidden;
937 background: #8FBDE0;
940 background: #8FBDE0;
938 border: 1px solid #6BACDE;
941 border: 1px solid #6BACDE;
939 color: #003863;
942 color: #003863;
940 }
943 }
941
944
942 #content div.box div.message-notice h6 {
945 #content div.box div.message-notice h6 {
943 color: #003863;
946 color: #003863;
944 }
947 }
945
948
946 #content div.box div.message-success {
949 #content div.box div.message-success {
947 height: 1%;
950 height: 1%;
948 clear: both;
951 clear: both;
949 overflow: hidden;
952 overflow: hidden;
950 background: #E6EFC2;
953 background: #E6EFC2;
951 border: 1px solid #C6D880;
954 border: 1px solid #C6D880;
952 color: #4e6100;
955 color: #4e6100;
953 }
956 }
954
957
955 #content div.box div.message-success h6 {
958 #content div.box div.message-success h6 {
956 color: #4e6100;
959 color: #4e6100;
957 }
960 }
958
961
959 #content div.box div.form div.fields div.field {
962 #content div.box div.form div.fields div.field {
960 height: 1%;
963 height: 1%;
961 border-bottom: 1px solid #DDD;
964 border-bottom: 1px solid #DDD;
962 clear: both;
965 clear: both;
963 margin: 0;
966 margin: 0;
964 padding: 10px 0;
967 padding: 10px 0;
965 }
968 }
966
969
967 #content div.box div.form div.fields div.field-first {
970 #content div.box div.form div.fields div.field-first {
968 padding: 0 0 10px;
971 padding: 0 0 10px;
969 }
972 }
970
973
971 #content div.box div.form div.fields div.field-noborder {
974 #content div.box div.form div.fields div.field-noborder {
972 border-bottom: 0 !important;
975 border-bottom: 0 !important;
973 }
976 }
974
977
975 #content div.box div.form div.fields div.field span.error-message {
978 #content div.box div.form div.fields div.field span.error-message {
976 height: 1%;
979 height: 1%;
977 display: inline-block;
980 display: inline-block;
978 color: red;
981 color: red;
979 margin: 8px 0 0 4px;
982 margin: 8px 0 0 4px;
980 padding: 0;
983 padding: 0;
981 }
984 }
982
985
983 #content div.box div.form div.fields div.field span.success {
986 #content div.box div.form div.fields div.field span.success {
984 height: 1%;
987 height: 1%;
985 display: block;
988 display: block;
986 color: #316309;
989 color: #316309;
987 margin: 8px 0 0;
990 margin: 8px 0 0;
988 padding: 0;
991 padding: 0;
989 }
992 }
990
993
991 #content div.box div.form div.fields div.field div.label {
994 #content div.box div.form div.fields div.field div.label {
992 left: 70px;
995 left: 70px;
993 width: 155px;
996 width: 155px;
994 position: absolute;
997 position: absolute;
995 margin: 0;
998 margin: 0;
996 padding: 5px 0 0 0px;
999 padding: 5px 0 0 0px;
997 }
1000 }
998
1001
999 #content div.box div.form div.fields div.field div.label-summary {
1002 #content div.box div.form div.fields div.field div.label-summary {
1000 left: 30px;
1003 left: 30px;
1001 width: 155px;
1004 width: 155px;
1002 position: absolute;
1005 position: absolute;
1003 margin: 0;
1006 margin: 0;
1004 padding: 0px 0 0 0px;
1007 padding: 0px 0 0 0px;
1005 }
1008 }
1006
1009
1007 #content div.box-left div.form div.fields div.field div.label,
1010 #content div.box-left div.form div.fields div.field div.label,
1008 #content div.box-right div.form div.fields div.field div.label,
1011 #content div.box-right div.form div.fields div.field div.label,
1009 #content div.box-left div.form div.fields div.field div.label,
1012 #content div.box-left div.form div.fields div.field div.label,
1010 #content div.box-left div.form div.fields div.field div.label-summary,
1013 #content div.box-left div.form div.fields div.field div.label-summary,
1011 #content div.box-right div.form div.fields div.field div.label-summary,
1014 #content div.box-right div.form div.fields div.field div.label-summary,
1012 #content div.box-left div.form div.fields div.field div.label-summary
1015 #content div.box-left div.form div.fields div.field div.label-summary
1013 {
1016 {
1014 clear: both;
1017 clear: both;
1015 overflow: hidden;
1018 overflow: hidden;
1016 left: 0;
1019 left: 0;
1017 width: auto;
1020 width: auto;
1018 position: relative;
1021 position: relative;
1019 margin: 0;
1022 margin: 0;
1020 padding: 0 0 8px;
1023 padding: 0 0 8px;
1021 }
1024 }
1022
1025
1023 #content div.box div.form div.fields div.field div.label-select {
1026 #content div.box div.form div.fields div.field div.label-select {
1024 padding: 5px 0 0 5px;
1027 padding: 5px 0 0 5px;
1025 }
1028 }
1026
1029
1027 #content div.box-left div.form div.fields div.field div.label-select,
1030 #content div.box-left div.form div.fields div.field div.label-select,
1028 #content div.box-right div.form div.fields div.field div.label-select
1031 #content div.box-right div.form div.fields div.field div.label-select
1029 {
1032 {
1030 padding: 0 0 8px;
1033 padding: 0 0 8px;
1031 }
1034 }
1032
1035
1033 #content div.box-left div.form div.fields div.field div.label-textarea,
1036 #content div.box-left div.form div.fields div.field div.label-textarea,
1034 #content div.box-right div.form div.fields div.field div.label-textarea
1037 #content div.box-right div.form div.fields div.field div.label-textarea
1035 {
1038 {
1036 padding: 0 0 8px !important;
1039 padding: 0 0 8px !important;
1037 }
1040 }
1038
1041
1039 #content div.box div.form div.fields div.field div.label label,div.label label
1042 #content div.box div.form div.fields div.field div.label label,div.label label
1040 {
1043 {
1041 color: #393939;
1044 color: #393939;
1042 font-weight: 700;
1045 font-weight: 700;
1043 }
1046 }
1044 #content div.box div.form div.fields div.field div.label label,div.label-summary label
1047 #content div.box div.form div.fields div.field div.label label,div.label-summary label
1045 {
1048 {
1046 color: #393939;
1049 color: #393939;
1047 font-weight: 700;
1050 font-weight: 700;
1048 }
1051 }
1049 #content div.box div.form div.fields div.field div.input {
1052 #content div.box div.form div.fields div.field div.input {
1050 margin: 0 0 0 200px;
1053 margin: 0 0 0 200px;
1051 }
1054 }
1052
1055
1053 #content div.box div.form div.fields div.field div.input.summary {
1056 #content div.box div.form div.fields div.field div.input.summary {
1054 margin: 0 0 0 110px;
1057 margin: 0 0 0 110px;
1055 }
1058 }
1056 #content div.box div.form div.fields div.field div.input.summary-short {
1059 #content div.box div.form div.fields div.field div.input.summary-short {
1057 margin: 0 0 0 110px;
1060 margin: 0 0 0 110px;
1058 }
1061 }
1059 #content div.box div.form div.fields div.field div.file {
1062 #content div.box div.form div.fields div.field div.file {
1060 margin: 0 0 0 200px;
1063 margin: 0 0 0 200px;
1061 }
1064 }
1062
1065
1063 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input
1066 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input
1064 {
1067 {
1065 margin: 0 0 0 0px;
1068 margin: 0 0 0 0px;
1066 }
1069 }
1067
1070
1068 #content div.box div.form div.fields div.field div.input input {
1071 #content div.box div.form div.fields div.field div.input input {
1069 background: #FFF;
1072 background: #FFF;
1070 border-top: 1px solid #b3b3b3;
1073 border-top: 1px solid #b3b3b3;
1071 border-left: 1px solid #b3b3b3;
1074 border-left: 1px solid #b3b3b3;
1072 border-right: 1px solid #eaeaea;
1075 border-right: 1px solid #eaeaea;
1073 border-bottom: 1px solid #eaeaea;
1076 border-bottom: 1px solid #eaeaea;
1074 color: #000;
1077 color: #000;
1075 font-size: 11px;
1078 font-size: 11px;
1076 margin: 0;
1079 margin: 0;
1077 padding: 7px 7px 6px;
1080 padding: 7px 7px 6px;
1078 }
1081 }
1079
1082
1080 #content div.box div.form div.fields div.field div.file input {
1083 #content div.box div.form div.fields div.field div.file input {
1081 background: none repeat scroll 0 0 #FFFFFF;
1084 background: none repeat scroll 0 0 #FFFFFF;
1082 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1085 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1083 border-style: solid;
1086 border-style: solid;
1084 border-width: 1px;
1087 border-width: 1px;
1085 color: #000000;
1088 color: #000000;
1086 font-size: 11px;
1089 font-size: 11px;
1087 margin: 0;
1090 margin: 0;
1088 padding: 7px 7px 6px;
1091 padding: 7px 7px 6px;
1089 }
1092 }
1090
1093
1091 #content div.box div.form div.fields div.field div.input input.small {
1094 #content div.box div.form div.fields div.field div.input input.small {
1092 width: 30%;
1095 width: 30%;
1093 }
1096 }
1094
1097
1095 #content div.box div.form div.fields div.field div.input input.medium {
1098 #content div.box div.form div.fields div.field div.input input.medium {
1096 width: 55%;
1099 width: 55%;
1097 }
1100 }
1098
1101
1099 #content div.box div.form div.fields div.field div.input input.large {
1102 #content div.box div.form div.fields div.field div.input input.large {
1100 width: 85%;
1103 width: 85%;
1101 }
1104 }
1102
1105
1103 #content div.box div.form div.fields div.field div.input input.date {
1106 #content div.box div.form div.fields div.field div.input input.date {
1104 width: 177px;
1107 width: 177px;
1105 }
1108 }
1106
1109
1107 #content div.box div.form div.fields div.field div.input input.button {
1110 #content div.box div.form div.fields div.field div.input input.button {
1108 background: #D4D0C8;
1111 background: #D4D0C8;
1109 border-top: 1px solid #FFF;
1112 border-top: 1px solid #FFF;
1110 border-left: 1px solid #FFF;
1113 border-left: 1px solid #FFF;
1111 border-right: 1px solid #404040;
1114 border-right: 1px solid #404040;
1112 border-bottom: 1px solid #404040;
1115 border-bottom: 1px solid #404040;
1113 color: #000;
1116 color: #000;
1114 margin: 0;
1117 margin: 0;
1115 padding: 4px 8px;
1118 padding: 4px 8px;
1116 }
1119 }
1117
1120
1118 #content div.box div.form div.fields div.field div.textarea {
1121 #content div.box div.form div.fields div.field div.textarea {
1119 border-top: 1px solid #b3b3b3;
1122 border-top: 1px solid #b3b3b3;
1120 border-left: 1px solid #b3b3b3;
1123 border-left: 1px solid #b3b3b3;
1121 border-right: 1px solid #eaeaea;
1124 border-right: 1px solid #eaeaea;
1122 border-bottom: 1px solid #eaeaea;
1125 border-bottom: 1px solid #eaeaea;
1123 margin: 0 0 0 200px;
1126 margin: 0 0 0 200px;
1124 padding: 10px;
1127 padding: 10px;
1125 }
1128 }
1126
1129
1127 #content div.box div.form div.fields div.field div.textarea-editor {
1130 #content div.box div.form div.fields div.field div.textarea-editor {
1128 border: 1px solid #ddd;
1131 border: 1px solid #ddd;
1129 padding: 0;
1132 padding: 0;
1130 }
1133 }
1131
1134
1132 #content div.box div.form div.fields div.field div.textarea textarea {
1135 #content div.box div.form div.fields div.field div.textarea textarea {
1133 width: 100%;
1136 width: 100%;
1134 height: 220px;
1137 height: 220px;
1135 overflow: hidden;
1138 overflow: hidden;
1136 background: #FFF;
1139 background: #FFF;
1137 color: #000;
1140 color: #000;
1138 font-size: 11px;
1141 font-size: 11px;
1139 outline: none;
1142 outline: none;
1140 border-width: 0;
1143 border-width: 0;
1141 margin: 0;
1144 margin: 0;
1142 padding: 0;
1145 padding: 0;
1143 }
1146 }
1144
1147
1145 #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
1148 #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
1146 {
1149 {
1147 width: 100%;
1150 width: 100%;
1148 height: 100px;
1151 height: 100px;
1149 }
1152 }
1150
1153
1151 #content div.box div.form div.fields div.field div.textarea table {
1154 #content div.box div.form div.fields div.field div.textarea table {
1152 width: 100%;
1155 width: 100%;
1153 border: none;
1156 border: none;
1154 margin: 0;
1157 margin: 0;
1155 padding: 0;
1158 padding: 0;
1156 }
1159 }
1157
1160
1158 #content div.box div.form div.fields div.field div.textarea table td {
1161 #content div.box div.form div.fields div.field div.textarea table td {
1159 background: #DDD;
1162 background: #DDD;
1160 border: none;
1163 border: none;
1161 padding: 0;
1164 padding: 0;
1162 }
1165 }
1163
1166
1164 #content div.box div.form div.fields div.field div.textarea table td table
1167 #content div.box div.form div.fields div.field div.textarea table td table
1165 {
1168 {
1166 width: auto;
1169 width: auto;
1167 border: none;
1170 border: none;
1168 margin: 0;
1171 margin: 0;
1169 padding: 0;
1172 padding: 0;
1170 }
1173 }
1171
1174
1172 #content div.box div.form div.fields div.field div.textarea table td table td
1175 #content div.box div.form div.fields div.field div.textarea table td table td
1173 {
1176 {
1174 font-size: 11px;
1177 font-size: 11px;
1175 padding: 5px 5px 5px 0;
1178 padding: 5px 5px 5px 0;
1176 }
1179 }
1177
1180
1178 #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
1181 #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
1179 {
1182 {
1180 background: #f6f6f6;
1183 background: #f6f6f6;
1181 border-color: #666;
1184 border-color: #666;
1182 }
1185 }
1183
1186
1184 div.form div.fields div.field div.button {
1187 div.form div.fields div.field div.button {
1185 margin: 0;
1188 margin: 0;
1186 padding: 0 0 0 8px;
1189 padding: 0 0 0 8px;
1187 }
1190 }
1188 #content div.box table.noborder {
1191 #content div.box table.noborder {
1189 border: 1px solid transparent;
1192 border: 1px solid transparent;
1190 }
1193 }
1191
1194
1192 #content div.box table {
1195 #content div.box table {
1193 width: 100%;
1196 width: 100%;
1194 border-collapse: separate;
1197 border-collapse: separate;
1195 margin: 0;
1198 margin: 0;
1196 padding: 0;
1199 padding: 0;
1197 border: 1px solid #eee;
1200 border: 1px solid #eee;
1198 -webkit-border-radius: 4px;
1201 -webkit-border-radius: 4px;
1199 -moz-border-radius: 4px;
1202 -moz-border-radius: 4px;
1200 border-radius: 4px;
1203 border-radius: 4px;
1201 }
1204 }
1202
1205
1203 #content div.box table th {
1206 #content div.box table th {
1204 background: #eee;
1207 background: #eee;
1205 border-bottom: 1px solid #ddd;
1208 border-bottom: 1px solid #ddd;
1206 padding: 5px 0px 5px 5px;
1209 padding: 5px 0px 5px 5px;
1207 }
1210 }
1208
1211
1209 #content div.box table th.left {
1212 #content div.box table th.left {
1210 text-align: left;
1213 text-align: left;
1211 }
1214 }
1212
1215
1213 #content div.box table th.right {
1216 #content div.box table th.right {
1214 text-align: right;
1217 text-align: right;
1215 }
1218 }
1216
1219
1217 #content div.box table th.center {
1220 #content div.box table th.center {
1218 text-align: center;
1221 text-align: center;
1219 }
1222 }
1220
1223
1221 #content div.box table th.selected {
1224 #content div.box table th.selected {
1222 vertical-align: middle;
1225 vertical-align: middle;
1223 padding: 0;
1226 padding: 0;
1224 }
1227 }
1225
1228
1226 #content div.box table td {
1229 #content div.box table td {
1227 background: #fff;
1230 background: #fff;
1228 border-bottom: 1px solid #cdcdcd;
1231 border-bottom: 1px solid #cdcdcd;
1229 vertical-align: middle;
1232 vertical-align: middle;
1230 padding: 5px;
1233 padding: 5px;
1231 }
1234 }
1232
1235
1233 #content div.box table tr.selected td {
1236 #content div.box table tr.selected td {
1234 background: #FFC;
1237 background: #FFC;
1235 }
1238 }
1236
1239
1237 #content div.box table td.selected {
1240 #content div.box table td.selected {
1238 width: 3%;
1241 width: 3%;
1239 text-align: center;
1242 text-align: center;
1240 vertical-align: middle;
1243 vertical-align: middle;
1241 padding: 0;
1244 padding: 0;
1242 }
1245 }
1243
1246
1244 #content div.box table td.action {
1247 #content div.box table td.action {
1245 width: 45%;
1248 width: 45%;
1246 text-align: left;
1249 text-align: left;
1247 }
1250 }
1248
1251
1249 #content div.box table td.date {
1252 #content div.box table td.date {
1250 width: 33%;
1253 width: 33%;
1251 text-align: center;
1254 text-align: center;
1252 }
1255 }
1253
1256
1254 #content div.box div.action {
1257 #content div.box div.action {
1255 float: right;
1258 float: right;
1256 background: #FFF;
1259 background: #FFF;
1257 text-align: right;
1260 text-align: right;
1258 margin: 10px 0 0;
1261 margin: 10px 0 0;
1259 padding: 0;
1262 padding: 0;
1260 }
1263 }
1261
1264
1262 #content div.box div.action select {
1265 #content div.box div.action select {
1263 font-size: 11px;
1266 font-size: 11px;
1264 margin: 0;
1267 margin: 0;
1265 }
1268 }
1266
1269
1267 #content div.box div.action .ui-selectmenu {
1270 #content div.box div.action .ui-selectmenu {
1268 margin: 0;
1271 margin: 0;
1269 padding: 0;
1272 padding: 0;
1270 }
1273 }
1271
1274
1272 #content div.box div.pagination {
1275 #content div.box div.pagination {
1273 height: 1%;
1276 height: 1%;
1274 clear: both;
1277 clear: both;
1275 overflow: hidden;
1278 overflow: hidden;
1276 margin: 10px 0 0;
1279 margin: 10px 0 0;
1277 padding: 0;
1280 padding: 0;
1278 }
1281 }
1279
1282
1280 #content div.box div.pagination ul.pager {
1283 #content div.box div.pagination ul.pager {
1281 float: right;
1284 float: right;
1282 text-align: right;
1285 text-align: right;
1283 margin: 0;
1286 margin: 0;
1284 padding: 0;
1287 padding: 0;
1285 }
1288 }
1286
1289
1287 #content div.box div.pagination ul.pager li {
1290 #content div.box div.pagination ul.pager li {
1288 height: 1%;
1291 height: 1%;
1289 float: left;
1292 float: left;
1290 list-style: none;
1293 list-style: none;
1291 background: #ebebeb url("../images/pager.png") repeat-x;
1294 background: #ebebeb url("../images/pager.png") repeat-x;
1292 border-top: 1px solid #dedede;
1295 border-top: 1px solid #dedede;
1293 border-left: 1px solid #cfcfcf;
1296 border-left: 1px solid #cfcfcf;
1294 border-right: 1px solid #c4c4c4;
1297 border-right: 1px solid #c4c4c4;
1295 border-bottom: 1px solid #c4c4c4;
1298 border-bottom: 1px solid #c4c4c4;
1296 color: #4A4A4A;
1299 color: #4A4A4A;
1297 font-weight: 700;
1300 font-weight: 700;
1298 margin: 0 0 0 4px;
1301 margin: 0 0 0 4px;
1299 padding: 0;
1302 padding: 0;
1300 }
1303 }
1301
1304
1302 #content div.box div.pagination ul.pager li.separator {
1305 #content div.box div.pagination ul.pager li.separator {
1303 padding: 6px;
1306 padding: 6px;
1304 }
1307 }
1305
1308
1306 #content div.box div.pagination ul.pager li.current {
1309 #content div.box div.pagination ul.pager li.current {
1307 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1310 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1308 border-top: 1px solid #ccc;
1311 border-top: 1px solid #ccc;
1309 border-left: 1px solid #bebebe;
1312 border-left: 1px solid #bebebe;
1310 border-right: 1px solid #b1b1b1;
1313 border-right: 1px solid #b1b1b1;
1311 border-bottom: 1px solid #afafaf;
1314 border-bottom: 1px solid #afafaf;
1312 color: #515151;
1315 color: #515151;
1313 padding: 6px;
1316 padding: 6px;
1314 }
1317 }
1315
1318
1316 #content div.box div.pagination ul.pager li a {
1319 #content div.box div.pagination ul.pager li a {
1317 height: 1%;
1320 height: 1%;
1318 display: block;
1321 display: block;
1319 float: left;
1322 float: left;
1320 color: #515151;
1323 color: #515151;
1321 text-decoration: none;
1324 text-decoration: none;
1322 margin: 0;
1325 margin: 0;
1323 padding: 6px;
1326 padding: 6px;
1324 }
1327 }
1325
1328
1326 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active
1329 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active
1327 {
1330 {
1328 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1331 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1329 border-top: 1px solid #ccc;
1332 border-top: 1px solid #ccc;
1330 border-left: 1px solid #bebebe;
1333 border-left: 1px solid #bebebe;
1331 border-right: 1px solid #b1b1b1;
1334 border-right: 1px solid #b1b1b1;
1332 border-bottom: 1px solid #afafaf;
1335 border-bottom: 1px solid #afafaf;
1333 margin: -1px;
1336 margin: -1px;
1334 }
1337 }
1335
1338
1336 #content div.box div.pagination-wh {
1339 #content div.box div.pagination-wh {
1337 height: 1%;
1340 height: 1%;
1338 clear: both;
1341 clear: both;
1339 overflow: hidden;
1342 overflow: hidden;
1340 text-align: right;
1343 text-align: right;
1341 margin: 10px 0 0;
1344 margin: 10px 0 0;
1342 padding: 0;
1345 padding: 0;
1343 }
1346 }
1344
1347
1345 #content div.box div.pagination-right {
1348 #content div.box div.pagination-right {
1346 float: right;
1349 float: right;
1347 }
1350 }
1348
1351
1349 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot
1352 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot
1350 {
1353 {
1351 height: 1%;
1354 height: 1%;
1352 float: left;
1355 float: left;
1353 background: #ebebeb url("../images/pager.png") repeat-x;
1356 background: #ebebeb url("../images/pager.png") repeat-x;
1354 border-top: 1px solid #dedede;
1357 border-top: 1px solid #dedede;
1355 border-left: 1px solid #cfcfcf;
1358 border-left: 1px solid #cfcfcf;
1356 border-right: 1px solid #c4c4c4;
1359 border-right: 1px solid #c4c4c4;
1357 border-bottom: 1px solid #c4c4c4;
1360 border-bottom: 1px solid #c4c4c4;
1358 color: #4A4A4A;
1361 color: #4A4A4A;
1359 font-weight: 700;
1362 font-weight: 700;
1360 margin: 0 0 0 4px;
1363 margin: 0 0 0 4px;
1361 padding: 6px;
1364 padding: 6px;
1362 }
1365 }
1363
1366
1364 #content div.box div.pagination-wh span.pager_curpage {
1367 #content div.box div.pagination-wh span.pager_curpage {
1365 height: 1%;
1368 height: 1%;
1366 float: left;
1369 float: left;
1367 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1370 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1368 border-top: 1px solid #ccc;
1371 border-top: 1px solid #ccc;
1369 border-left: 1px solid #bebebe;
1372 border-left: 1px solid #bebebe;
1370 border-right: 1px solid #b1b1b1;
1373 border-right: 1px solid #b1b1b1;
1371 border-bottom: 1px solid #afafaf;
1374 border-bottom: 1px solid #afafaf;
1372 color: #515151;
1375 color: #515151;
1373 font-weight: 700;
1376 font-weight: 700;
1374 margin: 0 0 0 4px;
1377 margin: 0 0 0 4px;
1375 padding: 6px;
1378 padding: 6px;
1376 }
1379 }
1377
1380
1378 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active
1381 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active
1379 {
1382 {
1380 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1383 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1381 border-top: 1px solid #ccc;
1384 border-top: 1px solid #ccc;
1382 border-left: 1px solid #bebebe;
1385 border-left: 1px solid #bebebe;
1383 border-right: 1px solid #b1b1b1;
1386 border-right: 1px solid #b1b1b1;
1384 border-bottom: 1px solid #afafaf;
1387 border-bottom: 1px solid #afafaf;
1385 text-decoration: none;
1388 text-decoration: none;
1386 }
1389 }
1387
1390
1388 #content div.box div.traffic div.legend {
1391 #content div.box div.traffic div.legend {
1389 clear: both;
1392 clear: both;
1390 overflow: hidden;
1393 overflow: hidden;
1391 border-bottom: 1px solid #ddd;
1394 border-bottom: 1px solid #ddd;
1392 margin: 0 0 10px;
1395 margin: 0 0 10px;
1393 padding: 0 0 10px;
1396 padding: 0 0 10px;
1394 }
1397 }
1395
1398
1396 #content div.box div.traffic div.legend h6 {
1399 #content div.box div.traffic div.legend h6 {
1397 float: left;
1400 float: left;
1398 border: none;
1401 border: none;
1399 margin: 0;
1402 margin: 0;
1400 padding: 0;
1403 padding: 0;
1401 }
1404 }
1402
1405
1403 #content div.box div.traffic div.legend li {
1406 #content div.box div.traffic div.legend li {
1404 list-style: none;
1407 list-style: none;
1405 float: left;
1408 float: left;
1406 font-size: 11px;
1409 font-size: 11px;
1407 margin: 0;
1410 margin: 0;
1408 padding: 0 8px 0 4px;
1411 padding: 0 8px 0 4px;
1409 }
1412 }
1410
1413
1411 #content div.box div.traffic div.legend li.visits {
1414 #content div.box div.traffic div.legend li.visits {
1412 border-left: 12px solid #edc240;
1415 border-left: 12px solid #edc240;
1413 }
1416 }
1414
1417
1415 #content div.box div.traffic div.legend li.pageviews {
1418 #content div.box div.traffic div.legend li.pageviews {
1416 border-left: 12px solid #afd8f8;
1419 border-left: 12px solid #afd8f8;
1417 }
1420 }
1418
1421
1419 #content div.box div.traffic table {
1422 #content div.box div.traffic table {
1420 width: auto;
1423 width: auto;
1421 }
1424 }
1422
1425
1423 #content div.box div.traffic table td {
1426 #content div.box div.traffic table td {
1424 background: transparent;
1427 background: transparent;
1425 border: none;
1428 border: none;
1426 padding: 2px 3px 3px;
1429 padding: 2px 3px 3px;
1427 }
1430 }
1428
1431
1429 #content div.box div.traffic table td.legendLabel {
1432 #content div.box div.traffic table td.legendLabel {
1430 padding: 0 3px 2px;
1433 padding: 0 3px 2px;
1431 }
1434 }
1432
1435
1433 #summary {
1436 #summary {
1434
1437
1435 }
1438 }
1436
1439
1437 #summary .desc {
1440 #summary .desc {
1438 white-space: pre;
1441 white-space: pre;
1439 width: 100%;
1442 width: 100%;
1440 }
1443 }
1441
1444
1442 #summary .repo_name {
1445 #summary .repo_name {
1443 font-size: 1.6em;
1446 font-size: 1.6em;
1444 font-weight: bold;
1447 font-weight: bold;
1445 vertical-align: baseline;
1448 vertical-align: baseline;
1446 clear: right
1449 clear: right
1447 }
1450 }
1448
1451
1449 #footer {
1452 #footer {
1450 clear: both;
1453 clear: both;
1451 overflow: hidden;
1454 overflow: hidden;
1452 text-align: right;
1455 text-align: right;
1453 margin: 0;
1456 margin: 0;
1454 padding: 0 10px 4px;
1457 padding: 0 10px 4px;
1455 margin: -10px 0 0;
1458 margin: -10px 0 0;
1456 }
1459 }
1457
1460
1458 #footer div#footer-inner {
1461 #footer div#footer-inner {
1459 background-color: #eedc94; background-repeat : repeat-x;
1462 background-color: #eedc94; background-repeat : repeat-x;
1460 background-image : -khtml-gradient( linear, left top, left bottom,
1463 background-image : -khtml-gradient( linear, left top, left bottom,
1461 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1464 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1462 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1465 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1463 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1466 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1464 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1467 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1465 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1468 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1466 background-image : -o-linear-gradient( top, #003b76, #00376e));
1469 background-image : -o-linear-gradient( top, #003b76, #00376e));
1467 background-image : linear-gradient( top, #003b76, #00376e); filter :
1470 background-image : linear-gradient( top, #003b76, #00376e); filter :
1468 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1471 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1469 '#003b76', endColorstr = '#00376e', GradientType = 0);
1472 '#003b76', endColorstr = '#00376e', GradientType = 0);
1470 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1473 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1471 -webkit-border-radius: 4px 4px 4px 4px;
1474 -webkit-border-radius: 4px 4px 4px 4px;
1472 -khtml-border-radius: 4px 4px 4px 4px;
1475 -khtml-border-radius: 4px 4px 4px 4px;
1473 -moz-border-radius: 4px 4px 4px 4px;
1476 -moz-border-radius: 4px 4px 4px 4px;
1474 border-radius: 4px 4px 4px 4px;
1477 border-radius: 4px 4px 4px 4px;
1475 background-repeat: repeat-x;
1478 background-repeat: repeat-x;
1476 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1479 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1477 to(#eedc94) );
1480 to(#eedc94) );
1478 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1481 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1479 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1482 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1480 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1483 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1481 color-stop(100%, #00376e) );
1484 color-stop(100%, #00376e) );
1482 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1485 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1483 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1486 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1484 background-image: linear-gradient(top, #003b76, #00376e);
1487 background-image: linear-gradient(top, #003b76, #00376e);
1485 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1488 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1486 endColorstr='#00376e', GradientType=0 );
1489 endColorstr='#00376e', GradientType=0 );
1487 }
1490 }
1488
1491
1489 #footer div#footer-inner p {
1492 #footer div#footer-inner p {
1490 padding: 15px 25px 15px 0;
1493 padding: 15px 25px 15px 0;
1491 color: #FFF;
1494 color: #FFF;
1492 font-weight: 700;
1495 font-weight: 700;
1493 }
1496 }
1494
1497
1495 #footer div#footer-inner .footer-link {
1498 #footer div#footer-inner .footer-link {
1496 float: left;
1499 float: left;
1497 padding-left: 10px;
1500 padding-left: 10px;
1498 }
1501 }
1499
1502
1500 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a
1503 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a
1501 {
1504 {
1502 color: #FFF;
1505 color: #FFF;
1503 }
1506 }
1504
1507
1505 #login div.title {
1508 #login div.title {
1506 width: 420px;
1509 width: 420px;
1507 clear: both;
1510 clear: both;
1508 overflow: hidden;
1511 overflow: hidden;
1509 position: relative;
1512 position: relative;
1510 background-color: #eedc94; background-repeat : repeat-x;
1513 background-color: #eedc94; background-repeat : repeat-x;
1511 background-image : -khtml-gradient( linear, left top, left bottom,
1514 background-image : -khtml-gradient( linear, left top, left bottom,
1512 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1515 from( #fceec1), to( #eedc94)); background-image : -moz-linear-gradient(
1513 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1516 top, #003b76, #00376e); background-image : -ms-linear-gradient( top,
1514 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1517 #003b76, #00376e); background-image : -webkit-gradient( linear, left
1515 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1518 top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1516 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1519 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1517 background-image : -o-linear-gradient( top, #003b76, #00376e));
1520 background-image : -o-linear-gradient( top, #003b76, #00376e));
1518 background-image : linear-gradient( top, #003b76, #00376e); filter :
1521 background-image : linear-gradient( top, #003b76, #00376e); filter :
1519 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1522 progid : DXImageTransform.Microsoft.gradient ( startColorstr =
1520 '#003b76', endColorstr = '#00376e', GradientType = 0);
1523 '#003b76', endColorstr = '#00376e', GradientType = 0);
1521 margin: 0 auto;
1524 margin: 0 auto;
1522 padding: 0;
1525 padding: 0;
1523 background-repeat: repeat-x;
1526 background-repeat: repeat-x;
1524 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1527 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1525 to(#eedc94) );
1528 to(#eedc94) );
1526 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1529 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1527 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1530 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1528 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1531 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1529 color-stop(100%, #00376e) );
1532 color-stop(100%, #00376e) );
1530 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1533 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1531 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1534 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1532 background-image: linear-gradient(top, #003b76, #00376e);
1535 background-image: linear-gradient(top, #003b76, #00376e);
1533 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1536 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1534 endColorstr='#00376e', GradientType=0 );
1537 endColorstr='#00376e', GradientType=0 );
1535 }
1538 }
1536
1539
1537 #login div.inner {
1540 #login div.inner {
1538 width: 380px;
1541 width: 380px;
1539 background: #FFF url("../images/login.png") no-repeat top left;
1542 background: #FFF url("../images/login.png") no-repeat top left;
1540 border-top: none;
1543 border-top: none;
1541 border-bottom: none;
1544 border-bottom: none;
1542 margin: 0 auto;
1545 margin: 0 auto;
1543 padding: 20px;
1546 padding: 20px;
1544 }
1547 }
1545
1548
1546 #login div.form div.fields div.field div.label {
1549 #login div.form div.fields div.field div.label {
1547 width: 173px;
1550 width: 173px;
1548 float: left;
1551 float: left;
1549 text-align: right;
1552 text-align: right;
1550 margin: 2px 10px 0 0;
1553 margin: 2px 10px 0 0;
1551 padding: 5px 0 0 5px;
1554 padding: 5px 0 0 5px;
1552 }
1555 }
1553
1556
1554 #login div.form div.fields div.field div.input input {
1557 #login div.form div.fields div.field div.input input {
1555 width: 176px;
1558 width: 176px;
1556 background: #FFF;
1559 background: #FFF;
1557 border-top: 1px solid #b3b3b3;
1560 border-top: 1px solid #b3b3b3;
1558 border-left: 1px solid #b3b3b3;
1561 border-left: 1px solid #b3b3b3;
1559 border-right: 1px solid #eaeaea;
1562 border-right: 1px solid #eaeaea;
1560 border-bottom: 1px solid #eaeaea;
1563 border-bottom: 1px solid #eaeaea;
1561 color: #000;
1564 color: #000;
1562 font-size: 11px;
1565 font-size: 11px;
1563 margin: 0;
1566 margin: 0;
1564 padding: 7px 7px 6px;
1567 padding: 7px 7px 6px;
1565 }
1568 }
1566
1569
1567 #login div.form div.fields div.buttons {
1570 #login div.form div.fields div.buttons {
1568 clear: both;
1571 clear: both;
1569 overflow: hidden;
1572 overflow: hidden;
1570 border-top: 1px solid #DDD;
1573 border-top: 1px solid #DDD;
1571 text-align: right;
1574 text-align: right;
1572 margin: 0;
1575 margin: 0;
1573 padding: 10px 0 0;
1576 padding: 10px 0 0;
1574 }
1577 }
1575
1578
1576 #login div.form div.links {
1579 #login div.form div.links {
1577 clear: both;
1580 clear: both;
1578 overflow: hidden;
1581 overflow: hidden;
1579 margin: 10px 0 0;
1582 margin: 10px 0 0;
1580 padding: 0 0 2px;
1583 padding: 0 0 2px;
1581 }
1584 }
1582
1585
1583 #quick_login {
1586 #quick_login {
1584 top: 31px;
1587 top: 31px;
1585 background-color: rgb(0, 51, 103);
1588 background-color: rgb(0, 51, 103);
1586 z-index: 999;
1589 z-index: 999;
1587 height: 150px;
1590 height: 150px;
1588 position: absolute;
1591 position: absolute;
1589 margin-left: -16px;
1592 margin-left: -16px;
1590 width: 281px;
1593 width: 281px;
1591 -webkit-border-radius: 0px 0px 4px 4px;
1594 -webkit-border-radius: 0px 0px 4px 4px;
1592 -khtml-border-radius: 0px 0px 4px 4px;
1595 -khtml-border-radius: 0px 0px 4px 4px;
1593 -moz-border-radius: 0px 0px 4px 4px;
1596 -moz-border-radius: 0px 0px 4px 4px;
1594 border-radius: 0px 0px 4px 4px;
1597 border-radius: 0px 0px 4px 4px;
1595 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1598 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1596 }
1599 }
1597
1600
1598 #quick_login .password_forgoten {
1601 #quick_login .password_forgoten {
1599 padding-right: 10px;
1602 padding-right: 10px;
1600 padding-top: 0px;
1603 padding-top: 0px;
1601 float: left;
1604 float: left;
1602 }
1605 }
1603
1606
1604 #quick_login .password_forgoten a {
1607 #quick_login .password_forgoten a {
1605 font-size: 10px
1608 font-size: 10px
1606 }
1609 }
1607
1610
1608 #quick_login .register {
1611 #quick_login .register {
1609 padding-right: 10px;
1612 padding-right: 10px;
1610 padding-top: 5px;
1613 padding-top: 5px;
1611 float: left;
1614 float: left;
1612 }
1615 }
1613
1616
1614 #quick_login .register a {
1617 #quick_login .register a {
1615 font-size: 10px
1618 font-size: 10px
1616 }
1619 }
1617
1620
1618 #quick_login div.form div.fields {
1621 #quick_login div.form div.fields {
1619 padding-top: 2px;
1622 padding-top: 2px;
1620 padding-left: 10px;
1623 padding-left: 10px;
1621 }
1624 }
1622
1625
1623 #quick_login div.form div.fields div.field {
1626 #quick_login div.form div.fields div.field {
1624 padding: 5px;
1627 padding: 5px;
1625 }
1628 }
1626
1629
1627 #quick_login div.form div.fields div.field div.label label {
1630 #quick_login div.form div.fields div.field div.label label {
1628 color: #fff;
1631 color: #fff;
1629 padding-bottom: 3px;
1632 padding-bottom: 3px;
1630 }
1633 }
1631
1634
1632 #quick_login div.form div.fields div.field div.input input {
1635 #quick_login div.form div.fields div.field div.input input {
1633 width: 236px;
1636 width: 236px;
1634 background: #FFF;
1637 background: #FFF;
1635 border-top: 1px solid #b3b3b3;
1638 border-top: 1px solid #b3b3b3;
1636 border-left: 1px solid #b3b3b3;
1639 border-left: 1px solid #b3b3b3;
1637 border-right: 1px solid #eaeaea;
1640 border-right: 1px solid #eaeaea;
1638 border-bottom: 1px solid #eaeaea;
1641 border-bottom: 1px solid #eaeaea;
1639 color: #000;
1642 color: #000;
1640 font-size: 11px;
1643 font-size: 11px;
1641 margin: 0;
1644 margin: 0;
1642 padding: 5px 7px 4px;
1645 padding: 5px 7px 4px;
1643 }
1646 }
1644
1647
1645 #quick_login div.form div.fields div.buttons {
1648 #quick_login div.form div.fields div.buttons {
1646 clear: both;
1649 clear: both;
1647 overflow: hidden;
1650 overflow: hidden;
1648 text-align: right;
1651 text-align: right;
1649 margin: 0;
1652 margin: 0;
1650 padding: 10px 14px 0px 5px;
1653 padding: 10px 14px 0px 5px;
1651 }
1654 }
1652
1655
1653 #quick_login div.form div.links {
1656 #quick_login div.form div.links {
1654 clear: both;
1657 clear: both;
1655 overflow: hidden;
1658 overflow: hidden;
1656 margin: 10px 0 0;
1659 margin: 10px 0 0;
1657 padding: 0 0 2px;
1660 padding: 0 0 2px;
1658 }
1661 }
1659
1662
1660 #register div.title {
1663 #register div.title {
1661 clear: both;
1664 clear: both;
1662 overflow: hidden;
1665 overflow: hidden;
1663 position: relative;
1666 position: relative;
1664 background-color: #eedc94;
1667 background-color: #eedc94;
1665 background-repeat: repeat-x;
1668 background-repeat: repeat-x;
1666 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1669 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
1667 to(#eedc94) );
1670 to(#eedc94) );
1668 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1671 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1669 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1672 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1670 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1673 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),
1671 color-stop(100%, #00376e) );
1674 color-stop(100%, #00376e) );
1672 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1675 background-image: -webkit-linear-gradient(top, #003b76, #00376e) );
1673 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1676 background-image: -o-linear-gradient(top, #003b76, #00376e) );
1674 background-image: linear-gradient(top, #003b76, #00376e);
1677 background-image: linear-gradient(top, #003b76, #00376e);
1675 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1678 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
1676 endColorstr='#00376e', GradientType=0 );
1679 endColorstr='#00376e', GradientType=0 );
1677 margin: 0 auto;
1680 margin: 0 auto;
1678 padding: 0;
1681 padding: 0;
1679 }
1682 }
1680
1683
1681 #register div.inner {
1684 #register div.inner {
1682 background: #FFF;
1685 background: #FFF;
1683 border-top: none;
1686 border-top: none;
1684 border-bottom: none;
1687 border-bottom: none;
1685 margin: 0 auto;
1688 margin: 0 auto;
1686 padding: 20px;
1689 padding: 20px;
1687 }
1690 }
1688
1691
1689 #register div.form div.fields div.field div.label {
1692 #register div.form div.fields div.field div.label {
1690 width: 135px;
1693 width: 135px;
1691 float: left;
1694 float: left;
1692 text-align: right;
1695 text-align: right;
1693 margin: 2px 10px 0 0;
1696 margin: 2px 10px 0 0;
1694 padding: 5px 0 0 5px;
1697 padding: 5px 0 0 5px;
1695 }
1698 }
1696
1699
1697 #register div.form div.fields div.field div.input input {
1700 #register div.form div.fields div.field div.input input {
1698 width: 300px;
1701 width: 300px;
1699 background: #FFF;
1702 background: #FFF;
1700 border-top: 1px solid #b3b3b3;
1703 border-top: 1px solid #b3b3b3;
1701 border-left: 1px solid #b3b3b3;
1704 border-left: 1px solid #b3b3b3;
1702 border-right: 1px solid #eaeaea;
1705 border-right: 1px solid #eaeaea;
1703 border-bottom: 1px solid #eaeaea;
1706 border-bottom: 1px solid #eaeaea;
1704 color: #000;
1707 color: #000;
1705 font-size: 11px;
1708 font-size: 11px;
1706 margin: 0;
1709 margin: 0;
1707 padding: 7px 7px 6px;
1710 padding: 7px 7px 6px;
1708 }
1711 }
1709
1712
1710 #register div.form div.fields div.buttons {
1713 #register div.form div.fields div.buttons {
1711 clear: both;
1714 clear: both;
1712 overflow: hidden;
1715 overflow: hidden;
1713 border-top: 1px solid #DDD;
1716 border-top: 1px solid #DDD;
1714 text-align: left;
1717 text-align: left;
1715 margin: 0;
1718 margin: 0;
1716 padding: 10px 0 0 150px;
1719 padding: 10px 0 0 150px;
1717 }
1720 }
1718
1721
1719 #register div.form div.activation_msg {
1722 #register div.form div.activation_msg {
1720 padding-top: 4px;
1723 padding-top: 4px;
1721 padding-bottom: 4px;
1724 padding-bottom: 4px;
1722 }
1725 }
1723
1726
1724 #journal .journal_day {
1727 #journal .journal_day {
1725 font-size: 20px;
1728 font-size: 20px;
1726 padding: 10px 0px;
1729 padding: 10px 0px;
1727 border-bottom: 2px solid #DDD;
1730 border-bottom: 2px solid #DDD;
1728 margin-left: 10px;
1731 margin-left: 10px;
1729 margin-right: 10px;
1732 margin-right: 10px;
1730 }
1733 }
1731
1734
1732 #journal .journal_container {
1735 #journal .journal_container {
1733 padding: 5px;
1736 padding: 5px;
1734 clear: both;
1737 clear: both;
1735 margin: 0px 5px 0px 10px;
1738 margin: 0px 5px 0px 10px;
1736 }
1739 }
1737
1740
1738 #journal .journal_action_container {
1741 #journal .journal_action_container {
1739 padding-left: 38px;
1742 padding-left: 38px;
1740 }
1743 }
1741
1744
1742 #journal .journal_user {
1745 #journal .journal_user {
1743 color: #747474;
1746 color: #747474;
1744 font-size: 14px;
1747 font-size: 14px;
1745 font-weight: bold;
1748 font-weight: bold;
1746 height: 30px;
1749 height: 30px;
1747 }
1750 }
1748
1751
1749 #journal .journal_icon {
1752 #journal .journal_icon {
1750 clear: both;
1753 clear: both;
1751 float: left;
1754 float: left;
1752 padding-right: 4px;
1755 padding-right: 4px;
1753 padding-top: 3px;
1756 padding-top: 3px;
1754 }
1757 }
1755
1758
1756 #journal .journal_action {
1759 #journal .journal_action {
1757 padding-top: 4px;
1760 padding-top: 4px;
1758 min-height: 2px;
1761 min-height: 2px;
1759 float: left
1762 float: left
1760 }
1763 }
1761
1764
1762 #journal .journal_action_params {
1765 #journal .journal_action_params {
1763 clear: left;
1766 clear: left;
1764 padding-left: 22px;
1767 padding-left: 22px;
1765 }
1768 }
1766
1769
1767 #journal .journal_repo {
1770 #journal .journal_repo {
1768 float: left;
1771 float: left;
1769 margin-left: 6px;
1772 margin-left: 6px;
1770 padding-top: 3px;
1773 padding-top: 3px;
1771 }
1774 }
1772
1775
1773 #journal .date {
1776 #journal .date {
1774 clear: both;
1777 clear: both;
1775 color: #777777;
1778 color: #777777;
1776 font-size: 11px;
1779 font-size: 11px;
1777 padding-left: 22px;
1780 padding-left: 22px;
1778 }
1781 }
1779
1782
1780 #journal .journal_repo .journal_repo_name {
1783 #journal .journal_repo .journal_repo_name {
1781 font-weight: bold;
1784 font-weight: bold;
1782 font-size: 1.1em;
1785 font-size: 1.1em;
1783 }
1786 }
1784
1787
1785 #journal .compare_view {
1788 #journal .compare_view {
1786 padding: 5px 0px 5px 0px;
1789 padding: 5px 0px 5px 0px;
1787 width: 95px;
1790 width: 95px;
1788 }
1791 }
1789
1792
1790 .journal_highlight {
1793 .journal_highlight {
1791 font-weight: bold;
1794 font-weight: bold;
1792 padding: 0 2px;
1795 padding: 0 2px;
1793 vertical-align: bottom;
1796 vertical-align: bottom;
1794 }
1797 }
1795
1798
1796 .trending_language_tbl,.trending_language_tbl td {
1799 .trending_language_tbl,.trending_language_tbl td {
1797 border: 0 !important;
1800 border: 0 !important;
1798 margin: 0 !important;
1801 margin: 0 !important;
1799 padding: 0 !important;
1802 padding: 0 !important;
1800 }
1803 }
1801
1804
1802 .trending_language_tbl,.trending_language_tbl tr {
1805 .trending_language_tbl,.trending_language_tbl tr {
1803 border-spacing: 1px;
1806 border-spacing: 1px;
1804 }
1807 }
1805
1808
1806 .trending_language {
1809 .trending_language {
1807 background-color: #003367;
1810 background-color: #003367;
1808 color: #FFF;
1811 color: #FFF;
1809 display: block;
1812 display: block;
1810 min-width: 20px;
1813 min-width: 20px;
1811 text-decoration: none;
1814 text-decoration: none;
1812 height: 12px;
1815 height: 12px;
1813 margin-bottom: 0px;
1816 margin-bottom: 0px;
1814 margin-left: 5px;
1817 margin-left: 5px;
1815 white-space: pre;
1818 white-space: pre;
1816 padding: 3px;
1819 padding: 3px;
1817 }
1820 }
1818
1821
1819 h3.files_location {
1822 h3.files_location {
1820 font-size: 1.8em;
1823 font-size: 1.8em;
1821 font-weight: 700;
1824 font-weight: 700;
1822 border-bottom: none !important;
1825 border-bottom: none !important;
1823 margin: 10px 0 !important;
1826 margin: 10px 0 !important;
1824 }
1827 }
1825
1828
1826 #files_data dl dt {
1829 #files_data dl dt {
1827 float: left;
1830 float: left;
1828 width: 115px;
1831 width: 60px;
1829 margin: 0 !important;
1832 margin: 0 !important;
1830 padding: 5px;
1833 padding: 5px;
1831 }
1834 }
1832
1835
1833 #files_data dl dd {
1836 #files_data dl dd {
1834 margin: 0 !important;
1837 margin: 0 !important;
1835 padding: 5px !important;
1838 padding: 5px !important;
1836 }
1839 }
1837
1840
1838 #changeset_content {
1841 #changeset_content {
1839 border: 1px solid #CCC;
1842 border: 1px solid #CCC;
1840 padding: 5px;
1843 padding: 5px;
1841 }
1844 }
1842
1845
1843 #changeset_compare_view_content {
1846 #changeset_compare_view_content {
1844 border: 1px solid #CCC;
1847 border: 1px solid #CCC;
1845 padding: 5px;
1848 padding: 5px;
1846 }
1849 }
1847
1850
1848 #changeset_content .container {
1851 #changeset_content .container {
1849 min-height: 120px;
1852 min-height: 120px;
1850 font-size: 1.2em;
1853 font-size: 1.2em;
1851 overflow: hidden;
1854 overflow: hidden;
1852 }
1855 }
1853
1856
1854 #changeset_compare_view_content .compare_view_commits {
1857 #changeset_compare_view_content .compare_view_commits {
1855 width: auto !important;
1858 width: auto !important;
1856 }
1859 }
1857
1860
1858 #changeset_compare_view_content .compare_view_commits td {
1861 #changeset_compare_view_content .compare_view_commits td {
1859 padding: 0px 0px 0px 12px !important;
1862 padding: 0px 0px 0px 12px !important;
1860 }
1863 }
1861
1864
1862 #changeset_content .container .right {
1865 #changeset_content .container .right {
1863 float: right;
1866 float: right;
1864 width: 25%;
1867 width: 25%;
1865 text-align: right;
1868 text-align: right;
1866 }
1869 }
1867
1870
1868 #changeset_content .container .left .message {
1871 #changeset_content .container .left .message {
1869 font-style: italic;
1872 font-style: italic;
1870 color: #556CB5;
1873 color: #556CB5;
1871 white-space: pre-wrap;
1874 white-space: pre-wrap;
1872 }
1875 }
1873
1876
1874 .cs_files .cur_cs {
1877 .cs_files .cur_cs {
1875 margin: 10px 2px;
1878 margin: 10px 2px;
1876 font-weight: bold;
1879 font-weight: bold;
1877 }
1880 }
1878
1881
1879 .cs_files .node {
1882 .cs_files .node {
1880 float: left;
1883 float: left;
1881 }
1884 }
1882
1885
1883 .cs_files .changes {
1886 .cs_files .changes {
1884 float: right;
1887 float: right;
1885 color:#003367;
1888 color:#003367;
1886
1889
1887 }
1890 }
1888
1891
1889 .cs_files .changes .added {
1892 .cs_files .changes .added {
1890 background-color: #BBFFBB;
1893 background-color: #BBFFBB;
1891 float: left;
1894 float: left;
1892 text-align: center;
1895 text-align: center;
1893 font-size: 9px;
1896 font-size: 9px;
1894 padding: 2px 0px 2px 0px;
1897 padding: 2px 0px 2px 0px;
1895 }
1898 }
1896
1899
1897 .cs_files .changes .deleted {
1900 .cs_files .changes .deleted {
1898 background-color: #FF8888;
1901 background-color: #FF8888;
1899 float: left;
1902 float: left;
1900 text-align: center;
1903 text-align: center;
1901 font-size: 9px;
1904 font-size: 9px;
1902 padding: 2px 0px 2px 0px;
1905 padding: 2px 0px 2px 0px;
1903 }
1906 }
1904
1907
1905 .cs_files .cs_added {
1908 .cs_files .cs_added {
1906 background: url("../images/icons/page_white_add.png") no-repeat scroll
1909 background: url("../images/icons/page_white_add.png") no-repeat scroll
1907 3px;
1910 3px;
1908 height: 16px;
1911 height: 16px;
1909 padding-left: 20px;
1912 padding-left: 20px;
1910 margin-top: 7px;
1913 margin-top: 7px;
1911 text-align: left;
1914 text-align: left;
1912 }
1915 }
1913
1916
1914 .cs_files .cs_changed {
1917 .cs_files .cs_changed {
1915 background: url("../images/icons/page_white_edit.png") no-repeat scroll
1918 background: url("../images/icons/page_white_edit.png") no-repeat scroll
1916 3px;
1919 3px;
1917 height: 16px;
1920 height: 16px;
1918 padding-left: 20px;
1921 padding-left: 20px;
1919 margin-top: 7px;
1922 margin-top: 7px;
1920 text-align: left;
1923 text-align: left;
1921 }
1924 }
1922
1925
1923 .cs_files .cs_removed {
1926 .cs_files .cs_removed {
1924 background: url("../images/icons/page_white_delete.png") no-repeat
1927 background: url("../images/icons/page_white_delete.png") no-repeat
1925 scroll 3px;
1928 scroll 3px;
1926 height: 16px;
1929 height: 16px;
1927 padding-left: 20px;
1930 padding-left: 20px;
1928 margin-top: 7px;
1931 margin-top: 7px;
1929 text-align: left;
1932 text-align: left;
1930 }
1933 }
1931
1934
1932 #graph {
1935 #graph {
1933 overflow: hidden;
1936 overflow: hidden;
1934 }
1937 }
1935
1938
1936 #graph_nodes {
1939 #graph_nodes {
1937 float: left;
1940 float: left;
1938 margin-right: -6px;
1941 margin-right: -6px;
1939 margin-top: 0px;
1942 margin-top: 0px;
1940 }
1943 }
1941
1944
1942 #graph_content {
1945 #graph_content {
1943 width: 800px;
1946 width: 800px;
1944 float: left;
1947 float: left;
1945 }
1948 }
1946
1949
1947 #graph_content .container_header {
1950 #graph_content .container_header {
1948 border: 1px solid #CCC;
1951 border: 1px solid #CCC;
1949 padding: 10px;
1952 padding: 10px;
1950 height: 45px;
1953 height: 45px;
1951 -webkit-border-radius: 6px 6px 0px 0px;
1954 -webkit-border-radius: 6px 6px 0px 0px;
1952 -moz-border-radius: 6px 6px 0px 0px;
1955 -moz-border-radius: 6px 6px 0px 0px;
1953 border-radius: 6px 6px 0px 0px;
1956 border-radius: 6px 6px 0px 0px;
1954 }
1957 }
1955
1958
1956 #graph_content #rev_range_container {
1959 #graph_content #rev_range_container {
1957 padding: 10px 0px;
1960 padding: 10px 0px;
1958 clear: both;
1961 clear: both;
1959 }
1962 }
1960
1963
1961 #graph_content .container {
1964 #graph_content .container {
1962 border-bottom: 1px solid #CCC;
1965 border-bottom: 1px solid #CCC;
1963 border-left: 1px solid #CCC;
1966 border-left: 1px solid #CCC;
1964 border-right: 1px solid #CCC;
1967 border-right: 1px solid #CCC;
1965 min-height: 70px;
1968 min-height: 70px;
1966 overflow: hidden;
1969 overflow: hidden;
1967 font-size: 1.2em;
1970 font-size: 1.2em;
1968 }
1971 }
1969
1972
1970 #graph_content .container .right {
1973 #graph_content .container .right {
1971 float: right;
1974 float: right;
1972 width: 28%;
1975 width: 28%;
1973 text-align: right;
1976 text-align: right;
1974 padding-bottom: 5px;
1977 padding-bottom: 5px;
1975 }
1978 }
1976
1979
1977 #graph_content .container .left .date {
1980 #graph_content .container .left .date {
1978 font-weight: 700;
1981 font-weight: 700;
1979 padding-bottom: 5px;
1982 padding-bottom: 5px;
1980 }
1983 }
1981
1984
1982 #graph_content .container .left .date span {
1985 #graph_content .container .left .date span {
1983 vertical-align: text-top;
1986 vertical-align: text-top;
1984 }
1987 }
1985
1988
1986 #graph_content .container .left .author {
1989 #graph_content .container .left .author {
1987 height: 22px;
1990 height: 22px;
1988 }
1991 }
1989
1992
1990 #graph_content .container .left .author .user {
1993 #graph_content .container .left .author .user {
1991 color: #444444;
1994 color: #444444;
1992 float: left;
1995 float: left;
1993 font-size: 12px;
1996 font-size: 12px;
1994 margin-left: -4px;
1997 margin-left: -4px;
1995 margin-top: 4px;
1998 margin-top: 4px;
1996 }
1999 }
1997
2000
1998 #graph_content .container .left .message {
2001 #graph_content .container .left .message {
1999 font-size: 100%;
2002 font-size: 100%;
2000 padding-top: 3px;
2003 padding-top: 3px;
2001 white-space: pre-wrap;
2004 white-space: pre-wrap;
2002 }
2005 }
2003
2006
2004 #graph_content .container .left .message a:hover{
2007 #graph_content .container .left .message a:hover{
2005 text-decoration: none;
2008 text-decoration: none;
2006 }
2009 }
2007
2010
2008 .right div {
2011 .right div {
2009 clear: both;
2012 clear: both;
2010 }
2013 }
2011
2014
2012 .right .changes .changed_total {
2015 .right .changes .changed_total {
2013 border: 0px solid #DDD;
2016 border: 0px solid #DDD;
2014 display: block;
2017 display: block;
2015 float: right;
2018 float: right;
2016 text-align: center;
2019 text-align: center;
2017 min-width: 45px;
2020 min-width: 45px;
2018 cursor: pointer;
2021 cursor: pointer;
2019 background: #FD8;
2022 background: #FD8;
2020 font-weight: bold;
2023 font-weight: bold;
2021 -webkit-border-radius: 0px 0px 0px 6px;
2024 -webkit-border-radius: 0px 0px 0px 6px;
2022 -moz-border-radius: 0px 0px 0px 6px;
2025 -moz-border-radius: 0px 0px 0px 6px;
2023 border-radius: 0px 0px 0px 6px;
2026 border-radius: 0px 0px 0px 6px;
2024 padding: 2px;
2027 padding: 2px;
2025 }
2028 }
2026
2029
2027 .right .changes .added,.changed,.removed {
2030 .right .changes .added,.changed,.removed {
2028 border: 1px solid #DDD;
2031 border: 1px solid #DDD;
2029 display: block;
2032 display: block;
2030 float: right;
2033 float: right;
2031 text-align: center;
2034 text-align: center;
2032 min-width: 15px;
2035 min-width: 15px;
2033 cursor: help;
2036 cursor: help;
2034 }
2037 }
2035
2038
2036 .right .changes .large {
2039 .right .changes .large {
2037 border: 1px solid #DDD;
2040 border: 1px solid #DDD;
2038 display: block;
2041 display: block;
2039 float: right;
2042 float: right;
2040 text-align: center;
2043 text-align: center;
2041 min-width: 45px;
2044 min-width: 45px;
2042 cursor: help;
2045 cursor: help;
2043 background: #54A9F7;
2046 background: #54A9F7;
2044 }
2047 }
2045
2048
2046 .right .changes .added {
2049 .right .changes .added {
2047 background: #BFB;
2050 background: #BFB;
2048 }
2051 }
2049
2052
2050 .right .changes .changed {
2053 .right .changes .changed {
2051 background: #FD8;
2054 background: #FD8;
2052 }
2055 }
2053
2056
2054 .right .changes .removed {
2057 .right .changes .removed {
2055 background: #F88;
2058 background: #F88;
2056 }
2059 }
2057
2060
2058 .right .merge {
2061 .right .merge {
2059 vertical-align: top;
2062 vertical-align: top;
2060 font-size: 0.75em;
2063 font-size: 0.75em;
2061 font-weight: 700;
2064 font-weight: 700;
2062 }
2065 }
2063
2066
2064 .right .parent {
2067 .right .parent {
2065 font-size: 90%;
2068 font-size: 90%;
2066 font-family: monospace;
2069 font-family: monospace;
2067 padding: 2px 2px 2px 2px;
2070 padding: 2px 2px 2px 2px;
2068 }
2071 }
2069 .right .logtags{
2072 .right .logtags{
2070 padding: 2px 2px 2px 2px;
2073 padding: 2px 2px 2px 2px;
2071 }
2074 }
2072 .right .logtags .branchtag,.logtags .branchtag {
2075 .right .logtags .branchtag,.logtags .branchtag {
2073 padding: 1px 3px 2px;
2076 padding: 1px 3px 2px;
2074 background-color: #bfbfbf;
2077 background-color: #bfbfbf;
2075 font-size: 9.75px;
2078 font-size: 9.75px;
2076 font-weight: bold;
2079 font-weight: bold;
2077 color: #ffffff;
2080 color: #ffffff;
2078 text-transform: uppercase;
2081 text-transform: uppercase;
2079 white-space: nowrap;
2082 white-space: nowrap;
2080 -webkit-border-radius: 3px;
2083 -webkit-border-radius: 3px;
2081 -moz-border-radius: 3px;
2084 -moz-border-radius: 3px;
2082 border-radius: 3px;
2085 border-radius: 3px;
2083 padding-left:4px;
2086 padding-left:4px;
2084 }
2087 }
2085 .right .logtags .branchtag a:hover,.logtags .branchtag a:hover{
2088 .right .logtags .branchtag a:hover,.logtags .branchtag a:hover{
2086 text-decoration: none;
2089 text-decoration: none;
2087 }
2090 }
2088 .right .logtags .tagtag,.logtags .tagtag {
2091 .right .logtags .tagtag,.logtags .tagtag {
2089 padding: 1px 3px 2px;
2092 padding: 1px 3px 2px;
2090 background-color: #62cffc;
2093 background-color: #62cffc;
2091 font-size: 9.75px;
2094 font-size: 9.75px;
2092 font-weight: bold;
2095 font-weight: bold;
2093 color: #ffffff;
2096 color: #ffffff;
2094 text-transform: uppercase;
2097 text-transform: uppercase;
2095 white-space: nowrap;
2098 white-space: nowrap;
2096 -webkit-border-radius: 3px;
2099 -webkit-border-radius: 3px;
2097 -moz-border-radius: 3px;
2100 -moz-border-radius: 3px;
2098 border-radius: 3px;
2101 border-radius: 3px;
2099 }
2102 }
2100 .right .logtags .tagtag a:hover,.logtags .tagtag a:hover{
2103 .right .logtags .tagtag a:hover,.logtags .tagtag a:hover{
2101 text-decoration: none;
2104 text-decoration: none;
2102 }
2105 }
2103 div.browserblock {
2106 div.browserblock {
2104 overflow: hidden;
2107 overflow: hidden;
2105 border: 1px solid #ccc;
2108 border: 1px solid #ccc;
2106 background: #f8f8f8;
2109 background: #f8f8f8;
2107 font-size: 100%;
2110 font-size: 100%;
2108 line-height: 125%;
2111 line-height: 125%;
2109 padding: 0;
2112 padding: 0;
2110 }
2113 }
2111
2114
2112 div.browserblock .browser-header {
2115 div.browserblock .browser-header {
2113 background: #FFF;
2116 background: #FFF;
2114 padding: 10px 0px 15px 0px;
2117 padding: 10px 0px 15px 0px;
2115 width: 100%;
2118 width: 100%;
2116 }
2119 }
2117
2120
2118 div.browserblock .browser-nav {
2121 div.browserblock .browser-nav {
2119 float: left
2122 float: left
2120 }
2123 }
2121
2124
2122 div.browserblock .browser-branch {
2125 div.browserblock .browser-branch {
2123 float: left;
2126 float: left;
2124 }
2127 }
2125
2128
2126 div.browserblock .browser-branch label {
2129 div.browserblock .browser-branch label {
2127 color: #4A4A4A;
2130 color: #4A4A4A;
2128 vertical-align: text-top;
2131 vertical-align: text-top;
2129 }
2132 }
2130
2133
2131 div.browserblock .browser-header span {
2134 div.browserblock .browser-header span {
2132 margin-left: 5px;
2135 margin-left: 5px;
2133 font-weight: 700;
2136 font-weight: 700;
2134 }
2137 }
2135
2138
2136 div.browserblock .browser-search {
2139 div.browserblock .browser-search {
2137 clear: both;
2140 clear: both;
2138 padding: 8px 8px 0px 5px;
2141 padding: 8px 8px 0px 5px;
2139 height: 20px;
2142 height: 20px;
2140 }
2143 }
2141
2144
2142 div.browserblock #node_filter_box {
2145 div.browserblock #node_filter_box {
2143
2146
2144 }
2147 }
2145
2148
2146 div.browserblock .search_activate {
2149 div.browserblock .search_activate {
2147 float: left
2150 float: left
2148 }
2151 }
2149
2152
2150 div.browserblock .add_node {
2153 div.browserblock .add_node {
2151 float: left;
2154 float: left;
2152 padding-left: 5px;
2155 padding-left: 5px;
2153 }
2156 }
2154
2157
2155 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover
2158 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover
2156 {
2159 {
2157 text-decoration: none !important;
2160 text-decoration: none !important;
2158 }
2161 }
2159
2162
2160 div.browserblock .browser-body {
2163 div.browserblock .browser-body {
2161 background: #EEE;
2164 background: #EEE;
2162 border-top: 1px solid #CCC;
2165 border-top: 1px solid #CCC;
2163 }
2166 }
2164
2167
2165 table.code-browser {
2168 table.code-browser {
2166 border-collapse: collapse;
2169 border-collapse: collapse;
2167 width: 100%;
2170 width: 100%;
2168 }
2171 }
2169
2172
2170 table.code-browser tr {
2173 table.code-browser tr {
2171 margin: 3px;
2174 margin: 3px;
2172 }
2175 }
2173
2176
2174 table.code-browser thead th {
2177 table.code-browser thead th {
2175 background-color: #EEE;
2178 background-color: #EEE;
2176 height: 20px;
2179 height: 20px;
2177 font-size: 1.1em;
2180 font-size: 1.1em;
2178 font-weight: 700;
2181 font-weight: 700;
2179 text-align: left;
2182 text-align: left;
2180 padding-left: 10px;
2183 padding-left: 10px;
2181 }
2184 }
2182
2185
2183 table.code-browser tbody td {
2186 table.code-browser tbody td {
2184 padding-left: 10px;
2187 padding-left: 10px;
2185 height: 20px;
2188 height: 20px;
2186 }
2189 }
2187
2190
2188 table.code-browser .browser-file {
2191 table.code-browser .browser-file {
2189 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2192 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2190 height: 16px;
2193 height: 16px;
2191 padding-left: 20px;
2194 padding-left: 20px;
2192 text-align: left;
2195 text-align: left;
2193 }
2196 }
2194
2197
2195 .diffblock .changeset_file {
2198 .diffblock .changeset_file {
2196 background: url("../images/icons/file.png") no-repeat scroll 3px;
2199 background: url("../images/icons/file.png") no-repeat scroll 3px;
2197 height: 16px;
2200 height: 16px;
2198 padding-left: 22px;
2201 padding-left: 22px;
2199 text-align: left;
2202 text-align: left;
2200 font-size: 14px;
2203 font-size: 14px;
2201 }
2204 }
2202
2205
2203 .diffblock .changeset_header {
2206 .diffblock .changeset_header {
2204 margin-left: 6px !important;
2207 margin-left: 6px !important;
2205 }
2208 }
2206
2209
2207 table.code-browser .browser-dir {
2210 table.code-browser .browser-dir {
2208 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2211 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2209 height: 16px;
2212 height: 16px;
2210 padding-left: 20px;
2213 padding-left: 20px;
2211 text-align: left;
2214 text-align: left;
2212 }
2215 }
2213
2216
2214 .box .search {
2217 .box .search {
2215 clear: both;
2218 clear: both;
2216 overflow: hidden;
2219 overflow: hidden;
2217 margin: 0;
2220 margin: 0;
2218 padding: 0 20px 10px;
2221 padding: 0 20px 10px;
2219 }
2222 }
2220
2223
2221 .box .search div.search_path {
2224 .box .search div.search_path {
2222 background: none repeat scroll 0 0 #EEE;
2225 background: none repeat scroll 0 0 #EEE;
2223 border: 1px solid #CCC;
2226 border: 1px solid #CCC;
2224 color: blue;
2227 color: blue;
2225 margin-bottom: 10px;
2228 margin-bottom: 10px;
2226 padding: 10px 0;
2229 padding: 10px 0;
2227 }
2230 }
2228
2231
2229 .box .search div.search_path div.link {
2232 .box .search div.search_path div.link {
2230 font-weight: 700;
2233 font-weight: 700;
2231 margin-left: 25px;
2234 margin-left: 25px;
2232 }
2235 }
2233
2236
2234 .box .search div.search_path div.link a {
2237 .box .search div.search_path div.link a {
2235 color: #003367;
2238 color: #003367;
2236 cursor: pointer;
2239 cursor: pointer;
2237 text-decoration: none;
2240 text-decoration: none;
2238 }
2241 }
2239
2242
2240 #path_unlock {
2243 #path_unlock {
2241 color: red;
2244 color: red;
2242 font-size: 1.2em;
2245 font-size: 1.2em;
2243 padding-left: 4px;
2246 padding-left: 4px;
2244 }
2247 }
2245
2248
2246 .info_box span {
2249 .info_box span {
2247 margin-left: 3px;
2250 margin-left: 3px;
2248 margin-right: 3px;
2251 margin-right: 3px;
2249 }
2252 }
2250
2253
2251 .info_box .rev {
2254 .info_box .rev {
2252 color: #003367;
2255 color: #003367;
2253 font-size: 1.6em;
2256 font-size: 1.6em;
2254 font-weight: bold;
2257 font-weight: bold;
2255 vertical-align: sub;
2258 vertical-align: sub;
2256 }
2259 }
2257
2260
2258 .info_box input#at_rev,.info_box input#size {
2261 .info_box input#at_rev,.info_box input#size {
2259 background: #FFF;
2262 background: #FFF;
2260 border-top: 1px solid #b3b3b3;
2263 border-top: 1px solid #b3b3b3;
2261 border-left: 1px solid #b3b3b3;
2264 border-left: 1px solid #b3b3b3;
2262 border-right: 1px solid #eaeaea;
2265 border-right: 1px solid #eaeaea;
2263 border-bottom: 1px solid #eaeaea;
2266 border-bottom: 1px solid #eaeaea;
2264 color: #000;
2267 color: #000;
2265 font-size: 12px;
2268 font-size: 12px;
2266 margin: 0;
2269 margin: 0;
2267 padding: 1px 5px 1px;
2270 padding: 1px 5px 1px;
2268 }
2271 }
2269
2272
2270 .info_box input#view {
2273 .info_box input#view {
2271 text-align: center;
2274 text-align: center;
2272 padding: 4px 3px 2px 2px;
2275 padding: 4px 3px 2px 2px;
2273 }
2276 }
2274
2277
2275 .yui-overlay,.yui-panel-container {
2278 .yui-overlay,.yui-panel-container {
2276 visibility: hidden;
2279 visibility: hidden;
2277 position: absolute;
2280 position: absolute;
2278 z-index: 2;
2281 z-index: 2;
2279 }
2282 }
2280
2283
2281 .yui-tt {
2284 .yui-tt {
2282 visibility: hidden;
2285 visibility: hidden;
2283 position: absolute;
2286 position: absolute;
2284 color: #666;
2287 color: #666;
2285 background-color: #FFF;
2288 background-color: #FFF;
2286 border: 2px solid #003367;
2289 border: 2px solid #003367;
2287 font: 100% sans-serif;
2290 font: 100% sans-serif;
2288 width: auto;
2291 width: auto;
2289 opacity: 1px;
2292 opacity: 1px;
2290 padding: 8px;
2293 padding: 8px;
2291 white-space: pre-wrap;
2294 white-space: pre-wrap;
2292 -webkit-border-radius: 8px 8px 8px 8px;
2295 -webkit-border-radius: 8px 8px 8px 8px;
2293 -khtml-border-radius: 8px 8px 8px 8px;
2296 -khtml-border-radius: 8px 8px 8px 8px;
2294 -moz-border-radius: 8px 8px 8px 8px;
2297 -moz-border-radius: 8px 8px 8px 8px;
2295 border-radius: 8px 8px 8px 8px;
2298 border-radius: 8px 8px 8px 8px;
2296 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2299 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2297 }
2300 }
2298
2301
2299 .ac {
2302 .ac {
2300 vertical-align: top;
2303 vertical-align: top;
2301 }
2304 }
2302
2305
2303 .ac .yui-ac {
2306 .ac .yui-ac {
2304 position: relative;
2307 position: relative;
2305 font-size: 100%;
2308 font-size: 100%;
2306 }
2309 }
2307
2310
2308 .ac .perm_ac {
2311 .ac .perm_ac {
2309 width: 15em;
2312 width: 15em;
2310 }
2313 }
2311
2314
2312 .ac .yui-ac-input {
2315 .ac .yui-ac-input {
2313 width: 100%;
2316 width: 100%;
2314 }
2317 }
2315
2318
2316 .ac .yui-ac-container {
2319 .ac .yui-ac-container {
2317 position: absolute;
2320 position: absolute;
2318 top: 1.6em;
2321 top: 1.6em;
2319 width: 100%;
2322 width: 100%;
2320 }
2323 }
2321
2324
2322 .ac .yui-ac-content {
2325 .ac .yui-ac-content {
2323 position: absolute;
2326 position: absolute;
2324 width: 100%;
2327 width: 100%;
2325 border: 1px solid gray;
2328 border: 1px solid gray;
2326 background: #fff;
2329 background: #fff;
2327 overflow: hidden;
2330 overflow: hidden;
2328 z-index: 9050;
2331 z-index: 9050;
2329 }
2332 }
2330
2333
2331 .ac .yui-ac-shadow {
2334 .ac .yui-ac-shadow {
2332 position: absolute;
2335 position: absolute;
2333 width: 100%;
2336 width: 100%;
2334 background: #000;
2337 background: #000;
2335 -moz-opacity: 0.1px;
2338 -moz-opacity: 0.1px;
2336 opacity: .10;
2339 opacity: .10;
2337 filter: alpha(opacity = 10);
2340 filter: alpha(opacity = 10);
2338 z-index: 9049;
2341 z-index: 9049;
2339 margin: .3em;
2342 margin: .3em;
2340 }
2343 }
2341
2344
2342 .ac .yui-ac-content ul {
2345 .ac .yui-ac-content ul {
2343 width: 100%;
2346 width: 100%;
2344 margin: 0;
2347 margin: 0;
2345 padding: 0;
2348 padding: 0;
2346 }
2349 }
2347
2350
2348 .ac .yui-ac-content li {
2351 .ac .yui-ac-content li {
2349 cursor: default;
2352 cursor: default;
2350 white-space: nowrap;
2353 white-space: nowrap;
2351 margin: 0;
2354 margin: 0;
2352 padding: 2px 5px;
2355 padding: 2px 5px;
2353 }
2356 }
2354
2357
2355 .ac .yui-ac-content li.yui-ac-prehighlight {
2358 .ac .yui-ac-content li.yui-ac-prehighlight {
2356 background: #B3D4FF;
2359 background: #B3D4FF;
2357 }
2360 }
2358
2361
2359 .ac .yui-ac-content li.yui-ac-highlight {
2362 .ac .yui-ac-content li.yui-ac-highlight {
2360 background: #556CB5;
2363 background: #556CB5;
2361 color: #FFF;
2364 color: #FFF;
2362 }
2365 }
2363
2366
2364 .follow {
2367 .follow {
2365 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2368 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2366 height: 16px;
2369 height: 16px;
2367 width: 20px;
2370 width: 20px;
2368 cursor: pointer;
2371 cursor: pointer;
2369 display: block;
2372 display: block;
2370 float: right;
2373 float: right;
2371 margin-top: 2px;
2374 margin-top: 2px;
2372 }
2375 }
2373
2376
2374 .following {
2377 .following {
2375 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2378 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2376 height: 16px;
2379 height: 16px;
2377 width: 20px;
2380 width: 20px;
2378 cursor: pointer;
2381 cursor: pointer;
2379 display: block;
2382 display: block;
2380 float: right;
2383 float: right;
2381 margin-top: 2px;
2384 margin-top: 2px;
2382 }
2385 }
2383
2386
2384 .currently_following {
2387 .currently_following {
2385 padding-left: 10px;
2388 padding-left: 10px;
2386 padding-bottom: 5px;
2389 padding-bottom: 5px;
2387 }
2390 }
2388
2391
2389 .add_icon {
2392 .add_icon {
2390 background: url("../images/icons/add.png") no-repeat scroll 3px;
2393 background: url("../images/icons/add.png") no-repeat scroll 3px;
2391 padding-left: 20px;
2394 padding-left: 20px;
2392 padding-top: 0px;
2395 padding-top: 0px;
2393 text-align: left;
2396 text-align: left;
2394 }
2397 }
2395
2398
2396 .edit_icon {
2399 .edit_icon {
2397 background: url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2400 background: url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2398 padding-left: 20px;
2401 padding-left: 20px;
2399 padding-top: 0px;
2402 padding-top: 0px;
2400 text-align: left;
2403 text-align: left;
2401 }
2404 }
2402
2405
2403 .delete_icon {
2406 .delete_icon {
2404 background: url("../images/icons/delete.png") no-repeat scroll 3px;
2407 background: url("../images/icons/delete.png") no-repeat scroll 3px;
2405 padding-left: 20px;
2408 padding-left: 20px;
2406 padding-top: 0px;
2409 padding-top: 0px;
2407 text-align: left;
2410 text-align: left;
2408 }
2411 }
2409
2412
2410 .refresh_icon {
2413 .refresh_icon {
2411 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
2414 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
2412 3px;
2415 3px;
2413 padding-left: 20px;
2416 padding-left: 20px;
2414 padding-top: 0px;
2417 padding-top: 0px;
2415 text-align: left;
2418 text-align: left;
2416 }
2419 }
2417
2420
2418 .pull_icon {
2421 .pull_icon {
2419 background: url("../images/icons/connect.png") no-repeat scroll 3px;
2422 background: url("../images/icons/connect.png") no-repeat scroll 3px;
2420 padding-left: 20px;
2423 padding-left: 20px;
2421 padding-top: 0px;
2424 padding-top: 0px;
2422 text-align: left;
2425 text-align: left;
2423 }
2426 }
2424
2427
2425 .rss_icon {
2428 .rss_icon {
2426 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
2429 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
2427 padding-left: 20px;
2430 padding-left: 20px;
2428 padding-top: 4px;
2431 padding-top: 4px;
2429 text-align: left;
2432 text-align: left;
2430 font-size: 8px
2433 font-size: 8px
2431 }
2434 }
2432
2435
2433 .atom_icon {
2436 .atom_icon {
2434 background: url("../images/icons/atom.png") no-repeat scroll 3px;
2437 background: url("../images/icons/atom.png") no-repeat scroll 3px;
2435 padding-left: 20px;
2438 padding-left: 20px;
2436 padding-top: 4px;
2439 padding-top: 4px;
2437 text-align: left;
2440 text-align: left;
2438 font-size: 8px
2441 font-size: 8px
2439 }
2442 }
2440
2443
2441 .archive_icon {
2444 .archive_icon {
2442 background: url("../images/icons/compress.png") no-repeat scroll 3px;
2445 background: url("../images/icons/compress.png") no-repeat scroll 3px;
2443 padding-left: 20px;
2446 padding-left: 20px;
2444 text-align: left;
2447 text-align: left;
2445 padding-top: 1px;
2448 padding-top: 1px;
2446 }
2449 }
2447
2450
2448 .start_following_icon {
2451 .start_following_icon {
2449 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2452 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
2450 padding-left: 20px;
2453 padding-left: 20px;
2451 text-align: left;
2454 text-align: left;
2452 padding-top: 0px;
2455 padding-top: 0px;
2453 }
2456 }
2454
2457
2455 .stop_following_icon {
2458 .stop_following_icon {
2456 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2459 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2457 padding-left: 20px;
2460 padding-left: 20px;
2458 text-align: left;
2461 text-align: left;
2459 padding-top: 0px;
2462 padding-top: 0px;
2460 }
2463 }
2461
2464
2462 .action_button {
2465 .action_button {
2463 border: 0;
2466 border: 0;
2464 display: inline;
2467 display: inline;
2465 }
2468 }
2466
2469
2467 .action_button:hover {
2470 .action_button:hover {
2468 border: 0;
2471 border: 0;
2469 text-decoration: underline;
2472 text-decoration: underline;
2470 cursor: pointer;
2473 cursor: pointer;
2471 }
2474 }
2472
2475
2473 #switch_repos {
2476 #switch_repos {
2474 position: absolute;
2477 position: absolute;
2475 height: 25px;
2478 height: 25px;
2476 z-index: 1;
2479 z-index: 1;
2477 }
2480 }
2478
2481
2479 #switch_repos select {
2482 #switch_repos select {
2480 min-width: 150px;
2483 min-width: 150px;
2481 max-height: 250px;
2484 max-height: 250px;
2482 z-index: 1;
2485 z-index: 1;
2483 }
2486 }
2484
2487
2485 .breadcrumbs {
2488 .breadcrumbs {
2486 border: medium none;
2489 border: medium none;
2487 color: #FFF;
2490 color: #FFF;
2488 float: left;
2491 float: left;
2489 text-transform: uppercase;
2492 text-transform: uppercase;
2490 font-weight: 700;
2493 font-weight: 700;
2491 font-size: 14px;
2494 font-size: 14px;
2492 margin: 0;
2495 margin: 0;
2493 padding: 11px 0 11px 10px;
2496 padding: 11px 0 11px 10px;
2494 }
2497 }
2495
2498
2496 .breadcrumbs a {
2499 .breadcrumbs a {
2497 color: #FFF;
2500 color: #FFF;
2498 }
2501 }
2499
2502
2500 .flash_msg {
2503 .flash_msg {
2501
2504
2502 }
2505 }
2503
2506
2504 .flash_msg ul {
2507 .flash_msg ul {
2505
2508
2506 }
2509 }
2507
2510
2508 .error_msg {
2511 .error_msg {
2509 background-color: #c43c35;
2512 background-color: #c43c35;
2510 background-repeat: repeat-x;
2513 background-repeat: repeat-x;
2511 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b),
2514 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b),
2512 to(#c43c35) );
2515 to(#c43c35) );
2513 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
2516 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
2514 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
2517 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
2515 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b),
2518 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b),
2516 color-stop(100%, #c43c35) );
2519 color-stop(100%, #c43c35) );
2517 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
2520 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
2518 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
2521 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
2519 background-image: linear-gradient(top, #ee5f5b, #c43c35);
2522 background-image: linear-gradient(top, #ee5f5b, #c43c35);
2520 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',
2523 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',
2521 endColorstr='#c43c35', GradientType=0 );
2524 endColorstr='#c43c35', GradientType=0 );
2522 border-color: #c43c35 #c43c35 #882a25;
2525 border-color: #c43c35 #c43c35 #882a25;
2523 }
2526 }
2524
2527
2525 .warning_msg {
2528 .warning_msg {
2526 color: #404040 !important;
2529 color: #404040 !important;
2527 background-color: #eedc94;
2530 background-color: #eedc94;
2528 background-repeat: repeat-x;
2531 background-repeat: repeat-x;
2529 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
2532 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1),
2530 to(#eedc94) );
2533 to(#eedc94) );
2531 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
2534 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
2532 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
2535 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
2533 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1),
2536 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1),
2534 color-stop(100%, #eedc94) );
2537 color-stop(100%, #eedc94) );
2535 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
2538 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
2536 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
2539 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
2537 background-image: linear-gradient(top, #fceec1, #eedc94);
2540 background-image: linear-gradient(top, #fceec1, #eedc94);
2538 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1',
2541 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1',
2539 endColorstr='#eedc94', GradientType=0 );
2542 endColorstr='#eedc94', GradientType=0 );
2540 border-color: #eedc94 #eedc94 #e4c652;
2543 border-color: #eedc94 #eedc94 #e4c652;
2541 }
2544 }
2542
2545
2543 .success_msg {
2546 .success_msg {
2544 background-color: #57a957;
2547 background-color: #57a957;
2545 background-repeat: repeat-x !important;
2548 background-repeat: repeat-x !important;
2546 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462),
2549 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462),
2547 to(#57a957) );
2550 to(#57a957) );
2548 background-image: -moz-linear-gradient(top, #62c462, #57a957);
2551 background-image: -moz-linear-gradient(top, #62c462, #57a957);
2549 background-image: -ms-linear-gradient(top, #62c462, #57a957);
2552 background-image: -ms-linear-gradient(top, #62c462, #57a957);
2550 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462),
2553 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462),
2551 color-stop(100%, #57a957) );
2554 color-stop(100%, #57a957) );
2552 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
2555 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
2553 background-image: -o-linear-gradient(top, #62c462, #57a957);
2556 background-image: -o-linear-gradient(top, #62c462, #57a957);
2554 background-image: linear-gradient(top, #62c462, #57a957);
2557 background-image: linear-gradient(top, #62c462, #57a957);
2555 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',
2558 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',
2556 endColorstr='#57a957', GradientType=0 );
2559 endColorstr='#57a957', GradientType=0 );
2557 border-color: #57a957 #57a957 #3d773d;
2560 border-color: #57a957 #57a957 #3d773d;
2558 }
2561 }
2559
2562
2560 .notice_msg {
2563 .notice_msg {
2561 background-color: #339bb9;
2564 background-color: #339bb9;
2562 background-repeat: repeat-x;
2565 background-repeat: repeat-x;
2563 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de),
2566 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de),
2564 to(#339bb9) );
2567 to(#339bb9) );
2565 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
2568 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
2566 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
2569 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
2567 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de),
2570 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de),
2568 color-stop(100%, #339bb9) );
2571 color-stop(100%, #339bb9) );
2569 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
2572 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
2570 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
2573 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
2571 background-image: linear-gradient(top, #5bc0de, #339bb9);
2574 background-image: linear-gradient(top, #5bc0de, #339bb9);
2572 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de',
2575 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de',
2573 endColorstr='#339bb9', GradientType=0 );
2576 endColorstr='#339bb9', GradientType=0 );
2574 border-color: #339bb9 #339bb9 #22697d;
2577 border-color: #339bb9 #339bb9 #22697d;
2575 }
2578 }
2576
2579
2577 .success_msg,.error_msg,.notice_msg,.warning_msg {
2580 .success_msg,.error_msg,.notice_msg,.warning_msg {
2578 font-size: 12px;
2581 font-size: 12px;
2579 font-weight: 700;
2582 font-weight: 700;
2580 min-height: 14px;
2583 min-height: 14px;
2581 line-height: 14px;
2584 line-height: 14px;
2582 margin-bottom: 10px;
2585 margin-bottom: 10px;
2583 margin-top: 0;
2586 margin-top: 0;
2584 display: block;
2587 display: block;
2585 overflow: auto;
2588 overflow: auto;
2586 padding: 6px 10px 6px 10px;
2589 padding: 6px 10px 6px 10px;
2587 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
2590 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
2588 position: relative;
2591 position: relative;
2589 color: #FFF;
2592 color: #FFF;
2590 border-width: 1px;
2593 border-width: 1px;
2591 border-style: solid;
2594 border-style: solid;
2592 -webkit-border-radius: 4px;
2595 -webkit-border-radius: 4px;
2593 -moz-border-radius: 4px;
2596 -moz-border-radius: 4px;
2594 border-radius: 4px;
2597 border-radius: 4px;
2595 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2598 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2596 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2599 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2597 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2600 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
2598 }
2601 }
2599
2602
2600 #msg_close {
2603 #msg_close {
2601 background: transparent url("../icons/cross_grey_small.png") no-repeat
2604 background: transparent url("../icons/cross_grey_small.png") no-repeat
2602 scroll 0 0;
2605 scroll 0 0;
2603 cursor: pointer;
2606 cursor: pointer;
2604 height: 16px;
2607 height: 16px;
2605 position: absolute;
2608 position: absolute;
2606 right: 5px;
2609 right: 5px;
2607 top: 5px;
2610 top: 5px;
2608 width: 16px;
2611 width: 16px;
2609 }
2612 }
2610
2613
2611 div#legend_container table,div#legend_choices table {
2614 div#legend_container table,div#legend_choices table {
2612 width: auto !important;
2615 width: auto !important;
2613 }
2616 }
2614
2617
2615 table#permissions_manage {
2618 table#permissions_manage {
2616 width: 0 !important;
2619 width: 0 !important;
2617 }
2620 }
2618
2621
2619 table#permissions_manage span.private_repo_msg {
2622 table#permissions_manage span.private_repo_msg {
2620 font-size: 0.8em;
2623 font-size: 0.8em;
2621 opacity: 0.6px;
2624 opacity: 0.6px;
2622 }
2625 }
2623
2626
2624 table#permissions_manage td.private_repo_msg {
2627 table#permissions_manage td.private_repo_msg {
2625 font-size: 0.8em;
2628 font-size: 0.8em;
2626 }
2629 }
2627
2630
2628 table#permissions_manage tr#add_perm_input td {
2631 table#permissions_manage tr#add_perm_input td {
2629 vertical-align: middle;
2632 vertical-align: middle;
2630 }
2633 }
2631
2634
2632 div.gravatar {
2635 div.gravatar {
2633 background-color: #FFF;
2636 background-color: #FFF;
2634 border: 0px solid #D0D0D0;
2637 border: 0px solid #D0D0D0;
2635 float: left;
2638 float: left;
2636 margin-right: 0.7em;
2639 margin-right: 0.7em;
2637 padding: 2px 2px 2px 2px;
2640 padding: 2px 2px 2px 2px;
2638 line-height:0;
2641 line-height:0;
2639 -webkit-border-radius: 6px;
2642 -webkit-border-radius: 6px;
2640 -khtml-border-radius: 6px;
2643 -khtml-border-radius: 6px;
2641 -moz-border-radius: 6px;
2644 -moz-border-radius: 6px;
2642 border-radius: 6px;
2645 border-radius: 6px;
2643 }
2646 }
2644
2647
2645 div.gravatar img {
2648 div.gravatar img {
2646 -webkit-border-radius: 4px;
2649 -webkit-border-radius: 4px;
2647 -khtml-border-radius: 4px;
2650 -khtml-border-radius: 4px;
2648 -moz-border-radius: 4px;
2651 -moz-border-radius: 4px;
2649 border-radius: 4px;
2652 border-radius: 4px;
2650 }
2653 }
2651
2654
2652 #header,#content,#footer {
2655 #header,#content,#footer {
2653 min-width: 978px;
2656 min-width: 978px;
2654 }
2657 }
2655
2658
2656 #content {
2659 #content {
2657 clear: both;
2660 clear: both;
2658 overflow: hidden;
2661 overflow: hidden;
2659 padding: 14px 10px;
2662 padding: 14px 10px;
2660 }
2663 }
2661
2664
2662 #content div.box div.title div.search {
2665 #content div.box div.title div.search {
2663
2666
2664 border-left: 1px solid #316293;
2667 border-left: 1px solid #316293;
2665 }
2668 }
2666
2669
2667 #content div.box div.title div.search div.input input {
2670 #content div.box div.title div.search div.input input {
2668 border: 1px solid #316293;
2671 border: 1px solid #316293;
2669 }
2672 }
2670
2673
2671 .ui-button-small a:hover {
2674 .ui-button-small a:hover {
2672
2675
2673 }
2676 }
2674
2677
2675 input.ui-button-small,.ui-button-small {
2678 input.ui-button-small,.ui-button-small {
2676 background: #e5e3e3 url("../images/button.png") repeat-x !important;
2679 background: #e5e3e3 url("../images/button.png") repeat-x !important;
2677 border-top: 1px solid #DDD !important;
2680 border-top: 1px solid #DDD !important;
2678 border-left: 1px solid #c6c6c6 !important;
2681 border-left: 1px solid #c6c6c6 !important;
2679 border-right: 1px solid #DDD !important;
2682 border-right: 1px solid #DDD !important;
2680 border-bottom: 1px solid #c6c6c6 !important;
2683 border-bottom: 1px solid #c6c6c6 !important;
2681 color: #515151 !important;
2684 color: #515151 !important;
2682 outline: none !important;
2685 outline: none !important;
2683 margin: 0 !important;
2686 margin: 0 !important;
2684 -webkit-border-radius: 4px 4px 4px 4px !important;
2687 -webkit-border-radius: 4px 4px 4px 4px !important;
2685 -khtml-border-radius: 4px 4px 4px 4px !important;
2688 -khtml-border-radius: 4px 4px 4px 4px !important;
2686 -moz-border-radius: 4px 4px 4px 4px !important;
2689 -moz-border-radius: 4px 4px 4px 4px !important;
2687 border-radius: 4px 4px 4px 4px !important;
2690 border-radius: 4px 4px 4px 4px !important;
2688 box-shadow: 0 1px 0 #ececec !important;
2691 box-shadow: 0 1px 0 #ececec !important;
2689 cursor: pointer !important;
2692 cursor: pointer !important;
2690 padding: 3px 3px 3px 3px;
2693 padding: 3px 3px 3px 3px;
2691 }
2694 }
2692
2695
2693 input.ui-button-small.xsmall,.ui-button-small.xsmall{
2696 input.ui-button-small.xsmall,.ui-button-small.xsmall{
2694 padding: 1px 2px 1px 1px;
2697 padding: 1px 2px 1px 1px;
2695 }
2698 }
2696
2699
2697 input.ui-button-small:hover,.ui-button-small:hover {
2700 input.ui-button-small:hover,.ui-button-small:hover {
2698 background: #b4b4b4 url("../images/button_selected.png") repeat-x
2701 background: #b4b4b4 url("../images/button_selected.png") repeat-x
2699 !important;
2702 !important;
2700 border-top: 1px solid #ccc !important;
2703 border-top: 1px solid #ccc !important;
2701 border-left: 1px solid #bebebe !important;
2704 border-left: 1px solid #bebebe !important;
2702 border-right: 1px solid #b1b1b1 !important;
2705 border-right: 1px solid #b1b1b1 !important;
2703 border-bottom: 1px solid #afafaf !important;
2706 border-bottom: 1px solid #afafaf !important;
2704 text-decoration: none;
2707 text-decoration: none;
2705 }
2708 }
2706
2709
2707 input.ui-button-small-blue,.ui-button-small-blue {
2710 input.ui-button-small-blue,.ui-button-small-blue {
2708 background: #4e85bb url("../images/button_highlight.png") repeat-x;
2711 background: #4e85bb url("../images/button_highlight.png") repeat-x;
2709 border-top: 1px solid #5c91a4;
2712 border-top: 1px solid #5c91a4;
2710 border-left: 1px solid #2a6f89;
2713 border-left: 1px solid #2a6f89;
2711 border-right: 1px solid #2b7089;
2714 border-right: 1px solid #2b7089;
2712 border-bottom: 1px solid #1a6480;
2715 border-bottom: 1px solid #1a6480;
2713 color: #fff;
2716 color: #fff;
2714 -webkit-border-radius: 4px 4px 4px 4px;
2717 -webkit-border-radius: 4px 4px 4px 4px;
2715 -khtml-border-radius: 4px 4px 4px 4px;
2718 -khtml-border-radius: 4px 4px 4px 4px;
2716 -moz-border-radius: 4px 4px 4px 4px;
2719 -moz-border-radius: 4px 4px 4px 4px;
2717 border-radius: 4px 4px 4px 4px;
2720 border-radius: 4px 4px 4px 4px;
2718 box-shadow: 0 1px 0 #ececec;
2721 box-shadow: 0 1px 0 #ececec;
2719 cursor: pointer;
2722 cursor: pointer;
2720 padding: 0px 2px 1px 2px;
2723 padding: 0px 2px 1px 2px;
2721 }
2724 }
2722
2725
2723 input.ui-button-small-blue:hover {
2726 input.ui-button-small-blue:hover {
2724
2727
2725 }
2728 }
2726
2729
2727 ins,div.options a:hover {
2730 ins,div.options a:hover {
2728 text-decoration: none;
2731 text-decoration: none;
2729 }
2732 }
2730
2733
2731 img,#header #header-inner #quick li a:hover span.normal,#header #header-inner #quick li ul li.last,#content div.box div.form div.fields div.field div.textarea table td table td a,#clone_url
2734 img,#header #header-inner #quick li a:hover span.normal,#header #header-inner #quick li ul li.last,#content div.box div.form div.fields div.field div.textarea table td table td a,#clone_url
2732 {
2735 {
2733 border: none;
2736 border: none;
2734 }
2737 }
2735
2738
2736 img.icon,.right .merge img {
2739 img.icon,.right .merge img {
2737 vertical-align: bottom;
2740 vertical-align: bottom;
2738 }
2741 }
2739
2742
2740 #header ul#logged-user,#content div.box div.title ul.links,#content div.box div.message div.dismiss,#content div.box div.traffic div.legend ul
2743 #header ul#logged-user,#content div.box div.title ul.links,#content div.box div.message div.dismiss,#content div.box div.traffic div.legend ul
2741 {
2744 {
2742 float: right;
2745 float: right;
2743 margin: 0;
2746 margin: 0;
2744 padding: 0;
2747 padding: 0;
2745 }
2748 }
2746
2749
2747 #header #header-inner #home,#header #header-inner #logo,#content div.box ul.left,#content div.box ol.left,#content div.box div.pagination-left,div#commit_history,div#legend_data,div#legend_container,div#legend_choices
2750 #header #header-inner #home,#header #header-inner #logo,#content div.box ul.left,#content div.box ol.left,#content div.box div.pagination-left,div#commit_history,div#legend_data,div#legend_container,div#legend_choices
2748 {
2751 {
2749 float: left;
2752 float: left;
2750 }
2753 }
2751
2754
2752 #header #header-inner #quick li:hover ul ul,#header #header-inner #quick li:hover ul ul ul,#header #header-inner #quick li:hover ul ul ul ul,#content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow
2755 #header #header-inner #quick li:hover ul ul,#header #header-inner #quick li:hover ul ul ul,#header #header-inner #quick li:hover ul ul ul ul,#content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow
2753 {
2756 {
2754 display: none;
2757 display: none;
2755 }
2758 }
2756
2759
2757 #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
2760 #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
2758 {
2761 {
2759 display: block;
2762 display: block;
2760 }
2763 }
2761
2764
2762 #content div.graph {
2765 #content div.graph {
2763 padding: 0 10px 10px;
2766 padding: 0 10px 10px;
2764 }
2767 }
2765
2768
2766 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a
2769 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a
2767 {
2770 {
2768 color: #bfe3ff;
2771 color: #bfe3ff;
2769 }
2772 }
2770
2773
2771 #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
2774 #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
2772 {
2775 {
2773 margin: 10px 24px 10px 44px;
2776 margin: 10px 24px 10px 44px;
2774 }
2777 }
2775
2778
2776 #content div.box div.form,#content div.box div.table,#content div.box div.traffic
2779 #content div.box div.form,#content div.box div.table,#content div.box div.traffic
2777 {
2780 {
2778 clear: both;
2781 clear: both;
2779 overflow: hidden;
2782 overflow: hidden;
2780 margin: 0;
2783 margin: 0;
2781 padding: 0 20px 10px;
2784 padding: 0 20px 10px;
2782 }
2785 }
2783
2786
2784 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields
2787 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields
2785 {
2788 {
2786 clear: both;
2789 clear: both;
2787 overflow: hidden;
2790 overflow: hidden;
2788 margin: 0;
2791 margin: 0;
2789 padding: 0;
2792 padding: 0;
2790 }
2793 }
2791
2794
2792 #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
2795 #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
2793 {
2796 {
2794 height: 1%;
2797 height: 1%;
2795 display: block;
2798 display: block;
2796 color: #363636;
2799 color: #363636;
2797 margin: 0;
2800 margin: 0;
2798 padding: 2px 0 0;
2801 padding: 2px 0 0;
2799 }
2802 }
2800
2803
2801 #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
2804 #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
2802 {
2805 {
2803 background: #FBE3E4;
2806 background: #FBE3E4;
2804 border-top: 1px solid #e1b2b3;
2807 border-top: 1px solid #e1b2b3;
2805 border-left: 1px solid #e1b2b3;
2808 border-left: 1px solid #e1b2b3;
2806 border-right: 1px solid #FBC2C4;
2809 border-right: 1px solid #FBC2C4;
2807 border-bottom: 1px solid #FBC2C4;
2810 border-bottom: 1px solid #FBC2C4;
2808 }
2811 }
2809
2812
2810 #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
2813 #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
2811 {
2814 {
2812 background: #E6EFC2;
2815 background: #E6EFC2;
2813 border-top: 1px solid #cebb98;
2816 border-top: 1px solid #cebb98;
2814 border-left: 1px solid #cebb98;
2817 border-left: 1px solid #cebb98;
2815 border-right: 1px solid #c6d880;
2818 border-right: 1px solid #c6d880;
2816 border-bottom: 1px solid #c6d880;
2819 border-bottom: 1px solid #c6d880;
2817 }
2820 }
2818
2821
2819 #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
2822 #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
2820 {
2823 {
2821 margin: 0;
2824 margin: 0;
2822 }
2825 }
2823
2826
2824 #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
2827 #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
2825 {
2828 {
2826 margin: 0 0 0 0px !important;
2829 margin: 0 0 0 0px !important;
2827 padding: 0;
2830 padding: 0;
2828 }
2831 }
2829
2832
2830 #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
2833 #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
2831 {
2834 {
2832 margin: 0 0 0 200px;
2835 margin: 0 0 0 200px;
2833 padding: 0;
2836 padding: 0;
2834 }
2837 }
2835
2838
2836 #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
2839 #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
2837 {
2840 {
2838 color: #000;
2841 color: #000;
2839 text-decoration: none;
2842 text-decoration: none;
2840 }
2843 }
2841
2844
2842 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus
2845 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus
2843 {
2846 {
2844 border: 1px solid #666;
2847 border: 1px solid #666;
2845 }
2848 }
2846
2849
2847 #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
2850 #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
2848 {
2851 {
2849 clear: both;
2852 clear: both;
2850 overflow: hidden;
2853 overflow: hidden;
2851 margin: 0;
2854 margin: 0;
2852 padding: 8px 0 2px;
2855 padding: 8px 0 2px;
2853 }
2856 }
2854
2857
2855 #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
2858 #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
2856 {
2859 {
2857 float: left;
2860 float: left;
2858 margin: 0;
2861 margin: 0;
2859 }
2862 }
2860
2863
2861 #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
2864 #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
2862 {
2865 {
2863 height: 1%;
2866 height: 1%;
2864 display: block;
2867 display: block;
2865 float: left;
2868 float: left;
2866 margin: 2px 0 0 4px;
2869 margin: 2px 0 0 4px;
2867 }
2870 }
2868
2871
2869 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
2872 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
2870 {
2873 {
2871 color: #000;
2874 color: #000;
2872 font-size: 11px;
2875 font-size: 11px;
2873 font-weight: 700;
2876 font-weight: 700;
2874 margin: 0;
2877 margin: 0;
2875 }
2878 }
2876
2879
2877 input.ui-button {
2880 input.ui-button {
2878 background: #e5e3e3 url("../images/button.png") repeat-x;
2881 background: #e5e3e3 url("../images/button.png") repeat-x;
2879 border-top: 1px solid #DDD;
2882 border-top: 1px solid #DDD;
2880 border-left: 1px solid #c6c6c6;
2883 border-left: 1px solid #c6c6c6;
2881 border-right: 1px solid #DDD;
2884 border-right: 1px solid #DDD;
2882 border-bottom: 1px solid #c6c6c6;
2885 border-bottom: 1px solid #c6c6c6;
2883 color: #515151 !important;
2886 color: #515151 !important;
2884 outline: none;
2887 outline: none;
2885 margin: 0;
2888 margin: 0;
2886 padding: 6px 12px;
2889 padding: 6px 12px;
2887 -webkit-border-radius: 4px 4px 4px 4px;
2890 -webkit-border-radius: 4px 4px 4px 4px;
2888 -khtml-border-radius: 4px 4px 4px 4px;
2891 -khtml-border-radius: 4px 4px 4px 4px;
2889 -moz-border-radius: 4px 4px 4px 4px;
2892 -moz-border-radius: 4px 4px 4px 4px;
2890 border-radius: 4px 4px 4px 4px;
2893 border-radius: 4px 4px 4px 4px;
2891 box-shadow: 0 1px 0 #ececec;
2894 box-shadow: 0 1px 0 #ececec;
2892 cursor: pointer;
2895 cursor: pointer;
2893 }
2896 }
2894
2897
2895 input.ui-button:hover {
2898 input.ui-button:hover {
2896 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
2899 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
2897 border-top: 1px solid #ccc;
2900 border-top: 1px solid #ccc;
2898 border-left: 1px solid #bebebe;
2901 border-left: 1px solid #bebebe;
2899 border-right: 1px solid #b1b1b1;
2902 border-right: 1px solid #b1b1b1;
2900 border-bottom: 1px solid #afafaf;
2903 border-bottom: 1px solid #afafaf;
2901 }
2904 }
2902
2905
2903 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight
2906 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight
2904 {
2907 {
2905 display: inline;
2908 display: inline;
2906 }
2909 }
2907
2910
2908 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons
2911 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons
2909 {
2912 {
2910 margin: 10px 0 0 200px;
2913 margin: 10px 0 0 200px;
2911 padding: 0;
2914 padding: 0;
2912 }
2915 }
2913
2916
2914 #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
2917 #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
2915 {
2918 {
2916 margin: 10px 0 0;
2919 margin: 10px 0 0;
2917 }
2920 }
2918
2921
2919 #content div.box table td.user,#content div.box table td.address {
2922 #content div.box table td.user,#content div.box table td.address {
2920 width: 10%;
2923 width: 10%;
2921 text-align: center;
2924 text-align: center;
2922 }
2925 }
2923
2926
2924 #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
2927 #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
2925 {
2928 {
2926 text-align: right;
2929 text-align: right;
2927 margin: 6px 0 0;
2930 margin: 6px 0 0;
2928 padding: 0;
2931 padding: 0;
2929 }
2932 }
2930
2933
2931 #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
2934 #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
2932 {
2935 {
2933 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
2936 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
2934 border-top: 1px solid #ccc;
2937 border-top: 1px solid #ccc;
2935 border-left: 1px solid #bebebe;
2938 border-left: 1px solid #bebebe;
2936 border-right: 1px solid #b1b1b1;
2939 border-right: 1px solid #b1b1b1;
2937 border-bottom: 1px solid #afafaf;
2940 border-bottom: 1px solid #afafaf;
2938 color: #515151;
2941 color: #515151;
2939 margin: 0;
2942 margin: 0;
2940 padding: 6px 12px;
2943 padding: 6px 12px;
2941 }
2944 }
2942
2945
2943 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results
2946 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results
2944 {
2947 {
2945 text-align: left;
2948 text-align: left;
2946 float: left;
2949 float: left;
2947 margin: 0;
2950 margin: 0;
2948 padding: 0;
2951 padding: 0;
2949 }
2952 }
2950
2953
2951 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span
2954 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span
2952 {
2955 {
2953 height: 1%;
2956 height: 1%;
2954 display: block;
2957 display: block;
2955 float: left;
2958 float: left;
2956 background: #ebebeb url("../images/pager.png") repeat-x;
2959 background: #ebebeb url("../images/pager.png") repeat-x;
2957 border-top: 1px solid #dedede;
2960 border-top: 1px solid #dedede;
2958 border-left: 1px solid #cfcfcf;
2961 border-left: 1px solid #cfcfcf;
2959 border-right: 1px solid #c4c4c4;
2962 border-right: 1px solid #c4c4c4;
2960 border-bottom: 1px solid #c4c4c4;
2963 border-bottom: 1px solid #c4c4c4;
2961 color: #4A4A4A;
2964 color: #4A4A4A;
2962 font-weight: 700;
2965 font-weight: 700;
2963 margin: 0;
2966 margin: 0;
2964 padding: 6px 8px;
2967 padding: 6px 8px;
2965 }
2968 }
2966
2969
2967 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled
2970 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled
2968 {
2971 {
2969 color: #B4B4B4;
2972 color: #B4B4B4;
2970 padding: 6px;
2973 padding: 6px;
2971 }
2974 }
2972
2975
2973 #login,#register {
2976 #login,#register {
2974 width: 520px;
2977 width: 520px;
2975 margin: 10% auto 0;
2978 margin: 10% auto 0;
2976 padding: 0;
2979 padding: 0;
2977 }
2980 }
2978
2981
2979 #login div.color,#register div.color {
2982 #login div.color,#register div.color {
2980 clear: both;
2983 clear: both;
2981 overflow: hidden;
2984 overflow: hidden;
2982 background: #FFF;
2985 background: #FFF;
2983 margin: 10px auto 0;
2986 margin: 10px auto 0;
2984 padding: 3px 3px 3px 0;
2987 padding: 3px 3px 3px 0;
2985 }
2988 }
2986
2989
2987 #login div.color a,#register div.color a {
2990 #login div.color a,#register div.color a {
2988 width: 20px;
2991 width: 20px;
2989 height: 20px;
2992 height: 20px;
2990 display: block;
2993 display: block;
2991 float: left;
2994 float: left;
2992 margin: 0 0 0 3px;
2995 margin: 0 0 0 3px;
2993 padding: 0;
2996 padding: 0;
2994 }
2997 }
2995
2998
2996 #login div.title h5,#register div.title h5 {
2999 #login div.title h5,#register div.title h5 {
2997 color: #fff;
3000 color: #fff;
2998 margin: 10px;
3001 margin: 10px;
2999 padding: 0;
3002 padding: 0;
3000 }
3003 }
3001
3004
3002 #login div.form div.fields div.field,#register div.form div.fields div.field
3005 #login div.form div.fields div.field,#register div.form div.fields div.field
3003 {
3006 {
3004 clear: both;
3007 clear: both;
3005 overflow: hidden;
3008 overflow: hidden;
3006 margin: 0;
3009 margin: 0;
3007 padding: 0 0 10px;
3010 padding: 0 0 10px;
3008 }
3011 }
3009
3012
3010 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message
3013 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message
3011 {
3014 {
3012 height: 1%;
3015 height: 1%;
3013 display: block;
3016 display: block;
3014 color: red;
3017 color: red;
3015 margin: 8px 0 0;
3018 margin: 8px 0 0;
3016 padding: 0;
3019 padding: 0;
3017 max-width: 320px;
3020 max-width: 320px;
3018 }
3021 }
3019
3022
3020 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label
3023 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label
3021 {
3024 {
3022 color: #000;
3025 color: #000;
3023 font-weight: 700;
3026 font-weight: 700;
3024 }
3027 }
3025
3028
3026 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input
3029 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input
3027 {
3030 {
3028 float: left;
3031 float: left;
3029 margin: 0;
3032 margin: 0;
3030 padding: 0;
3033 padding: 0;
3031 }
3034 }
3032
3035
3033 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox
3036 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox
3034 {
3037 {
3035 margin: 0 0 0 184px;
3038 margin: 0 0 0 184px;
3036 padding: 0;
3039 padding: 0;
3037 }
3040 }
3038
3041
3039 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label
3042 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label
3040 {
3043 {
3041 color: #565656;
3044 color: #565656;
3042 font-weight: 700;
3045 font-weight: 700;
3043 }
3046 }
3044
3047
3045 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input
3048 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input
3046 {
3049 {
3047 color: #000;
3050 color: #000;
3048 font-size: 1em;
3051 font-size: 1em;
3049 font-weight: 700;
3052 font-weight: 700;
3050 margin: 0;
3053 margin: 0;
3051 }
3054 }
3052
3055
3053 #changeset_content .container .wrapper,#graph_content .container .wrapper
3056 #changeset_content .container .wrapper,#graph_content .container .wrapper
3054 {
3057 {
3055 width: 600px;
3058 width: 600px;
3056 }
3059 }
3057
3060
3058 #changeset_content .container .left,#graph_content .container .left {
3061 #changeset_content .container .left,#graph_content .container .left {
3059 float: left;
3062 float: left;
3060 width: 70%;
3063 width: 70%;
3061 padding-left: 5px;
3064 padding-left: 5px;
3062 }
3065 }
3063
3066
3064 #changeset_content .container .left .date,.ac .match {
3067 #changeset_content .container .left .date,.ac .match {
3065 font-weight: 700;
3068 font-weight: 700;
3066 padding-top: 5px;
3069 padding-top: 5px;
3067 padding-bottom: 5px;
3070 padding-bottom: 5px;
3068 }
3071 }
3069
3072
3070 div#legend_container table td,div#legend_choices table td {
3073 div#legend_container table td,div#legend_choices table td {
3071 border: none !important;
3074 border: none !important;
3072 height: 20px !important;
3075 height: 20px !important;
3073 padding: 0 !important;
3076 padding: 0 !important;
3074 }
3077 }
3075
3078
3076 .q_filter_box {
3079 .q_filter_box {
3077 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3080 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3078 -webkit-border-radius: 4px;
3081 -webkit-border-radius: 4px;
3079 -moz-border-radius: 4px;
3082 -moz-border-radius: 4px;
3080 border-radius: 4px;
3083 border-radius: 4px;
3081 border: 0 none;
3084 border: 0 none;
3082 color: #AAAAAA;
3085 color: #AAAAAA;
3083 margin-bottom: -4px;
3086 margin-bottom: -4px;
3084 margin-top: -4px;
3087 margin-top: -4px;
3085 padding-left: 3px;
3088 padding-left: 3px;
3086 }
3089 }
3087
3090
3088 #node_filter {
3091 #node_filter {
3089 border: 0px solid #545454;
3092 border: 0px solid #545454;
3090 color: #AAAAAA;
3093 color: #AAAAAA;
3091 padding-left: 3px;
3094 padding-left: 3px;
3092 }
3095 }
3093
3096
3094 /*README STYLE*/
3097 /*README STYLE*/
3095
3098
3096 div.readme {
3099 div.readme {
3097 padding:0px;
3100 padding:0px;
3098 }
3101 }
3099
3102
3100 div.readme h2 {
3103 div.readme h2 {
3101 font-weight: normal;
3104 font-weight: normal;
3102 }
3105 }
3103
3106
3104 div.readme .readme_box {
3107 div.readme .readme_box {
3105 background-color: #fafafa;
3108 background-color: #fafafa;
3106 }
3109 }
3107
3110
3108 div.readme .readme_box {
3111 div.readme .readme_box {
3109 clear:both;
3112 clear:both;
3110 overflow:hidden;
3113 overflow:hidden;
3111 margin:0;
3114 margin:0;
3112 padding:0 20px 10px;
3115 padding:0 20px 10px;
3113 }
3116 }
3114
3117
3115 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 {
3118 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 {
3116 border-bottom: 0 !important;
3119 border-bottom: 0 !important;
3117 margin: 0 !important;
3120 margin: 0 !important;
3118 padding: 0 !important;
3121 padding: 0 !important;
3119 line-height: 1.5em !important;
3122 line-height: 1.5em !important;
3120 }
3123 }
3121
3124
3122
3125
3123 div.readme .readme_box h1:first-child {
3126 div.readme .readme_box h1:first-child {
3124 padding-top: .25em !important;
3127 padding-top: .25em !important;
3125 }
3128 }
3126
3129
3127 div.readme .readme_box h2, div.readme .readme_box h3 {
3130 div.readme .readme_box h2, div.readme .readme_box h3 {
3128 margin: 1em 0 !important;
3131 margin: 1em 0 !important;
3129 }
3132 }
3130
3133
3131 div.readme .readme_box h2 {
3134 div.readme .readme_box h2 {
3132 margin-top: 1.5em !important;
3135 margin-top: 1.5em !important;
3133 border-top: 4px solid #e0e0e0 !important;
3136 border-top: 4px solid #e0e0e0 !important;
3134 padding-top: .5em !important;
3137 padding-top: .5em !important;
3135 }
3138 }
3136
3139
3137 div.readme .readme_box p {
3140 div.readme .readme_box p {
3138 color: black !important;
3141 color: black !important;
3139 margin: 1em 0 !important;
3142 margin: 1em 0 !important;
3140 line-height: 1.5em !important;
3143 line-height: 1.5em !important;
3141 }
3144 }
3142
3145
3143 div.readme .readme_box ul {
3146 div.readme .readme_box ul {
3144 list-style: disc !important;
3147 list-style: disc !important;
3145 margin: 1em 0 1em 2em !important;
3148 margin: 1em 0 1em 2em !important;
3146 }
3149 }
3147
3150
3148 div.readme .readme_box ol {
3151 div.readme .readme_box ol {
3149 list-style: decimal;
3152 list-style: decimal;
3150 margin: 1em 0 1em 2em !important;
3153 margin: 1em 0 1em 2em !important;
3151 }
3154 }
3152
3155
3153 div.readme .readme_box pre, code {
3156 div.readme .readme_box pre, code {
3154 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3157 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3155 }
3158 }
3156
3159
3157 div.readme .readme_box code {
3160 div.readme .readme_box code {
3158 font-size: 12px !important;
3161 font-size: 12px !important;
3159 background-color: ghostWhite !important;
3162 background-color: ghostWhite !important;
3160 color: #444 !important;
3163 color: #444 !important;
3161 padding: 0 .2em !important;
3164 padding: 0 .2em !important;
3162 border: 1px solid #dedede !important;
3165 border: 1px solid #dedede !important;
3163 }
3166 }
3164
3167
3165 div.readme .readme_box pre code {
3168 div.readme .readme_box pre code {
3166 padding: 0 !important;
3169 padding: 0 !important;
3167 font-size: 12px !important;
3170 font-size: 12px !important;
3168 background-color: #eee !important;
3171 background-color: #eee !important;
3169 border: none !important;
3172 border: none !important;
3170 }
3173 }
3171
3174
3172 div.readme .readme_box pre {
3175 div.readme .readme_box pre {
3173 margin: 1em 0;
3176 margin: 1em 0;
3174 font-size: 12px;
3177 font-size: 12px;
3175 background-color: #eee;
3178 background-color: #eee;
3176 border: 1px solid #ddd;
3179 border: 1px solid #ddd;
3177 padding: 5px;
3180 padding: 5px;
3178 color: #444;
3181 color: #444;
3179 overflow: auto;
3182 overflow: auto;
3180 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3183 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3181 -webkit-border-radius: 3px;
3184 -webkit-border-radius: 3px;
3182 -moz-border-radius: 3px;
3185 -moz-border-radius: 3px;
3183 border-radius: 3px;
3186 border-radius: 3px;
3184 }
3187 }
3185
3188
3186
3189
3187 /** RST STYLE **/
3190 /** RST STYLE **/
3188
3191
3189
3192
3190 div.rst-block {
3193 div.rst-block {
3191 padding:0px;
3194 padding:0px;
3192 }
3195 }
3193
3196
3194 div.rst-block h2 {
3197 div.rst-block h2 {
3195 font-weight: normal;
3198 font-weight: normal;
3196 }
3199 }
3197
3200
3198 div.rst-block {
3201 div.rst-block {
3199 background-color: #fafafa;
3202 background-color: #fafafa;
3200 }
3203 }
3201
3204
3202 div.rst-block {
3205 div.rst-block {
3203 clear:both;
3206 clear:both;
3204 overflow:hidden;
3207 overflow:hidden;
3205 margin:0;
3208 margin:0;
3206 padding:0 20px 10px;
3209 padding:0 20px 10px;
3207 }
3210 }
3208
3211
3209 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
3212 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
3210 border-bottom: 0 !important;
3213 border-bottom: 0 !important;
3211 margin: 0 !important;
3214 margin: 0 !important;
3212 padding: 0 !important;
3215 padding: 0 !important;
3213 line-height: 1.5em !important;
3216 line-height: 1.5em !important;
3214 }
3217 }
3215
3218
3216
3219
3217 div.rst-block h1:first-child {
3220 div.rst-block h1:first-child {
3218 padding-top: .25em !important;
3221 padding-top: .25em !important;
3219 }
3222 }
3220
3223
3221 div.rst-block h2, div.rst-block h3 {
3224 div.rst-block h2, div.rst-block h3 {
3222 margin: 1em 0 !important;
3225 margin: 1em 0 !important;
3223 }
3226 }
3224
3227
3225 div.rst-block h2 {
3228 div.rst-block h2 {
3226 margin-top: 1.5em !important;
3229 margin-top: 1.5em !important;
3227 border-top: 4px solid #e0e0e0 !important;
3230 border-top: 4px solid #e0e0e0 !important;
3228 padding-top: .5em !important;
3231 padding-top: .5em !important;
3229 }
3232 }
3230
3233
3231 div.rst-block p {
3234 div.rst-block p {
3232 color: black !important;
3235 color: black !important;
3233 margin: 1em 0 !important;
3236 margin: 1em 0 !important;
3234 line-height: 1.5em !important;
3237 line-height: 1.5em !important;
3235 }
3238 }
3236
3239
3237 div.rst-block ul {
3240 div.rst-block ul {
3238 list-style: disc !important;
3241 list-style: disc !important;
3239 margin: 1em 0 1em 2em !important;
3242 margin: 1em 0 1em 2em !important;
3240 }
3243 }
3241
3244
3242 div.rst-block ol {
3245 div.rst-block ol {
3243 list-style: decimal;
3246 list-style: decimal;
3244 margin: 1em 0 1em 2em !important;
3247 margin: 1em 0 1em 2em !important;
3245 }
3248 }
3246
3249
3247 div.rst-block pre, code {
3250 div.rst-block pre, code {
3248 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3251 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
3249 }
3252 }
3250
3253
3251 div.rst-block code {
3254 div.rst-block code {
3252 font-size: 12px !important;
3255 font-size: 12px !important;
3253 background-color: ghostWhite !important;
3256 background-color: ghostWhite !important;
3254 color: #444 !important;
3257 color: #444 !important;
3255 padding: 0 .2em !important;
3258 padding: 0 .2em !important;
3256 border: 1px solid #dedede !important;
3259 border: 1px solid #dedede !important;
3257 }
3260 }
3258
3261
3259 div.rst-block pre code {
3262 div.rst-block pre code {
3260 padding: 0 !important;
3263 padding: 0 !important;
3261 font-size: 12px !important;
3264 font-size: 12px !important;
3262 background-color: #eee !important;
3265 background-color: #eee !important;
3263 border: none !important;
3266 border: none !important;
3264 }
3267 }
3265
3268
3266 div.rst-block pre {
3269 div.rst-block pre {
3267 margin: 1em 0;
3270 margin: 1em 0;
3268 font-size: 12px;
3271 font-size: 12px;
3269 background-color: #eee;
3272 background-color: #eee;
3270 border: 1px solid #ddd;
3273 border: 1px solid #ddd;
3271 padding: 5px;
3274 padding: 5px;
3272 color: #444;
3275 color: #444;
3273 overflow: auto;
3276 overflow: auto;
3274 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3277 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3275 -webkit-border-radius: 3px;
3278 -webkit-border-radius: 3px;
3276 -moz-border-radius: 3px;
3279 -moz-border-radius: 3px;
3277 border-radius: 3px;
3280 border-radius: 3px;
3278 }
3281 }
3279
3282
3280
3283
3281 /** comment main **/
3284 /** comment main **/
3282 .comments {
3285 .comments {
3283 padding:10px 20px;
3286 padding:10px 20px;
3284 }
3287 }
3285
3288
3286 .comments .comment {
3289 .comments .comment {
3287 border: 1px solid #ddd;
3290 border: 1px solid #ddd;
3288 margin-top: 10px;
3291 margin-top: 10px;
3289 -webkit-border-radius: 4px;
3292 -webkit-border-radius: 4px;
3290 -moz-border-radius: 4px;
3293 -moz-border-radius: 4px;
3291 border-radius: 4px;
3294 border-radius: 4px;
3292 }
3295 }
3293
3296
3294 .comments .comment .meta {
3297 .comments .comment .meta {
3295 background: #f8f8f8;
3298 background: #f8f8f8;
3296 padding: 6px;
3299 padding: 6px;
3297 border-bottom: 1px solid #ddd;
3300 border-bottom: 1px solid #ddd;
3298 }
3301 }
3299
3302
3300 .comments .comment .meta img {
3303 .comments .comment .meta img {
3301 vertical-align: middle;
3304 vertical-align: middle;
3302 }
3305 }
3303
3306
3304 .comments .comment .meta .user {
3307 .comments .comment .meta .user {
3305 font-weight: bold;
3308 font-weight: bold;
3306 }
3309 }
3307
3310
3308 .comments .comment .meta .date {
3311 .comments .comment .meta .date {
3309 float: right;
3312 float: right;
3310 }
3313 }
3311
3314
3312 .comments .comment .text {
3315 .comments .comment .text {
3313 padding: 8px 6px 6px 14px;
3316 padding: 8px 6px 6px 14px;
3314 background-color: #FAFAFA;
3317 background-color: #FAFAFA;
3315 }
3318 }
3316
3319
3317 .comments .comments-number{
3320 .comments .comments-number{
3318 padding:0px 0px 10px 0px;
3321 padding:0px 0px 10px 0px;
3319 font-weight: bold;
3322 font-weight: bold;
3320 color: #666;
3323 color: #666;
3321 font-size: 16px;
3324 font-size: 16px;
3322 }
3325 }
3323
3326
3324 /** comment form **/
3327 /** comment form **/
3325
3328
3326 .comment-form .clearfix{
3329 .comment-form .clearfix{
3327 background: #EEE;
3330 background: #EEE;
3328 -webkit-border-radius: 4px;
3331 -webkit-border-radius: 4px;
3329 -moz-border-radius: 4px;
3332 -moz-border-radius: 4px;
3330 border-radius: 4px;
3333 border-radius: 4px;
3331 padding: 10px;
3334 padding: 10px;
3332 }
3335 }
3333
3336
3334 div.comment-form {
3337 div.comment-form {
3335 margin-top: 20px;
3338 margin-top: 20px;
3336 }
3339 }
3337
3340
3338 .comment-form strong {
3341 .comment-form strong {
3339 display: block;
3342 display: block;
3340 margin-bottom: 15px;
3343 margin-bottom: 15px;
3341 }
3344 }
3342
3345
3343 .comment-form textarea {
3346 .comment-form textarea {
3344 width: 100%;
3347 width: 100%;
3345 height: 100px;
3348 height: 100px;
3346 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3349 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3347 }
3350 }
3348
3351
3349 form.comment-form {
3352 form.comment-form {
3350 margin-top: 10px;
3353 margin-top: 10px;
3351 margin-left: 10px;
3354 margin-left: 10px;
3352 }
3355 }
3353
3356
3354 .comment-form-submit {
3357 .comment-form-submit {
3355 margin-top: 5px;
3358 margin-top: 5px;
3356 margin-left: 525px;
3359 margin-left: 525px;
3357 }
3360 }
3358
3361
3359 .file-comments {
3362 .file-comments {
3360 display: none;
3363 display: none;
3361 }
3364 }
3362
3365
3363 .comment-form .comment {
3366 .comment-form .comment {
3364 margin-left: 10px;
3367 margin-left: 10px;
3365 }
3368 }
3366
3369
3367 .comment-form .comment-help{
3370 .comment-form .comment-help{
3368 padding: 0px 0px 5px 0px;
3371 padding: 0px 0px 5px 0px;
3369 color: #666;
3372 color: #666;
3370 }
3373 }
3371
3374
3372 .comment-form .comment-button{
3375 .comment-form .comment-button{
3373 padding-top:5px;
3376 padding-top:5px;
3374 }
3377 }
3375
3378
3376 .add-another-button {
3379 .add-another-button {
3377 margin-left: 10px;
3380 margin-left: 10px;
3378 margin-top: 10px;
3381 margin-top: 10px;
3379 margin-bottom: 10px;
3382 margin-bottom: 10px;
3380 }
3383 }
3381
3384
3382 .comment .buttons {
3385 .comment .buttons {
3383 position: absolute;
3386 position: absolute;
3384 right:40px;
3387 right:40px;
3385 }
3388 }
3386
3389
3387
3390
3388 .show-inline-comments{
3391 .show-inline-comments{
3389 position: relative;
3392 position: relative;
3390 top:1px
3393 top:1px
3391 }
3394 }
3392
3395
3393 /** comment inline form **/
3396 /** comment inline form **/
3394
3397
3395 .comment-inline-form .clearfix{
3398 .comment-inline-form .clearfix{
3396 background: #EEE;
3399 background: #EEE;
3397 -webkit-border-radius: 4px;
3400 -webkit-border-radius: 4px;
3398 -moz-border-radius: 4px;
3401 -moz-border-radius: 4px;
3399 border-radius: 4px;
3402 border-radius: 4px;
3400 padding: 5px;
3403 padding: 5px;
3401 }
3404 }
3402
3405
3403 div.comment-inline-form {
3406 div.comment-inline-form {
3404 margin-top: 5px;
3407 margin-top: 5px;
3405 padding:2px 6px 8px 6px;
3408 padding:2px 6px 8px 6px;
3406 }
3409 }
3407
3410
3408 .comment-inline-form strong {
3411 .comment-inline-form strong {
3409 display: block;
3412 display: block;
3410 margin-bottom: 15px;
3413 margin-bottom: 15px;
3411 }
3414 }
3412
3415
3413 .comment-inline-form textarea {
3416 .comment-inline-form textarea {
3414 width: 100%;
3417 width: 100%;
3415 height: 100px;
3418 height: 100px;
3416 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3419 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
3417 }
3420 }
3418
3421
3419 form.comment-inline-form {
3422 form.comment-inline-form {
3420 margin-top: 10px;
3423 margin-top: 10px;
3421 margin-left: 10px;
3424 margin-left: 10px;
3422 }
3425 }
3423
3426
3424 .comment-inline-form-submit {
3427 .comment-inline-form-submit {
3425 margin-top: 5px;
3428 margin-top: 5px;
3426 margin-left: 525px;
3429 margin-left: 525px;
3427 }
3430 }
3428
3431
3429 .file-comments {
3432 .file-comments {
3430 display: none;
3433 display: none;
3431 }
3434 }
3432
3435
3433 .comment-inline-form .comment {
3436 .comment-inline-form .comment {
3434 margin-left: 10px;
3437 margin-left: 10px;
3435 }
3438 }
3436
3439
3437 .comment-inline-form .comment-help{
3440 .comment-inline-form .comment-help{
3438 padding: 0px 0px 2px 0px;
3441 padding: 0px 0px 2px 0px;
3439 color: #666666;
3442 color: #666666;
3440 font-size: 10px;
3443 font-size: 10px;
3441 }
3444 }
3442
3445
3443 .comment-inline-form .comment-button{
3446 .comment-inline-form .comment-button{
3444 padding-top:5px;
3447 padding-top:5px;
3445 }
3448 }
3446
3449
3447 /** comment inline **/
3450 /** comment inline **/
3448 .inline-comments {
3451 .inline-comments {
3449 padding:10px 20px;
3452 padding:10px 20px;
3450 }
3453 }
3451
3454
3452 .inline-comments div.rst-block {
3455 .inline-comments div.rst-block {
3453 clear:both;
3456 clear:both;
3454 overflow:hidden;
3457 overflow:hidden;
3455 margin:0;
3458 margin:0;
3456 padding:0 20px 0px;
3459 padding:0 20px 0px;
3457 }
3460 }
3458 .inline-comments .comment {
3461 .inline-comments .comment {
3459 border: 1px solid #ddd;
3462 border: 1px solid #ddd;
3460 -webkit-border-radius: 4px;
3463 -webkit-border-radius: 4px;
3461 -moz-border-radius: 4px;
3464 -moz-border-radius: 4px;
3462 border-radius: 4px;
3465 border-radius: 4px;
3463 margin: 3px 3px 5px 5px;
3466 margin: 3px 3px 5px 5px;
3464 }
3467 }
3465
3468
3466 .inline-comments .comment .meta {
3469 .inline-comments .comment .meta {
3467 background: #f8f8f8;
3470 background: #f8f8f8;
3468 padding: 6px;
3471 padding: 6px;
3469 border-bottom: 1px solid #ddd;
3472 border-bottom: 1px solid #ddd;
3470 }
3473 }
3471
3474
3472 .inline-comments .comment .meta img {
3475 .inline-comments .comment .meta img {
3473 vertical-align: middle;
3476 vertical-align: middle;
3474 }
3477 }
3475
3478
3476 .inline-comments .comment .meta .user {
3479 .inline-comments .comment .meta .user {
3477 font-weight: bold;
3480 font-weight: bold;
3478 }
3481 }
3479
3482
3480 .inline-comments .comment .meta .date {
3483 .inline-comments .comment .meta .date {
3481 float: right;
3484 float: right;
3482 }
3485 }
3483
3486
3484 .inline-comments .comment .text {
3487 .inline-comments .comment .text {
3485 padding: 8px 6px 6px 14px;
3488 padding: 8px 6px 6px 14px;
3486 background-color: #FAFAFA;
3489 background-color: #FAFAFA;
3487 }
3490 }
3488
3491
3489 .inline-comments .comments-number{
3492 .inline-comments .comments-number{
3490 padding:0px 0px 10px 0px;
3493 padding:0px 0px 10px 0px;
3491 font-weight: bold;
3494 font-weight: bold;
3492 color: #666;
3495 color: #666;
3493 font-size: 16px;
3496 font-size: 16px;
3494 }
3497 }
3495 .inline-comments-button .add-comment{
3498 .inline-comments-button .add-comment{
3496 margin:10px 5px !important;
3499 margin:10px 5px !important;
3497 }
3500 }
3498 .notifications{
3501 .notifications{
3499 width:22px;
3502 width:22px;
3500 padding:2px;
3503 padding:2px;
3501 float:right;
3504 float:right;
3502 -webkit-border-radius: 4px;
3505 -webkit-border-radius: 4px;
3503 -moz-border-radius: 4px;
3506 -moz-border-radius: 4px;
3504 border-radius: 4px;
3507 border-radius: 4px;
3505 text-align: center;
3508 text-align: center;
3506 margin: 0px -10px 0px 5px;
3509 margin: 0px -10px 0px 5px;
3507 background-color: #DEDEDE;
3510 background-color: #DEDEDE;
3508 }
3511 }
3509 .notifications a{
3512 .notifications a{
3510 color:#888 !important;
3513 color:#888 !important;
3511 display: block;
3514 display: block;
3512 font-size: 10px
3515 font-size: 10px
3513 }
3516 }
3514 .notifications a:hover{
3517 .notifications a:hover{
3515 text-decoration: none !important;
3518 text-decoration: none !important;
3516 }
3519 }
3517 .notification-header{
3520 .notification-header{
3518
3521
3519 }
3522 }
3520 .notification-header .desc{
3523 .notification-header .desc{
3521 font-size: 16px;
3524 font-size: 16px;
3522 height: 24px;
3525 height: 24px;
3523 padding-top: 6px;
3526 padding-top: 6px;
3524 float: left
3527 float: left
3525 }
3528 }
3526
3529
3527 .notification-header .desc.unread{
3530 .notification-header .desc.unread{
3528 font-weight: bold;
3531 font-weight: bold;
3529 font-size: 17px;
3532 font-size: 17px;
3530 }
3533 }
3531
3534
3532 .notification-header .delete-notifications{
3535 .notification-header .delete-notifications{
3533 float: right;
3536 float: right;
3534 padding-top: 8px;
3537 padding-top: 8px;
3535 cursor: pointer;
3538 cursor: pointer;
3536 }
3539 }
3537 .notification-subject{
3540 .notification-subject{
3538 clear:both;
3541 clear:both;
3539 border-bottom: 1px solid #eee;
3542 border-bottom: 1px solid #eee;
3540 padding:5px 0px 5px 38px;
3543 padding:5px 0px 5px 38px;
3541 } No newline at end of file
3544 }
@@ -1,48 +1,48 b''
1 <%inherit file="/base/base.html"/>
1 <%inherit file="/base/base.html"/>
2
2
3 <%def name="title()">
3 <%def name="title()">
4 ${c.repo_name} ${_('Files')} - ${c.rhodecode_name}
4 ${c.repo_name} ${_('Files')} - ${c.rhodecode_name}
5 </%def>
5 </%def>
6
6
7 <%def name="breadcrumbs_links()">
7 <%def name="breadcrumbs_links()">
8 ${h.link_to(u'Home',h.url('/'))}
8 ${h.link_to(u'Home',h.url('/'))}
9 &raquo;
9 &raquo;
10 ${h.link_to(c.repo_name,h.url('files_home',repo_name=c.repo_name))}
10 ${h.link_to(c.repo_name,h.url('files_home',repo_name=c.repo_name))}
11 &raquo;
11 &raquo;
12 ${_('files')}
12 ${_('files')}
13 %if c.files_list:
13 %if c.file:
14 @ r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
14 @ r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
15 %endif
15 %endif
16 </%def>
16 </%def>
17
17
18 <%def name="page_nav()">
18 <%def name="page_nav()">
19 ${self.menu('files')}
19 ${self.menu('files')}
20 </%def>
20 </%def>
21
21
22 <%def name="main()">
22 <%def name="main()">
23 <div class="box">
23 <div class="box">
24 <!-- box / title -->
24 <!-- box / title -->
25 <div class="title">
25 <div class="title">
26 ${self.breadcrumbs()}
26 ${self.breadcrumbs()}
27 <ul class="links">
27 <ul class="links">
28 <li>
28 <li>
29 <span style="text-transform: uppercase;"><a href="#">${_('branch')}: ${c.changeset.branch}</a></span>
29 <span style="text-transform: uppercase;"><a href="#">${_('branch')}: ${c.changeset.branch}</a></span>
30 </li>
30 </li>
31 </ul>
31 </ul>
32 </div>
32 </div>
33 <div class="table">
33 <div class="table">
34 <div id="files_data">
34 <div id="files_data">
35 <%include file='files_ypjax.html'/>
35 <%include file='files_ypjax.html'/>
36 </div>
36 </div>
37 </div>
37 </div>
38 </div>
38 </div>
39 <script type="text/javascript">
39 <script type="text/javascript">
40 var YPJAX_TITLE = "${c.repo_name} ${_('Files')} - ${c.rhodecode_name}";
40 var YPJAX_TITLE = "${c.repo_name} ${_('Files')} - ${c.rhodecode_name}";
41 var current_url = "${h.url.current()}";
41 var current_url = "${h.url.current()}";
42 var node_list_url = '${h.url("files_home",repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.files_list.path)}';
42 var node_list_url = '${h.url("files_home",repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.file.path)}';
43 var url_base = '${h.url("files_nodelist_home",repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.files_list.path)}';
43 var url_base = '${h.url("files_nodelist_home",repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.file.path)}';
44 var truncated_lbl = "${_('search truncated')}";
44 var truncated_lbl = "${_('search truncated')}";
45 var nomatch_lbl = "${_('no matching files')}";
45 var nomatch_lbl = "${_('no matching files')}";
46 fileBrowserListeners(current_url, node_list_url, url_base, truncated_lbl, nomatch_lbl);
46 fileBrowserListeners(current_url, node_list_url, url_base, truncated_lbl, nomatch_lbl);
47 </script>
47 </script>
48 </%def> No newline at end of file
48 </%def>
@@ -1,136 +1,136 b''
1 <%inherit file="/base/base.html"/>
1 <%inherit file="/base/base.html"/>
2
2
3 <%def name="title()">
3 <%def name="title()">
4 ${c.repo_name} ${_('File annotate')} - ${c.rhodecode_name}
4 ${c.repo_name} ${_('File annotate')} - ${c.rhodecode_name}
5 </%def>
5 </%def>
6
6
7 <%def name="breadcrumbs_links()">
7 <%def name="breadcrumbs_links()">
8 ${h.link_to(u'Home',h.url('/'))}
8 ${h.link_to(u'Home',h.url('/'))}
9 &raquo;
9 &raquo;
10 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
10 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
11 &raquo;
11 &raquo;
12 ${_('annotate')} @ R${c.cs.revision}:${h.short_id(c.cs.raw_id)}
12 ${_('annotate')} @ R${c.cs.revision}:${h.short_id(c.cs.raw_id)}
13 </%def>
13 </%def>
14
14
15 <%def name="page_nav()">
15 <%def name="page_nav()">
16 ${self.menu('files')}
16 ${self.menu('files')}
17 </%def>
17 </%def>
18 <%def name="main()">
18 <%def name="main()">
19 <div class="box">
19 <div class="box">
20 <!-- box / title -->
20 <!-- box / title -->
21 <div class="title">
21 <div class="title">
22 ${self.breadcrumbs()}
22 ${self.breadcrumbs()}
23 <ul class="links">
23 <ul class="links">
24 <li>
24 <li>
25 <span style="text-transform: uppercase;"><a href="#">${_('branch')}: ${c.cs.branch}</a></span>
25 <span style="text-transform: uppercase;"><a href="#">${_('branch')}: ${c.cs.branch}</a></span>
26 </li>
26 </li>
27 </ul>
27 </ul>
28 </div>
28 </div>
29 <div class="table">
29 <div class="table">
30 <div id="files_data">
30 <div id="files_data">
31 <h3 class="files_location">${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cs.revision,c.file.path)}</h3>
31 <h3 class="files_location">${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cs.revision,c.file.path)}</h3>
32 <dl class="overview">
32 <dl>
33 <dt>${_('Revision')}</dt>
33 <dt style="padding-top:10px;font-size:16px">${_('History')}</dt>
34 <dd>${h.link_to("r%s:%s" % (c.file.last_changeset.revision,h.short_id(c.file.last_changeset.raw_id)),
35 h.url('changeset_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id))} </dd>
36 <dt>${_('Size')}</dt>
37 <dd>${h.format_byte_size(c.file.size,binary=True)}</dd>
38 <dt>${_('Mimetype')}</dt>
39 <dd>${c.file.mimetype}</dd>
40 <dt>${_('Options')}</dt>
41 <dd>${h.link_to(_('show source'),
42 h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path))}
43 / ${h.link_to(_('show as raw'),
44 h.url('files_raw_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path))}
45 / ${h.link_to(_('download as raw'),
46 h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path))}
47 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
48 % if not c.file.is_binary:
49 / ${h.link_to(_('edit'),
50 h.url('files_edit_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path))}
51 % endif
52 % endif
53 </dd>
54 <dt>${_('History')}</dt>
55 <dd>
34 <dd>
56 <div>
35 <div>
57 ${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')}
36 ${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')}
58 ${h.hidden('diff2',c.file.last_changeset.raw_id)}
37 ${h.hidden('diff2',c.file.last_changeset.raw_id)}
59 ${h.select('diff1',c.file.last_changeset.raw_id,c.file_history)}
38 ${h.select('diff1',c.file.last_changeset.raw_id,c.file_history)}
60 ${h.submit('diff','diff to revision',class_="ui-button-small")}
39 ${h.submit('diff','diff to revision',class_="ui-button-small")}
61 ${h.submit('show_rev','show at revision',class_="ui-button-small")}
40 ${h.submit('show_rev','show at revision',class_="ui-button-small")}
62 ${h.end_form()}
41 ${h.end_form()}
63 </div>
42 </div>
64 </dd>
43 </dd>
65 </dl>
44 </dl>
66 <div id="body" class="codeblock">
45 <div id="body" class="codeblock">
67 <div class="code-header">
46 <div class="code-header">
68 <div class="revision">${c.file.name}@r${c.file.last_changeset.revision}:${h.short_id(c.file.last_changeset.raw_id)}</div>
47 <div class="stats">
69 <div class="commit">"${c.file.message}"</div>
48 <div class="left"><img src="${h.url('/images/icons/file.png')}"/></div>
70 </div>
49 <div class="left item">${h.link_to("r%s:%s" % (c.file.last_changeset.revision,h.short_id(c.file.last_changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id))}</div>
50 <div class="left item">${h.format_byte_size(c.file.size,binary=True)}</div>
51 <div class="left item last">${c.file.mimetype}</div>
52 <div class="buttons">
53 ${h.link_to(_('show source'),h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-button-small")}
54 ${h.link_to(_('show as raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-button-small")}
55 ${h.link_to(_('download as raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-button-small")}
56 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
57 % if not c.file.is_binary:
58 ${h.link_to(_('edit'),h.url('files_edit_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-button-small")}
59 % endif
60 % endif
61 </div>
62 </div>
63 <div class="author">
64 <div class="gravatar">
65 <img alt="gravatar" src="${h.gravatar_url(h.email(c.cs.author),16)}"/>
66 </div>
67 <div title="${h.email_or_none(c.cs.author)}" class="user">${h.person(c.cs.author)}</div>
68 </div>
69 <div class="commit">${c.file.last_changeset.message}</div>
70 </div>
71 <div class="code-body">
71 <div class="code-body">
72 %if c.file.is_binary:
72 %if c.file.is_binary:
73 ${_('Binary file (%s)') % c.file.mimetype}
73 ${_('Binary file (%s)') % c.file.mimetype}
74 %else:
74 %else:
75 % if c.file.size < c.cut_off_limit:
75 % if c.file.size < c.cut_off_limit:
76 ${h.pygmentize_annotation(c.repo_name,c.file,linenos=True,anchorlinenos=True,lineanchors='L',cssclass="code-highlight")}
76 ${h.pygmentize_annotation(c.repo_name,c.file,linenos=True,anchorlinenos=True,lineanchors='L',cssclass="code-highlight")}
77 %else:
77 %else:
78 ${_('File is too big to display')} ${h.link_to(_('show as raw'),
78 ${_('File is too big to display')} ${h.link_to(_('show as raw'),
79 h.url('files_raw_home',repo_name=c.repo_name,revision=c.cs.revision,f_path=c.f_path))}
79 h.url('files_raw_home',repo_name=c.repo_name,revision=c.cs.revision,f_path=c.f_path))}
80 %endif
80 %endif
81 <script type="text/javascript">
81 <script type="text/javascript">
82 function highlight_lines(lines){
82 function highlight_lines(lines){
83 for(pos in lines){
83 for(pos in lines){
84 YUD.setStyle('L'+lines[pos],'background-color','#FFFFBE');
84 YUD.setStyle('L'+lines[pos],'background-color','#FFFFBE');
85 }
85 }
86 }
86 }
87 page_highlights = location.href.substring(location.href.indexOf('#')+1).split('L');
87 page_highlights = location.href.substring(location.href.indexOf('#')+1).split('L');
88 if (page_highlights.length == 2){
88 if (page_highlights.length == 2){
89 highlight_ranges = page_highlights[1].split(",");
89 highlight_ranges = page_highlights[1].split(",");
90
90
91 var h_lines = [];
91 var h_lines = [];
92 for (pos in highlight_ranges){
92 for (pos in highlight_ranges){
93 var _range = highlight_ranges[pos].split('-');
93 var _range = highlight_ranges[pos].split('-');
94 if(_range.length == 2){
94 if(_range.length == 2){
95 var start = parseInt(_range[0]);
95 var start = parseInt(_range[0]);
96 var end = parseInt(_range[1]);
96 var end = parseInt(_range[1]);
97 if (start < end){
97 if (start < end){
98 for(var i=start;i<=end;i++){
98 for(var i=start;i<=end;i++){
99 h_lines.push(i);
99 h_lines.push(i);
100 }
100 }
101 }
101 }
102 }
102 }
103 else{
103 else{
104 h_lines.push(parseInt(highlight_ranges[pos]));
104 h_lines.push(parseInt(highlight_ranges[pos]));
105 }
105 }
106 }
106 }
107 highlight_lines(h_lines);
107 highlight_lines(h_lines);
108
108
109 //remember original location
109 //remember original location
110 var old_hash = location.href.substring(location.href.indexOf('#'));
110 var old_hash = location.href.substring(location.href.indexOf('#'));
111
111
112 // this makes a jump to anchor moved by 3 posstions for padding
112 // this makes a jump to anchor moved by 3 posstions for padding
113 window.location.hash = '#L'+Math.max(parseInt(h_lines[0])-3,1);
113 window.location.hash = '#L'+Math.max(parseInt(h_lines[0])-3,1);
114
114
115 //sets old anchor
115 //sets old anchor
116 window.location.hash = old_hash;
116 window.location.hash = old_hash;
117
117
118 }
118 }
119 </script>
119 </script>
120 %endif
120 %endif
121 </div>
121 </div>
122 </div>
122 </div>
123 <script type="text/javascript">
123 <script type="text/javascript">
124 YAHOO.util.Event.onDOMReady(function(){
124 YAHOO.util.Event.onDOMReady(function(){
125 YUE.on('show_rev','click',function(e){
125 YUE.on('show_rev','click',function(e){
126 YAHOO.util.Event.preventDefault(e);
126 YAHOO.util.Event.preventDefault(e);
127 var cs = YAHOO.util.Dom.get('diff1').value;
127 var cs = YAHOO.util.Dom.get('diff1').value;
128 var url = "${h.url('files_annotate_home',repo_name=c.repo_name,revision='__CS__',f_path=c.f_path)}".replace('__CS__',cs);
128 var url = "${h.url('files_annotate_home',repo_name=c.repo_name,revision='__CS__',f_path=c.f_path)}".replace('__CS__',cs);
129 window.location = url;
129 window.location = url;
130 });
130 });
131 });
131 });
132 </script>
132 </script>
133 </div>
133 </div>
134 </div>
134 </div>
135 </div>
135 </div>
136 </%def>
136 </%def>
@@ -1,109 +1,109 b''
1 <%def name="file_class(node)">
1 <%def name="file_class(node)">
2 %if node.is_file():
2 %if node.is_file():
3 <%return "browser-file" %>
3 <%return "browser-file" %>
4 %else:
4 %else:
5 <%return "browser-dir"%>
5 <%return "browser-dir"%>
6 %endif
6 %endif
7 </%def>
7 </%def>
8 <div id="body" class="browserblock">
8 <div id="body" class="browserblock">
9 <div class="browser-header">
9 <div class="browser-header">
10 <div class="browser-nav">
10 <div class="browser-nav">
11 ${h.form(h.url.current())}
11 ${h.form(h.url.current())}
12 <div class="info_box">
12 <div class="info_box">
13 <span class="rev">${_('view')}@rev</span>
13 <span class="rev">${_('view')}@rev</span>
14 <a class="ui-button-small" href="${c.url_prev}" title="${_('previous revision')}">&laquo;</a>
14 <a class="ui-button-small" href="${c.url_prev}" title="${_('previous revision')}">&laquo;</a>
15 ${h.text('at_rev',value=c.changeset.revision,size=5)}
15 ${h.text('at_rev',value=c.changeset.revision,size=5)}
16 <a class="ui-button-small" href="${c.url_next}" title="${_('next revision')}">&raquo;</a>
16 <a class="ui-button-small" href="${c.url_next}" title="${_('next revision')}">&raquo;</a>
17 ## ${h.submit('view',_('view'),class_="ui-button-small")}
17 ## ${h.submit('view',_('view'),class_="ui-button-small")}
18 </div>
18 </div>
19 ${h.end_form()}
19 ${h.end_form()}
20 </div>
20 </div>
21 <div class="browser-branch">
21 <div class="browser-branch">
22 ${h.checkbox('stay_at_branch',c.changeset.branch,c.changeset.branch==c.branch)}
22 ${h.checkbox('stay_at_branch',c.changeset.branch,c.changeset.branch==c.branch)}
23 <label>${_('follow current branch')}</label>
23 <label>${_('follow current branch')}</label>
24 </div>
24 </div>
25 <div class="browser-search">
25 <div class="browser-search">
26 <div id="search_activate_id" class="search_activate">
26 <div id="search_activate_id" class="search_activate">
27 <a class="ui-button-small" id="filter_activate" href="#">${_('search file list')}</a>
27 <a class="ui-button-small" id="filter_activate" href="#">${_('search file list')}</a>
28 </div>
28 </div>
29 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
29 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
30 <div id="add_node_id" class="add_node">
30 <div id="add_node_id" class="add_node">
31 <a class="ui-button-small" href="${h.url('files_add_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path)}">${_('add new file')}</a>
31 <a class="ui-button-small" href="${h.url('files_add_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path)}">${_('add new file')}</a>
32 </div>
32 </div>
33 % endif
33 % endif
34 <div>
34 <div>
35 <div id="node_filter_box_loading" style="display:none">${_('Loading file list...')}</div>
35 <div id="node_filter_box_loading" style="display:none">${_('Loading file list...')}</div>
36 <div id="node_filter_box" style="display:none">
36 <div id="node_filter_box" style="display:none">
37 ${h.files_breadcrumbs(c.repo_name,c.changeset.raw_id,c.files_list.path)}/<input type="text" value="type to search..." name="filter" size="25" id="node_filter" autocomplete="off">
37 ${h.files_breadcrumbs(c.repo_name,c.changeset.raw_id,c.file.path)}/<input type="text" value="type to search..." name="filter" size="25" id="node_filter" autocomplete="off">
38 </div>
38 </div>
39 </div>
39 </div>
40 </div>
40 </div>
41 </div>
41 </div>
42
42
43 <div class="browser-body">
43 <div class="browser-body">
44 <table class="code-browser">
44 <table class="code-browser">
45 <thead>
45 <thead>
46 <tr>
46 <tr>
47 <th>${_('Name')}</th>
47 <th>${_('Name')}</th>
48 <th>${_('Size')}</th>
48 <th>${_('Size')}</th>
49 <th>${_('Mimetype')}</th>
49 <th>${_('Mimetype')}</th>
50 <th>${_('Revision')}</th>
50 <th>${_('Revision')}</th>
51 <th>${_('Last modified')}</th>
51 <th>${_('Last modified')}</th>
52 <th>${_('Last commiter')}</th>
52 <th>${_('Last commiter')}</th>
53 </tr>
53 </tr>
54 </thead>
54 </thead>
55
55
56 <tbody id="tbody">
56 <tbody id="tbody">
57 %if c.files_list.parent:
57 %if c.file.parent:
58 <tr class="parity0">
58 <tr class="parity0">
59 <td>
59 <td>
60 ${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.files_list.parent.path),class_="browser-dir ypjax-link")}
60 ${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.file.parent.path),class_="browser-dir ypjax-link")}
61 </td>
61 </td>
62 <td></td>
62 <td></td>
63 <td></td>
63 <td></td>
64 <td></td>
64 <td></td>
65 <td></td>
65 <td></td>
66 <td></td>
66 <td></td>
67 </tr>
67 </tr>
68 %endif
68 %endif
69
69
70 %for cnt,node in enumerate(c.files_list):
70 %for cnt,node in enumerate(c.file):
71 <tr class="parity${cnt%2}">
71 <tr class="parity${cnt%2}">
72 <td>
72 <td>
73 ${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=h.safe_unicode(node.path)),class_=file_class(node)+" ypjax-link")}
73 ${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=h.safe_unicode(node.path)),class_=file_class(node)+" ypjax-link")}
74 </td>
74 </td>
75 <td>
75 <td>
76 %if node.is_file():
76 %if node.is_file():
77 ${h.format_byte_size(node.size,binary=True)}
77 ${h.format_byte_size(node.size,binary=True)}
78 %endif
78 %endif
79 </td>
79 </td>
80 <td>
80 <td>
81 %if node.is_file():
81 %if node.is_file():
82 ${node.mimetype}
82 ${node.mimetype}
83 %endif
83 %endif
84 </td>
84 </td>
85 <td>
85 <td>
86 %if node.is_file():
86 %if node.is_file():
87 <span class="tooltip" title="${node.last_changeset.message}">
87 <span class="tooltip" title="${node.last_changeset.message}">
88 ${'r%s:%s' % (node.last_changeset.revision,node.last_changeset.short_id)}</span>
88 ${'r%s:%s' % (node.last_changeset.revision,node.last_changeset.short_id)}</span>
89 %endif
89 %endif
90 </td>
90 </td>
91 <td>
91 <td>
92 %if node.is_file():
92 %if node.is_file():
93 <span class="tooltip" title="${node.last_changeset.date}">
93 <span class="tooltip" title="${node.last_changeset.date}">
94 ${h.age(node.last_changeset.date)}</span>
94 ${h.age(node.last_changeset.date)}</span>
95 %endif
95 %endif
96 </td>
96 </td>
97 <td>
97 <td>
98 %if node.is_file():
98 %if node.is_file():
99 ${node.last_changeset.author}
99 ${node.last_changeset.author}
100 %endif
100 %endif
101 </td>
101 </td>
102 </tr>
102 </tr>
103 %endfor
103 %endfor
104 </tbody>
104 </tbody>
105 <tbody id="tbody_filtered" style="display:none">
105 <tbody id="tbody_filtered" style="display:none">
106 </tbody>
106 </tbody>
107 </table>
107 </table>
108 </div>
108 </div>
109 </div> No newline at end of file
109 </div>
@@ -1,59 +1,78 b''
1 <%inherit file="/base/base.html"/>
1 <%inherit file="/base/base.html"/>
2
2
3 <%def name="title()">
3 <%def name="title()">
4 ${c.repo_name} ${_('Edit file')} - ${c.rhodecode_name}
4 ${c.repo_name} ${_('Edit file')} - ${c.rhodecode_name}
5 </%def>
5 </%def>
6
6
7 <%def name="js_extra()">
7 <%def name="js_extra()">
8 <script type="text/javascript" src="${h.url('/js/codemirror.js')}"></script>
8 <script type="text/javascript" src="${h.url('/js/codemirror.js')}"></script>
9 </%def>
9 </%def>
10 <%def name="css_extra()">
10 <%def name="css_extra()">
11 <link rel="stylesheet" type="text/css" href="${h.url('/css/codemirror.css')}"/>
11 <link rel="stylesheet" type="text/css" href="${h.url('/css/codemirror.css')}"/>
12 </%def>
12 </%def>
13
13
14 <%def name="breadcrumbs_links()">
14 <%def name="breadcrumbs_links()">
15 ${h.link_to(u'Home',h.url('/'))}
15 ${h.link_to(u'Home',h.url('/'))}
16 &raquo;
16 &raquo;
17 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
17 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
18 &raquo;
18 &raquo;
19 ${_('edit file')} @ R${c.cs.revision}:${h.short_id(c.cs.raw_id)}
19 ${_('edit file')} @ R${c.cs.revision}:${h.short_id(c.cs.raw_id)}
20 </%def>
20 </%def>
21
21
22 <%def name="page_nav()">
22 <%def name="page_nav()">
23 ${self.menu('files')}
23 ${self.menu('files')}
24 </%def>
24 </%def>
25 <%def name="main()">
25 <%def name="main()">
26 <div class="box">
26 <div class="box">
27 <!-- box / title -->
27 <!-- box / title -->
28 <div class="title">
28 <div class="title">
29 ${self.breadcrumbs()}
29 ${self.breadcrumbs()}
30 <ul class="links">
30 <ul class="links">
31 <li>
31 <li>
32 <span style="text-transform: uppercase;">
32 <span style="text-transform: uppercase;">
33 <a href="#">${_('branch')}: ${c.cs.branch}</a></span>
33 <a href="#">${_('branch')}: ${c.cs.branch}</a></span>
34 </li>
34 </li>
35 </ul>
35 </ul>
36 </div>
36 </div>
37 <div class="table">
37 <div class="table">
38 <div id="files_data">
38 <div id="files_data">
39 <h3 class="files_location">${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cs.revision,c.file.path)}</h3>
39 <h3 class="files_location">${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cs.revision,c.file.path)}</h3>
40 ${h.form(h.url.current(),method='post',id='eform')}
40 ${h.form(h.url.current(),method='post',id='eform')}
41 <div id="body" class="codeblock">
41 <div id="body" class="codeblock">
42 <div class="code-header">
43 <div class="stats">
44 <div class="left"><img src="${h.url('/images/icons/file.png')}"/></div>
45 <div class="left item">${h.link_to("r%s:%s" % (c.file.last_changeset.revision,h.short_id(c.file.last_changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id))}</div>
46 <div class="left item">${h.format_byte_size(c.file.size,binary=True)}</div>
47 <div class="left item last">${c.file.mimetype}</div>
48 <div class="buttons">
49 ${h.link_to(_('show annotation'),h.url('files_annotate_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-button-small")}
50 ${h.link_to(_('show as raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-button-small")}
51 ${h.link_to(_('download as raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-button-small")}
52 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
53 % if not c.file.is_binary:
54 ${h.link_to(_('source'),h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-button-small")}
55 % endif
56 % endif
57 </div>
58 </div>
59 <div class="commit">${_('Editing file')}: ${c.file.path}</div>
60 </div>
42 <pre id="editor_pre"></pre>
61 <pre id="editor_pre"></pre>
43 <textarea id="editor" name="content" style="display:none">${c.file.content|n}</textarea>
62 <textarea id="editor" name="content" style="display:none">${c.file.content|n}</textarea>
44 <div style="padding: 10px;color:#666666">${_('commit message')}</div>
63 <div style="padding: 10px;color:#666666">${_('commit message')}</div>
45 <textarea id="commit" name="message" style="height: 60px;width: 99%;margin-left:4px"></textarea>
64 <textarea id="commit" name="message" style="height: 60px;width: 99%;margin-left:4px"></textarea>
46 </div>
65 </div>
47 <div style="text-align: left;padding-top: 5px">
66 <div style="text-align: left;padding-top: 5px">
48 ${h.submit('commit',_('Commit changes'),class_="ui-button-small")}
67 ${h.submit('commit',_('Commit changes'),class_="ui-button-small")}
49 ${h.reset('reset',_('Reset'),class_="ui-button-small")}
68 ${h.reset('reset',_('Reset'),class_="ui-button-small")}
50 </div>
69 </div>
51 ${h.end_form()}
70 ${h.end_form()}
52 <script type="text/javascript">
71 <script type="text/javascript">
53 var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.file.path)}";
72 var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.file.path)}";
54 initCodeMirror('editor',reset_url);
73 initCodeMirror('editor',reset_url);
55 </script>
74 </script>
56 </div>
75 </div>
57 </div>
76 </div>
58 </div>
77 </div>
59 </%def> No newline at end of file
78 </%def>
@@ -1,107 +1,105 b''
1 <dl>
1 <dl>
2 <dt>${_('Revision')}</dt>
2 <dt style="padding-top:10px;font-size:16px">${_('History')}</dt>
3 <dd>
4 ${h.link_to("r%s:%s" % (c.files_list.last_changeset.revision,h.short_id(c.files_list.last_changeset.raw_id)),
5 h.url('changeset_home',repo_name=c.repo_name,revision=c.files_list.last_changeset.raw_id))}
6 </dd>
7 <dt>${_('Size')}</dt>
8 <dd>${h.format_byte_size(c.files_list.size,binary=True)}</dd>
9 <dt>${_('Mimetype')}</dt>
10 <dd>${c.files_list.mimetype}</dd>
11 <dt>${_('Options')}</dt>
12 <dd>${h.link_to(_('show annotation'),
13 h.url('files_annotate_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
14 / ${h.link_to(_('show as raw'),
15 h.url('files_raw_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
16 / ${h.link_to(_('download as raw'),
17 h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
18 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
19 % if not c.files_list.is_binary:
20 / ${h.link_to(_('edit'),
21 h.url('files_edit_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
22 % endif
23 % endif
24 </dd>
25 <dt>${_('History')}</dt>
26 <dd>
3 <dd>
27 <div>
4 <div>
28 ${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')}
5 ${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')}
29 ${h.hidden('diff2',c.files_list.last_changeset.raw_id)}
6 ${h.hidden('diff2',c.file.last_changeset.raw_id)}
30 ${h.select('diff1',c.files_list.last_changeset.raw_id,c.file_history)}
7 ${h.select('diff1',c.file.last_changeset.raw_id,c.file_history)}
31 ${h.submit('diff','diff to revision',class_="ui-button-small")}
8 ${h.submit('diff','diff to revision',class_="ui-button-small")}
32 ${h.submit('show_rev','show at revision',class_="ui-button-small")}
9 ${h.submit('show_rev','show at revision',class_="ui-button-small")}
33 ${h.end_form()}
10 ${h.end_form()}
34 </div>
11 </div>
35 </dd>
12 </dd>
36 </dl>
13 </dl>
37
14
38
15
39 <div id="body" class="codeblock">
16 <div id="body" class="codeblock">
40 <div class="code-header">
17 <div class="code-header">
41 <div class="revision">${c.files_list.name}@r${c.files_list.last_changeset.revision}:${h.short_id(c.files_list.last_changeset.raw_id)}</div>
18 <div class="stats">
42 <div class="commit">"${c.files_list.last_changeset.message}"</div>
19 <div class="left"><img src="${h.url('/images/icons/file.png')}"/></div>
20 <div class="left item">${h.link_to("r%s:%s" % (c.file.last_changeset.revision,h.short_id(c.file.last_changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.last_changeset.raw_id))}</div>
21 <div class="left item">${h.format_byte_size(c.file.size,binary=True)}</div>
22 <div class="left item last">${c.file.mimetype}</div>
23 <div class="buttons">
24 ${h.link_to(_('show annotation'),h.url('files_annotate_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path),class_="ui-button-small")}
25 ${h.link_to(_('show as raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path),class_="ui-button-small")}
26 ${h.link_to(_('download as raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path),class_="ui-button-small")}
27 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
28 % if not c.file.is_binary:
29 ${h.link_to(_('edit'),h.url('files_edit_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path),class_="ui-button-small")}
30 % endif
31 % endif
32 </div>
33 </div>
34 <div class="author">
35 <div class="gravatar">
36 <img alt="gravatar" src="${h.gravatar_url(h.email(c.changeset.author),16)}"/>
37 </div>
38 <div title="${h.email_or_none(c.changeset.author)}" class="user">${h.person(c.changeset.author)}</div>
39 </div>
40 <div class="commit">${c.file.last_changeset.message}</div>
43 </div>
41 </div>
44 <div class="code-body">
42 <div class="code-body">
45 %if c.files_list.is_binary:
43 %if c.file.is_binary:
46 ${_('Binary file (%s)') % c.files_list.mimetype}
44 ${_('Binary file (%s)') % c.file.mimetype}
47 %else:
45 %else:
48 % if c.files_list.size < c.cut_off_limit:
46 % if c.file.size < c.cut_off_limit:
49 ${h.pygmentize(c.files_list,linenos=True,anchorlinenos=True,lineanchors='L',cssclass="code-highlight")}
47 ${h.pygmentize(c.file,linenos=True,anchorlinenos=True,lineanchors='L',cssclass="code-highlight")}
50 %else:
48 %else:
51 ${_('File is too big to display')} ${h.link_to(_('show as raw'),
49 ${_('File is too big to display')} ${h.link_to(_('show as raw'),
52 h.url('files_raw_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
50 h.url('files_raw_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
53 %endif
51 %endif
54 <script type="text/javascript">
52 <script type="text/javascript">
55 function highlight_lines(lines){
53 function highlight_lines(lines){
56 for(pos in lines){
54 for(pos in lines){
57 YUD.setStyle('L'+lines[pos],'background-color','#FFFFBE');
55 YUD.setStyle('L'+lines[pos],'background-color','#FFFFBE');
58 }
56 }
59 }
57 }
60 page_highlights = location.href.substring(location.href.indexOf('#')+1).split('L');
58 page_highlights = location.href.substring(location.href.indexOf('#')+1).split('L');
61 if (page_highlights.length == 2){
59 if (page_highlights.length == 2){
62 highlight_ranges = page_highlights[1].split(",");
60 highlight_ranges = page_highlights[1].split(",");
63
61
64 var h_lines = [];
62 var h_lines = [];
65 for (pos in highlight_ranges){
63 for (pos in highlight_ranges){
66 var _range = highlight_ranges[pos].split('-');
64 var _range = highlight_ranges[pos].split('-');
67 if(_range.length == 2){
65 if(_range.length == 2){
68 var start = parseInt(_range[0]);
66 var start = parseInt(_range[0]);
69 var end = parseInt(_range[1]);
67 var end = parseInt(_range[1]);
70 if (start < end){
68 if (start < end){
71 for(var i=start;i<=end;i++){
69 for(var i=start;i<=end;i++){
72 h_lines.push(i);
70 h_lines.push(i);
73 }
71 }
74 }
72 }
75 }
73 }
76 else{
74 else{
77 h_lines.push(parseInt(highlight_ranges[pos]));
75 h_lines.push(parseInt(highlight_ranges[pos]));
78 }
76 }
79 }
77 }
80 highlight_lines(h_lines);
78 highlight_lines(h_lines);
81
79
82 //remember original location
80 //remember original location
83 var old_hash = location.href.substring(location.href.indexOf('#'));
81 var old_hash = location.href.substring(location.href.indexOf('#'));
84
82
85 // this makes a jump to anchor moved by 3 posstions for padding
83 // this makes a jump to anchor moved by 3 posstions for padding
86 window.location.hash = '#L'+Math.max(parseInt(h_lines[0])-3,1);
84 window.location.hash = '#L'+Math.max(parseInt(h_lines[0])-3,1);
87
85
88 //sets old anchor
86 //sets old anchor
89 window.location.hash = old_hash;
87 window.location.hash = old_hash;
90
88
91 }
89 }
92 </script>
90 </script>
93 %endif
91 %endif
94 </div>
92 </div>
95 </div>
93 </div>
96
94
97 <script type="text/javascript">
95 <script type="text/javascript">
98 YUE.onDOMReady(function(){
96 YUE.onDOMReady(function(){
99 YUE.on('show_rev','click',function(e){
97 YUE.on('show_rev','click',function(e){
100 YUE.preventDefault(e);
98 YUE.preventDefault(e);
101 var cs = YUD.get('diff1').value;
99 var cs = YUD.get('diff1').value;
102 var url = "${h.url('files_home',repo_name=c.repo_name,revision='__CS__',f_path=c.f_path)}".replace('__CS__',cs);
100 var url = "${h.url('files_home',repo_name=c.repo_name,revision='__CS__',f_path=c.f_path)}".replace('__CS__',cs);
103 window.location = url;
101 window.location = url;
104 });
102 });
105 YUE.on('hlcode','mouseup',getSelectionLink("${_('Selection link')}"))
103 YUE.on('hlcode','mouseup',getSelectionLink("${_('Selection link')}"))
106 });
104 });
107 </script>
105 </script>
@@ -1,15 +1,15 b''
1 %if c.files_list:
1 %if c.file:
2 <h3 class="files_location">
2 <h3 class="files_location">
3 ${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.changeset.raw_id,c.files_list.path)}
3 ${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.changeset.raw_id,c.file.path)}
4 </h3>
4 </h3>
5 %if c.files_list.is_dir():
5 %if c.file.is_dir():
6 <%include file='files_browser.html'/>
6 <%include file='files_browser.html'/>
7 %else:
7 %else:
8 <%include file='files_source.html'/>
8 <%include file='files_source.html'/>
9 %endif
9 %endif
10 %else:
10 %else:
11 <h2>
11 <h2>
12 <a href="#" onClick="javascript:parent.history.back();" target="main">${_('Go back')}</a>
12 <a href="#" onClick="javascript:parent.history.back();" target="main">${_('Go back')}</a>
13 ${_('No files at given path')}: "${c.f_path or "/"}"
13 ${_('No files at given path')}: "${c.f_path or "/"}"
14 </h2>
14 </h2>
15 %endif
15 %endif
@@ -1,166 +1,167 b''
1 <%page args="parent" />
1 <%page args="parent" />
2 <div class="box">
2 <div class="box">
3 <!-- box / title -->
3 <!-- box / title -->
4 <div class="title">
4 <div class="title">
5 <h5>
5 <h5>
6 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/> ${parent.breadcrumbs()} <span id="repo_count">${len(c.repos_list)}</span> ${_('repositories')}
6 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/> ${parent.breadcrumbs()} <span id="repo_count">${len(c.repos_list)}</span> ${_('repositories')}
7 </h5>
7 </h5>
8 %if c.rhodecode_user.username != 'default':
8 %if c.rhodecode_user.username != 'default':
9 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
9 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
10 <ul class="links">
10 <ul class="links">
11 <li>
11 <li>
12 <span>${h.link_to(_('ADD NEW REPOSITORY'),h.url('admin_settings_create_repository'))}</span>
12 <span>${h.link_to(_('ADD NEW REPOSITORY'),h.url('admin_settings_create_repository'))}</span>
13 </li>
13 </li>
14 </ul>
14 </ul>
15 %endif
15 %endif
16 %endif
16 %endif
17 </div>
17 </div>
18 <!-- end box / title -->
18 <!-- end box / title -->
19 <div class="table">
19 <div class="table">
20 % if c.groups:
20 % if c.groups:
21 <table>
21 <table>
22 <thead>
22 <thead>
23 <tr>
23 <tr>
24 <th class="left"><a href="#">${_('Group name')}</a></th>
24 <th class="left"><a href="#">${_('Group name')}</a></th>
25 <th class="left"><a href="#">${_('Description')}</a></th>
25 <th class="left"><a href="#">${_('Description')}</a></th>
26 ##<th class="left"><a href="#">${_('Number of repositories')}</a></th>
26 ##<th class="left"><a href="#">${_('Number of repositories')}</a></th>
27 </tr>
27 </tr>
28 </thead>
28 </thead>
29
29
30 ## REPO GROUPS
30 ## REPO GROUPS
31
31
32 % for gr in c.groups:
32 % for gr in c.groups:
33 <tr>
33 <tr>
34 <td>
34 <td>
35 <div style="white-space: nowrap">
35 <div style="white-space: nowrap">
36 <img class="icon" alt="${_('Repositories group')}" src="${h.url('/images/icons/database_link.png')}"/>
36 <img class="icon" alt="${_('Repositories group')}" src="${h.url('/images/icons/database_link.png')}"/>
37 ${h.link_to(gr.name,url('repos_group_home',group_name=gr.group_name))}
37 ${h.link_to(gr.name,url('repos_group_home',group_name=gr.group_name))}
38 </div>
38 </div>
39 </td>
39 </td>
40 <td>${gr.group_description}</td>
40 <td>${gr.group_description}</td>
41 ##<td><b>${gr.repositories.count()}</b></td>
41 ##<td><b>${gr.repositories.count()}</b></td>
42 </tr>
42 </tr>
43 % endfor
43 % endfor
44
44
45 </table>
45 </table>
46 <div style="height: 20px"></div>
46 <div style="height: 20px"></div>
47 % endif
47 % endif
48 <div id="welcome" style="display:none;text-align:center">
48 <div id="welcome" style="display:none;text-align:center">
49 <h1><a href="${h.url('home')}">${c.rhodecode_name} ${c.rhodecode_version}</a></h1>
49 <h1><a href="${h.url('home')}">${c.rhodecode_name} ${c.rhodecode_version}</a></h1>
50 </div>
50 </div>
51 <table id="repos_list">
51 <table id="repos_list">
52 <thead>
52 <thead>
53 <tr>
53 <tr>
54 <th class="left"></th>
54 <th class="left"></th>
55 <th class="left">${_('Name')}</th>
55 <th class="left">${_('Name')}</th>
56 <th class="left">${_('Description')}</th>
56 <th class="left">${_('Description')}</th>
57 <th class="left">${_('Last change')}</th>
57 <th class="left">${_('Last change')}</th>
58 <th class="left">${_('Tip')}</th>
58 <th class="left">${_('Tip')}</th>
59 <th class="left">${_('Owner')}</th>
59 <th class="left">${_('Owner')}</th>
60 <th class="left">${_('RSS')}</th>
60 <th class="left">${_('RSS')}</th>
61 <th class="left">${_('Atom')}</th>
61 <th class="left">${_('Atom')}</th>
62 </tr>
62 </tr>
63 </thead>
63 </thead>
64 <tbody>
64 <tbody>
65 %for cnt,repo in enumerate(c.repos_list):
65 %for cnt,repo in enumerate(c.repos_list):
66 <tr class="parity${cnt%2}">
66 <tr class="parity${cnt%2}">
67 <td class="quick_repo_menu">
67 <td class="quick_repo_menu">
68 <ul class="menu_items hidden">
68 <ul class="menu_items hidden">
69 <li style="border-top:1px solid #003367;margin-left:18px;padding-left:-99px"></li>
69 <li>
70 <li>
70 <a title="${_('Summary')}" href="${h.url('summary_home',repo_name=repo['name'])}">
71 <a title="${_('Summary')}" href="${h.url('summary_home',repo_name=repo['name'])}">
71 <span class="icon">
72 <span class="icon">
72 <img src="${h.url('/images/icons/clipboard_16.png')}" alt="${_('Summary')}" />
73 <img src="${h.url('/images/icons/clipboard_16.png')}" alt="${_('Summary')}" />
73 </span>
74 </span>
74 <span>${_('Summary')}</span>
75 <span>${_('Summary')}</span>
75 </a>
76 </a>
76 </li>
77 </li>
77 <li>
78 <li>
78 <a title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=repo['name'])}">
79 <a title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=repo['name'])}">
79 <span class="icon">
80 <span class="icon">
80 <img src="${h.url('/images/icons/time.png')}" alt="${_('Changelog')}" />
81 <img src="${h.url('/images/icons/time.png')}" alt="${_('Changelog')}" />
81 </span>
82 </span>
82 <span>${_('Changelog')}</span>
83 <span>${_('Changelog')}</span>
83 </a>
84 </a>
84 </li>
85 </li>
85 <li>
86 <li>
86 <a title="${_('Files')}" href="${h.url('files_home',repo_name=repo['name'])}">
87 <a title="${_('Files')}" href="${h.url('files_home',repo_name=repo['name'])}">
87 <span class="icon">
88 <span class="icon">
88 <img src="${h.url('/images/icons/file.png')}" alt="${_('Files')}" />
89 <img src="${h.url('/images/icons/file.png')}" alt="${_('Files')}" />
89 </span>
90 </span>
90 <span>${_('Files')}</span>
91 <span>${_('Files')}</span>
91 </a>
92 </a>
92 </li>
93 </li>
93 </ul>
94 </ul>
94 </td>
95 </td>
95 <td>
96 <td>
96 ## TYPE OF REPO
97 ## TYPE OF REPO
97 <div style="white-space: nowrap">
98 <div style="white-space: nowrap">
98 %if repo['dbrepo']['repo_type'] =='hg':
99 %if repo['dbrepo']['repo_type'] =='hg':
99 <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/>
100 <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/>
100 %elif repo['dbrepo']['repo_type'] =='git':
101 %elif repo['dbrepo']['repo_type'] =='git':
101 <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/>
102 <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/>
102 %endif
103 %endif
103
104
104 ##PRIVATE/PUBLIC
105 ##PRIVATE/PUBLIC
105 %if repo['dbrepo']['private']:
106 %if repo['dbrepo']['private']:
106 <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url('/images/icons/lock.png')}"/>
107 <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url('/images/icons/lock.png')}"/>
107 %else:
108 %else:
108 <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url('/images/icons/lock_open.png')}"/>
109 <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url('/images/icons/lock_open.png')}"/>
109 %endif
110 %endif
110
111
111 ##NAME
112 ##NAME
112 ${h.link_to(repo['name'],
113 ${h.link_to(repo['name'],
113 h.url('summary_home',repo_name=repo['name']),class_="repo_name")}
114 h.url('summary_home',repo_name=repo['name']),class_="repo_name")}
114 %if repo['dbrepo_fork']:
115 %if repo['dbrepo_fork']:
115 <a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}">
116 <a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}">
116 <img class="icon" alt="${_('fork')}"
117 <img class="icon" alt="${_('fork')}"
117 title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}"
118 title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}"
118 src="${h.url('/images/icons/arrow_divide.png')}"/></a>
119 src="${h.url('/images/icons/arrow_divide.png')}"/></a>
119 %endif
120 %endif
120 </div>
121 </div>
121 </td>
122 </td>
122 ##DESCRIPTION
123 ##DESCRIPTION
123 <td><span class="tooltip" title="${h.tooltip(repo['description'])}">
124 <td><span class="tooltip" title="${h.tooltip(repo['description'])}">
124 ${h.truncate(repo['description'],60)}</span>
125 ${h.truncate(repo['description'],60)}</span>
125 </td>
126 </td>
126 ##LAST CHANGE
127 ##LAST CHANGE
127 <td>
128 <td>
128 <span class="tooltip" title="${repo['last_change']}">
129 <span class="tooltip" title="${repo['last_change']}">
129 ${h.age(repo['last_change'])}</span>
130 ${h.age(repo['last_change'])}</span>
130 </td>
131 </td>
131 <td>
132 <td>
132 %if repo['rev']>=0:
133 %if repo['rev']>=0:
133 <a title="${h.tooltip('%s\n%s' % (repo['author'],repo['last_msg']))}" class="tooltip" href="${h.url('changeset_home',repo_name=repo['name'],revision=repo['tip'])}">${'r%s:%s' % (repo['rev'],h.short_id(repo['tip']))}</a>
134 <a title="${h.tooltip('%s\n%s' % (repo['author'],repo['last_msg']))}" class="tooltip" href="${h.url('changeset_home',repo_name=repo['name'],revision=repo['tip'])}">${'r%s:%s' % (repo['rev'],h.short_id(repo['tip']))}</a>
134 %else:
135 %else:
135 ${_('No changesets yet')}
136 ${_('No changesets yet')}
136 %endif
137 %endif
137 </td>
138 </td>
138 <td title="${repo['contact']}">${h.person(repo['contact'])}</td>
139 <td title="${repo['contact']}">${h.person(repo['contact'])}</td>
139 <td>
140 <td>
140 %if c.rhodecode_user.username != 'default':
141 %if c.rhodecode_user.username != 'default':
141 <a title="${_('Subscribe to %s rss feed')%repo['name']}" class="rss_icon" href="${h.url('rss_feed_home',repo_name=repo['name'],api_key=c.rhodecode_user.api_key)}"></a>
142 <a title="${_('Subscribe to %s rss feed')%repo['name']}" class="rss_icon" href="${h.url('rss_feed_home',repo_name=repo['name'],api_key=c.rhodecode_user.api_key)}"></a>
142 %else:
143 %else:
143 <a title="${_('Subscribe to %s rss feed')%repo['name']}" class="rss_icon" href="${h.url('rss_feed_home',repo_name=repo['name'])}"></a>
144 <a title="${_('Subscribe to %s rss feed')%repo['name']}" class="rss_icon" href="${h.url('rss_feed_home',repo_name=repo['name'])}"></a>
144 %endif:
145 %endif:
145 </td>
146 </td>
146 <td>
147 <td>
147 %if c.rhodecode_user.username != 'default':
148 %if c.rhodecode_user.username != 'default':
148 <a title="${_('Subscribe to %s atom feed')%repo['name']}" class="atom_icon" href="${h.url('atom_feed_home',repo_name=repo['name'],api_key=c.rhodecode_user.api_key)}"></a>
149 <a title="${_('Subscribe to %s atom feed')%repo['name']}" class="atom_icon" href="${h.url('atom_feed_home',repo_name=repo['name'],api_key=c.rhodecode_user.api_key)}"></a>
149 %else:
150 %else:
150 <a title="${_('Subscribe to %s atom feed')%repo['name']}" class="atom_icon" href="${h.url('atom_feed_home',repo_name=repo['name'])}"></a>
151 <a title="${_('Subscribe to %s atom feed')%repo['name']}" class="atom_icon" href="${h.url('atom_feed_home',repo_name=repo['name'])}"></a>
151 %endif:
152 %endif:
152 </td>
153 </td>
153 </tr>
154 </tr>
154 %endfor
155 %endfor
155 </tbody>
156 </tbody>
156 </table>
157 </table>
157 </div>
158 </div>
158 </div>
159 </div>
159 <script>
160 <script>
160 var nodes = YUQ('div.table tr td a.repo_name');
161 var nodes = YUQ('div.table tr td a.repo_name');
161 var target = 'q_filter';
162 var target = 'q_filter';
162 var func = function(node){
163 var func = function(node){
163 return node.parentNode.parentNode.parentNode;
164 return node.parentNode.parentNode.parentNode;
164 }
165 }
165 q_filter(target,nodes,func);
166 q_filter(target,nodes,func);
166 </script> No newline at end of file
167 </script>
@@ -1,313 +1,313 b''
1 from rhodecode.tests import *
1 from rhodecode.tests import *
2
2
3 ARCHIVE_SPECS = {
3 ARCHIVE_SPECS = {
4 '.tar.bz2': ('application/x-bzip2', 'tbz2', ''),
4 '.tar.bz2': ('application/x-bzip2', 'tbz2', ''),
5 '.tar.gz': ('application/x-gzip', 'tgz', ''),
5 '.tar.gz': ('application/x-gzip', 'tgz', ''),
6 '.zip': ('application/zip', 'zip', ''),
6 '.zip': ('application/zip', 'zip', ''),
7 }
7 }
8
8
9 class TestFilesController(TestController):
9 class TestFilesController(TestController):
10
10
11 def test_index(self):
11 def test_index(self):
12 self.log_user()
12 self.log_user()
13 response = self.app.get(url(controller='files', action='index',
13 response = self.app.get(url(controller='files', action='index',
14 repo_name=HG_REPO,
14 repo_name=HG_REPO,
15 revision='tip',
15 revision='tip',
16 f_path='/'))
16 f_path='/'))
17 # Test response...
17 # Test response...
18 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/docs">docs</a>' in response.body, 'missing dir'
18 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/docs">docs</a>' in response.body, 'missing dir'
19 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/tests">tests</a>' in response.body, 'missing dir'
19 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/tests">tests</a>' in response.body, 'missing dir'
20 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/vcs">vcs</a>' in response.body, 'missing dir'
20 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/vcs">vcs</a>' in response.body, 'missing dir'
21 assert '<a class="browser-file ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/.hgignore">.hgignore</a>' in response.body, 'missing file'
21 assert '<a class="browser-file ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/.hgignore">.hgignore</a>' in response.body, 'missing file'
22 assert '<a class="browser-file ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/MANIFEST.in">MANIFEST.in</a>' in response.body, 'missing file'
22 assert '<a class="browser-file ypjax-link" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/MANIFEST.in">MANIFEST.in</a>' in response.body, 'missing file'
23
23
24
24
25 def test_index_revision(self):
25 def test_index_revision(self):
26 self.log_user()
26 self.log_user()
27
27
28 response = self.app.get(url(controller='files', action='index',
28 response = self.app.get(url(controller='files', action='index',
29 repo_name=HG_REPO,
29 repo_name=HG_REPO,
30 revision='7ba66bec8d6dbba14a2155be32408c435c5f4492',
30 revision='7ba66bec8d6dbba14a2155be32408c435c5f4492',
31 f_path='/'))
31 f_path='/'))
32
32
33
33
34
34
35 #Test response...
35 #Test response...
36
36
37 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/docs">docs</a>' in response.body, 'missing dir'
37 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/docs">docs</a>' in response.body, 'missing dir'
38 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/tests">tests</a>' in response.body, 'missing dir'
38 assert '<a class="browser-dir ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/tests">tests</a>' in response.body, 'missing dir'
39 assert '<a class="browser-file ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/README.rst">README.rst</a>' in response.body, 'missing file'
39 assert '<a class="browser-file ypjax-link" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/README.rst">README.rst</a>' in response.body, 'missing file'
40 assert '1.1 KiB' in response.body, 'missing size of setup.py'
40 assert '1.1 KiB' in response.body, 'missing size of setup.py'
41 assert 'text/x-python' in response.body, 'missing mimetype of setup.py'
41 assert 'text/x-python' in response.body, 'missing mimetype of setup.py'
42
42
43
43
44
44
45 def test_index_different_branch(self):
45 def test_index_different_branch(self):
46 self.log_user()
46 self.log_user()
47
47
48 response = self.app.get(url(controller='files', action='index',
48 response = self.app.get(url(controller='files', action='index',
49 repo_name=HG_REPO,
49 repo_name=HG_REPO,
50 revision='97e8b885c04894463c51898e14387d80c30ed1ee',
50 revision='97e8b885c04894463c51898e14387d80c30ed1ee',
51 f_path='/'))
51 f_path='/'))
52
52
53
53
54
54
55 assert """<span style="text-transform: uppercase;"><a href="#">branch: git</a></span>""" in response.body, 'missing or wrong branch info'
55 assert """<span style="text-transform: uppercase;"><a href="#">branch: git</a></span>""" in response.body, 'missing or wrong branch info'
56
56
57
57
58
58
59 def test_index_paging(self):
59 def test_index_paging(self):
60 self.log_user()
60 self.log_user()
61
61
62 for r in [(73, 'a066b25d5df7016b45a41b7e2a78c33b57adc235'),
62 for r in [(73, 'a066b25d5df7016b45a41b7e2a78c33b57adc235'),
63 (92, 'cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e'),
63 (92, 'cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e'),
64 (109, '75feb4c33e81186c87eac740cee2447330288412'),
64 (109, '75feb4c33e81186c87eac740cee2447330288412'),
65 (1, '3d8f361e72ab303da48d799ff1ac40d5ac37c67e'),
65 (1, '3d8f361e72ab303da48d799ff1ac40d5ac37c67e'),
66 (0, 'b986218ba1c9b0d6a259fac9b050b1724ed8e545')]:
66 (0, 'b986218ba1c9b0d6a259fac9b050b1724ed8e545')]:
67
67
68 response = self.app.get(url(controller='files', action='index',
68 response = self.app.get(url(controller='files', action='index',
69 repo_name=HG_REPO,
69 repo_name=HG_REPO,
70 revision=r[1],
70 revision=r[1],
71 f_path='/'))
71 f_path='/'))
72
72
73 assert """@ r%s:%s""" % (r[0], r[1][:12]) in response.body, 'missing info about current revision'
73 assert """@ r%s:%s""" % (r[0], r[1][:12]) in response.body, 'missing info about current revision'
74
74
75 def test_file_source(self):
75 def test_file_source(self):
76 self.log_user()
76 self.log_user()
77 response = self.app.get(url(controller='files', action='index',
77 response = self.app.get(url(controller='files', action='index',
78 repo_name=HG_REPO,
78 repo_name=HG_REPO,
79 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
79 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
80 f_path='vcs/nodes.py'))
80 f_path='vcs/nodes.py'))
81
81
82 #test or history
82 #test or history
83 assert """<optgroup label="Changesets">
83 assert """<optgroup label="Changesets">
84 <option selected="selected" value="8911406ad776fdd3d0b9932a2e89677e57405a48">r167:8911406ad776</option>
84 <option selected="selected" value="8911406ad776fdd3d0b9932a2e89677e57405a48">r167:8911406ad776</option>
85 <option value="aa957ed78c35a1541f508d2ec90e501b0a9e3167">r165:aa957ed78c35</option>
85 <option value="aa957ed78c35a1541f508d2ec90e501b0a9e3167">r165:aa957ed78c35</option>
86 <option value="48e11b73e94c0db33e736eaeea692f990cb0b5f1">r140:48e11b73e94c</option>
86 <option value="48e11b73e94c0db33e736eaeea692f990cb0b5f1">r140:48e11b73e94c</option>
87 <option value="adf3cbf483298563b968a6c673cd5bde5f7d5eea">r126:adf3cbf48329</option>
87 <option value="adf3cbf483298563b968a6c673cd5bde5f7d5eea">r126:adf3cbf48329</option>
88 <option value="6249fd0fb2cfb1411e764129f598e2cf0de79a6f">r113:6249fd0fb2cf</option>
88 <option value="6249fd0fb2cfb1411e764129f598e2cf0de79a6f">r113:6249fd0fb2cf</option>
89 <option value="75feb4c33e81186c87eac740cee2447330288412">r109:75feb4c33e81</option>
89 <option value="75feb4c33e81186c87eac740cee2447330288412">r109:75feb4c33e81</option>
90 <option value="9a4dc232ecdc763ef2e98ae2238cfcbba4f6ad8d">r108:9a4dc232ecdc</option>
90 <option value="9a4dc232ecdc763ef2e98ae2238cfcbba4f6ad8d">r108:9a4dc232ecdc</option>
91 <option value="595cce4efa21fda2f2e4eeb4fe5f2a6befe6fa2d">r107:595cce4efa21</option>
91 <option value="595cce4efa21fda2f2e4eeb4fe5f2a6befe6fa2d">r107:595cce4efa21</option>
92 <option value="4a8bd421fbc2dfbfb70d85a3fe064075ab2c49da">r104:4a8bd421fbc2</option>
92 <option value="4a8bd421fbc2dfbfb70d85a3fe064075ab2c49da">r104:4a8bd421fbc2</option>
93 <option value="57be63fc8f85e65a0106a53187f7316f8c487ffa">r102:57be63fc8f85</option>
93 <option value="57be63fc8f85e65a0106a53187f7316f8c487ffa">r102:57be63fc8f85</option>
94 <option value="5530bd87f7e2e124a64d07cb2654c997682128be">r101:5530bd87f7e2</option>
94 <option value="5530bd87f7e2e124a64d07cb2654c997682128be">r101:5530bd87f7e2</option>
95 <option value="e516008b1c93f142263dc4b7961787cbad654ce1">r99:e516008b1c93</option>
95 <option value="e516008b1c93f142263dc4b7961787cbad654ce1">r99:e516008b1c93</option>
96 <option value="41f43fc74b8b285984554532eb105ac3be5c434f">r93:41f43fc74b8b</option>
96 <option value="41f43fc74b8b285984554532eb105ac3be5c434f">r93:41f43fc74b8b</option>
97 <option value="cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e">r92:cc66b61b8455</option>
97 <option value="cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e">r92:cc66b61b8455</option>
98 <option value="73ab5b616b3271b0518682fb4988ce421de8099f">r91:73ab5b616b32</option>
98 <option value="73ab5b616b3271b0518682fb4988ce421de8099f">r91:73ab5b616b32</option>
99 <option value="e0da75f308c0f18f98e9ce6257626009fdda2b39">r82:e0da75f308c0</option>
99 <option value="e0da75f308c0f18f98e9ce6257626009fdda2b39">r82:e0da75f308c0</option>
100 <option value="fb2e41e0f0810be4d7103bc2a4c7be16ee3ec611">r81:fb2e41e0f081</option>
100 <option value="fb2e41e0f0810be4d7103bc2a4c7be16ee3ec611">r81:fb2e41e0f081</option>
101 <option value="602ae2f5e7ade70b3b66a58cdd9e3e613dc8a028">r76:602ae2f5e7ad</option>
101 <option value="602ae2f5e7ade70b3b66a58cdd9e3e613dc8a028">r76:602ae2f5e7ad</option>
102 <option value="a066b25d5df7016b45a41b7e2a78c33b57adc235">r73:a066b25d5df7</option>
102 <option value="a066b25d5df7016b45a41b7e2a78c33b57adc235">r73:a066b25d5df7</option>
103 <option value="637a933c905958ce5151f154147c25c1c7b68832">r61:637a933c9059</option>
103 <option value="637a933c905958ce5151f154147c25c1c7b68832">r61:637a933c9059</option>
104 <option value="0c21004effeb8ce2d2d5b4a8baf6afa8394b6fbc">r60:0c21004effeb</option>
104 <option value="0c21004effeb8ce2d2d5b4a8baf6afa8394b6fbc">r60:0c21004effeb</option>
105 <option value="a1f39c56d3f1d52d5fb5920370a2a2716cd9a444">r59:a1f39c56d3f1</option>
105 <option value="a1f39c56d3f1d52d5fb5920370a2a2716cd9a444">r59:a1f39c56d3f1</option>
106 <option value="97d32df05c715a3bbf936bf3cc4e32fb77fe1a7f">r58:97d32df05c71</option>
106 <option value="97d32df05c715a3bbf936bf3cc4e32fb77fe1a7f">r58:97d32df05c71</option>
107 <option value="08eaf14517718dccea4b67755a93368341aca919">r57:08eaf1451771</option>
107 <option value="08eaf14517718dccea4b67755a93368341aca919">r57:08eaf1451771</option>
108 <option value="22f71ad265265a53238359c883aa976e725aa07d">r56:22f71ad26526</option>
108 <option value="22f71ad265265a53238359c883aa976e725aa07d">r56:22f71ad26526</option>
109 <option value="97501f02b7b4330924b647755663a2d90a5e638d">r49:97501f02b7b4</option>
109 <option value="97501f02b7b4330924b647755663a2d90a5e638d">r49:97501f02b7b4</option>
110 <option value="86ede6754f2b27309452bb11f997386ae01d0e5a">r47:86ede6754f2b</option>
110 <option value="86ede6754f2b27309452bb11f997386ae01d0e5a">r47:86ede6754f2b</option>
111 <option value="014c40c0203c423dc19ecf94644f7cac9d4cdce0">r45:014c40c0203c</option>
111 <option value="014c40c0203c423dc19ecf94644f7cac9d4cdce0">r45:014c40c0203c</option>
112 <option value="ee87846a61c12153b51543bf860e1026c6d3dcba">r30:ee87846a61c1</option>
112 <option value="ee87846a61c12153b51543bf860e1026c6d3dcba">r30:ee87846a61c1</option>
113 <option value="9bb326a04ae5d98d437dece54be04f830cf1edd9">r26:9bb326a04ae5</option>
113 <option value="9bb326a04ae5d98d437dece54be04f830cf1edd9">r26:9bb326a04ae5</option>
114 <option value="536c1a19428381cfea92ac44985304f6a8049569">r24:536c1a194283</option>
114 <option value="536c1a19428381cfea92ac44985304f6a8049569">r24:536c1a194283</option>
115 <option value="dc5d2c0661b61928834a785d3e64a3f80d3aad9c">r8:dc5d2c0661b6</option>
115 <option value="dc5d2c0661b61928834a785d3e64a3f80d3aad9c">r8:dc5d2c0661b6</option>
116 <option value="3803844fdbd3b711175fc3da9bdacfcd6d29a6fb">r7:3803844fdbd3</option>
116 <option value="3803844fdbd3b711175fc3da9bdacfcd6d29a6fb">r7:3803844fdbd3</option>
117 </optgroup>
117 </optgroup>
118 <optgroup label="Branches">
118 <optgroup label="Branches">
119 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">default</option>
119 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">default</option>
120 <option value="97e8b885c04894463c51898e14387d80c30ed1ee">git</option>
120 <option value="97e8b885c04894463c51898e14387d80c30ed1ee">git</option>
121 <option value="2e6a2bf9356ca56df08807f4ad86d480da72a8f4">web</option>
121 <option value="2e6a2bf9356ca56df08807f4ad86d480da72a8f4">web</option>
122 </optgroup>
122 </optgroup>
123 <optgroup label="Tags">
123 <optgroup label="Tags">
124 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">tip</option>
124 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">tip</option>
125 <option value="fd4bdb5e9b2a29b4393a4ac6caef48c17ee1a200">0.1.4</option>
125 <option value="fd4bdb5e9b2a29b4393a4ac6caef48c17ee1a200">0.1.4</option>
126 <option value="17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">0.1.3</option>
126 <option value="17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">0.1.3</option>
127 <option value="a7e60bff65d57ac3a1a1ce3b12a70f8a9e8a7720">0.1.2</option>
127 <option value="a7e60bff65d57ac3a1a1ce3b12a70f8a9e8a7720">0.1.2</option>
128 <option value="eb3a60fc964309c1a318b8dfe26aa2d1586c85ae">0.1.1</option>
128 <option value="eb3a60fc964309c1a318b8dfe26aa2d1586c85ae">0.1.1</option>
129 </optgroup>""" in response.body
129 </optgroup>""" in response.body
130
130
131
131
132 assert """<div class="commit">"Partially implemented #16. filecontent/commit message/author/node name are safe_unicode now.
132 assert """<div class="commit">Partially implemented #16. filecontent/commit message/author/node name are safe_unicode now.
133 In addition some other __str__ are unicode as well
133 In addition some other __str__ are unicode as well
134 Added test for unicode
134 Added test for unicode
135 Improved test to clone into uniq repository.
135 Improved test to clone into uniq repository.
136 removed extra unicode conversion in diff."</div>""" in response.body
136 removed extra unicode conversion in diff.</div>""" in response.body
137
137
138 assert """<span style="text-transform: uppercase;"><a href="#">branch: default</a></span>""" in response.body, 'missing or wrong branch info'
138 assert """<span style="text-transform: uppercase;"><a href="#">branch: default</a></span>""" in response.body, 'missing or wrong branch info'
139
139
140 def test_file_annotation(self):
140 def test_file_annotation(self):
141 self.log_user()
141 self.log_user()
142 response = self.app.get(url(controller='files', action='annotate',
142 response = self.app.get(url(controller='files', action='annotate',
143 repo_name=HG_REPO,
143 repo_name=HG_REPO,
144 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
144 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
145 f_path='vcs/nodes.py'))
145 f_path='vcs/nodes.py'))
146
146
147 print response.body
147 print response.body
148 assert """<optgroup label="Changesets">
148 assert """<optgroup label="Changesets">
149 <option selected="selected" value="8911406ad776fdd3d0b9932a2e89677e57405a48">r167:8911406ad776</option>
149 <option selected="selected" value="8911406ad776fdd3d0b9932a2e89677e57405a48">r167:8911406ad776</option>
150 <option value="aa957ed78c35a1541f508d2ec90e501b0a9e3167">r165:aa957ed78c35</option>
150 <option value="aa957ed78c35a1541f508d2ec90e501b0a9e3167">r165:aa957ed78c35</option>
151 <option value="48e11b73e94c0db33e736eaeea692f990cb0b5f1">r140:48e11b73e94c</option>
151 <option value="48e11b73e94c0db33e736eaeea692f990cb0b5f1">r140:48e11b73e94c</option>
152 <option value="adf3cbf483298563b968a6c673cd5bde5f7d5eea">r126:adf3cbf48329</option>
152 <option value="adf3cbf483298563b968a6c673cd5bde5f7d5eea">r126:adf3cbf48329</option>
153 <option value="6249fd0fb2cfb1411e764129f598e2cf0de79a6f">r113:6249fd0fb2cf</option>
153 <option value="6249fd0fb2cfb1411e764129f598e2cf0de79a6f">r113:6249fd0fb2cf</option>
154 <option value="75feb4c33e81186c87eac740cee2447330288412">r109:75feb4c33e81</option>
154 <option value="75feb4c33e81186c87eac740cee2447330288412">r109:75feb4c33e81</option>
155 <option value="9a4dc232ecdc763ef2e98ae2238cfcbba4f6ad8d">r108:9a4dc232ecdc</option>
155 <option value="9a4dc232ecdc763ef2e98ae2238cfcbba4f6ad8d">r108:9a4dc232ecdc</option>
156 <option value="595cce4efa21fda2f2e4eeb4fe5f2a6befe6fa2d">r107:595cce4efa21</option>
156 <option value="595cce4efa21fda2f2e4eeb4fe5f2a6befe6fa2d">r107:595cce4efa21</option>
157 <option value="4a8bd421fbc2dfbfb70d85a3fe064075ab2c49da">r104:4a8bd421fbc2</option>
157 <option value="4a8bd421fbc2dfbfb70d85a3fe064075ab2c49da">r104:4a8bd421fbc2</option>
158 <option value="57be63fc8f85e65a0106a53187f7316f8c487ffa">r102:57be63fc8f85</option>
158 <option value="57be63fc8f85e65a0106a53187f7316f8c487ffa">r102:57be63fc8f85</option>
159 <option value="5530bd87f7e2e124a64d07cb2654c997682128be">r101:5530bd87f7e2</option>
159 <option value="5530bd87f7e2e124a64d07cb2654c997682128be">r101:5530bd87f7e2</option>
160 <option value="e516008b1c93f142263dc4b7961787cbad654ce1">r99:e516008b1c93</option>
160 <option value="e516008b1c93f142263dc4b7961787cbad654ce1">r99:e516008b1c93</option>
161 <option value="41f43fc74b8b285984554532eb105ac3be5c434f">r93:41f43fc74b8b</option>
161 <option value="41f43fc74b8b285984554532eb105ac3be5c434f">r93:41f43fc74b8b</option>
162 <option value="cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e">r92:cc66b61b8455</option>
162 <option value="cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e">r92:cc66b61b8455</option>
163 <option value="73ab5b616b3271b0518682fb4988ce421de8099f">r91:73ab5b616b32</option>
163 <option value="73ab5b616b3271b0518682fb4988ce421de8099f">r91:73ab5b616b32</option>
164 <option value="e0da75f308c0f18f98e9ce6257626009fdda2b39">r82:e0da75f308c0</option>
164 <option value="e0da75f308c0f18f98e9ce6257626009fdda2b39">r82:e0da75f308c0</option>
165 <option value="fb2e41e0f0810be4d7103bc2a4c7be16ee3ec611">r81:fb2e41e0f081</option>
165 <option value="fb2e41e0f0810be4d7103bc2a4c7be16ee3ec611">r81:fb2e41e0f081</option>
166 <option value="602ae2f5e7ade70b3b66a58cdd9e3e613dc8a028">r76:602ae2f5e7ad</option>
166 <option value="602ae2f5e7ade70b3b66a58cdd9e3e613dc8a028">r76:602ae2f5e7ad</option>
167 <option value="a066b25d5df7016b45a41b7e2a78c33b57adc235">r73:a066b25d5df7</option>
167 <option value="a066b25d5df7016b45a41b7e2a78c33b57adc235">r73:a066b25d5df7</option>
168 <option value="637a933c905958ce5151f154147c25c1c7b68832">r61:637a933c9059</option>
168 <option value="637a933c905958ce5151f154147c25c1c7b68832">r61:637a933c9059</option>
169 <option value="0c21004effeb8ce2d2d5b4a8baf6afa8394b6fbc">r60:0c21004effeb</option>
169 <option value="0c21004effeb8ce2d2d5b4a8baf6afa8394b6fbc">r60:0c21004effeb</option>
170 <option value="a1f39c56d3f1d52d5fb5920370a2a2716cd9a444">r59:a1f39c56d3f1</option>
170 <option value="a1f39c56d3f1d52d5fb5920370a2a2716cd9a444">r59:a1f39c56d3f1</option>
171 <option value="97d32df05c715a3bbf936bf3cc4e32fb77fe1a7f">r58:97d32df05c71</option>
171 <option value="97d32df05c715a3bbf936bf3cc4e32fb77fe1a7f">r58:97d32df05c71</option>
172 <option value="08eaf14517718dccea4b67755a93368341aca919">r57:08eaf1451771</option>
172 <option value="08eaf14517718dccea4b67755a93368341aca919">r57:08eaf1451771</option>
173 <option value="22f71ad265265a53238359c883aa976e725aa07d">r56:22f71ad26526</option>
173 <option value="22f71ad265265a53238359c883aa976e725aa07d">r56:22f71ad26526</option>
174 <option value="97501f02b7b4330924b647755663a2d90a5e638d">r49:97501f02b7b4</option>
174 <option value="97501f02b7b4330924b647755663a2d90a5e638d">r49:97501f02b7b4</option>
175 <option value="86ede6754f2b27309452bb11f997386ae01d0e5a">r47:86ede6754f2b</option>
175 <option value="86ede6754f2b27309452bb11f997386ae01d0e5a">r47:86ede6754f2b</option>
176 <option value="014c40c0203c423dc19ecf94644f7cac9d4cdce0">r45:014c40c0203c</option>
176 <option value="014c40c0203c423dc19ecf94644f7cac9d4cdce0">r45:014c40c0203c</option>
177 <option value="ee87846a61c12153b51543bf860e1026c6d3dcba">r30:ee87846a61c1</option>
177 <option value="ee87846a61c12153b51543bf860e1026c6d3dcba">r30:ee87846a61c1</option>
178 <option value="9bb326a04ae5d98d437dece54be04f830cf1edd9">r26:9bb326a04ae5</option>
178 <option value="9bb326a04ae5d98d437dece54be04f830cf1edd9">r26:9bb326a04ae5</option>
179 <option value="536c1a19428381cfea92ac44985304f6a8049569">r24:536c1a194283</option>
179 <option value="536c1a19428381cfea92ac44985304f6a8049569">r24:536c1a194283</option>
180 <option value="dc5d2c0661b61928834a785d3e64a3f80d3aad9c">r8:dc5d2c0661b6</option>
180 <option value="dc5d2c0661b61928834a785d3e64a3f80d3aad9c">r8:dc5d2c0661b6</option>
181 <option value="3803844fdbd3b711175fc3da9bdacfcd6d29a6fb">r7:3803844fdbd3</option>
181 <option value="3803844fdbd3b711175fc3da9bdacfcd6d29a6fb">r7:3803844fdbd3</option>
182 </optgroup>
182 </optgroup>
183 <optgroup label="Branches">
183 <optgroup label="Branches">
184 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">default</option>
184 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">default</option>
185 <option value="97e8b885c04894463c51898e14387d80c30ed1ee">git</option>
185 <option value="97e8b885c04894463c51898e14387d80c30ed1ee">git</option>
186 <option value="2e6a2bf9356ca56df08807f4ad86d480da72a8f4">web</option>
186 <option value="2e6a2bf9356ca56df08807f4ad86d480da72a8f4">web</option>
187 </optgroup>
187 </optgroup>
188 <optgroup label="Tags">
188 <optgroup label="Tags">
189 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">tip</option>
189 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">tip</option>
190 <option value="fd4bdb5e9b2a29b4393a4ac6caef48c17ee1a200">0.1.4</option>
190 <option value="fd4bdb5e9b2a29b4393a4ac6caef48c17ee1a200">0.1.4</option>
191 <option value="17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">0.1.3</option>
191 <option value="17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">0.1.3</option>
192 <option value="a7e60bff65d57ac3a1a1ce3b12a70f8a9e8a7720">0.1.2</option>
192 <option value="a7e60bff65d57ac3a1a1ce3b12a70f8a9e8a7720">0.1.2</option>
193 <option value="eb3a60fc964309c1a318b8dfe26aa2d1586c85ae">0.1.1</option>
193 <option value="eb3a60fc964309c1a318b8dfe26aa2d1586c85ae">0.1.1</option>
194 </optgroup>""" in response.body, 'missing or wrong history in annotation'
194 </optgroup>""" in response.body, 'missing or wrong history in annotation'
195
195
196 assert """<span style="text-transform: uppercase;"><a href="#">branch: default</a></span>""" in response.body, 'missing or wrong branch info'
196 assert """<span style="text-transform: uppercase;"><a href="#">branch: default</a></span>""" in response.body, 'missing or wrong branch info'
197
197
198
198
199
199
200 def test_archival(self):
200 def test_archival(self):
201 self.log_user()
201 self.log_user()
202
202
203 for arch_ext, info in ARCHIVE_SPECS.items():
203 for arch_ext, info in ARCHIVE_SPECS.items():
204 fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext
204 fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext
205 filename = '%s-%s' % (HG_REPO, fname)
205 filename = '%s-%s' % (HG_REPO, fname)
206
206
207 response = self.app.get(url(controller='files', action='archivefile',
207 response = self.app.get(url(controller='files', action='archivefile',
208 repo_name=HG_REPO,
208 repo_name=HG_REPO,
209 fname=fname))
209 fname=fname))
210
210
211 assert response.status == '200 OK', 'wrong response code'
211 assert response.status == '200 OK', 'wrong response code'
212 assert response.response._headers.items() == [('Pragma', 'no-cache'),
212 assert response.response._headers.items() == [('Pragma', 'no-cache'),
213 ('Cache-Control', 'no-cache'),
213 ('Cache-Control', 'no-cache'),
214 ('Content-Type', '%s; charset=utf-8' % info[0]),
214 ('Content-Type', '%s; charset=utf-8' % info[0]),
215 ('Content-Disposition', 'attachment; filename=%s' % filename), ], 'wrong headers'
215 ('Content-Disposition', 'attachment; filename=%s' % filename), ], 'wrong headers'
216
216
217 def test_archival_wrong_ext(self):
217 def test_archival_wrong_ext(self):
218 self.log_user()
218 self.log_user()
219
219
220 for arch_ext in ['tar', 'rar', 'x', '..ax', '.zipz']:
220 for arch_ext in ['tar', 'rar', 'x', '..ax', '.zipz']:
221 fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext
221 fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext
222
222
223 response = self.app.get(url(controller='files', action='archivefile',
223 response = self.app.get(url(controller='files', action='archivefile',
224 repo_name=HG_REPO,
224 repo_name=HG_REPO,
225 fname=fname))
225 fname=fname))
226 assert 'Unknown archive type' in response.body
226 assert 'Unknown archive type' in response.body
227
227
228
228
229 def test_archival_wrong_revision(self):
229 def test_archival_wrong_revision(self):
230 self.log_user()
230 self.log_user()
231
231
232 for rev in ['00x000000', 'tar', 'wrong', '@##$@$424213232', '232dffcd']:
232 for rev in ['00x000000', 'tar', 'wrong', '@##$@$424213232', '232dffcd']:
233 fname = '%s.zip' % rev
233 fname = '%s.zip' % rev
234
234
235 response = self.app.get(url(controller='files', action='archivefile',
235 response = self.app.get(url(controller='files', action='archivefile',
236 repo_name=HG_REPO,
236 repo_name=HG_REPO,
237 fname=fname))
237 fname=fname))
238 assert 'Unknown revision' in response.body
238 assert 'Unknown revision' in response.body
239
239
240 #==========================================================================
240 #==========================================================================
241 # RAW FILE
241 # RAW FILE
242 #==========================================================================
242 #==========================================================================
243 def test_raw_file_ok(self):
243 def test_raw_file_ok(self):
244 self.log_user()
244 self.log_user()
245 response = self.app.get(url(controller='files', action='rawfile',
245 response = self.app.get(url(controller='files', action='rawfile',
246 repo_name=HG_REPO,
246 repo_name=HG_REPO,
247 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
247 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
248 f_path='vcs/nodes.py'))
248 f_path='vcs/nodes.py'))
249
249
250 assert response.content_disposition == "attachment; filename=nodes.py"
250 assert response.content_disposition == "attachment; filename=nodes.py"
251 assert response.content_type == "text/x-python"
251 assert response.content_type == "text/x-python"
252
252
253 def test_raw_file_wrong_cs(self):
253 def test_raw_file_wrong_cs(self):
254 self.log_user()
254 self.log_user()
255 rev = u'ERRORce30c96924232dffcd24178a07ffeb5dfc'
255 rev = u'ERRORce30c96924232dffcd24178a07ffeb5dfc'
256 f_path = 'vcs/nodes.py'
256 f_path = 'vcs/nodes.py'
257
257
258 response = self.app.get(url(controller='files', action='rawfile',
258 response = self.app.get(url(controller='files', action='rawfile',
259 repo_name=HG_REPO,
259 repo_name=HG_REPO,
260 revision=rev,
260 revision=rev,
261 f_path=f_path))
261 f_path=f_path))
262
262
263 assert """Revision %r does not exist for this repository""" % (rev) in response.session['flash'][0][1], 'No flash message'
263 assert """Revision %r does not exist for this repository""" % (rev) in response.session['flash'][0][1], 'No flash message'
264 assert """%s""" % (HG_REPO) in response.session['flash'][0][1], 'No flash message'
264 assert """%s""" % (HG_REPO) in response.session['flash'][0][1], 'No flash message'
265
265
266
266
267
267
268 def test_raw_file_wrong_f_path(self):
268 def test_raw_file_wrong_f_path(self):
269 self.log_user()
269 self.log_user()
270 rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
270 rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
271 f_path = 'vcs/ERRORnodes.py'
271 f_path = 'vcs/ERRORnodes.py'
272 response = self.app.get(url(controller='files', action='rawfile',
272 response = self.app.get(url(controller='files', action='rawfile',
273 repo_name=HG_REPO,
273 repo_name=HG_REPO,
274 revision=rev,
274 revision=rev,
275 f_path=f_path))
275 f_path=f_path))
276 assert "There is no file nor directory at the given path: %r at revision %r" % (f_path, rev[:12]) in response.session['flash'][0][1], 'No flash message'
276 assert "There is no file nor directory at the given path: %r at revision %r" % (f_path, rev[:12]) in response.session['flash'][0][1], 'No flash message'
277
277
278 #==========================================================================
278 #==========================================================================
279 # RAW RESPONSE - PLAIN
279 # RAW RESPONSE - PLAIN
280 #==========================================================================
280 #==========================================================================
281 def test_raw_ok(self):
281 def test_raw_ok(self):
282 self.log_user()
282 self.log_user()
283 response = self.app.get(url(controller='files', action='raw',
283 response = self.app.get(url(controller='files', action='raw',
284 repo_name=HG_REPO,
284 repo_name=HG_REPO,
285 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
285 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
286 f_path='vcs/nodes.py'))
286 f_path='vcs/nodes.py'))
287
287
288 assert response.content_type == "text/plain"
288 assert response.content_type == "text/plain"
289
289
290 def test_raw_wrong_cs(self):
290 def test_raw_wrong_cs(self):
291 self.log_user()
291 self.log_user()
292 rev = u'ERRORcce30c96924232dffcd24178a07ffeb5dfc'
292 rev = u'ERRORcce30c96924232dffcd24178a07ffeb5dfc'
293 f_path = 'vcs/nodes.py'
293 f_path = 'vcs/nodes.py'
294
294
295 response = self.app.get(url(controller='files', action='raw',
295 response = self.app.get(url(controller='files', action='raw',
296 repo_name=HG_REPO,
296 repo_name=HG_REPO,
297 revision=rev,
297 revision=rev,
298 f_path=f_path))
298 f_path=f_path))
299
299
300 assert """Revision %r does not exist for this repository""" % (rev) in response.session['flash'][0][1], 'No flash message'
300 assert """Revision %r does not exist for this repository""" % (rev) in response.session['flash'][0][1], 'No flash message'
301 assert """%s""" % (HG_REPO) in response.session['flash'][0][1], 'No flash message'
301 assert """%s""" % (HG_REPO) in response.session['flash'][0][1], 'No flash message'
302
302
303
303
304 def test_raw_wrong_f_path(self):
304 def test_raw_wrong_f_path(self):
305 self.log_user()
305 self.log_user()
306 rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
306 rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
307 f_path = 'vcs/ERRORnodes.py'
307 f_path = 'vcs/ERRORnodes.py'
308 response = self.app.get(url(controller='files', action='raw',
308 response = self.app.get(url(controller='files', action='raw',
309 repo_name=HG_REPO,
309 repo_name=HG_REPO,
310 revision=rev,
310 revision=rev,
311 f_path=f_path))
311 f_path=f_path))
312
312
313 assert "There is no file nor directory at the given path: %r at revision %r" % (f_path, rev[:12]) in response.session['flash'][0][1], 'No flash message'
313 assert "There is no file nor directory at the given path: %r at revision %r" % (f_path, rev[:12]) in response.session['flash'][0][1], 'No flash message'
General Comments 0
You need to be logged in to leave comments. Login now