##// END OF EJS Templates
linkify names on fork/create repos in tooltip messages
marcink -
r3547:b7f48971 beta
parent child Browse files
Show More
@@ -1,538 +1,540 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.controllers.admin.repos
3 rhodecode.controllers.admin.repos
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
5
6 Repositories controller for RhodeCode
6 Repositories controller for RhodeCode
7
7
8 :created_on: Apr 7, 2010
8 :created_on: Apr 7, 2010
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software: you can redistribute it and/or modify
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
16 # (at your option) any later version.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25
25
26 import logging
26 import logging
27 import traceback
27 import traceback
28 import formencode
28 import formencode
29 from formencode import htmlfill
29 from formencode import htmlfill
30
30
31 from webob.exc import HTTPInternalServerError, HTTPForbidden
31 from webob.exc import HTTPInternalServerError, HTTPForbidden
32 from pylons import request, session, tmpl_context as c, url
32 from pylons import request, session, tmpl_context as c, url
33 from pylons.controllers.util import redirect
33 from pylons.controllers.util import redirect
34 from pylons.i18n.translation import _
34 from pylons.i18n.translation import _
35 from sqlalchemy.exc import IntegrityError
35 from sqlalchemy.exc import IntegrityError
36
36
37 import rhodecode
37 import rhodecode
38 from rhodecode.lib import helpers as h
38 from rhodecode.lib import helpers as h
39 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \
39 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \
40 HasPermissionAnyDecorator, HasRepoPermissionAllDecorator, NotAnonymous,\
40 HasPermissionAnyDecorator, HasRepoPermissionAllDecorator, NotAnonymous,\
41 HasPermissionAny, HasReposGroupPermissionAny
41 HasPermissionAny, HasReposGroupPermissionAny
42 from rhodecode.lib.base import BaseRepoController, render
42 from rhodecode.lib.base import BaseRepoController, render
43 from rhodecode.lib.utils import invalidate_cache, action_logger, repo_name_slug
43 from rhodecode.lib.utils import invalidate_cache, action_logger, repo_name_slug
44 from rhodecode.lib.helpers import get_token
44 from rhodecode.lib.helpers import get_token
45 from rhodecode.model.meta import Session
45 from rhodecode.model.meta import Session
46 from rhodecode.model.db import User, Repository, UserFollowing, RepoGroup,\
46 from rhodecode.model.db import User, Repository, UserFollowing, RepoGroup,\
47 RhodeCodeSetting, RepositoryField
47 RhodeCodeSetting, RepositoryField
48 from rhodecode.model.forms import RepoForm, RepoFieldForm
48 from rhodecode.model.forms import RepoForm, RepoFieldForm
49 from rhodecode.model.scm import ScmModel, GroupList
49 from rhodecode.model.scm import ScmModel, GroupList
50 from rhodecode.model.repo import RepoModel
50 from rhodecode.model.repo import RepoModel
51 from rhodecode.lib.compat import json
51 from rhodecode.lib.compat import json
52 from sqlalchemy.sql.expression import func
52 from sqlalchemy.sql.expression import func
53
53
54 log = logging.getLogger(__name__)
54 log = logging.getLogger(__name__)
55
55
56
56
57 class ReposController(BaseRepoController):
57 class ReposController(BaseRepoController):
58 """
58 """
59 REST Controller styled on the Atom Publishing Protocol"""
59 REST Controller styled on the Atom Publishing Protocol"""
60 # To properly map this controller, ensure your config/routing.py
60 # To properly map this controller, ensure your config/routing.py
61 # file has a resource setup:
61 # file has a resource setup:
62 # map.resource('repo', 'repos')
62 # map.resource('repo', 'repos')
63
63
64 @LoginRequired()
64 @LoginRequired()
65 def __before__(self):
65 def __before__(self):
66 c.admin_user = session.get('admin_user')
66 c.admin_user = session.get('admin_user')
67 c.admin_username = session.get('admin_username')
67 c.admin_username = session.get('admin_username')
68 super(ReposController, self).__before__()
68 super(ReposController, self).__before__()
69
69
70 def __load_defaults(self):
70 def __load_defaults(self):
71 acl_groups = GroupList(RepoGroup.query().all(),
71 acl_groups = GroupList(RepoGroup.query().all(),
72 perm_set=['group.write', 'group.admin'])
72 perm_set=['group.write', 'group.admin'])
73 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
73 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
74 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
74 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
75
75
76 repo_model = RepoModel()
76 repo_model = RepoModel()
77 c.users_array = repo_model.get_users_js()
77 c.users_array = repo_model.get_users_js()
78 c.users_groups_array = repo_model.get_users_groups_js()
78 c.users_groups_array = repo_model.get_users_groups_js()
79 choices, c.landing_revs = ScmModel().get_repo_landing_revs()
79 choices, c.landing_revs = ScmModel().get_repo_landing_revs()
80 c.landing_revs_choices = choices
80 c.landing_revs_choices = choices
81
81
82 def __load_data(self, repo_name=None):
82 def __load_data(self, repo_name=None):
83 """
83 """
84 Load defaults settings for edit, and update
84 Load defaults settings for edit, and update
85
85
86 :param repo_name:
86 :param repo_name:
87 """
87 """
88 self.__load_defaults()
88 self.__load_defaults()
89
89
90 c.repo_info = db_repo = Repository.get_by_repo_name(repo_name)
90 c.repo_info = db_repo = Repository.get_by_repo_name(repo_name)
91 repo = db_repo.scm_instance
91 repo = db_repo.scm_instance
92
92
93 if c.repo_info is None:
93 if c.repo_info is None:
94 h.not_mapped_error(repo_name)
94 h.not_mapped_error(repo_name)
95 return redirect(url('repos'))
95 return redirect(url('repos'))
96
96
97 ##override defaults for exact repo info here git/hg etc
97 ##override defaults for exact repo info here git/hg etc
98 choices, c.landing_revs = ScmModel().get_repo_landing_revs(c.repo_info)
98 choices, c.landing_revs = ScmModel().get_repo_landing_revs(c.repo_info)
99 c.landing_revs_choices = choices
99 c.landing_revs_choices = choices
100
100
101 c.default_user_id = User.get_by_username('default').user_id
101 c.default_user_id = User.get_by_username('default').user_id
102 c.in_public_journal = UserFollowing.query()\
102 c.in_public_journal = UserFollowing.query()\
103 .filter(UserFollowing.user_id == c.default_user_id)\
103 .filter(UserFollowing.user_id == c.default_user_id)\
104 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
104 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
105
105
106 if c.repo_info.stats:
106 if c.repo_info.stats:
107 # this is on what revision we ended up so we add +1 for count
107 # this is on what revision we ended up so we add +1 for count
108 last_rev = c.repo_info.stats.stat_on_revision + 1
108 last_rev = c.repo_info.stats.stat_on_revision + 1
109 else:
109 else:
110 last_rev = 0
110 last_rev = 0
111 c.stats_revision = last_rev
111 c.stats_revision = last_rev
112
112
113 c.repo_last_rev = repo.count() if repo.revisions else 0
113 c.repo_last_rev = repo.count() if repo.revisions else 0
114
114
115 if last_rev == 0 or c.repo_last_rev == 0:
115 if last_rev == 0 or c.repo_last_rev == 0:
116 c.stats_percentage = 0
116 c.stats_percentage = 0
117 else:
117 else:
118 c.stats_percentage = '%.2f' % ((float((last_rev)) /
118 c.stats_percentage = '%.2f' % ((float((last_rev)) /
119 c.repo_last_rev) * 100)
119 c.repo_last_rev) * 100)
120
120
121 c.repo_fields = RepositoryField.query()\
121 c.repo_fields = RepositoryField.query()\
122 .filter(RepositoryField.repository == db_repo).all()
122 .filter(RepositoryField.repository == db_repo).all()
123
123
124 defaults = RepoModel()._get_defaults(repo_name)
124 defaults = RepoModel()._get_defaults(repo_name)
125
125
126 c.repos_list = [('', _('--REMOVE FORK--'))]
126 c.repos_list = [('', _('--REMOVE FORK--'))]
127 c.repos_list += [(x.repo_id, x.repo_name) for x in
127 c.repos_list += [(x.repo_id, x.repo_name) for x in
128 Repository.query().order_by(Repository.repo_name).all()
128 Repository.query().order_by(Repository.repo_name).all()
129 if x.repo_id != c.repo_info.repo_id]
129 if x.repo_id != c.repo_info.repo_id]
130
130
131 defaults['id_fork_of'] = db_repo.fork.repo_id if db_repo.fork else ''
131 defaults['id_fork_of'] = db_repo.fork.repo_id if db_repo.fork else ''
132 return defaults
132 return defaults
133
133
134 @HasPermissionAllDecorator('hg.admin')
134 @HasPermissionAllDecorator('hg.admin')
135 def index(self, format='html'):
135 def index(self, format='html'):
136 """GET /repos: All items in the collection"""
136 """GET /repos: All items in the collection"""
137 # url('repos')
137 # url('repos')
138
138
139 c.repos_list = Repository.query()\
139 c.repos_list = Repository.query()\
140 .order_by(func.lower(Repository.repo_name))\
140 .order_by(func.lower(Repository.repo_name))\
141 .all()
141 .all()
142
142
143 repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
143 repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
144 admin=True,
144 admin=True,
145 super_user_actions=True)
145 super_user_actions=True)
146 #json used to render the grid
146 #json used to render the grid
147 c.data = json.dumps(repos_data)
147 c.data = json.dumps(repos_data)
148
148
149 return render('admin/repos/repos.html')
149 return render('admin/repos/repos.html')
150
150
151 @NotAnonymous()
151 @NotAnonymous()
152 def create(self):
152 def create(self):
153 """
153 """
154 POST /repos: Create a new item"""
154 POST /repos: Create a new item"""
155 # url('repos')
155 # url('repos')
156
156
157 self.__load_defaults()
157 self.__load_defaults()
158 form_result = {}
158 form_result = {}
159 try:
159 try:
160 form_result = RepoForm(repo_groups=c.repo_groups_choices,
160 form_result = RepoForm(repo_groups=c.repo_groups_choices,
161 landing_revs=c.landing_revs_choices)()\
161 landing_revs=c.landing_revs_choices)()\
162 .to_python(dict(request.POST))
162 .to_python(dict(request.POST))
163
163
164 new_repo = RepoModel().create(form_result,
164 new_repo = RepoModel().create(form_result,
165 self.rhodecode_user.user_id)
165 self.rhodecode_user.user_id)
166 if form_result['clone_uri']:
166 if form_result['clone_uri']:
167 h.flash(_('created repository %s from %s') \
167 h.flash(_('created repository %s from %s') \
168 % (form_result['repo_name'], form_result['clone_uri']),
168 % (form_result['repo_name'], form_result['clone_uri']),
169 category='success')
169 category='success')
170 else:
170 else:
171 h.flash(_('created repository %s') % form_result['repo_name'],
171 repo_url = h.link_to(form_result['repo_name'],
172 h.url('summary_home', repo_name=form_result['repo_name']))
173 h.flash(h.literal(_('created repository %s') % repo_url),
172 category='success')
174 category='success')
173
175
174 if request.POST.get('user_created'):
176 if request.POST.get('user_created'):
175 # created by regular non admin user
177 # created by regular non admin user
176 action_logger(self.rhodecode_user, 'user_created_repo',
178 action_logger(self.rhodecode_user, 'user_created_repo',
177 form_result['repo_name_full'], self.ip_addr,
179 form_result['repo_name_full'], self.ip_addr,
178 self.sa)
180 self.sa)
179 else:
181 else:
180 action_logger(self.rhodecode_user, 'admin_created_repo',
182 action_logger(self.rhodecode_user, 'admin_created_repo',
181 form_result['repo_name_full'], self.ip_addr,
183 form_result['repo_name_full'], self.ip_addr,
182 self.sa)
184 self.sa)
183 Session().commit()
185 Session().commit()
184 except formencode.Invalid, errors:
186 except formencode.Invalid, errors:
185 return htmlfill.render(
187 return htmlfill.render(
186 render('admin/repos/repo_add.html'),
188 render('admin/repos/repo_add.html'),
187 defaults=errors.value,
189 defaults=errors.value,
188 errors=errors.error_dict or {},
190 errors=errors.error_dict or {},
189 prefix_error=False,
191 prefix_error=False,
190 encoding="UTF-8")
192 encoding="UTF-8")
191
193
192 except Exception:
194 except Exception:
193 log.error(traceback.format_exc())
195 log.error(traceback.format_exc())
194 msg = _('error occurred during creation of repository %s') \
196 msg = _('error occurred during creation of repository %s') \
195 % form_result.get('repo_name')
197 % form_result.get('repo_name')
196 h.flash(msg, category='error')
198 h.flash(msg, category='error')
197 if c.rhodecode_user.is_admin:
199 if c.rhodecode_user.is_admin:
198 return redirect(url('repos'))
200 return redirect(url('repos'))
199 return redirect(url('home'))
201 return redirect(url('home'))
200 #redirect to our new repo !
202 #redirect to our new repo !
201 return redirect(url('summary_home', repo_name=new_repo.repo_name))
203 return redirect(url('summary_home', repo_name=new_repo.repo_name))
202
204
203 @HasPermissionAllDecorator('hg.admin')
205 @HasPermissionAllDecorator('hg.admin')
204 def new(self, format='html'):
206 def new(self, format='html'):
205 """
207 """
206 WARNING: this function is depracated see settings.create_repo !!
208 WARNING: this function is depracated see settings.create_repo !!
207
209
208 GET /repos/new: Form to create a new item
210 GET /repos/new: Form to create a new item
209 """
211 """
210
212
211 parent_group = request.GET.get('parent_group')
213 parent_group = request.GET.get('parent_group')
212 self.__load_defaults()
214 self.__load_defaults()
213 ## apply the defaults from defaults page
215 ## apply the defaults from defaults page
214 defaults = RhodeCodeSetting.get_default_repo_settings(strip_prefix=True)
216 defaults = RhodeCodeSetting.get_default_repo_settings(strip_prefix=True)
215 if parent_group:
217 if parent_group:
216 defaults.update({'repo_group': parent_group})
218 defaults.update({'repo_group': parent_group})
217
219
218 return htmlfill.render(
220 return htmlfill.render(
219 render('admin/repos/repo_add.html'),
221 render('admin/repos/repo_add.html'),
220 defaults=defaults,
222 defaults=defaults,
221 errors={},
223 errors={},
222 prefix_error=False,
224 prefix_error=False,
223 encoding="UTF-8"
225 encoding="UTF-8"
224 )
226 )
225
227
226 @HasPermissionAllDecorator('hg.admin')
228 @HasPermissionAllDecorator('hg.admin')
227 def update(self, repo_name):
229 def update(self, repo_name):
228 """
230 """
229 PUT /repos/repo_name: Update an existing item"""
231 PUT /repos/repo_name: Update an existing item"""
230 # Forms posted to this method should contain a hidden field:
232 # Forms posted to this method should contain a hidden field:
231 # <input type="hidden" name="_method" value="PUT" />
233 # <input type="hidden" name="_method" value="PUT" />
232 # Or using helpers:
234 # Or using helpers:
233 # h.form(url('repo', repo_name=ID),
235 # h.form(url('repo', repo_name=ID),
234 # method='put')
236 # method='put')
235 # url('repo', repo_name=ID)
237 # url('repo', repo_name=ID)
236 self.__load_defaults()
238 self.__load_defaults()
237 repo_model = RepoModel()
239 repo_model = RepoModel()
238 changed_name = repo_name
240 changed_name = repo_name
239 #override the choices with extracted revisions !
241 #override the choices with extracted revisions !
240 choices, c.landing_revs = ScmModel().get_repo_landing_revs(repo_name)
242 choices, c.landing_revs = ScmModel().get_repo_landing_revs(repo_name)
241 c.landing_revs_choices = choices
243 c.landing_revs_choices = choices
242 repo = Repository.get_by_repo_name(repo_name)
244 repo = Repository.get_by_repo_name(repo_name)
243 _form = RepoForm(edit=True, old_data={'repo_name': repo_name,
245 _form = RepoForm(edit=True, old_data={'repo_name': repo_name,
244 'repo_group': repo.group.get_dict() \
246 'repo_group': repo.group.get_dict() \
245 if repo.group else {}},
247 if repo.group else {}},
246 repo_groups=c.repo_groups_choices,
248 repo_groups=c.repo_groups_choices,
247 landing_revs=c.landing_revs_choices)()
249 landing_revs=c.landing_revs_choices)()
248 try:
250 try:
249 form_result = _form.to_python(dict(request.POST))
251 form_result = _form.to_python(dict(request.POST))
250 repo = repo_model.update(repo_name, **form_result)
252 repo = repo_model.update(repo_name, **form_result)
251 invalidate_cache('get_repo_cached_%s' % repo_name)
253 invalidate_cache('get_repo_cached_%s' % repo_name)
252 h.flash(_('Repository %s updated successfully') % repo_name,
254 h.flash(_('Repository %s updated successfully') % repo_name,
253 category='success')
255 category='success')
254 changed_name = repo.repo_name
256 changed_name = repo.repo_name
255 action_logger(self.rhodecode_user, 'admin_updated_repo',
257 action_logger(self.rhodecode_user, 'admin_updated_repo',
256 changed_name, self.ip_addr, self.sa)
258 changed_name, self.ip_addr, self.sa)
257 Session().commit()
259 Session().commit()
258 except formencode.Invalid, errors:
260 except formencode.Invalid, errors:
259 defaults = self.__load_data(repo_name)
261 defaults = self.__load_data(repo_name)
260 defaults.update(errors.value)
262 defaults.update(errors.value)
261 return htmlfill.render(
263 return htmlfill.render(
262 render('admin/repos/repo_edit.html'),
264 render('admin/repos/repo_edit.html'),
263 defaults=defaults,
265 defaults=defaults,
264 errors=errors.error_dict or {},
266 errors=errors.error_dict or {},
265 prefix_error=False,
267 prefix_error=False,
266 encoding="UTF-8")
268 encoding="UTF-8")
267
269
268 except Exception:
270 except Exception:
269 log.error(traceback.format_exc())
271 log.error(traceback.format_exc())
270 h.flash(_('error occurred during update of repository %s') \
272 h.flash(_('error occurred during update of repository %s') \
271 % repo_name, category='error')
273 % repo_name, category='error')
272 return redirect(url('edit_repo', repo_name=changed_name))
274 return redirect(url('edit_repo', repo_name=changed_name))
273
275
274 @HasPermissionAllDecorator('hg.admin')
276 @HasPermissionAllDecorator('hg.admin')
275 def delete(self, repo_name):
277 def delete(self, repo_name):
276 """
278 """
277 DELETE /repos/repo_name: Delete an existing item"""
279 DELETE /repos/repo_name: Delete an existing item"""
278 # Forms posted to this method should contain a hidden field:
280 # Forms posted to this method should contain a hidden field:
279 # <input type="hidden" name="_method" value="DELETE" />
281 # <input type="hidden" name="_method" value="DELETE" />
280 # Or using helpers:
282 # Or using helpers:
281 # h.form(url('repo', repo_name=ID),
283 # h.form(url('repo', repo_name=ID),
282 # method='delete')
284 # method='delete')
283 # url('repo', repo_name=ID)
285 # url('repo', repo_name=ID)
284
286
285 repo_model = RepoModel()
287 repo_model = RepoModel()
286 repo = repo_model.get_by_repo_name(repo_name)
288 repo = repo_model.get_by_repo_name(repo_name)
287 if not repo:
289 if not repo:
288 h.not_mapped_error(repo_name)
290 h.not_mapped_error(repo_name)
289 return redirect(url('repos'))
291 return redirect(url('repos'))
290 try:
292 try:
291 _forks = repo.forks.count()
293 _forks = repo.forks.count()
292 if _forks and request.POST.get('forks'):
294 if _forks and request.POST.get('forks'):
293 do = request.POST['forks']
295 do = request.POST['forks']
294 if do == 'detach_forks':
296 if do == 'detach_forks':
295 for r in repo.forks:
297 for r in repo.forks:
296 log.debug('Detaching fork %s from repo %s' % (r, repo))
298 log.debug('Detaching fork %s from repo %s' % (r, repo))
297 r.fork = None
299 r.fork = None
298 Session().add(r)
300 Session().add(r)
299 h.flash(_('detached %s forks') % _forks, category='success')
301 h.flash(_('detached %s forks') % _forks, category='success')
300 elif do == 'delete_forks':
302 elif do == 'delete_forks':
301 for r in repo.forks:
303 for r in repo.forks:
302 log.debug('Deleting fork %s of repo %s' % (r, repo))
304 log.debug('Deleting fork %s of repo %s' % (r, repo))
303 repo_model.delete(r)
305 repo_model.delete(r)
304 h.flash(_('deleted %s forks') % _forks, category='success')
306 h.flash(_('deleted %s forks') % _forks, category='success')
305 action_logger(self.rhodecode_user, 'admin_deleted_repo',
307 action_logger(self.rhodecode_user, 'admin_deleted_repo',
306 repo_name, self.ip_addr, self.sa)
308 repo_name, self.ip_addr, self.sa)
307 repo_model.delete(repo)
309 repo_model.delete(repo)
308 invalidate_cache('get_repo_cached_%s' % repo_name)
310 invalidate_cache('get_repo_cached_%s' % repo_name)
309 h.flash(_('deleted repository %s') % repo_name, category='success')
311 h.flash(_('deleted repository %s') % repo_name, category='success')
310 Session().commit()
312 Session().commit()
311 except IntegrityError, e:
313 except IntegrityError, e:
312 if e.message.find('repositories_fork_id_fkey') != -1:
314 if e.message.find('repositories_fork_id_fkey') != -1:
313 log.error(traceback.format_exc())
315 log.error(traceback.format_exc())
314 h.flash(_('Cannot delete %s it still contains attached '
316 h.flash(_('Cannot delete %s it still contains attached '
315 'forks') % repo_name,
317 'forks') % repo_name,
316 category='warning')
318 category='warning')
317 else:
319 else:
318 log.error(traceback.format_exc())
320 log.error(traceback.format_exc())
319 h.flash(_('An error occurred during '
321 h.flash(_('An error occurred during '
320 'deletion of %s') % repo_name,
322 'deletion of %s') % repo_name,
321 category='error')
323 category='error')
322
324
323 except Exception, e:
325 except Exception, e:
324 log.error(traceback.format_exc())
326 log.error(traceback.format_exc())
325 h.flash(_('An error occurred during deletion of %s') % repo_name,
327 h.flash(_('An error occurred during deletion of %s') % repo_name,
326 category='error')
328 category='error')
327
329
328 return redirect(url('repos'))
330 return redirect(url('repos'))
329
331
330 @HasRepoPermissionAllDecorator('repository.admin')
332 @HasRepoPermissionAllDecorator('repository.admin')
331 def delete_perm_user(self, repo_name):
333 def delete_perm_user(self, repo_name):
332 """
334 """
333 DELETE an existing repository permission user
335 DELETE an existing repository permission user
334
336
335 :param repo_name:
337 :param repo_name:
336 """
338 """
337 try:
339 try:
338 RepoModel().revoke_user_permission(repo=repo_name,
340 RepoModel().revoke_user_permission(repo=repo_name,
339 user=request.POST['user_id'])
341 user=request.POST['user_id'])
340 Session().commit()
342 Session().commit()
341 except Exception:
343 except Exception:
342 log.error(traceback.format_exc())
344 log.error(traceback.format_exc())
343 h.flash(_('An error occurred during deletion of repository user'),
345 h.flash(_('An error occurred during deletion of repository user'),
344 category='error')
346 category='error')
345 raise HTTPInternalServerError()
347 raise HTTPInternalServerError()
346
348
347 @HasRepoPermissionAllDecorator('repository.admin')
349 @HasRepoPermissionAllDecorator('repository.admin')
348 def delete_perm_users_group(self, repo_name):
350 def delete_perm_users_group(self, repo_name):
349 """
351 """
350 DELETE an existing repository permission user group
352 DELETE an existing repository permission user group
351
353
352 :param repo_name:
354 :param repo_name:
353 """
355 """
354
356
355 try:
357 try:
356 RepoModel().revoke_users_group_permission(
358 RepoModel().revoke_users_group_permission(
357 repo=repo_name, group_name=request.POST['users_group_id']
359 repo=repo_name, group_name=request.POST['users_group_id']
358 )
360 )
359 Session().commit()
361 Session().commit()
360 except Exception:
362 except Exception:
361 log.error(traceback.format_exc())
363 log.error(traceback.format_exc())
362 h.flash(_('An error occurred during deletion of repository'
364 h.flash(_('An error occurred during deletion of repository'
363 ' user groups'),
365 ' user groups'),
364 category='error')
366 category='error')
365 raise HTTPInternalServerError()
367 raise HTTPInternalServerError()
366
368
367 @HasPermissionAllDecorator('hg.admin')
369 @HasPermissionAllDecorator('hg.admin')
368 def repo_stats(self, repo_name):
370 def repo_stats(self, repo_name):
369 """
371 """
370 DELETE an existing repository statistics
372 DELETE an existing repository statistics
371
373
372 :param repo_name:
374 :param repo_name:
373 """
375 """
374
376
375 try:
377 try:
376 RepoModel().delete_stats(repo_name)
378 RepoModel().delete_stats(repo_name)
377 Session().commit()
379 Session().commit()
378 except Exception, e:
380 except Exception, e:
379 log.error(traceback.format_exc())
381 log.error(traceback.format_exc())
380 h.flash(_('An error occurred during deletion of repository stats'),
382 h.flash(_('An error occurred during deletion of repository stats'),
381 category='error')
383 category='error')
382 return redirect(url('edit_repo', repo_name=repo_name))
384 return redirect(url('edit_repo', repo_name=repo_name))
383
385
384 @HasPermissionAllDecorator('hg.admin')
386 @HasPermissionAllDecorator('hg.admin')
385 def repo_cache(self, repo_name):
387 def repo_cache(self, repo_name):
386 """
388 """
387 INVALIDATE existing repository cache
389 INVALIDATE existing repository cache
388
390
389 :param repo_name:
391 :param repo_name:
390 """
392 """
391
393
392 try:
394 try:
393 ScmModel().mark_for_invalidation(repo_name)
395 ScmModel().mark_for_invalidation(repo_name)
394 Session().commit()
396 Session().commit()
395 except Exception, e:
397 except Exception, e:
396 log.error(traceback.format_exc())
398 log.error(traceback.format_exc())
397 h.flash(_('An error occurred during cache invalidation'),
399 h.flash(_('An error occurred during cache invalidation'),
398 category='error')
400 category='error')
399 return redirect(url('edit_repo', repo_name=repo_name))
401 return redirect(url('edit_repo', repo_name=repo_name))
400
402
401 @HasPermissionAllDecorator('hg.admin')
403 @HasPermissionAllDecorator('hg.admin')
402 def repo_locking(self, repo_name):
404 def repo_locking(self, repo_name):
403 """
405 """
404 Unlock repository when it is locked !
406 Unlock repository when it is locked !
405
407
406 :param repo_name:
408 :param repo_name:
407 """
409 """
408
410
409 try:
411 try:
410 repo = Repository.get_by_repo_name(repo_name)
412 repo = Repository.get_by_repo_name(repo_name)
411 if request.POST.get('set_lock'):
413 if request.POST.get('set_lock'):
412 Repository.lock(repo, c.rhodecode_user.user_id)
414 Repository.lock(repo, c.rhodecode_user.user_id)
413 elif request.POST.get('set_unlock'):
415 elif request.POST.get('set_unlock'):
414 Repository.unlock(repo)
416 Repository.unlock(repo)
415 except Exception, e:
417 except Exception, e:
416 log.error(traceback.format_exc())
418 log.error(traceback.format_exc())
417 h.flash(_('An error occurred during unlocking'),
419 h.flash(_('An error occurred during unlocking'),
418 category='error')
420 category='error')
419 return redirect(url('edit_repo', repo_name=repo_name))
421 return redirect(url('edit_repo', repo_name=repo_name))
420
422
421 @HasPermissionAllDecorator('hg.admin')
423 @HasPermissionAllDecorator('hg.admin')
422 def repo_public_journal(self, repo_name):
424 def repo_public_journal(self, repo_name):
423 """
425 """
424 Set's this repository to be visible in public journal,
426 Set's this repository to be visible in public journal,
425 in other words assing default user to follow this repo
427 in other words assing default user to follow this repo
426
428
427 :param repo_name:
429 :param repo_name:
428 """
430 """
429
431
430 cur_token = request.POST.get('auth_token')
432 cur_token = request.POST.get('auth_token')
431 token = get_token()
433 token = get_token()
432 if cur_token == token:
434 if cur_token == token:
433 try:
435 try:
434 repo_id = Repository.get_by_repo_name(repo_name).repo_id
436 repo_id = Repository.get_by_repo_name(repo_name).repo_id
435 user_id = User.get_by_username('default').user_id
437 user_id = User.get_by_username('default').user_id
436 self.scm_model.toggle_following_repo(repo_id, user_id)
438 self.scm_model.toggle_following_repo(repo_id, user_id)
437 h.flash(_('Updated repository visibility in public journal'),
439 h.flash(_('Updated repository visibility in public journal'),
438 category='success')
440 category='success')
439 Session().commit()
441 Session().commit()
440 except:
442 except:
441 h.flash(_('An error occurred during setting this'
443 h.flash(_('An error occurred during setting this'
442 ' repository in public journal'),
444 ' repository in public journal'),
443 category='error')
445 category='error')
444
446
445 else:
447 else:
446 h.flash(_('Token mismatch'), category='error')
448 h.flash(_('Token mismatch'), category='error')
447 return redirect(url('edit_repo', repo_name=repo_name))
449 return redirect(url('edit_repo', repo_name=repo_name))
448
450
449 @HasPermissionAllDecorator('hg.admin')
451 @HasPermissionAllDecorator('hg.admin')
450 def repo_pull(self, repo_name):
452 def repo_pull(self, repo_name):
451 """
453 """
452 Runs task to update given repository with remote changes,
454 Runs task to update given repository with remote changes,
453 ie. make pull on remote location
455 ie. make pull on remote location
454
456
455 :param repo_name:
457 :param repo_name:
456 """
458 """
457 try:
459 try:
458 ScmModel().pull_changes(repo_name, self.rhodecode_user.username)
460 ScmModel().pull_changes(repo_name, self.rhodecode_user.username)
459 h.flash(_('Pulled from remote location'), category='success')
461 h.flash(_('Pulled from remote location'), category='success')
460 except Exception, e:
462 except Exception, e:
461 h.flash(_('An error occurred during pull from remote location'),
463 h.flash(_('An error occurred during pull from remote location'),
462 category='error')
464 category='error')
463
465
464 return redirect(url('edit_repo', repo_name=repo_name))
466 return redirect(url('edit_repo', repo_name=repo_name))
465
467
466 @HasPermissionAllDecorator('hg.admin')
468 @HasPermissionAllDecorator('hg.admin')
467 def repo_as_fork(self, repo_name):
469 def repo_as_fork(self, repo_name):
468 """
470 """
469 Mark given repository as a fork of another
471 Mark given repository as a fork of another
470
472
471 :param repo_name:
473 :param repo_name:
472 """
474 """
473 try:
475 try:
474 fork_id = request.POST.get('id_fork_of')
476 fork_id = request.POST.get('id_fork_of')
475 repo = ScmModel().mark_as_fork(repo_name, fork_id,
477 repo = ScmModel().mark_as_fork(repo_name, fork_id,
476 self.rhodecode_user.username)
478 self.rhodecode_user.username)
477 fork = repo.fork.repo_name if repo.fork else _('Nothing')
479 fork = repo.fork.repo_name if repo.fork else _('Nothing')
478 Session().commit()
480 Session().commit()
479 h.flash(_('Marked repo %s as fork of %s') % (repo_name, fork),
481 h.flash(_('Marked repo %s as fork of %s') % (repo_name, fork),
480 category='success')
482 category='success')
481 except Exception, e:
483 except Exception, e:
482 log.error(traceback.format_exc())
484 log.error(traceback.format_exc())
483 h.flash(_('An error occurred during this operation'),
485 h.flash(_('An error occurred during this operation'),
484 category='error')
486 category='error')
485
487
486 return redirect(url('edit_repo', repo_name=repo_name))
488 return redirect(url('edit_repo', repo_name=repo_name))
487
489
488 @HasPermissionAllDecorator('hg.admin')
490 @HasPermissionAllDecorator('hg.admin')
489 def show(self, repo_name, format='html'):
491 def show(self, repo_name, format='html'):
490 """GET /repos/repo_name: Show a specific item"""
492 """GET /repos/repo_name: Show a specific item"""
491 # url('repo', repo_name=ID)
493 # url('repo', repo_name=ID)
492
494
493 @HasPermissionAllDecorator('hg.admin')
495 @HasPermissionAllDecorator('hg.admin')
494 def edit(self, repo_name, format='html'):
496 def edit(self, repo_name, format='html'):
495 """GET /repos/repo_name/edit: Form to edit an existing item"""
497 """GET /repos/repo_name/edit: Form to edit an existing item"""
496 # url('edit_repo', repo_name=ID)
498 # url('edit_repo', repo_name=ID)
497 defaults = self.__load_data(repo_name)
499 defaults = self.__load_data(repo_name)
498
500
499 return htmlfill.render(
501 return htmlfill.render(
500 render('admin/repos/repo_edit.html'),
502 render('admin/repos/repo_edit.html'),
501 defaults=defaults,
503 defaults=defaults,
502 encoding="UTF-8",
504 encoding="UTF-8",
503 force_defaults=False
505 force_defaults=False
504 )
506 )
505
507
506 @HasPermissionAllDecorator('hg.admin')
508 @HasPermissionAllDecorator('hg.admin')
507 def create_repo_field(self, repo_name):
509 def create_repo_field(self, repo_name):
508 try:
510 try:
509 form_result = RepoFieldForm()().to_python(dict(request.POST))
511 form_result = RepoFieldForm()().to_python(dict(request.POST))
510 new_field = RepositoryField()
512 new_field = RepositoryField()
511 new_field.repository = Repository.get_by_repo_name(repo_name)
513 new_field.repository = Repository.get_by_repo_name(repo_name)
512 new_field.field_key = form_result['new_field_key']
514 new_field.field_key = form_result['new_field_key']
513 new_field.field_type = form_result['new_field_type'] # python type
515 new_field.field_type = form_result['new_field_type'] # python type
514 new_field.field_value = form_result['new_field_value'] # set initial blank value
516 new_field.field_value = form_result['new_field_value'] # set initial blank value
515 new_field.field_desc = form_result['new_field_desc']
517 new_field.field_desc = form_result['new_field_desc']
516 new_field.field_label = form_result['new_field_label']
518 new_field.field_label = form_result['new_field_label']
517 Session().add(new_field)
519 Session().add(new_field)
518 Session().commit()
520 Session().commit()
519
521
520 except Exception, e:
522 except Exception, e:
521 log.error(traceback.format_exc())
523 log.error(traceback.format_exc())
522 msg = _('An error occurred during creation of field')
524 msg = _('An error occurred during creation of field')
523 if isinstance(e, formencode.Invalid):
525 if isinstance(e, formencode.Invalid):
524 msg += ". " + e.msg
526 msg += ". " + e.msg
525 h.flash(msg, category='error')
527 h.flash(msg, category='error')
526 return redirect(url('edit_repo', repo_name=repo_name))
528 return redirect(url('edit_repo', repo_name=repo_name))
527
529
528 @HasPermissionAllDecorator('hg.admin')
530 @HasPermissionAllDecorator('hg.admin')
529 def delete_repo_field(self, repo_name, field_id):
531 def delete_repo_field(self, repo_name, field_id):
530 field = RepositoryField.get_or_404(field_id)
532 field = RepositoryField.get_or_404(field_id)
531 try:
533 try:
532 Session().delete(field)
534 Session().delete(field)
533 Session().commit()
535 Session().commit()
534 except Exception, e:
536 except Exception, e:
535 log.error(traceback.format_exc())
537 log.error(traceback.format_exc())
536 msg = _('An error occurred during removal of field')
538 msg = _('An error occurred during removal of field')
537 h.flash(msg, category='error')
539 h.flash(msg, category='error')
538 return redirect(url('edit_repo', repo_name=repo_name))
540 return redirect(url('edit_repo', repo_name=repo_name))
@@ -1,641 +1,641 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) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software: you can redistribute it and/or modify
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
16 # (at your option) any later version.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25 from __future__ import with_statement
25 from __future__ import with_statement
26 import os
26 import os
27 import logging
27 import logging
28 import traceback
28 import traceback
29 import tempfile
29 import tempfile
30 import shutil
30 import shutil
31
31
32 from pylons import request, response, tmpl_context as c, url
32 from pylons import request, response, 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 rhodecode.lib.utils import jsonify
35 from rhodecode.lib.utils import jsonify
36
36
37 from rhodecode.lib import diffs
37 from rhodecode.lib import diffs
38 from rhodecode.lib import helpers as h
38 from rhodecode.lib import helpers as h
39
39
40 from rhodecode.lib.compat import OrderedDict
40 from rhodecode.lib.compat import OrderedDict
41 from rhodecode.lib.utils2 import convert_line_endings, detect_mode, safe_str,\
41 from rhodecode.lib.utils2 import convert_line_endings, detect_mode, safe_str,\
42 str2bool
42 str2bool
43 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
43 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
44 from rhodecode.lib.base import BaseRepoController, render
44 from rhodecode.lib.base import BaseRepoController, render
45 from rhodecode.lib.vcs.backends.base import EmptyChangeset
45 from rhodecode.lib.vcs.backends.base import EmptyChangeset
46 from rhodecode.lib.vcs.conf import settings
46 from rhodecode.lib.vcs.conf import settings
47 from rhodecode.lib.vcs.exceptions import RepositoryError, \
47 from rhodecode.lib.vcs.exceptions import RepositoryError, \
48 ChangesetDoesNotExistError, EmptyRepositoryError, \
48 ChangesetDoesNotExistError, EmptyRepositoryError, \
49 ImproperArchiveTypeError, VCSError, NodeAlreadyExistsError,\
49 ImproperArchiveTypeError, VCSError, NodeAlreadyExistsError,\
50 NodeDoesNotExistError, ChangesetError, NodeError
50 NodeDoesNotExistError, ChangesetError, NodeError
51 from rhodecode.lib.vcs.nodes import FileNode
51 from rhodecode.lib.vcs.nodes import FileNode
52
52
53 from rhodecode.model.repo import RepoModel
53 from rhodecode.model.repo import RepoModel
54 from rhodecode.model.scm import ScmModel
54 from rhodecode.model.scm import ScmModel
55 from rhodecode.model.db import Repository
55 from rhodecode.model.db import Repository
56
56
57 from rhodecode.controllers.changeset import anchor_url, _ignorews_url,\
57 from rhodecode.controllers.changeset import anchor_url, _ignorews_url,\
58 _context_url, get_line_ctx, get_ignore_ws
58 _context_url, get_line_ctx, get_ignore_ws
59
59
60
60
61 log = logging.getLogger(__name__)
61 log = logging.getLogger(__name__)
62
62
63
63
64 class FilesController(BaseRepoController):
64 class FilesController(BaseRepoController):
65
65
66 def __before__(self):
66 def __before__(self):
67 super(FilesController, self).__before__()
67 super(FilesController, self).__before__()
68 c.cut_off_limit = self.cut_off_limit
68 c.cut_off_limit = self.cut_off_limit
69
69
70 def __get_cs_or_redirect(self, rev, repo_name, redirect_after=True):
70 def __get_cs_or_redirect(self, rev, repo_name, redirect_after=True):
71 """
71 """
72 Safe way to get changeset if error occur it redirects to tip with
72 Safe way to get changeset if error occur it redirects to tip with
73 proper message
73 proper message
74
74
75 :param rev: revision to fetch
75 :param rev: revision to fetch
76 :param repo_name: repo name to redirect after
76 :param repo_name: repo name to redirect after
77 """
77 """
78
78
79 try:
79 try:
80 return c.rhodecode_repo.get_changeset(rev)
80 return c.rhodecode_repo.get_changeset(rev)
81 except EmptyRepositoryError, e:
81 except EmptyRepositoryError, e:
82 if not redirect_after:
82 if not redirect_after:
83 return None
83 return None
84 url_ = url('files_add_home',
84 url_ = url('files_add_home',
85 repo_name=c.repo_name,
85 repo_name=c.repo_name,
86 revision=0, f_path='')
86 revision=0, f_path='')
87 add_new = '<a href="%s">[%s]</a>' % (url_, _('click here to add new file'))
87 add_new = h.link_to(_('click here to add new file'), url_)
88 h.flash(h.literal(_('There are no files yet %s') % add_new),
88 h.flash(h.literal(_('There are no files yet %s') % add_new),
89 category='warning')
89 category='warning')
90 redirect(h.url('summary_home', repo_name=repo_name))
90 redirect(h.url('summary_home', repo_name=repo_name))
91
91
92 except RepositoryError, e:
92 except RepositoryError, e:
93 h.flash(str(e), category='warning')
93 h.flash(str(e), category='warning')
94 redirect(h.url('files_home', repo_name=repo_name, revision='tip'))
94 redirect(h.url('files_home', repo_name=repo_name, revision='tip'))
95
95
96 def __get_filenode_or_redirect(self, repo_name, cs, path):
96 def __get_filenode_or_redirect(self, repo_name, cs, path):
97 """
97 """
98 Returns file_node, if error occurs or given path is directory,
98 Returns file_node, if error occurs or given path is directory,
99 it'll redirect to top level path
99 it'll redirect to top level path
100
100
101 :param repo_name: repo_name
101 :param repo_name: repo_name
102 :param cs: given changeset
102 :param cs: given changeset
103 :param path: path to lookup
103 :param path: path to lookup
104 """
104 """
105
105
106 try:
106 try:
107 file_node = cs.get_node(path)
107 file_node = cs.get_node(path)
108 if file_node.is_dir():
108 if file_node.is_dir():
109 raise RepositoryError('given path is a directory')
109 raise RepositoryError('given path is a directory')
110 except RepositoryError, e:
110 except RepositoryError, e:
111 h.flash(str(e), category='warning')
111 h.flash(str(e), category='warning')
112 redirect(h.url('files_home', repo_name=repo_name,
112 redirect(h.url('files_home', repo_name=repo_name,
113 revision=cs.raw_id))
113 revision=cs.raw_id))
114
114
115 return file_node
115 return file_node
116
116
117 @LoginRequired()
117 @LoginRequired()
118 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
118 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
119 'repository.admin')
119 'repository.admin')
120 def index(self, repo_name, revision, f_path, annotate=False):
120 def index(self, repo_name, revision, f_path, annotate=False):
121 # redirect to given revision from form if given
121 # redirect to given revision from form if given
122 post_revision = request.POST.get('at_rev', None)
122 post_revision = request.POST.get('at_rev', None)
123 if post_revision:
123 if post_revision:
124 cs = self.__get_cs_or_redirect(post_revision, repo_name)
124 cs = self.__get_cs_or_redirect(post_revision, repo_name)
125 redirect(url('files_home', repo_name=c.repo_name,
125 redirect(url('files_home', repo_name=c.repo_name,
126 revision=cs.raw_id, f_path=f_path))
126 revision=cs.raw_id, f_path=f_path))
127
127
128 c.changeset = self.__get_cs_or_redirect(revision, repo_name)
128 c.changeset = self.__get_cs_or_redirect(revision, repo_name)
129 c.branch = request.GET.get('branch', None)
129 c.branch = request.GET.get('branch', None)
130 c.f_path = f_path
130 c.f_path = f_path
131 c.annotate = annotate
131 c.annotate = annotate
132 c.changeset = self.__get_cs_or_redirect(revision, repo_name)
132 c.changeset = self.__get_cs_or_redirect(revision, repo_name)
133 cur_rev = c.changeset.revision
133 cur_rev = c.changeset.revision
134
134
135 # prev link
135 # prev link
136 try:
136 try:
137 prev_rev = c.rhodecode_repo.get_changeset(cur_rev).prev(c.branch)
137 prev_rev = c.rhodecode_repo.get_changeset(cur_rev).prev(c.branch)
138 c.url_prev = url('files_home', repo_name=c.repo_name,
138 c.url_prev = url('files_home', repo_name=c.repo_name,
139 revision=prev_rev.raw_id, f_path=f_path)
139 revision=prev_rev.raw_id, f_path=f_path)
140 if c.branch:
140 if c.branch:
141 c.url_prev += '?branch=%s' % c.branch
141 c.url_prev += '?branch=%s' % c.branch
142 except (ChangesetDoesNotExistError, VCSError):
142 except (ChangesetDoesNotExistError, VCSError):
143 c.url_prev = '#'
143 c.url_prev = '#'
144
144
145 # next link
145 # next link
146 try:
146 try:
147 next_rev = c.rhodecode_repo.get_changeset(cur_rev).next(c.branch)
147 next_rev = c.rhodecode_repo.get_changeset(cur_rev).next(c.branch)
148 c.url_next = url('files_home', repo_name=c.repo_name,
148 c.url_next = url('files_home', repo_name=c.repo_name,
149 revision=next_rev.raw_id, f_path=f_path)
149 revision=next_rev.raw_id, f_path=f_path)
150 if c.branch:
150 if c.branch:
151 c.url_next += '?branch=%s' % c.branch
151 c.url_next += '?branch=%s' % c.branch
152 except (ChangesetDoesNotExistError, VCSError):
152 except (ChangesetDoesNotExistError, VCSError):
153 c.url_next = '#'
153 c.url_next = '#'
154
154
155 # files or dirs
155 # files or dirs
156 try:
156 try:
157 c.file = c.changeset.get_node(f_path)
157 c.file = c.changeset.get_node(f_path)
158
158
159 if c.file.is_file():
159 if c.file.is_file():
160 c.load_full_history = False
160 c.load_full_history = False
161 file_last_cs = c.file.last_changeset
161 file_last_cs = c.file.last_changeset
162 c.file_changeset = (c.changeset
162 c.file_changeset = (c.changeset
163 if c.changeset.revision < file_last_cs.revision
163 if c.changeset.revision < file_last_cs.revision
164 else file_last_cs)
164 else file_last_cs)
165 #determine if we're on branch head
165 #determine if we're on branch head
166 _branches = c.rhodecode_repo.branches
166 _branches = c.rhodecode_repo.branches
167 c.on_branch_head = revision in _branches.keys() + _branches.values()
167 c.on_branch_head = revision in _branches.keys() + _branches.values()
168 _hist = []
168 _hist = []
169 c.file_history = []
169 c.file_history = []
170 if c.load_full_history:
170 if c.load_full_history:
171 c.file_history, _hist = self._get_node_history(c.changeset, f_path)
171 c.file_history, _hist = self._get_node_history(c.changeset, f_path)
172
172
173 c.authors = []
173 c.authors = []
174 for a in set([x.author for x in _hist]):
174 for a in set([x.author for x in _hist]):
175 c.authors.append((h.email(a), h.person(a)))
175 c.authors.append((h.email(a), h.person(a)))
176 else:
176 else:
177 c.authors = c.file_history = []
177 c.authors = c.file_history = []
178 except RepositoryError, e:
178 except RepositoryError, e:
179 h.flash(str(e), category='warning')
179 h.flash(str(e), category='warning')
180 redirect(h.url('files_home', repo_name=repo_name,
180 redirect(h.url('files_home', repo_name=repo_name,
181 revision='tip'))
181 revision='tip'))
182
182
183 if request.environ.get('HTTP_X_PARTIAL_XHR'):
183 if request.environ.get('HTTP_X_PARTIAL_XHR'):
184 return render('files/files_ypjax.html')
184 return render('files/files_ypjax.html')
185
185
186 return render('files/files.html')
186 return render('files/files.html')
187
187
188 def history(self, repo_name, revision, f_path, annotate=False):
188 def history(self, repo_name, revision, f_path, annotate=False):
189 if request.environ.get('HTTP_X_PARTIAL_XHR'):
189 if request.environ.get('HTTP_X_PARTIAL_XHR'):
190 c.changeset = self.__get_cs_or_redirect(revision, repo_name)
190 c.changeset = self.__get_cs_or_redirect(revision, repo_name)
191 c.f_path = f_path
191 c.f_path = f_path
192 c.annotate = annotate
192 c.annotate = annotate
193 c.file = c.changeset.get_node(f_path)
193 c.file = c.changeset.get_node(f_path)
194 if c.file.is_file():
194 if c.file.is_file():
195 file_last_cs = c.file.last_changeset
195 file_last_cs = c.file.last_changeset
196 c.file_changeset = (c.changeset
196 c.file_changeset = (c.changeset
197 if c.changeset.revision < file_last_cs.revision
197 if c.changeset.revision < file_last_cs.revision
198 else file_last_cs)
198 else file_last_cs)
199 c.file_history, _hist = self._get_node_history(c.changeset, f_path)
199 c.file_history, _hist = self._get_node_history(c.changeset, f_path)
200 c.authors = []
200 c.authors = []
201 for a in set([x.author for x in _hist]):
201 for a in set([x.author for x in _hist]):
202 c.authors.append((h.email(a), h.person(a)))
202 c.authors.append((h.email(a), h.person(a)))
203 return render('files/files_history_box.html')
203 return render('files/files_history_box.html')
204
204
205 @LoginRequired()
205 @LoginRequired()
206 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
206 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
207 'repository.admin')
207 'repository.admin')
208 def rawfile(self, repo_name, revision, f_path):
208 def rawfile(self, repo_name, revision, f_path):
209 cs = self.__get_cs_or_redirect(revision, repo_name)
209 cs = self.__get_cs_or_redirect(revision, repo_name)
210 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
210 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
211
211
212 response.content_disposition = 'attachment; filename=%s' % \
212 response.content_disposition = 'attachment; filename=%s' % \
213 safe_str(f_path.split(Repository.url_sep())[-1])
213 safe_str(f_path.split(Repository.url_sep())[-1])
214
214
215 response.content_type = file_node.mimetype
215 response.content_type = file_node.mimetype
216 return file_node.content
216 return file_node.content
217
217
218 @LoginRequired()
218 @LoginRequired()
219 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
219 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
220 'repository.admin')
220 'repository.admin')
221 def raw(self, repo_name, revision, f_path):
221 def raw(self, repo_name, revision, f_path):
222 cs = self.__get_cs_or_redirect(revision, repo_name)
222 cs = self.__get_cs_or_redirect(revision, repo_name)
223 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
223 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path)
224
224
225 raw_mimetype_mapping = {
225 raw_mimetype_mapping = {
226 # map original mimetype to a mimetype used for "show as raw"
226 # map original mimetype to a mimetype used for "show as raw"
227 # you can also provide a content-disposition to override the
227 # you can also provide a content-disposition to override the
228 # default "attachment" disposition.
228 # default "attachment" disposition.
229 # orig_type: (new_type, new_dispo)
229 # orig_type: (new_type, new_dispo)
230
230
231 # show images inline:
231 # show images inline:
232 'image/x-icon': ('image/x-icon', 'inline'),
232 'image/x-icon': ('image/x-icon', 'inline'),
233 'image/png': ('image/png', 'inline'),
233 'image/png': ('image/png', 'inline'),
234 'image/gif': ('image/gif', 'inline'),
234 'image/gif': ('image/gif', 'inline'),
235 'image/jpeg': ('image/jpeg', 'inline'),
235 'image/jpeg': ('image/jpeg', 'inline'),
236 'image/svg+xml': ('image/svg+xml', 'inline'),
236 'image/svg+xml': ('image/svg+xml', 'inline'),
237 }
237 }
238
238
239 mimetype = file_node.mimetype
239 mimetype = file_node.mimetype
240 try:
240 try:
241 mimetype, dispo = raw_mimetype_mapping[mimetype]
241 mimetype, dispo = raw_mimetype_mapping[mimetype]
242 except KeyError:
242 except KeyError:
243 # we don't know anything special about this, handle it safely
243 # we don't know anything special about this, handle it safely
244 if file_node.is_binary:
244 if file_node.is_binary:
245 # do same as download raw for binary files
245 # do same as download raw for binary files
246 mimetype, dispo = 'application/octet-stream', 'attachment'
246 mimetype, dispo = 'application/octet-stream', 'attachment'
247 else:
247 else:
248 # do not just use the original mimetype, but force text/plain,
248 # do not just use the original mimetype, but force text/plain,
249 # otherwise it would serve text/html and that might be unsafe.
249 # otherwise it would serve text/html and that might be unsafe.
250 # Note: underlying vcs library fakes text/plain mimetype if the
250 # Note: underlying vcs library fakes text/plain mimetype if the
251 # mimetype can not be determined and it thinks it is not
251 # mimetype can not be determined and it thinks it is not
252 # binary.This might lead to erroneous text display in some
252 # binary.This might lead to erroneous text display in some
253 # cases, but helps in other cases, like with text files
253 # cases, but helps in other cases, like with text files
254 # without extension.
254 # without extension.
255 mimetype, dispo = 'text/plain', 'inline'
255 mimetype, dispo = 'text/plain', 'inline'
256
256
257 if dispo == 'attachment':
257 if dispo == 'attachment':
258 dispo = 'attachment; filename=%s' % \
258 dispo = 'attachment; filename=%s' % \
259 safe_str(f_path.split(os.sep)[-1])
259 safe_str(f_path.split(os.sep)[-1])
260
260
261 response.content_disposition = dispo
261 response.content_disposition = dispo
262 response.content_type = mimetype
262 response.content_type = mimetype
263 return file_node.content
263 return file_node.content
264
264
265 @LoginRequired()
265 @LoginRequired()
266 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
266 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
267 def edit(self, repo_name, revision, f_path):
267 def edit(self, repo_name, revision, f_path):
268 repo = c.rhodecode_db_repo
268 repo = c.rhodecode_db_repo
269 if repo.enable_locking and repo.locked[0]:
269 if repo.enable_locking and repo.locked[0]:
270 h.flash(_('This repository is has been locked by %s on %s')
270 h.flash(_('This repository is has been locked by %s on %s')
271 % (h.person_by_id(repo.locked[0]),
271 % (h.person_by_id(repo.locked[0]),
272 h.fmt_date(h.time_to_datetime(repo.locked[1]))),
272 h.fmt_date(h.time_to_datetime(repo.locked[1]))),
273 'warning')
273 'warning')
274 return redirect(h.url('files_home',
274 return redirect(h.url('files_home',
275 repo_name=repo_name, revision='tip'))
275 repo_name=repo_name, revision='tip'))
276
276
277 # check if revision is a branch identifier- basically we cannot
277 # check if revision is a branch identifier- basically we cannot
278 # create multiple heads via file editing
278 # create multiple heads via file editing
279 _branches = repo.scm_instance.branches
279 _branches = repo.scm_instance.branches
280 # check if revision is a branch name or branch hash
280 # check if revision is a branch name or branch hash
281 if revision not in _branches.keys() + _branches.values():
281 if revision not in _branches.keys() + _branches.values():
282 h.flash(_('You can only edit files with revision '
282 h.flash(_('You can only edit files with revision '
283 'being a valid branch '), category='warning')
283 'being a valid branch '), category='warning')
284 return redirect(h.url('files_home',
284 return redirect(h.url('files_home',
285 repo_name=repo_name, revision='tip',
285 repo_name=repo_name, revision='tip',
286 f_path=f_path))
286 f_path=f_path))
287
287
288 r_post = request.POST
288 r_post = request.POST
289
289
290 c.cs = self.__get_cs_or_redirect(revision, repo_name)
290 c.cs = self.__get_cs_or_redirect(revision, repo_name)
291 c.file = self.__get_filenode_or_redirect(repo_name, c.cs, f_path)
291 c.file = self.__get_filenode_or_redirect(repo_name, c.cs, f_path)
292
292
293 if c.file.is_binary:
293 if c.file.is_binary:
294 return redirect(url('files_home', repo_name=c.repo_name,
294 return redirect(url('files_home', repo_name=c.repo_name,
295 revision=c.cs.raw_id, f_path=f_path))
295 revision=c.cs.raw_id, f_path=f_path))
296 c.default_message = _('Edited file %s via RhodeCode') % (f_path)
296 c.default_message = _('Edited file %s via RhodeCode') % (f_path)
297 c.f_path = f_path
297 c.f_path = f_path
298
298
299 if r_post:
299 if r_post:
300
300
301 old_content = c.file.content
301 old_content = c.file.content
302 sl = old_content.splitlines(1)
302 sl = old_content.splitlines(1)
303 first_line = sl[0] if sl else ''
303 first_line = sl[0] if sl else ''
304 # modes: 0 - Unix, 1 - Mac, 2 - DOS
304 # modes: 0 - Unix, 1 - Mac, 2 - DOS
305 mode = detect_mode(first_line, 0)
305 mode = detect_mode(first_line, 0)
306 content = convert_line_endings(r_post.get('content'), mode)
306 content = convert_line_endings(r_post.get('content'), mode)
307
307
308 message = r_post.get('message') or c.default_message
308 message = r_post.get('message') or c.default_message
309 author = self.rhodecode_user.full_contact
309 author = self.rhodecode_user.full_contact
310
310
311 if content == old_content:
311 if content == old_content:
312 h.flash(_('No changes'),
312 h.flash(_('No changes'),
313 category='warning')
313 category='warning')
314 return redirect(url('changeset_home', repo_name=c.repo_name,
314 return redirect(url('changeset_home', repo_name=c.repo_name,
315 revision='tip'))
315 revision='tip'))
316 try:
316 try:
317 self.scm_model.commit_change(repo=c.rhodecode_repo,
317 self.scm_model.commit_change(repo=c.rhodecode_repo,
318 repo_name=repo_name, cs=c.cs,
318 repo_name=repo_name, cs=c.cs,
319 user=self.rhodecode_user.user_id,
319 user=self.rhodecode_user.user_id,
320 author=author, message=message,
320 author=author, message=message,
321 content=content, f_path=f_path)
321 content=content, f_path=f_path)
322 h.flash(_('Successfully committed to %s') % f_path,
322 h.flash(_('Successfully committed to %s') % f_path,
323 category='success')
323 category='success')
324
324
325 except Exception:
325 except Exception:
326 log.error(traceback.format_exc())
326 log.error(traceback.format_exc())
327 h.flash(_('Error occurred during commit'), category='error')
327 h.flash(_('Error occurred during commit'), category='error')
328 return redirect(url('changeset_home',
328 return redirect(url('changeset_home',
329 repo_name=c.repo_name, revision='tip'))
329 repo_name=c.repo_name, revision='tip'))
330
330
331 return render('files/files_edit.html')
331 return render('files/files_edit.html')
332
332
333 @LoginRequired()
333 @LoginRequired()
334 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
334 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
335 def add(self, repo_name, revision, f_path):
335 def add(self, repo_name, revision, f_path):
336
336
337 repo = Repository.get_by_repo_name(repo_name)
337 repo = Repository.get_by_repo_name(repo_name)
338 if repo.enable_locking and repo.locked[0]:
338 if repo.enable_locking and repo.locked[0]:
339 h.flash(_('This repository is has been locked by %s on %s')
339 h.flash(_('This repository is has been locked by %s on %s')
340 % (h.person_by_id(repo.locked[0]),
340 % (h.person_by_id(repo.locked[0]),
341 h.fmt_date(h.time_to_datetime(repo.locked[1]))),
341 h.fmt_date(h.time_to_datetime(repo.locked[1]))),
342 'warning')
342 'warning')
343 return redirect(h.url('files_home',
343 return redirect(h.url('files_home',
344 repo_name=repo_name, revision='tip'))
344 repo_name=repo_name, revision='tip'))
345
345
346 r_post = request.POST
346 r_post = request.POST
347 c.cs = self.__get_cs_or_redirect(revision, repo_name,
347 c.cs = self.__get_cs_or_redirect(revision, repo_name,
348 redirect_after=False)
348 redirect_after=False)
349 if c.cs is None:
349 if c.cs is None:
350 c.cs = EmptyChangeset(alias=c.rhodecode_repo.alias)
350 c.cs = EmptyChangeset(alias=c.rhodecode_repo.alias)
351 c.default_message = (_('Added file via RhodeCode'))
351 c.default_message = (_('Added file via RhodeCode'))
352 c.f_path = f_path
352 c.f_path = f_path
353
353
354 if r_post:
354 if r_post:
355 unix_mode = 0
355 unix_mode = 0
356 content = convert_line_endings(r_post.get('content'), unix_mode)
356 content = convert_line_endings(r_post.get('content'), unix_mode)
357
357
358 message = r_post.get('message') or c.default_message
358 message = r_post.get('message') or c.default_message
359 location = r_post.get('location')
359 location = r_post.get('location')
360 filename = r_post.get('filename')
360 filename = r_post.get('filename')
361 file_obj = r_post.get('upload_file', None)
361 file_obj = r_post.get('upload_file', None)
362
362
363 if file_obj is not None and hasattr(file_obj, 'filename'):
363 if file_obj is not None and hasattr(file_obj, 'filename'):
364 filename = file_obj.filename
364 filename = file_obj.filename
365 content = file_obj.file
365 content = file_obj.file
366
366
367 node_path = os.path.join(location, filename)
367 node_path = os.path.join(location, filename)
368 author = self.rhodecode_user.full_contact
368 author = self.rhodecode_user.full_contact
369
369
370 if not content:
370 if not content:
371 h.flash(_('No content'), category='warning')
371 h.flash(_('No content'), category='warning')
372 return redirect(url('changeset_home', repo_name=c.repo_name,
372 return redirect(url('changeset_home', repo_name=c.repo_name,
373 revision='tip'))
373 revision='tip'))
374 if not filename:
374 if not filename:
375 h.flash(_('No filename'), category='warning')
375 h.flash(_('No filename'), category='warning')
376 return redirect(url('changeset_home', repo_name=c.repo_name,
376 return redirect(url('changeset_home', repo_name=c.repo_name,
377 revision='tip'))
377 revision='tip'))
378
378
379 try:
379 try:
380 self.scm_model.create_node(repo=c.rhodecode_repo,
380 self.scm_model.create_node(repo=c.rhodecode_repo,
381 repo_name=repo_name, cs=c.cs,
381 repo_name=repo_name, cs=c.cs,
382 user=self.rhodecode_user.user_id,
382 user=self.rhodecode_user.user_id,
383 author=author, message=message,
383 author=author, message=message,
384 content=content, f_path=node_path)
384 content=content, f_path=node_path)
385 h.flash(_('Successfully committed to %s') % node_path,
385 h.flash(_('Successfully committed to %s') % node_path,
386 category='success')
386 category='success')
387 except NodeAlreadyExistsError, e:
387 except NodeAlreadyExistsError, e:
388 h.flash(_(e), category='error')
388 h.flash(_(e), category='error')
389 except Exception:
389 except Exception:
390 log.error(traceback.format_exc())
390 log.error(traceback.format_exc())
391 h.flash(_('Error occurred during commit'), category='error')
391 h.flash(_('Error occurred during commit'), category='error')
392 return redirect(url('changeset_home',
392 return redirect(url('changeset_home',
393 repo_name=c.repo_name, revision='tip'))
393 repo_name=c.repo_name, revision='tip'))
394
394
395 return render('files/files_add.html')
395 return render('files/files_add.html')
396
396
397 @LoginRequired()
397 @LoginRequired()
398 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
398 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
399 'repository.admin')
399 'repository.admin')
400 def archivefile(self, repo_name, fname):
400 def archivefile(self, repo_name, fname):
401
401
402 fileformat = None
402 fileformat = None
403 revision = None
403 revision = None
404 ext = None
404 ext = None
405 subrepos = request.GET.get('subrepos') == 'true'
405 subrepos = request.GET.get('subrepos') == 'true'
406
406
407 for a_type, ext_data in settings.ARCHIVE_SPECS.items():
407 for a_type, ext_data in settings.ARCHIVE_SPECS.items():
408 archive_spec = fname.split(ext_data[1])
408 archive_spec = fname.split(ext_data[1])
409 if len(archive_spec) == 2 and archive_spec[1] == '':
409 if len(archive_spec) == 2 and archive_spec[1] == '':
410 fileformat = a_type or ext_data[1]
410 fileformat = a_type or ext_data[1]
411 revision = archive_spec[0]
411 revision = archive_spec[0]
412 ext = ext_data[1]
412 ext = ext_data[1]
413
413
414 try:
414 try:
415 dbrepo = RepoModel().get_by_repo_name(repo_name)
415 dbrepo = RepoModel().get_by_repo_name(repo_name)
416 if dbrepo.enable_downloads is False:
416 if dbrepo.enable_downloads is False:
417 return _('downloads disabled')
417 return _('downloads disabled')
418
418
419 if c.rhodecode_repo.alias == 'hg':
419 if c.rhodecode_repo.alias == 'hg':
420 # patch and reset hooks section of UI config to not run any
420 # patch and reset hooks section of UI config to not run any
421 # hooks on fetching archives with subrepos
421 # hooks on fetching archives with subrepos
422 for k, v in c.rhodecode_repo._repo.ui.configitems('hooks'):
422 for k, v in c.rhodecode_repo._repo.ui.configitems('hooks'):
423 c.rhodecode_repo._repo.ui.setconfig('hooks', k, None)
423 c.rhodecode_repo._repo.ui.setconfig('hooks', k, None)
424
424
425 cs = c.rhodecode_repo.get_changeset(revision)
425 cs = c.rhodecode_repo.get_changeset(revision)
426 content_type = settings.ARCHIVE_SPECS[fileformat][0]
426 content_type = settings.ARCHIVE_SPECS[fileformat][0]
427 except ChangesetDoesNotExistError:
427 except ChangesetDoesNotExistError:
428 return _('Unknown revision %s') % revision
428 return _('Unknown revision %s') % revision
429 except EmptyRepositoryError:
429 except EmptyRepositoryError:
430 return _('Empty repository')
430 return _('Empty repository')
431 except (ImproperArchiveTypeError, KeyError):
431 except (ImproperArchiveTypeError, KeyError):
432 return _('Unknown archive type')
432 return _('Unknown archive type')
433 # archive cache
433 # archive cache
434 from rhodecode import CONFIG
434 from rhodecode import CONFIG
435 rev_name = cs.raw_id[:12]
435 rev_name = cs.raw_id[:12]
436 archive_name = '%s-%s%s' % (safe_str(repo_name.replace('/', '_')),
436 archive_name = '%s-%s%s' % (safe_str(repo_name.replace('/', '_')),
437 safe_str(rev_name), ext)
437 safe_str(rev_name), ext)
438
438
439 use_cached_archive = False # defines if we use cached version of archive
439 use_cached_archive = False # defines if we use cached version of archive
440 archive_cache_enabled = CONFIG.get('archive_cache_dir')
440 archive_cache_enabled = CONFIG.get('archive_cache_dir')
441 if not subrepos and archive_cache_enabled:
441 if not subrepos and archive_cache_enabled:
442 #check if we it's ok to write
442 #check if we it's ok to write
443 if not os.path.isdir(CONFIG['archive_cache_dir']):
443 if not os.path.isdir(CONFIG['archive_cache_dir']):
444 os.makedirs(CONFIG['archive_cache_dir'])
444 os.makedirs(CONFIG['archive_cache_dir'])
445 cached_archive_path = os.path.join(CONFIG['archive_cache_dir'], archive_name)
445 cached_archive_path = os.path.join(CONFIG['archive_cache_dir'], archive_name)
446 if os.path.isfile(cached_archive_path):
446 if os.path.isfile(cached_archive_path):
447 log.debug('Found cached archive in %s' % cached_archive_path)
447 log.debug('Found cached archive in %s' % cached_archive_path)
448 fd, archive = None, cached_archive_path
448 fd, archive = None, cached_archive_path
449 use_cached_archive = True
449 use_cached_archive = True
450 else:
450 else:
451 log.debug('Archive %s is not yet cached' % (archive_name))
451 log.debug('Archive %s is not yet cached' % (archive_name))
452
452
453 if not use_cached_archive:
453 if not use_cached_archive:
454 #generate new archive
454 #generate new archive
455 try:
455 try:
456 fd, archive = tempfile.mkstemp()
456 fd, archive = tempfile.mkstemp()
457 t = open(archive, 'wb')
457 t = open(archive, 'wb')
458 log.debug('Creating new temp archive in %s' % archive)
458 log.debug('Creating new temp archive in %s' % archive)
459 cs.fill_archive(stream=t, kind=fileformat, subrepos=subrepos)
459 cs.fill_archive(stream=t, kind=fileformat, subrepos=subrepos)
460 if archive_cache_enabled:
460 if archive_cache_enabled:
461 #if we generated the archive and use cache rename that
461 #if we generated the archive and use cache rename that
462 log.debug('Storing new archive in %s' % cached_archive_path)
462 log.debug('Storing new archive in %s' % cached_archive_path)
463 shutil.move(archive, cached_archive_path)
463 shutil.move(archive, cached_archive_path)
464 archive = cached_archive_path
464 archive = cached_archive_path
465 finally:
465 finally:
466 t.close()
466 t.close()
467
467
468 def get_chunked_archive(archive):
468 def get_chunked_archive(archive):
469 stream = open(archive, 'rb')
469 stream = open(archive, 'rb')
470 while True:
470 while True:
471 data = stream.read(16 * 1024)
471 data = stream.read(16 * 1024)
472 if not data:
472 if not data:
473 stream.close()
473 stream.close()
474 if fd: # fd means we used temporary file
474 if fd: # fd means we used temporary file
475 os.close(fd)
475 os.close(fd)
476 if not archive_cache_enabled:
476 if not archive_cache_enabled:
477 log.debug('Destroing temp archive %s' % archive)
477 log.debug('Destroing temp archive %s' % archive)
478 os.remove(archive)
478 os.remove(archive)
479 break
479 break
480 yield data
480 yield data
481
481
482 response.content_disposition = str('attachment; filename=%s' % (archive_name))
482 response.content_disposition = str('attachment; filename=%s' % (archive_name))
483 response.content_type = str(content_type)
483 response.content_type = str(content_type)
484 return get_chunked_archive(archive)
484 return get_chunked_archive(archive)
485
485
486 @LoginRequired()
486 @LoginRequired()
487 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
487 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
488 'repository.admin')
488 'repository.admin')
489 def diff(self, repo_name, f_path):
489 def diff(self, repo_name, f_path):
490 ignore_whitespace = request.GET.get('ignorews') == '1'
490 ignore_whitespace = request.GET.get('ignorews') == '1'
491 line_context = request.GET.get('context', 3)
491 line_context = request.GET.get('context', 3)
492 diff1 = request.GET.get('diff1', '')
492 diff1 = request.GET.get('diff1', '')
493 diff2 = request.GET.get('diff2', '')
493 diff2 = request.GET.get('diff2', '')
494 c.action = request.GET.get('diff')
494 c.action = request.GET.get('diff')
495 c.no_changes = diff1 == diff2
495 c.no_changes = diff1 == diff2
496 c.f_path = f_path
496 c.f_path = f_path
497 c.big_diff = False
497 c.big_diff = False
498 c.anchor_url = anchor_url
498 c.anchor_url = anchor_url
499 c.ignorews_url = _ignorews_url
499 c.ignorews_url = _ignorews_url
500 c.context_url = _context_url
500 c.context_url = _context_url
501 c.changes = OrderedDict()
501 c.changes = OrderedDict()
502 c.changes[diff2] = []
502 c.changes[diff2] = []
503
503
504 #special case if we want a show rev only, it's impl here
504 #special case if we want a show rev only, it's impl here
505 #to reduce JS and callbacks
505 #to reduce JS and callbacks
506
506
507 if request.GET.get('show_rev'):
507 if request.GET.get('show_rev'):
508 if str2bool(request.GET.get('annotate', 'False')):
508 if str2bool(request.GET.get('annotate', 'False')):
509 _url = url('files_annotate_home', repo_name=c.repo_name,
509 _url = url('files_annotate_home', repo_name=c.repo_name,
510 revision=diff1, f_path=c.f_path)
510 revision=diff1, f_path=c.f_path)
511 else:
511 else:
512 _url = url('files_home', repo_name=c.repo_name,
512 _url = url('files_home', repo_name=c.repo_name,
513 revision=diff1, f_path=c.f_path)
513 revision=diff1, f_path=c.f_path)
514
514
515 return redirect(_url)
515 return redirect(_url)
516 try:
516 try:
517 if diff1 not in ['', None, 'None', '0' * 12, '0' * 40]:
517 if diff1 not in ['', None, 'None', '0' * 12, '0' * 40]:
518 c.changeset_1 = c.rhodecode_repo.get_changeset(diff1)
518 c.changeset_1 = c.rhodecode_repo.get_changeset(diff1)
519 try:
519 try:
520 node1 = c.changeset_1.get_node(f_path)
520 node1 = c.changeset_1.get_node(f_path)
521 if node1.is_dir():
521 if node1.is_dir():
522 raise NodeError('%s path is a %s not a file' % (node1, type(node1)))
522 raise NodeError('%s path is a %s not a file' % (node1, type(node1)))
523 except NodeDoesNotExistError:
523 except NodeDoesNotExistError:
524 c.changeset_1 = EmptyChangeset(cs=diff1,
524 c.changeset_1 = EmptyChangeset(cs=diff1,
525 revision=c.changeset_1.revision,
525 revision=c.changeset_1.revision,
526 repo=c.rhodecode_repo)
526 repo=c.rhodecode_repo)
527 node1 = FileNode(f_path, '', changeset=c.changeset_1)
527 node1 = FileNode(f_path, '', changeset=c.changeset_1)
528 else:
528 else:
529 c.changeset_1 = EmptyChangeset(repo=c.rhodecode_repo)
529 c.changeset_1 = EmptyChangeset(repo=c.rhodecode_repo)
530 node1 = FileNode(f_path, '', changeset=c.changeset_1)
530 node1 = FileNode(f_path, '', changeset=c.changeset_1)
531
531
532 if diff2 not in ['', None, 'None', '0' * 12, '0' * 40]:
532 if diff2 not in ['', None, 'None', '0' * 12, '0' * 40]:
533 c.changeset_2 = c.rhodecode_repo.get_changeset(diff2)
533 c.changeset_2 = c.rhodecode_repo.get_changeset(diff2)
534 try:
534 try:
535 node2 = c.changeset_2.get_node(f_path)
535 node2 = c.changeset_2.get_node(f_path)
536 raise NodeError('%s path is a %s not a file' % (node2, type(node2)))
536 raise NodeError('%s path is a %s not a file' % (node2, type(node2)))
537 except NodeDoesNotExistError:
537 except NodeDoesNotExistError:
538 c.changeset_2 = EmptyChangeset(cs=diff2,
538 c.changeset_2 = EmptyChangeset(cs=diff2,
539 revision=c.changeset_2.revision,
539 revision=c.changeset_2.revision,
540 repo=c.rhodecode_repo)
540 repo=c.rhodecode_repo)
541 node2 = FileNode(f_path, '', changeset=c.changeset_2)
541 node2 = FileNode(f_path, '', changeset=c.changeset_2)
542 else:
542 else:
543 c.changeset_2 = EmptyChangeset(repo=c.rhodecode_repo)
543 c.changeset_2 = EmptyChangeset(repo=c.rhodecode_repo)
544 node2 = FileNode(f_path, '', changeset=c.changeset_2)
544 node2 = FileNode(f_path, '', changeset=c.changeset_2)
545 except (RepositoryError, NodeError):
545 except (RepositoryError, NodeError):
546 log.error(traceback.format_exc())
546 log.error(traceback.format_exc())
547 return redirect(url('files_home', repo_name=c.repo_name,
547 return redirect(url('files_home', repo_name=c.repo_name,
548 f_path=f_path))
548 f_path=f_path))
549
549
550 if c.action == 'download':
550 if c.action == 'download':
551 _diff = diffs.get_gitdiff(node1, node2,
551 _diff = diffs.get_gitdiff(node1, node2,
552 ignore_whitespace=ignore_whitespace,
552 ignore_whitespace=ignore_whitespace,
553 context=line_context)
553 context=line_context)
554 diff = diffs.DiffProcessor(_diff, format='gitdiff')
554 diff = diffs.DiffProcessor(_diff, format='gitdiff')
555
555
556 diff_name = '%s_vs_%s.diff' % (diff1, diff2)
556 diff_name = '%s_vs_%s.diff' % (diff1, diff2)
557 response.content_type = 'text/plain'
557 response.content_type = 'text/plain'
558 response.content_disposition = (
558 response.content_disposition = (
559 'attachment; filename=%s' % diff_name
559 'attachment; filename=%s' % diff_name
560 )
560 )
561 return diff.as_raw()
561 return diff.as_raw()
562
562
563 elif c.action == 'raw':
563 elif c.action == 'raw':
564 _diff = diffs.get_gitdiff(node1, node2,
564 _diff = diffs.get_gitdiff(node1, node2,
565 ignore_whitespace=ignore_whitespace,
565 ignore_whitespace=ignore_whitespace,
566 context=line_context)
566 context=line_context)
567 diff = diffs.DiffProcessor(_diff, format='gitdiff')
567 diff = diffs.DiffProcessor(_diff, format='gitdiff')
568 response.content_type = 'text/plain'
568 response.content_type = 'text/plain'
569 return diff.as_raw()
569 return diff.as_raw()
570
570
571 else:
571 else:
572 fid = h.FID(diff2, node2.path)
572 fid = h.FID(diff2, node2.path)
573 line_context_lcl = get_line_ctx(fid, request.GET)
573 line_context_lcl = get_line_ctx(fid, request.GET)
574 ign_whitespace_lcl = get_ignore_ws(fid, request.GET)
574 ign_whitespace_lcl = get_ignore_ws(fid, request.GET)
575
575
576 lim = request.GET.get('fulldiff') or self.cut_off_limit
576 lim = request.GET.get('fulldiff') or self.cut_off_limit
577 _, cs1, cs2, diff, st = diffs.wrapped_diff(filenode_old=node1,
577 _, cs1, cs2, diff, st = diffs.wrapped_diff(filenode_old=node1,
578 filenode_new=node2,
578 filenode_new=node2,
579 cut_off_limit=lim,
579 cut_off_limit=lim,
580 ignore_whitespace=ign_whitespace_lcl,
580 ignore_whitespace=ign_whitespace_lcl,
581 line_context=line_context_lcl,
581 line_context=line_context_lcl,
582 enable_comments=False)
582 enable_comments=False)
583 op = ''
583 op = ''
584 filename = node1.path
584 filename = node1.path
585 cs_changes = {
585 cs_changes = {
586 'fid': [cs1, cs2, op, filename, diff, st]
586 'fid': [cs1, cs2, op, filename, diff, st]
587 }
587 }
588 c.changes = cs_changes
588 c.changes = cs_changes
589
589
590 return render('files/file_diff.html')
590 return render('files/file_diff.html')
591
591
592 def _get_node_history(self, cs, f_path, changesets=None):
592 def _get_node_history(self, cs, f_path, changesets=None):
593 """
593 """
594 get changesets history for given node
594 get changesets history for given node
595
595
596 :param cs: changeset to calculate history
596 :param cs: changeset to calculate history
597 :param f_path: path for node to calculate history for
597 :param f_path: path for node to calculate history for
598 :param changesets: if passed don't calculate history and take
598 :param changesets: if passed don't calculate history and take
599 changesets defined in this list
599 changesets defined in this list
600 """
600 """
601 # calculate history based on tip
601 # calculate history based on tip
602 tip_cs = c.rhodecode_repo.get_changeset()
602 tip_cs = c.rhodecode_repo.get_changeset()
603 if changesets is None:
603 if changesets is None:
604 try:
604 try:
605 changesets = tip_cs.get_file_history(f_path)
605 changesets = tip_cs.get_file_history(f_path)
606 except (NodeDoesNotExistError, ChangesetError):
606 except (NodeDoesNotExistError, ChangesetError):
607 #this node is not present at tip !
607 #this node is not present at tip !
608 changesets = cs.get_file_history(f_path)
608 changesets = cs.get_file_history(f_path)
609 hist_l = []
609 hist_l = []
610
610
611 changesets_group = ([], _("Changesets"))
611 changesets_group = ([], _("Changesets"))
612 branches_group = ([], _("Branches"))
612 branches_group = ([], _("Branches"))
613 tags_group = ([], _("Tags"))
613 tags_group = ([], _("Tags"))
614 _hg = cs.repository.alias == 'hg'
614 _hg = cs.repository.alias == 'hg'
615 for chs in changesets:
615 for chs in changesets:
616 #_branch = '(%s)' % chs.branch if _hg else ''
616 #_branch = '(%s)' % chs.branch if _hg else ''
617 _branch = chs.branch
617 _branch = chs.branch
618 n_desc = 'r%s:%s (%s)' % (chs.revision, chs.short_id, _branch)
618 n_desc = 'r%s:%s (%s)' % (chs.revision, chs.short_id, _branch)
619 changesets_group[0].append((chs.raw_id, n_desc,))
619 changesets_group[0].append((chs.raw_id, n_desc,))
620 hist_l.append(changesets_group)
620 hist_l.append(changesets_group)
621
621
622 for name, chs in c.rhodecode_repo.branches.items():
622 for name, chs in c.rhodecode_repo.branches.items():
623 branches_group[0].append((chs, name),)
623 branches_group[0].append((chs, name),)
624 hist_l.append(branches_group)
624 hist_l.append(branches_group)
625
625
626 for name, chs in c.rhodecode_repo.tags.items():
626 for name, chs in c.rhodecode_repo.tags.items():
627 tags_group[0].append((chs, name),)
627 tags_group[0].append((chs, name),)
628 hist_l.append(tags_group)
628 hist_l.append(tags_group)
629
629
630 return hist_l, changesets
630 return hist_l, changesets
631
631
632 @LoginRequired()
632 @LoginRequired()
633 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
633 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
634 'repository.admin')
634 'repository.admin')
635 @jsonify
635 @jsonify
636 def nodelist(self, repo_name, revision, f_path):
636 def nodelist(self, repo_name, revision, f_path):
637 if request.environ.get('HTTP_X_PARTIAL_XHR'):
637 if request.environ.get('HTTP_X_PARTIAL_XHR'):
638 cs = self.__get_cs_or_redirect(revision, repo_name)
638 cs = self.__get_cs_or_redirect(revision, repo_name)
639 _d, _f = ScmModel().get_nodes(repo_name, cs.raw_id, f_path,
639 _d, _f = ScmModel().get_nodes(repo_name, cs.raw_id, f_path,
640 flat=False)
640 flat=False)
641 return {'nodes': _d + _f}
641 return {'nodes': _d + _f}
@@ -1,182 +1,185 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.controllers.forks
3 rhodecode.controllers.forks
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
5
6 forks controller for rhodecode
6 forks controller for rhodecode
7
7
8 :created_on: Apr 23, 2011
8 :created_on: Apr 23, 2011
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2011-2012 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2011-2012 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software: you can redistribute it and/or modify
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
16 # (at your option) any later version.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25 import logging
25 import logging
26 import formencode
26 import formencode
27 import traceback
27 import traceback
28 from formencode import htmlfill
28 from formencode import htmlfill
29
29
30 from pylons import tmpl_context as c, request, url
30 from pylons import tmpl_context as c, request, url
31 from pylons.controllers.util import redirect
31 from pylons.controllers.util import redirect
32 from pylons.i18n.translation import _
32 from pylons.i18n.translation import _
33
33
34 import rhodecode.lib.helpers as h
34 import rhodecode.lib.helpers as h
35
35
36 from rhodecode.lib.helpers import Page
36 from rhodecode.lib.helpers import Page
37 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator, \
37 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator, \
38 NotAnonymous, HasRepoPermissionAny, HasPermissionAllDecorator,\
38 NotAnonymous, HasRepoPermissionAny, HasPermissionAllDecorator,\
39 HasPermissionAnyDecorator
39 HasPermissionAnyDecorator
40 from rhodecode.lib.base import BaseRepoController, render
40 from rhodecode.lib.base import BaseRepoController, render
41 from rhodecode.model.db import Repository, RepoGroup, UserFollowing, User
41 from rhodecode.model.db import Repository, RepoGroup, UserFollowing, User
42 from rhodecode.model.repo import RepoModel
42 from rhodecode.model.repo import RepoModel
43 from rhodecode.model.forms import RepoForkForm
43 from rhodecode.model.forms import RepoForkForm
44 from rhodecode.model.scm import ScmModel, GroupList
44 from rhodecode.model.scm import ScmModel, GroupList
45 from rhodecode.lib.utils2 import safe_int
45 from rhodecode.lib.utils2 import safe_int
46
46
47 log = logging.getLogger(__name__)
47 log = logging.getLogger(__name__)
48
48
49
49
50 class ForksController(BaseRepoController):
50 class ForksController(BaseRepoController):
51
51
52 @LoginRequired()
52 @LoginRequired()
53 def __before__(self):
53 def __before__(self):
54 super(ForksController, self).__before__()
54 super(ForksController, self).__before__()
55
55
56 def __load_defaults(self):
56 def __load_defaults(self):
57 acl_groups = GroupList(RepoGroup.query().all(),
57 acl_groups = GroupList(RepoGroup.query().all(),
58 perm_set=['group.write', 'group.admin'])
58 perm_set=['group.write', 'group.admin'])
59 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
59 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
60 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
60 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
61 choices, c.landing_revs = ScmModel().get_repo_landing_revs()
61 choices, c.landing_revs = ScmModel().get_repo_landing_revs()
62 c.landing_revs_choices = choices
62 c.landing_revs_choices = choices
63
63
64 def __load_data(self, repo_name=None):
64 def __load_data(self, repo_name=None):
65 """
65 """
66 Load defaults settings for edit, and update
66 Load defaults settings for edit, and update
67
67
68 :param repo_name:
68 :param repo_name:
69 """
69 """
70 self.__load_defaults()
70 self.__load_defaults()
71
71
72 c.repo_info = db_repo = Repository.get_by_repo_name(repo_name)
72 c.repo_info = db_repo = Repository.get_by_repo_name(repo_name)
73 repo = db_repo.scm_instance
73 repo = db_repo.scm_instance
74
74
75 if c.repo_info is None:
75 if c.repo_info is None:
76 h.not_mapped_error(repo_name)
76 h.not_mapped_error(repo_name)
77 return redirect(url('repos'))
77 return redirect(url('repos'))
78
78
79 c.default_user_id = User.get_by_username('default').user_id
79 c.default_user_id = User.get_by_username('default').user_id
80 c.in_public_journal = UserFollowing.query()\
80 c.in_public_journal = UserFollowing.query()\
81 .filter(UserFollowing.user_id == c.default_user_id)\
81 .filter(UserFollowing.user_id == c.default_user_id)\
82 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
82 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
83
83
84 if c.repo_info.stats:
84 if c.repo_info.stats:
85 last_rev = c.repo_info.stats.stat_on_revision+1
85 last_rev = c.repo_info.stats.stat_on_revision+1
86 else:
86 else:
87 last_rev = 0
87 last_rev = 0
88 c.stats_revision = last_rev
88 c.stats_revision = last_rev
89
89
90 c.repo_last_rev = repo.count() if repo.revisions else 0
90 c.repo_last_rev = repo.count() if repo.revisions else 0
91
91
92 if last_rev == 0 or c.repo_last_rev == 0:
92 if last_rev == 0 or c.repo_last_rev == 0:
93 c.stats_percentage = 0
93 c.stats_percentage = 0
94 else:
94 else:
95 c.stats_percentage = '%.2f' % ((float((last_rev)) /
95 c.stats_percentage = '%.2f' % ((float((last_rev)) /
96 c.repo_last_rev) * 100)
96 c.repo_last_rev) * 100)
97
97
98 defaults = RepoModel()._get_defaults(repo_name)
98 defaults = RepoModel()._get_defaults(repo_name)
99 # alter the description to indicate a fork
99 # alter the description to indicate a fork
100 defaults['description'] = ('fork of repository: %s \n%s'
100 defaults['description'] = ('fork of repository: %s \n%s'
101 % (defaults['repo_name'],
101 % (defaults['repo_name'],
102 defaults['description']))
102 defaults['description']))
103 # add suffix to fork
103 # add suffix to fork
104 defaults['repo_name'] = '%s-fork' % defaults['repo_name']
104 defaults['repo_name'] = '%s-fork' % defaults['repo_name']
105
105
106 return defaults
106 return defaults
107
107
108 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
108 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
109 'repository.admin')
109 'repository.admin')
110 def forks(self, repo_name):
110 def forks(self, repo_name):
111 p = safe_int(request.params.get('page', 1), 1)
111 p = safe_int(request.params.get('page', 1), 1)
112 repo_id = c.rhodecode_db_repo.repo_id
112 repo_id = c.rhodecode_db_repo.repo_id
113 d = []
113 d = []
114 for r in Repository.get_repo_forks(repo_id):
114 for r in Repository.get_repo_forks(repo_id):
115 if not HasRepoPermissionAny(
115 if not HasRepoPermissionAny(
116 'repository.read', 'repository.write', 'repository.admin'
116 'repository.read', 'repository.write', 'repository.admin'
117 )(r.repo_name, 'get forks check'):
117 )(r.repo_name, 'get forks check'):
118 continue
118 continue
119 d.append(r)
119 d.append(r)
120 c.forks_pager = Page(d, page=p, items_per_page=20)
120 c.forks_pager = Page(d, page=p, items_per_page=20)
121
121
122 c.forks_data = render('/forks/forks_data.html')
122 c.forks_data = render('/forks/forks_data.html')
123
123
124 if request.environ.get('HTTP_X_PARTIAL_XHR'):
124 if request.environ.get('HTTP_X_PARTIAL_XHR'):
125 return c.forks_data
125 return c.forks_data
126
126
127 return render('/forks/forks.html')
127 return render('/forks/forks.html')
128
128
129 @NotAnonymous()
129 @NotAnonymous()
130 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
130 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
131 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
131 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
132 'repository.admin')
132 'repository.admin')
133 def fork(self, repo_name):
133 def fork(self, repo_name):
134 c.repo_info = Repository.get_by_repo_name(repo_name)
134 c.repo_info = Repository.get_by_repo_name(repo_name)
135 if not c.repo_info:
135 if not c.repo_info:
136 h.not_mapped_error(repo_name)
136 h.not_mapped_error(repo_name)
137 return redirect(url('home'))
137 return redirect(url('home'))
138
138
139 defaults = self.__load_data(repo_name)
139 defaults = self.__load_data(repo_name)
140
140
141 return htmlfill.render(
141 return htmlfill.render(
142 render('forks/fork.html'),
142 render('forks/fork.html'),
143 defaults=defaults,
143 defaults=defaults,
144 encoding="UTF-8",
144 encoding="UTF-8",
145 force_defaults=False
145 force_defaults=False
146 )
146 )
147
147
148 @NotAnonymous()
148 @NotAnonymous()
149 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
149 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
150 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
150 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
151 'repository.admin')
151 'repository.admin')
152 def fork_create(self, repo_name):
152 def fork_create(self, repo_name):
153 self.__load_defaults()
153 self.__load_defaults()
154 c.repo_info = Repository.get_by_repo_name(repo_name)
154 c.repo_info = Repository.get_by_repo_name(repo_name)
155 _form = RepoForkForm(old_data={'repo_type': c.repo_info.repo_type},
155 _form = RepoForkForm(old_data={'repo_type': c.repo_info.repo_type},
156 repo_groups=c.repo_groups_choices,
156 repo_groups=c.repo_groups_choices,
157 landing_revs=c.landing_revs_choices)()
157 landing_revs=c.landing_revs_choices)()
158 form_result = {}
158 form_result = {}
159 try:
159 try:
160 form_result = _form.to_python(dict(request.POST))
160 form_result = _form.to_python(dict(request.POST))
161
161
162 # create fork is done sometimes async on celery, db transaction
162 # create fork is done sometimes async on celery, db transaction
163 # management is handled there.
163 # management is handled there.
164 RepoModel().create_fork(form_result, self.rhodecode_user.user_id)
164 RepoModel().create_fork(form_result, self.rhodecode_user.user_id)
165 h.flash(_('forked %s repository as %s') \
165 fork_url = h.link_to(form_result['repo_name'],
166 % (repo_name, form_result['repo_name']),
166 h.url('summary_home', repo_name=form_result['repo_name_full']))
167
168 h.flash(h.literal(_('forked repository %s as %s') \
169 % (repo_name, fork_url)),
167 category='success')
170 category='success')
168 except formencode.Invalid, errors:
171 except formencode.Invalid, errors:
169 c.new_repo = errors.value['repo_name']
172 c.new_repo = errors.value['repo_name']
170
173
171 return htmlfill.render(
174 return htmlfill.render(
172 render('forks/fork.html'),
175 render('forks/fork.html'),
173 defaults=errors.value,
176 defaults=errors.value,
174 errors=errors.error_dict or {},
177 errors=errors.error_dict or {},
175 prefix_error=False,
178 prefix_error=False,
176 encoding="UTF-8")
179 encoding="UTF-8")
177 except Exception:
180 except Exception:
178 log.error(traceback.format_exc())
181 log.error(traceback.format_exc())
179 h.flash(_('An error occurred during repository forking %s') %
182 h.flash(_('An error occurred during repository forking %s') %
180 repo_name, category='error')
183 repo_name, category='error')
181
184
182 return redirect(url('home'))
185 return redirect(url('home'))
@@ -1,4831 +1,4848 b''
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
2 border: 0;
2 border: 0;
3 outline: 0;
3 outline: 0;
4 font-size: 100%;
4 font-size: 100%;
5 vertical-align: baseline;
5 vertical-align: baseline;
6 background: transparent;
6 background: transparent;
7 margin: 0;
7 margin: 0;
8 padding: 0;
8 padding: 0;
9 }
9 }
10
10
11 body {
11 body {
12 line-height: 1;
12 line-height: 1;
13 height: 100%;
13 height: 100%;
14 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
14 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
15 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
16 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
16 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
17 color: #000;
17 color: #000;
18 margin: 0;
18 margin: 0;
19 padding: 0;
19 padding: 0;
20 font-size: 12px;
20 font-size: 12px;
21 }
21 }
22
22
23 ol, ul {
23 ol, ul {
24 list-style: none;
24 list-style: none;
25 }
25 }
26
26
27 blockquote, q {
27 blockquote, q {
28 quotes: none;
28 quotes: none;
29 }
29 }
30
30
31 blockquote:before, blockquote:after, q:before, q:after {
31 blockquote:before, blockquote:after, q:before, q:after {
32 content: none;
32 content: none;
33 }
33 }
34
34
35 :focus {
35 :focus {
36 outline: 0;
36 outline: 0;
37 }
37 }
38
38
39 del {
39 del {
40 text-decoration: line-through;
40 text-decoration: line-through;
41 }
41 }
42
42
43 table {
43 table {
44 border-collapse: collapse;
44 border-collapse: collapse;
45 border-spacing: 0;
45 border-spacing: 0;
46 }
46 }
47
47
48 html {
48 html {
49 height: 100%;
49 height: 100%;
50 }
50 }
51
51
52 a {
52 a {
53 color: #003367;
53 color: #003367;
54 text-decoration: none;
54 text-decoration: none;
55 cursor: pointer;
55 cursor: pointer;
56 }
56 }
57
57
58 a:hover {
58 a:hover {
59 color: #316293;
59 color: #316293;
60 text-decoration: underline;
60 text-decoration: underline;
61 }
61 }
62
62
63 h1, h2, h3, h4, h5, h6,
63 h1, h2, h3, h4, h5, h6,
64 div.h1, div.h2, div.h3, div.h4, div.h5, div.h6 {
64 div.h1, div.h2, div.h3, div.h4, div.h5, div.h6 {
65 color: #292929;
65 color: #292929;
66 font-weight: 700;
66 font-weight: 700;
67 }
67 }
68
68
69 h1, div.h1 {
69 h1, div.h1 {
70 font-size: 22px;
70 font-size: 22px;
71 }
71 }
72
72
73 h2, div.h2 {
73 h2, div.h2 {
74 font-size: 20px;
74 font-size: 20px;
75 }
75 }
76
76
77 h3, div.h3 {
77 h3, div.h3 {
78 font-size: 18px;
78 font-size: 18px;
79 }
79 }
80
80
81 h4, div.h4 {
81 h4, div.h4 {
82 font-size: 16px;
82 font-size: 16px;
83 }
83 }
84
84
85 h5, div.h5 {
85 h5, div.h5 {
86 font-size: 14px;
86 font-size: 14px;
87 }
87 }
88
88
89 h6, div.h6 {
89 h6, div.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 border-top-left-radius: 8px;
163 border-top-left-radius: 8px;
164 }
164 }
165
165
166 .top-right-rounded-corner {
166 .top-right-rounded-corner {
167 -webkit-border-top-right-radius: 8px;
167 -webkit-border-top-right-radius: 8px;
168 -khtml-border-radius-topright: 8px;
168 -khtml-border-radius-topright: 8px;
169 border-top-right-radius: 8px;
169 border-top-right-radius: 8px;
170 }
170 }
171
171
172 .bottom-left-rounded-corner {
172 .bottom-left-rounded-corner {
173 -webkit-border-bottom-left-radius: 8px;
173 -webkit-border-bottom-left-radius: 8px;
174 -khtml-border-radius-bottomleft: 8px;
174 -khtml-border-radius-bottomleft: 8px;
175 border-bottom-left-radius: 8px;
175 border-bottom-left-radius: 8px;
176 }
176 }
177
177
178 .bottom-right-rounded-corner {
178 .bottom-right-rounded-corner {
179 -webkit-border-bottom-right-radius: 8px;
179 -webkit-border-bottom-right-radius: 8px;
180 -khtml-border-radius-bottomright: 8px;
180 -khtml-border-radius-bottomright: 8px;
181 border-bottom-right-radius: 8px;
181 border-bottom-right-radius: 8px;
182 }
182 }
183
183
184 .top-left-rounded-corner-mid {
184 .top-left-rounded-corner-mid {
185 -webkit-border-top-left-radius: 4px;
185 -webkit-border-top-left-radius: 4px;
186 -khtml-border-radius-topleft: 4px;
186 -khtml-border-radius-topleft: 4px;
187 border-top-left-radius: 4px;
187 border-top-left-radius: 4px;
188 }
188 }
189
189
190 .top-right-rounded-corner-mid {
190 .top-right-rounded-corner-mid {
191 -webkit-border-top-right-radius: 4px;
191 -webkit-border-top-right-radius: 4px;
192 -khtml-border-radius-topright: 4px;
192 -khtml-border-radius-topright: 4px;
193 border-top-right-radius: 4px;
193 border-top-right-radius: 4px;
194 }
194 }
195
195
196 .bottom-left-rounded-corner-mid {
196 .bottom-left-rounded-corner-mid {
197 -webkit-border-bottom-left-radius: 4px;
197 -webkit-border-bottom-left-radius: 4px;
198 -khtml-border-radius-bottomleft: 4px;
198 -khtml-border-radius-bottomleft: 4px;
199 border-bottom-left-radius: 4px;
199 border-bottom-left-radius: 4px;
200 }
200 }
201
201
202 .bottom-right-rounded-corner-mid {
202 .bottom-right-rounded-corner-mid {
203 -webkit-border-bottom-right-radius: 4px;
203 -webkit-border-bottom-right-radius: 4px;
204 -khtml-border-radius-bottomright: 4px;
204 -khtml-border-radius-bottomright: 4px;
205 border-bottom-right-radius: 4px;
205 border-bottom-right-radius: 4px;
206 }
206 }
207
207
208 .help-block {
208 .help-block {
209 color: #999999;
209 color: #999999;
210 display: block;
210 display: block;
211 margin-bottom: 0;
211 margin-bottom: 0;
212 margin-top: 5px;
212 margin-top: 5px;
213 }
213 }
214
214
215 .empty_data {
215 .empty_data {
216 color: #B9B9B9;
216 color: #B9B9B9;
217 }
217 }
218
218
219 a.permalink {
219 a.permalink {
220 visibility: hidden;
220 visibility: hidden;
221 }
221 }
222
222
223 a.permalink:hover {
223 a.permalink:hover {
224 text-decoration: none;
224 text-decoration: none;
225 }
225 }
226
226
227 h1:hover > a.permalink,
227 h1:hover > a.permalink,
228 h2:hover > a.permalink,
228 h2:hover > a.permalink,
229 h3:hover > a.permalink,
229 h3:hover > a.permalink,
230 h4:hover > a.permalink,
230 h4:hover > a.permalink,
231 h5:hover > a.permalink,
231 h5:hover > a.permalink,
232 h6:hover > a.permalink,
232 h6:hover > a.permalink,
233 div:hover > a.permalink {
233 div:hover > a.permalink {
234 visibility: visible;
234 visibility: visible;
235 }
235 }
236
236
237 #header {
237 #header {
238 }
238 }
239 #header ul#logged-user {
239 #header ul#logged-user {
240 margin-bottom: 5px !important;
240 margin-bottom: 5px !important;
241 -webkit-border-radius: 0px 0px 8px 8px;
241 -webkit-border-radius: 0px 0px 8px 8px;
242 -khtml-border-radius: 0px 0px 8px 8px;
242 -khtml-border-radius: 0px 0px 8px 8px;
243 border-radius: 0px 0px 8px 8px;
243 border-radius: 0px 0px 8px 8px;
244 height: 37px;
244 height: 37px;
245 background-color: #003B76;
245 background-color: #003B76;
246 background-repeat: repeat-x;
246 background-repeat: repeat-x;
247 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
247 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
248 background-image: -moz-linear-gradient(top, #003b76, #00376e);
248 background-image: -moz-linear-gradient(top, #003b76, #00376e);
249 background-image: -ms-linear-gradient(top, #003b76, #00376e);
249 background-image: -ms-linear-gradient(top, #003b76, #00376e);
250 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
250 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
251 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
251 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
252 background-image: -o-linear-gradient(top, #003b76, #00376e);
252 background-image: -o-linear-gradient(top, #003b76, #00376e);
253 background-image: linear-gradient(to bottom, #003b76, #00376e);
253 background-image: linear-gradient(to bottom, #003b76, #00376e);
254 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
254 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
255 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
255 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
256 }
256 }
257
257
258 #header ul#logged-user li {
258 #header ul#logged-user li {
259 list-style: none;
259 list-style: none;
260 float: left;
260 float: left;
261 margin: 8px 0 0;
261 margin: 8px 0 0;
262 padding: 4px 12px;
262 padding: 4px 12px;
263 border-left: 1px solid #316293;
263 border-left: 1px solid #316293;
264 }
264 }
265
265
266 #header ul#logged-user li.first {
266 #header ul#logged-user li.first {
267 border-left: none;
267 border-left: none;
268 margin: 4px;
268 margin: 4px;
269 }
269 }
270
270
271 #header ul#logged-user li.first div.gravatar {
271 #header ul#logged-user li.first div.gravatar {
272 margin-top: -2px;
272 margin-top: -2px;
273 }
273 }
274
274
275 #header ul#logged-user li.first div.account {
275 #header ul#logged-user li.first div.account {
276 padding-top: 4px;
276 padding-top: 4px;
277 float: left;
277 float: left;
278 }
278 }
279
279
280 #header ul#logged-user li.last {
280 #header ul#logged-user li.last {
281 border-right: none;
281 border-right: none;
282 }
282 }
283
283
284 #header ul#logged-user li a {
284 #header ul#logged-user li a {
285 color: #fff;
285 color: #fff;
286 font-weight: 700;
286 font-weight: 700;
287 text-decoration: none;
287 text-decoration: none;
288 }
288 }
289
289
290 #header ul#logged-user li a:hover {
290 #header ul#logged-user li a:hover {
291 text-decoration: underline;
291 text-decoration: underline;
292 }
292 }
293
293
294 #header ul#logged-user li.highlight a {
294 #header ul#logged-user li.highlight a {
295 color: #fff;
295 color: #fff;
296 }
296 }
297
297
298 #header ul#logged-user li.highlight a:hover {
298 #header ul#logged-user li.highlight a:hover {
299 color: #FFF;
299 color: #FFF;
300 }
300 }
301 #header-dd {
301 #header-dd {
302 clear: both;
302 clear: both;
303 position: fixed !important;
303 position: fixed !important;
304 background-color: #003B76;
304 background-color: #003B76;
305 opacity: 0.01;
305 opacity: 0.01;
306 cursor: pointer;
306 cursor: pointer;
307 min-height: 10px;
307 min-height: 10px;
308 width: 100% !important;
308 width: 100% !important;
309 -webkit-border-radius: 0px 0px 4px 4px;
309 -webkit-border-radius: 0px 0px 4px 4px;
310 -khtml-border-radius: 0px 0px 4px 4px;
310 -khtml-border-radius: 0px 0px 4px 4px;
311 border-radius: 0px 0px 4px 4px;
311 border-radius: 0px 0px 4px 4px;
312 }
312 }
313
313
314 #header-dd:hover {
314 #header-dd:hover {
315 opacity: 0.2;
315 opacity: 0.2;
316 -webkit-transition: opacity 0.5s ease-in-out;
316 -webkit-transition: opacity 0.5s ease-in-out;
317 -moz-transition: opacity 0.5s ease-in-out;
317 -moz-transition: opacity 0.5s ease-in-out;
318 transition: opacity 0.5s ease-in-out;
318 transition: opacity 0.5s ease-in-out;
319 }
319 }
320
320
321 #header #header-inner {
321 #header #header-inner {
322 min-height: 44px;
322 min-height: 44px;
323 clear: both;
323 clear: both;
324 position: relative;
324 position: relative;
325 background-color: #003B76;
325 background-color: #003B76;
326 background-repeat: repeat-x;
326 background-repeat: repeat-x;
327 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
327 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
328 background-image: -moz-linear-gradient(top, #003b76, #00376e);
328 background-image: -moz-linear-gradient(top, #003b76, #00376e);
329 background-image: -ms-linear-gradient(top, #003b76, #00376e);
329 background-image: -ms-linear-gradient(top, #003b76, #00376e);
330 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),color-stop(100%, #00376e) );
330 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),color-stop(100%, #00376e) );
331 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
331 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
332 background-image: -o-linear-gradient(top, #003b76, #00376e);
332 background-image: -o-linear-gradient(top, #003b76, #00376e);
333 background-image: linear-gradient(to bottom, #003b76, #00376e);
333 background-image: linear-gradient(to bottom, #003b76, #00376e);
334 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
334 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
335 margin: 0;
335 margin: 0;
336 padding: 0;
336 padding: 0;
337 display: block;
337 display: block;
338 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
338 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
339 -webkit-border-radius: 0px 0px 4px 4px;
339 -webkit-border-radius: 0px 0px 4px 4px;
340 -khtml-border-radius: 0px 0px 4px 4px;
340 -khtml-border-radius: 0px 0px 4px 4px;
341 border-radius: 0px 0px 4px 4px;
341 border-radius: 0px 0px 4px 4px;
342 }
342 }
343 #header #header-inner.hover {
343 #header #header-inner.hover {
344 width: 100% !important;
344 width: 100% !important;
345 -webkit-border-radius: 0px 0px 0px 0px;
345 -webkit-border-radius: 0px 0px 0px 0px;
346 -khtml-border-radius: 0px 0px 0px 0px;
346 -khtml-border-radius: 0px 0px 0px 0px;
347 border-radius: 0px 0px 0px 0px;
347 border-radius: 0px 0px 0px 0px;
348 position: fixed !important;
348 position: fixed !important;
349 z-index: 10000;
349 z-index: 10000;
350 }
350 }
351
351
352 .ie7 #header #header-inner.hover,
352 .ie7 #header #header-inner.hover,
353 .ie8 #header #header-inner.hover,
353 .ie8 #header #header-inner.hover,
354 .ie9 #header #header-inner.hover
354 .ie9 #header #header-inner.hover
355 {
355 {
356 z-index: auto !important;
356 z-index: auto !important;
357 }
357 }
358
358
359 .header-pos-fix, .anchor {
359 .header-pos-fix, .anchor {
360 margin-top: -46px;
360 margin-top: -46px;
361 padding-top: 46px;
361 padding-top: 46px;
362 }
362 }
363
363
364 #header #header-inner #home a {
364 #header #header-inner #home a {
365 height: 40px;
365 height: 40px;
366 width: 46px;
366 width: 46px;
367 display: block;
367 display: block;
368 background: url("../images/button_home.png");
368 background: url("../images/button_home.png");
369 background-position: 0 0;
369 background-position: 0 0;
370 margin: 0;
370 margin: 0;
371 padding: 0;
371 padding: 0;
372 }
372 }
373
373
374 #header #header-inner #home a:hover {
374 #header #header-inner #home a:hover {
375 background-position: 0 -40px;
375 background-position: 0 -40px;
376 }
376 }
377
377
378 #header #header-inner #logo {
378 #header #header-inner #logo {
379 float: left;
379 float: left;
380 position: absolute;
380 position: absolute;
381 }
381 }
382
382
383 #header #header-inner #logo h1 {
383 #header #header-inner #logo h1 {
384 color: #FFF;
384 color: #FFF;
385 font-size: 20px;
385 font-size: 20px;
386 margin: 12px 0 0 13px;
386 margin: 12px 0 0 13px;
387 padding: 0;
387 padding: 0;
388 }
388 }
389
389
390 #header #header-inner #logo a {
390 #header #header-inner #logo a {
391 color: #fff;
391 color: #fff;
392 text-decoration: none;
392 text-decoration: none;
393 }
393 }
394
394
395 #header #header-inner #logo a:hover {
395 #header #header-inner #logo a:hover {
396 color: #bfe3ff;
396 color: #bfe3ff;
397 }
397 }
398
398
399 #header #header-inner #quick {
399 #header #header-inner #quick {
400 position: relative;
400 position: relative;
401 float: right;
401 float: right;
402 list-style-type: none;
402 list-style-type: none;
403 list-style-position: outside;
403 list-style-position: outside;
404 margin: 4px 8px 0 0;
404 margin: 4px 8px 0 0;
405 padding: 0;
405 padding: 0;
406 border-radius: 4px;
406 border-radius: 4px;
407 }
407 }
408
408
409 #header #header-inner #quick li span.short {
409 #header #header-inner #quick li span.short {
410 padding: 9px 6px 8px 6px;
410 padding: 9px 6px 8px 6px;
411 }
411 }
412
412
413 #header #header-inner #quick li span {
413 #header #header-inner #quick li span {
414 display: inline;
414 display: inline;
415 margin: 0;
415 margin: 0;
416 }
416 }
417
417
418 #header #header-inner #quick li span.normal {
418 #header #header-inner #quick li span.normal {
419 border: none;
419 border: none;
420 padding: 10px 12px 8px;
420 padding: 10px 12px 8px;
421 }
421 }
422
422
423 #header #header-inner #quick li span.icon {
423 #header #header-inner #quick li span.icon {
424
424
425 border-left: none;
425 border-left: none;
426 padding-left: 10px ;
426 padding-left: 10px ;
427 }
427 }
428
428
429 #header #header-inner #quick li span.icon_short {
429 #header #header-inner #quick li span.icon_short {
430 top: 0;
430 top: 0;
431 left: 0;
431 left: 0;
432 border-left: none;
432 border-left: none;
433 border-right: 1px solid #2e5c89;
433 border-right: 1px solid #2e5c89;
434 padding: 8px 6px 4px;
434 padding: 8px 6px 4px;
435 }
435 }
436
436
437 #header #header-inner #quick li span.icon img, #header #header-inner #quick li span.icon_short img {
437 #header #header-inner #quick li span.icon img, #header #header-inner #quick li span.icon_short img {
438 vertical-align: middle;
438 vertical-align: middle;
439 margin-bottom: 2px;
439 margin-bottom: 2px;
440 }
440 }
441
441
442 #header #header-inner #quick ul.repo_switcher {
442 #header #header-inner #quick ul.repo_switcher {
443 max-height: 275px;
443 max-height: 275px;
444 overflow-x: hidden;
444 overflow-x: hidden;
445 overflow-y: auto;
445 overflow-y: auto;
446 }
446 }
447
447
448 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
448 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
449 padding: 2px 3px;
449 padding: 2px 3px;
450 padding-right: 17px;
450 padding-right: 17px;
451 }
451 }
452
452
453 #header #header-inner #quick ul.repo_switcher li.qfilter_rs input {
453 #header #header-inner #quick ul.repo_switcher li.qfilter_rs input {
454 width: 100%;
454 width: 100%;
455 border-radius: 10px;
455 border-radius: 10px;
456 padding: 2px 7px;
456 padding: 2px 7px;
457 }
457 }
458
458
459 #header #header-inner #quick .repo_switcher_type {
459 #header #header-inner #quick .repo_switcher_type {
460 position: absolute;
460 position: absolute;
461 left: 0;
461 left: 0;
462 top: 9px;
462 top: 9px;
463 margin: 0px 2px 0px 2px;
463 margin: 0px 2px 0px 2px;
464 }
464 }
465
465
466 #header #header-inner #quick li ul li a.journal, #header #header-inner #quick li ul li a.journal:hover {
466 #header #header-inner #quick li ul li a.journal, #header #header-inner #quick li ul li a.journal:hover {
467 background-image: url("../images/icons/book.png");
467 background-image: url("../images/icons/book.png");
468 }
468 }
469
469
470 #header #header-inner #quick li ul li a.private_repo, #header #header-inner #quick li ul li a.private_repo:hover {
470 #header #header-inner #quick li ul li a.private_repo, #header #header-inner #quick li ul li a.private_repo:hover {
471 background-image: url("../images/icons/lock.png")
471 background-image: url("../images/icons/lock.png")
472 }
472 }
473
473
474 #header #header-inner #quick li ul li a.public_repo, #header #header-inner #quick li ul li a.public_repo:hover {
474 #header #header-inner #quick li ul li a.public_repo, #header #header-inner #quick li ul li a.public_repo:hover {
475 background-image: url("../images/icons/lock_open.png");
475 background-image: url("../images/icons/lock_open.png");
476 }
476 }
477
477
478 #header #header-inner #quick li ul li a.hg, #header #header-inner #quick li ul li a.hg:hover {
478 #header #header-inner #quick li ul li a.hg, #header #header-inner #quick li ul li a.hg:hover {
479 background-image: url("../images/icons/hgicon.png");
479 background-image: url("../images/icons/hgicon.png");
480 padding-left: 42px;
480 padding-left: 42px;
481 background-position: 20px 9px;
481 background-position: 20px 9px;
482 }
482 }
483
483
484 #header #header-inner #quick li ul li a.git, #header #header-inner #quick li ul li a.git:hover {
484 #header #header-inner #quick li ul li a.git, #header #header-inner #quick li ul li a.git:hover {
485 background-image: url("../images/icons/giticon.png");
485 background-image: url("../images/icons/giticon.png");
486 padding-left: 42px;
486 padding-left: 42px;
487 background-position: 20px 9px;
487 background-position: 20px 9px;
488 }
488 }
489
489
490 #header #header-inner #quick li ul li a.repos, #header #header-inner #quick li ul li a.repos:hover {
490 #header #header-inner #quick li ul li a.repos, #header #header-inner #quick li ul li a.repos:hover {
491 background-image: url("../images/icons/database_edit.png");
491 background-image: url("../images/icons/database_edit.png");
492 }
492 }
493
493
494 #header #header-inner #quick li ul li a.repos_groups, #header #header-inner #quick li ul li a.repos_groups:hover {
494 #header #header-inner #quick li ul li a.repos_groups, #header #header-inner #quick li ul li a.repos_groups:hover {
495 background-image: url("../images/icons/database_link.png");
495 background-image: url("../images/icons/database_link.png");
496 }
496 }
497
497
498 #header #header-inner #quick li ul li a.users, #header #header-inner #quick li ul li a.users:hover {
498 #header #header-inner #quick li ul li a.users, #header #header-inner #quick li ul li a.users:hover {
499 background-image: url("../images/icons/user_edit.png");
499 background-image: url("../images/icons/user_edit.png");
500 }
500 }
501
501
502 #header #header-inner #quick li ul li a.groups, #header #header-inner #quick li ul li a.groups:hover {
502 #header #header-inner #quick li ul li a.groups, #header #header-inner #quick li ul li a.groups:hover {
503 background-image: url("../images/icons/group_edit.png");
503 background-image: url("../images/icons/group_edit.png");
504 }
504 }
505
505
506 #header #header-inner #quick li ul li a.defaults, #header #header-inner #quick li ul li a.defaults:hover {
506 #header #header-inner #quick li ul li a.defaults, #header #header-inner #quick li ul li a.defaults:hover {
507 background-image: url("../images/icons/wrench.png");
507 background-image: url("../images/icons/wrench.png");
508 }
508 }
509
509
510 #header #header-inner #quick li ul li a.settings, #header #header-inner #quick li ul li a.settings:hover {
510 #header #header-inner #quick li ul li a.settings, #header #header-inner #quick li ul li a.settings:hover {
511 background-image: url("../images/icons/cog.png");
511 background-image: url("../images/icons/cog.png");
512 }
512 }
513
513
514 #header #header-inner #quick li ul li a.permissions, #header #header-inner #quick li ul li a.permissions:hover {
514 #header #header-inner #quick li ul li a.permissions, #header #header-inner #quick li ul li a.permissions:hover {
515 background-image: url("../images/icons/key.png");
515 background-image: url("../images/icons/key.png");
516 }
516 }
517
517
518 #header #header-inner #quick li ul li a.ldap, #header #header-inner #quick li ul li a.ldap:hover {
518 #header #header-inner #quick li ul li a.ldap, #header #header-inner #quick li ul li a.ldap:hover {
519 background-image: url("../images/icons/server_key.png");
519 background-image: url("../images/icons/server_key.png");
520 }
520 }
521
521
522 #header #header-inner #quick li ul li a.fork, #header #header-inner #quick li ul li a.fork:hover {
522 #header #header-inner #quick li ul li a.fork, #header #header-inner #quick li ul li a.fork:hover {
523 background-image: url("../images/icons/arrow_divide.png");
523 background-image: url("../images/icons/arrow_divide.png");
524 }
524 }
525
525
526 #header #header-inner #quick li ul li a.locking_add, #header #header-inner #quick li ul li a.locking_add:hover {
526 #header #header-inner #quick li ul li a.locking_add, #header #header-inner #quick li ul li a.locking_add:hover {
527 background-image: url("../images/icons/lock_add.png");
527 background-image: url("../images/icons/lock_add.png");
528 }
528 }
529
529
530 #header #header-inner #quick li ul li a.locking_del, #header #header-inner #quick li ul li a.locking_del:hover {
530 #header #header-inner #quick li ul li a.locking_del, #header #header-inner #quick li ul li a.locking_del:hover {
531 background-image: url("../images/icons/lock_delete.png");
531 background-image: url("../images/icons/lock_delete.png");
532 }
532 }
533
533
534 #header #header-inner #quick li ul li a.pull_request, #header #header-inner #quick li ul li a.pull_request:hover {
534 #header #header-inner #quick li ul li a.pull_request, #header #header-inner #quick li ul li a.pull_request:hover {
535 background-image: url("../images/icons/arrow_join.png") ;
535 background-image: url("../images/icons/arrow_join.png") ;
536 }
536 }
537
537
538 #header #header-inner #quick li ul li a.compare_request, #header #header-inner #quick li ul li a.compare_request:hover {
538 #header #header-inner #quick li ul li a.compare_request, #header #header-inner #quick li ul li a.compare_request:hover {
539 background-image: url("../images/icons/arrow_inout.png");
539 background-image: url("../images/icons/arrow_inout.png");
540 }
540 }
541
541
542 #header #header-inner #quick li ul li a.search, #header #header-inner #quick li ul li a.search:hover {
542 #header #header-inner #quick li ul li a.search, #header #header-inner #quick li ul li a.search:hover {
543 background-image: url("../images/icons/search_16.png");
543 background-image: url("../images/icons/search_16.png");
544 }
544 }
545
545
546 #header #header-inner #quick li ul li a.shortlog, #header #header-inner #quick li ul li a.shortlog:hover {
546 #header #header-inner #quick li ul li a.shortlog, #header #header-inner #quick li ul li a.shortlog:hover {
547 background-image: url("../images/icons/clock_16.png");
547 background-image: url("../images/icons/clock_16.png");
548 }
548 }
549
549
550 #header #header-inner #quick li ul li a.delete, #header #header-inner #quick li ul li a.delete:hover {
550 #header #header-inner #quick li ul li a.delete, #header #header-inner #quick li ul li a.delete:hover {
551 background-image: url("../images/icons/delete.png");
551 background-image: url("../images/icons/delete.png");
552 }
552 }
553
553
554 #header #header-inner #quick li ul li a.branches, #header #header-inner #quick li ul li a.branches:hover {
554 #header #header-inner #quick li ul li a.branches, #header #header-inner #quick li ul li a.branches:hover {
555 background-image: url("../images/icons/arrow_branch.png");
555 background-image: url("../images/icons/arrow_branch.png");
556 }
556 }
557
557
558 #header #header-inner #quick li ul li a.tags,
558 #header #header-inner #quick li ul li a.tags,
559 #header #header-inner #quick li ul li a.tags:hover {
559 #header #header-inner #quick li ul li a.tags:hover {
560 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
560 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
561 width: 167px;
561 width: 167px;
562 margin: 0;
562 margin: 0;
563 padding: 12px 9px 7px 24px;
563 padding: 12px 9px 7px 24px;
564 }
564 }
565
565
566 #header #header-inner #quick li ul li a.bookmarks,
566 #header #header-inner #quick li ul li a.bookmarks,
567 #header #header-inner #quick li ul li a.bookmarks:hover {
567 #header #header-inner #quick li ul li a.bookmarks:hover {
568 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
568 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
569 width: 167px;
569 width: 167px;
570 margin: 0;
570 margin: 0;
571 padding: 12px 9px 7px 24px;
571 padding: 12px 9px 7px 24px;
572 }
572 }
573
573
574 #header #header-inner #quick li ul li a.admin,
574 #header #header-inner #quick li ul li a.admin,
575 #header #header-inner #quick li ul li a.admin:hover {
575 #header #header-inner #quick li ul li a.admin:hover {
576 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
576 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
577 width: 167px;
577 width: 167px;
578 margin: 0;
578 margin: 0;
579 padding: 12px 9px 7px 24px;
579 padding: 12px 9px 7px 24px;
580 }
580 }
581
581
582 .groups_breadcrumbs a {
582 .groups_breadcrumbs a {
583 color: #fff;
583 color: #fff;
584 }
584 }
585
585
586 .groups_breadcrumbs a:hover {
586 .groups_breadcrumbs a:hover {
587 color: #bfe3ff;
587 color: #bfe3ff;
588 text-decoration: none;
588 text-decoration: none;
589 }
589 }
590
590
591 td.quick_repo_menu {
591 td.quick_repo_menu {
592 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
592 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
593 cursor: pointer;
593 cursor: pointer;
594 width: 8px;
594 width: 8px;
595 border: 1px solid transparent;
595 border: 1px solid transparent;
596 }
596 }
597
597
598 td.quick_repo_menu.active {
598 td.quick_repo_menu.active {
599 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
599 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
600 border: 1px solid #003367;
600 border: 1px solid #003367;
601 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
601 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
602 cursor: pointer;
602 cursor: pointer;
603 }
603 }
604
604
605 td.quick_repo_menu .menu_items {
605 td.quick_repo_menu .menu_items {
606 margin-top: 10px;
606 margin-top: 10px;
607 margin-left: -6px;
607 margin-left: -6px;
608 width: 150px;
608 width: 150px;
609 position: absolute;
609 position: absolute;
610 background-color: #FFF;
610 background-color: #FFF;
611 background: none repeat scroll 0 0 #FFFFFF;
611 background: none repeat scroll 0 0 #FFFFFF;
612 border-color: #003367 #666666 #666666;
612 border-color: #003367 #666666 #666666;
613 border-right: 1px solid #666666;
613 border-right: 1px solid #666666;
614 border-style: solid;
614 border-style: solid;
615 border-width: 1px;
615 border-width: 1px;
616 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
616 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
617 border-top-style: none;
617 border-top-style: none;
618 }
618 }
619
619
620 td.quick_repo_menu .menu_items li {
620 td.quick_repo_menu .menu_items li {
621 padding: 0 !important;
621 padding: 0 !important;
622 }
622 }
623
623
624 td.quick_repo_menu .menu_items a {
624 td.quick_repo_menu .menu_items a {
625 display: block;
625 display: block;
626 padding: 4px 12px 4px 8px;
626 padding: 4px 12px 4px 8px;
627 }
627 }
628
628
629 td.quick_repo_menu .menu_items a:hover {
629 td.quick_repo_menu .menu_items a:hover {
630 background-color: #EEE;
630 background-color: #EEE;
631 text-decoration: none;
631 text-decoration: none;
632 }
632 }
633
633
634 td.quick_repo_menu .menu_items .icon img {
634 td.quick_repo_menu .menu_items .icon img {
635 margin-bottom: -2px;
635 margin-bottom: -2px;
636 }
636 }
637
637
638 td.quick_repo_menu .menu_items.hidden {
638 td.quick_repo_menu .menu_items.hidden {
639 display: none;
639 display: none;
640 }
640 }
641
641
642 .yui-dt-first th {
642 .yui-dt-first th {
643 text-align: left;
643 text-align: left;
644 }
644 }
645
645
646 /*
646 /*
647 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
647 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
648 Code licensed under the BSD License:
648 Code licensed under the BSD License:
649 http://developer.yahoo.com/yui/license.html
649 http://developer.yahoo.com/yui/license.html
650 version: 2.9.0
650 version: 2.9.0
651 */
651 */
652 .yui-skin-sam .yui-dt-mask {
652 .yui-skin-sam .yui-dt-mask {
653 position: absolute;
653 position: absolute;
654 z-index: 9500;
654 z-index: 9500;
655 }
655 }
656 .yui-dt-tmp {
656 .yui-dt-tmp {
657 position: absolute;
657 position: absolute;
658 left: -9000px;
658 left: -9000px;
659 }
659 }
660 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
660 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
661 .yui-dt-scrollable .yui-dt-hd {
661 .yui-dt-scrollable .yui-dt-hd {
662 overflow: hidden;
662 overflow: hidden;
663 position: relative;
663 position: relative;
664 }
664 }
665 .yui-dt-scrollable .yui-dt-bd thead tr,
665 .yui-dt-scrollable .yui-dt-bd thead tr,
666 .yui-dt-scrollable .yui-dt-bd thead th {
666 .yui-dt-scrollable .yui-dt-bd thead th {
667 position: absolute;
667 position: absolute;
668 left: -1500px;
668 left: -1500px;
669 }
669 }
670 .yui-dt-scrollable tbody { -moz-outline: 0 }
670 .yui-dt-scrollable tbody { -moz-outline: 0 }
671 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
671 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
672 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
672 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
673 .yui-dt-coltarget {
673 .yui-dt-coltarget {
674 position: absolute;
674 position: absolute;
675 z-index: 999;
675 z-index: 999;
676 }
676 }
677 .yui-dt-hd { zoom: 1 }
677 .yui-dt-hd { zoom: 1 }
678 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
678 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
679 .yui-dt-resizer {
679 .yui-dt-resizer {
680 position: absolute;
680 position: absolute;
681 right: 0;
681 right: 0;
682 bottom: 0;
682 bottom: 0;
683 height: 100%;
683 height: 100%;
684 cursor: e-resize;
684 cursor: e-resize;
685 cursor: col-resize;
685 cursor: col-resize;
686 background-color: #CCC;
686 background-color: #CCC;
687 opacity: 0;
687 opacity: 0;
688 filter: alpha(opacity=0);
688 filter: alpha(opacity=0);
689 }
689 }
690 .yui-dt-resizerproxy {
690 .yui-dt-resizerproxy {
691 visibility: hidden;
691 visibility: hidden;
692 position: absolute;
692 position: absolute;
693 z-index: 9000;
693 z-index: 9000;
694 background-color: #CCC;
694 background-color: #CCC;
695 opacity: 0;
695 opacity: 0;
696 filter: alpha(opacity=0);
696 filter: alpha(opacity=0);
697 }
697 }
698 th.yui-dt-hidden .yui-dt-liner,
698 th.yui-dt-hidden .yui-dt-liner,
699 td.yui-dt-hidden .yui-dt-liner,
699 td.yui-dt-hidden .yui-dt-liner,
700 th.yui-dt-hidden .yui-dt-resizer { display: none }
700 th.yui-dt-hidden .yui-dt-resizer { display: none }
701 .yui-dt-editor,
701 .yui-dt-editor,
702 .yui-dt-editor-shim {
702 .yui-dt-editor-shim {
703 position: absolute;
703 position: absolute;
704 z-index: 9000;
704 z-index: 9000;
705 }
705 }
706 .yui-skin-sam .yui-dt table {
706 .yui-skin-sam .yui-dt table {
707 margin: 0;
707 margin: 0;
708 padding: 0;
708 padding: 0;
709 font-family: arial;
709 font-family: arial;
710 font-size: inherit;
710 font-size: inherit;
711 border-collapse: separate;
711 border-collapse: separate;
712 *border-collapse: collapse;
712 *border-collapse: collapse;
713 border-spacing: 0;
713 border-spacing: 0;
714 border: 1px solid #7f7f7f;
714 border: 1px solid #7f7f7f;
715 }
715 }
716 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
716 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
717 .yui-skin-sam .yui-dt caption {
717 .yui-skin-sam .yui-dt caption {
718 color: #000;
718 color: #000;
719 font-size: 85%;
719 font-size: 85%;
720 font-weight: normal;
720 font-weight: normal;
721 font-style: italic;
721 font-style: italic;
722 line-height: 1;
722 line-height: 1;
723 padding: 1em 0;
723 padding: 1em 0;
724 text-align: center;
724 text-align: center;
725 }
725 }
726 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
726 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
727 .yui-skin-sam .yui-dt th,
727 .yui-skin-sam .yui-dt th,
728 .yui-skin-sam .yui-dt th a {
728 .yui-skin-sam .yui-dt th a {
729 font-weight: normal;
729 font-weight: normal;
730 text-decoration: none;
730 text-decoration: none;
731 color: #000;
731 color: #000;
732 vertical-align: bottom;
732 vertical-align: bottom;
733 }
733 }
734 .yui-skin-sam .yui-dt th {
734 .yui-skin-sam .yui-dt th {
735 margin: 0;
735 margin: 0;
736 padding: 0;
736 padding: 0;
737 border: 0;
737 border: 0;
738 border-right: 1px solid #cbcbcb;
738 border-right: 1px solid #cbcbcb;
739 }
739 }
740 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
740 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
741 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
741 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
742 .yui-skin-sam .yui-dt-liner {
742 .yui-skin-sam .yui-dt-liner {
743 margin: 0;
743 margin: 0;
744 padding: 0;
744 padding: 0;
745 }
745 }
746 .yui-skin-sam .yui-dt-coltarget {
746 .yui-skin-sam .yui-dt-coltarget {
747 width: 5px;
747 width: 5px;
748 background-color: red;
748 background-color: red;
749 }
749 }
750 .yui-skin-sam .yui-dt td {
750 .yui-skin-sam .yui-dt td {
751 margin: 0;
751 margin: 0;
752 padding: 0;
752 padding: 0;
753 border: 0;
753 border: 0;
754 border-right: 1px solid #cbcbcb;
754 border-right: 1px solid #cbcbcb;
755 text-align: left;
755 text-align: left;
756 }
756 }
757 .yui-skin-sam .yui-dt-list td { border-right: 0 }
757 .yui-skin-sam .yui-dt-list td { border-right: 0 }
758 .yui-skin-sam .yui-dt-resizer { width: 6px }
758 .yui-skin-sam .yui-dt-resizer { width: 6px }
759 .yui-skin-sam .yui-dt-mask {
759 .yui-skin-sam .yui-dt-mask {
760 background-color: #000;
760 background-color: #000;
761 opacity: .25;
761 opacity: .25;
762 filter: alpha(opacity=25);
762 filter: alpha(opacity=25);
763 }
763 }
764 .yui-skin-sam .yui-dt-message { background-color: #FFF }
764 .yui-skin-sam .yui-dt-message { background-color: #FFF }
765 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
765 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
766 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
766 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
767 border-left: 1px solid #7f7f7f;
767 border-left: 1px solid #7f7f7f;
768 border-top: 1px solid #7f7f7f;
768 border-top: 1px solid #7f7f7f;
769 border-right: 1px solid #7f7f7f;
769 border-right: 1px solid #7f7f7f;
770 }
770 }
771 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
771 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
772 border-left: 1px solid #7f7f7f;
772 border-left: 1px solid #7f7f7f;
773 border-bottom: 1px solid #7f7f7f;
773 border-bottom: 1px solid #7f7f7f;
774 border-right: 1px solid #7f7f7f;
774 border-right: 1px solid #7f7f7f;
775 background-color: #FFF;
775 background-color: #FFF;
776 }
776 }
777 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
777 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
778 .yui-skin-sam th.yui-dt-asc,
778 .yui-skin-sam th.yui-dt-asc,
779 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
779 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
780 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
780 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
781 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
781 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
782 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
782 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
783 tbody .yui-dt-editable { cursor: pointer }
783 tbody .yui-dt-editable { cursor: pointer }
784 .yui-dt-editor {
784 .yui-dt-editor {
785 text-align: left;
785 text-align: left;
786 background-color: #f2f2f2;
786 background-color: #f2f2f2;
787 border: 1px solid #808080;
787 border: 1px solid #808080;
788 padding: 6px;
788 padding: 6px;
789 }
789 }
790 .yui-dt-editor label {
790 .yui-dt-editor label {
791 padding-left: 4px;
791 padding-left: 4px;
792 padding-right: 6px;
792 padding-right: 6px;
793 }
793 }
794 .yui-dt-editor .yui-dt-button {
794 .yui-dt-editor .yui-dt-button {
795 padding-top: 6px;
795 padding-top: 6px;
796 text-align: right;
796 text-align: right;
797 }
797 }
798 .yui-dt-editor .yui-dt-button button {
798 .yui-dt-editor .yui-dt-button button {
799 background: url(../images/sprite.png) repeat-x 0 0;
799 background: url(../images/sprite.png) repeat-x 0 0;
800 border: 1px solid #999;
800 border: 1px solid #999;
801 width: 4em;
801 width: 4em;
802 height: 1.8em;
802 height: 1.8em;
803 margin-left: 6px;
803 margin-left: 6px;
804 }
804 }
805 .yui-dt-editor .yui-dt-button button.yui-dt-default {
805 .yui-dt-editor .yui-dt-button button.yui-dt-default {
806 background: url(../images/sprite.png) repeat-x 0 -1400px;
806 background: url(../images/sprite.png) repeat-x 0 -1400px;
807 background-color: #5584e0;
807 background-color: #5584e0;
808 border: 1px solid #304369;
808 border: 1px solid #304369;
809 color: #FFF;
809 color: #FFF;
810 }
810 }
811 .yui-dt-editor .yui-dt-button button:hover {
811 .yui-dt-editor .yui-dt-button button:hover {
812 background: url(../images/sprite.png) repeat-x 0 -1300px;
812 background: url(../images/sprite.png) repeat-x 0 -1300px;
813 color: #000;
813 color: #000;
814 }
814 }
815 .yui-dt-editor .yui-dt-button button:active {
815 .yui-dt-editor .yui-dt-button button:active {
816 background: url(../images/sprite.png) repeat-x 0 -1700px;
816 background: url(../images/sprite.png) repeat-x 0 -1700px;
817 color: #000;
817 color: #000;
818 }
818 }
819 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
819 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
820 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
820 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
821 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
821 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
822 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
822 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
823 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
823 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
824 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
824 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
825 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
825 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
826 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
826 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
827 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
827 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
828 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
828 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
829 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
829 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
830 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
830 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
831 .yui-skin-sam th.yui-dt-highlighted,
831 .yui-skin-sam th.yui-dt-highlighted,
832 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
832 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
833 .yui-skin-sam tr.yui-dt-highlighted,
833 .yui-skin-sam tr.yui-dt-highlighted,
834 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
834 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
835 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
835 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
836 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
836 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
837 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
837 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
838 cursor: pointer;
838 cursor: pointer;
839 background-color: #b2d2ff;
839 background-color: #b2d2ff;
840 }
840 }
841 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
841 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
842 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
842 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
843 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
843 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
844 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
844 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
845 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
845 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
846 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
846 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
847 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
847 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
848 cursor: pointer;
848 cursor: pointer;
849 background-color: #b2d2ff;
849 background-color: #b2d2ff;
850 }
850 }
851 .yui-skin-sam th.yui-dt-selected,
851 .yui-skin-sam th.yui-dt-selected,
852 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
852 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
853 .yui-skin-sam tr.yui-dt-selected td,
853 .yui-skin-sam tr.yui-dt-selected td,
854 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
854 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
855 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
855 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
856 background-color: #426fd9;
856 background-color: #426fd9;
857 color: #FFF;
857 color: #FFF;
858 }
858 }
859 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
859 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
860 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
860 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
861 background-color: #446cd7;
861 background-color: #446cd7;
862 color: #FFF;
862 color: #FFF;
863 }
863 }
864 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
864 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
865 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
865 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
866 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
866 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
867 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
867 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
868 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
868 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
869 background-color: #426fd9;
869 background-color: #426fd9;
870 color: #FFF;
870 color: #FFF;
871 }
871 }
872 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
872 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
873 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
873 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
874 background-color: #446cd7;
874 background-color: #446cd7;
875 color: #FFF;
875 color: #FFF;
876 }
876 }
877 .yui-skin-sam .yui-dt-paginator {
877 .yui-skin-sam .yui-dt-paginator {
878 display: block;
878 display: block;
879 margin: 6px 0;
879 margin: 6px 0;
880 white-space: nowrap;
880 white-space: nowrap;
881 }
881 }
882 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
882 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
883 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
883 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
884 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
884 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
885 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
885 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
886 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
886 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
887 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
887 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
888 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
888 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
889 .yui-skin-sam a.yui-dt-page {
889 .yui-skin-sam a.yui-dt-page {
890 border: 1px solid #cbcbcb;
890 border: 1px solid #cbcbcb;
891 padding: 2px 6px;
891 padding: 2px 6px;
892 text-decoration: none;
892 text-decoration: none;
893 background-color: #fff;
893 background-color: #fff;
894 }
894 }
895 .yui-skin-sam .yui-dt-selected {
895 .yui-skin-sam .yui-dt-selected {
896 border: 1px solid #fff;
896 border: 1px solid #fff;
897 background-color: #fff;
897 background-color: #fff;
898 }
898 }
899
899
900 #content #left {
900 #content #left {
901 left: 0;
901 left: 0;
902 width: 280px;
902 width: 280px;
903 position: absolute;
903 position: absolute;
904 }
904 }
905
905
906 #content #right {
906 #content #right {
907 margin: 0 60px 10px 290px;
907 margin: 0 60px 10px 290px;
908 }
908 }
909
909
910 #content div.box {
910 #content div.box {
911 clear: both;
911 clear: both;
912 background: #fff;
912 background: #fff;
913 margin: 0 0 10px;
913 margin: 0 0 10px;
914 padding: 0 0 10px;
914 padding: 0 0 10px;
915 -webkit-border-radius: 4px 4px 4px 4px;
915 -webkit-border-radius: 4px 4px 4px 4px;
916 -khtml-border-radius: 4px 4px 4px 4px;
916 -khtml-border-radius: 4px 4px 4px 4px;
917 border-radius: 4px 4px 4px 4px;
917 border-radius: 4px 4px 4px 4px;
918 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
918 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
919 }
919 }
920
920
921 #content div.box-left {
921 #content div.box-left {
922 width: 49%;
922 width: 49%;
923 clear: none;
923 clear: none;
924 float: left;
924 float: left;
925 margin: 0 0 10px;
925 margin: 0 0 10px;
926 }
926 }
927
927
928 #content div.box-right {
928 #content div.box-right {
929 width: 49%;
929 width: 49%;
930 clear: none;
930 clear: none;
931 float: right;
931 float: right;
932 margin: 0 0 10px;
932 margin: 0 0 10px;
933 }
933 }
934
934
935 #content div.box div.title {
935 #content div.box div.title {
936 clear: both;
936 clear: both;
937 overflow: hidden;
937 overflow: hidden;
938 background-color: #003B76;
938 background-color: #003B76;
939 background-repeat: repeat-x;
939 background-repeat: repeat-x;
940 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
940 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
941 background-image: -moz-linear-gradient(top, #003b76, #00376e);
941 background-image: -moz-linear-gradient(top, #003b76, #00376e);
942 background-image: -ms-linear-gradient(top, #003b76, #00376e);
942 background-image: -ms-linear-gradient(top, #003b76, #00376e);
943 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
943 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
944 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
944 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
945 background-image: -o-linear-gradient(top, #003b76, #00376e);
945 background-image: -o-linear-gradient(top, #003b76, #00376e);
946 background-image: linear-gradient(to bottom, #003b76, #00376e);
946 background-image: linear-gradient(to bottom, #003b76, #00376e);
947 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
947 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
948 margin: 0 0 20px;
948 margin: 0 0 20px;
949 padding: 0;
949 padding: 0;
950 border-radius: 4px 4px 0 0;
950 border-radius: 4px 4px 0 0;
951 }
951 }
952
952
953 #content div.box div.title h5 {
953 #content div.box div.title h5 {
954 float: left;
954 float: left;
955 border: none;
955 border: none;
956 color: #fff;
956 color: #fff;
957 text-transform: uppercase;
957 text-transform: uppercase;
958 margin: 0;
958 margin: 0;
959 padding: 11px 0 11px 10px;
959 padding: 11px 0 11px 10px;
960 }
960 }
961
961
962 #content div.box div.title .link-white {
962 #content div.box div.title .link-white {
963 color: #FFFFFF;
963 color: #FFFFFF;
964 }
964 }
965
965
966 #content div.box div.title .link-white.current {
966 #content div.box div.title .link-white.current {
967 color: #BFE3FF;
967 color: #BFE3FF;
968 }
968 }
969
969
970 #content div.box div.title ul.links li {
970 #content div.box div.title ul.links li {
971 list-style: none;
971 list-style: none;
972 float: left;
972 float: left;
973 margin: 0;
973 margin: 0;
974 padding: 0;
974 padding: 0;
975 }
975 }
976
976
977 #content div.box div.title ul.links li a {
977 #content div.box div.title ul.links li a {
978 border-left: 1px solid #316293;
978 border-left: 1px solid #316293;
979 color: #FFFFFF;
979 color: #FFFFFF;
980 display: block;
980 display: block;
981 float: left;
981 float: left;
982 font-size: 13px;
982 font-size: 13px;
983 font-weight: 700;
983 font-weight: 700;
984 height: 1%;
984 height: 1%;
985 margin: 0;
985 margin: 0;
986 padding: 11px 22px 12px;
986 padding: 11px 22px 12px;
987 text-decoration: none;
987 text-decoration: none;
988 }
988 }
989
989
990 #content div.box h1, #content div.box h2, #content div.box h3, #content div.box h4, #content div.box h5, #content div.box h6,
990 #content div.box h1, #content div.box h2, #content div.box h3, #content div.box h4, #content div.box h5, #content div.box h6,
991 #content div.box div.h1, #content div.box div.h2, #content div.box div.h3, #content div.box div.h4, #content div.box div.h5, #content div.box div.h6 {
991 #content div.box div.h1, #content div.box div.h2, #content div.box div.h3, #content div.box div.h4, #content div.box div.h5, #content div.box div.h6 {
992 clear: both;
992 clear: both;
993 overflow: hidden;
993 overflow: hidden;
994 border-bottom: 1px solid #DDD;
994 border-bottom: 1px solid #DDD;
995 margin: 10px 20px;
995 margin: 10px 20px;
996 padding: 0 0 15px;
996 padding: 0 0 15px;
997 }
997 }
998
998
999 #content div.box p {
999 #content div.box p {
1000 color: #5f5f5f;
1000 color: #5f5f5f;
1001 font-size: 12px;
1001 font-size: 12px;
1002 line-height: 150%;
1002 line-height: 150%;
1003 margin: 0 24px 10px;
1003 margin: 0 24px 10px;
1004 padding: 0;
1004 padding: 0;
1005 }
1005 }
1006
1006
1007 #content div.box blockquote {
1007 #content div.box blockquote {
1008 border-left: 4px solid #DDD;
1008 border-left: 4px solid #DDD;
1009 color: #5f5f5f;
1009 color: #5f5f5f;
1010 font-size: 11px;
1010 font-size: 11px;
1011 line-height: 150%;
1011 line-height: 150%;
1012 margin: 0 34px;
1012 margin: 0 34px;
1013 padding: 0 0 0 14px;
1013 padding: 0 0 0 14px;
1014 }
1014 }
1015
1015
1016 #content div.box blockquote p {
1016 #content div.box blockquote p {
1017 margin: 10px 0;
1017 margin: 10px 0;
1018 padding: 0;
1018 padding: 0;
1019 }
1019 }
1020
1020
1021 #content div.box dl {
1021 #content div.box dl {
1022 margin: 10px 0px;
1022 margin: 10px 0px;
1023 }
1023 }
1024
1024
1025 #content div.box dt {
1025 #content div.box dt {
1026 font-size: 12px;
1026 font-size: 12px;
1027 margin: 0;
1027 margin: 0;
1028 }
1028 }
1029
1029
1030 #content div.box dd {
1030 #content div.box dd {
1031 font-size: 12px;
1031 font-size: 12px;
1032 margin: 0;
1032 margin: 0;
1033 padding: 8px 0 8px 15px;
1033 padding: 8px 0 8px 15px;
1034 }
1034 }
1035
1035
1036 #content div.box li {
1036 #content div.box li {
1037 font-size: 12px;
1037 font-size: 12px;
1038 padding: 4px 0;
1038 padding: 4px 0;
1039 }
1039 }
1040
1040
1041 #content div.box ul.disc, #content div.box ul.circle {
1041 #content div.box ul.disc, #content div.box ul.circle {
1042 margin: 10px 24px 10px 38px;
1042 margin: 10px 24px 10px 38px;
1043 }
1043 }
1044
1044
1045 #content div.box ul.square {
1045 #content div.box ul.square {
1046 margin: 10px 24px 10px 40px;
1046 margin: 10px 24px 10px 40px;
1047 }
1047 }
1048
1048
1049 #content div.box img.left {
1049 #content div.box img.left {
1050 border: none;
1050 border: none;
1051 float: left;
1051 float: left;
1052 margin: 10px 10px 10px 0;
1052 margin: 10px 10px 10px 0;
1053 }
1053 }
1054
1054
1055 #content div.box img.right {
1055 #content div.box img.right {
1056 border: none;
1056 border: none;
1057 float: right;
1057 float: right;
1058 margin: 10px 0 10px 10px;
1058 margin: 10px 0 10px 10px;
1059 }
1059 }
1060
1060
1061 #content div.box div.messages {
1061 #content div.box div.messages {
1062 clear: both;
1062 clear: both;
1063 overflow: hidden;
1063 overflow: hidden;
1064 margin: 0 20px;
1064 margin: 0 20px;
1065 padding: 0;
1065 padding: 0;
1066 }
1066 }
1067
1067
1068 #content div.box div.message {
1068 #content div.box div.message {
1069 clear: both;
1069 clear: both;
1070 overflow: hidden;
1070 overflow: hidden;
1071 margin: 0;
1071 margin: 0;
1072 padding: 5px 0;
1072 padding: 5px 0;
1073 white-space: pre-wrap;
1073 white-space: pre-wrap;
1074 }
1074 }
1075 #content div.box div.expand {
1075 #content div.box div.expand {
1076 width: 110%;
1076 width: 110%;
1077 height: 14px;
1077 height: 14px;
1078 font-size: 10px;
1078 font-size: 10px;
1079 text-align: center;
1079 text-align: center;
1080 cursor: pointer;
1080 cursor: pointer;
1081 color: #666;
1081 color: #666;
1082
1082
1083 background: -webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,rgba(64,96,128,0.1)));
1083 background: -webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,rgba(64,96,128,0.1)));
1084 background: -webkit-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1084 background: -webkit-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1085 background: -moz-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1085 background: -moz-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1086 background: -o-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1086 background: -o-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1087 background: -ms-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1087 background: -ms-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1088 background: linear-gradient(to bottom,rgba(255,255,255,0),rgba(64,96,128,0.1));
1088 background: linear-gradient(to bottom,rgba(255,255,255,0),rgba(64,96,128,0.1));
1089
1089
1090 display: none;
1090 display: none;
1091 overflow: hidden;
1091 overflow: hidden;
1092 }
1092 }
1093 #content div.box div.expand .expandtext {
1093 #content div.box div.expand .expandtext {
1094 background-color: #ffffff;
1094 background-color: #ffffff;
1095 padding: 2px;
1095 padding: 2px;
1096 border-radius: 2px;
1096 border-radius: 2px;
1097 }
1097 }
1098
1098
1099 #content div.box div.message a {
1099 #content div.box div.message a {
1100 font-weight: 400 !important;
1100 font-weight: 400 !important;
1101 }
1101 }
1102
1102
1103 #content div.box div.message div.image {
1103 #content div.box div.message div.image {
1104 float: left;
1104 float: left;
1105 margin: 9px 0 0 5px;
1105 margin: 9px 0 0 5px;
1106 padding: 6px;
1106 padding: 6px;
1107 }
1107 }
1108
1108
1109 #content div.box div.message div.image img {
1109 #content div.box div.message div.image img {
1110 vertical-align: middle;
1110 vertical-align: middle;
1111 margin: 0;
1111 margin: 0;
1112 }
1112 }
1113
1113
1114 #content div.box div.message div.text {
1114 #content div.box div.message div.text {
1115 float: left;
1115 float: left;
1116 margin: 0;
1116 margin: 0;
1117 padding: 9px 6px;
1117 padding: 9px 6px;
1118 }
1118 }
1119
1119
1120 #content div.box div.message div.dismiss a {
1120 #content div.box div.message div.dismiss a {
1121 height: 16px;
1121 height: 16px;
1122 width: 16px;
1122 width: 16px;
1123 display: block;
1123 display: block;
1124 background: url("../images/icons/cross.png") no-repeat;
1124 background: url("../images/icons/cross.png") no-repeat;
1125 margin: 15px 14px 0 0;
1125 margin: 15px 14px 0 0;
1126 padding: 0;
1126 padding: 0;
1127 }
1127 }
1128
1128
1129 #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 {
1129 #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 {
1130 border: none;
1130 border: none;
1131 margin: 0;
1131 margin: 0;
1132 padding: 0;
1132 padding: 0;
1133 }
1133 }
1134
1134
1135 #content div.box div.message div.text span {
1135 #content div.box div.message div.text span {
1136 height: 1%;
1136 height: 1%;
1137 display: block;
1137 display: block;
1138 margin: 0;
1138 margin: 0;
1139 padding: 5px 0 0;
1139 padding: 5px 0 0;
1140 }
1140 }
1141
1141
1142 #content div.box div.message-error {
1142 #content div.box div.message-error {
1143 height: 1%;
1143 height: 1%;
1144 clear: both;
1144 clear: both;
1145 overflow: hidden;
1145 overflow: hidden;
1146 background: #FBE3E4;
1146 background: #FBE3E4;
1147 border: 1px solid #FBC2C4;
1147 border: 1px solid #FBC2C4;
1148 color: #860006;
1148 color: #860006;
1149 }
1149 }
1150
1150
1151 #content div.box div.message-error h6 {
1151 #content div.box div.message-error h6 {
1152 color: #860006;
1152 color: #860006;
1153 }
1153 }
1154
1154
1155 #content div.box div.message-warning {
1155 #content div.box div.message-warning {
1156 height: 1%;
1156 height: 1%;
1157 clear: both;
1157 clear: both;
1158 overflow: hidden;
1158 overflow: hidden;
1159 background: #FFF6BF;
1159 background: #FFF6BF;
1160 border: 1px solid #FFD324;
1160 border: 1px solid #FFD324;
1161 color: #5f5200;
1161 color: #5f5200;
1162 }
1162 }
1163
1163
1164 #content div.box div.message-warning h6 {
1164 #content div.box div.message-warning h6 {
1165 color: #5f5200;
1165 color: #5f5200;
1166 }
1166 }
1167
1167
1168 #content div.box div.message-notice {
1168 #content div.box div.message-notice {
1169 height: 1%;
1169 height: 1%;
1170 clear: both;
1170 clear: both;
1171 overflow: hidden;
1171 overflow: hidden;
1172 background: #8FBDE0;
1172 background: #8FBDE0;
1173 border: 1px solid #6BACDE;
1173 border: 1px solid #6BACDE;
1174 color: #003863;
1174 color: #003863;
1175 }
1175 }
1176
1176
1177 #content div.box div.message-notice h6 {
1177 #content div.box div.message-notice h6 {
1178 color: #003863;
1178 color: #003863;
1179 }
1179 }
1180
1180
1181 #content div.box div.message-success {
1181 #content div.box div.message-success {
1182 height: 1%;
1182 height: 1%;
1183 clear: both;
1183 clear: both;
1184 overflow: hidden;
1184 overflow: hidden;
1185 background: #E6EFC2;
1185 background: #E6EFC2;
1186 border: 1px solid #C6D880;
1186 border: 1px solid #C6D880;
1187 color: #4e6100;
1187 color: #4e6100;
1188 }
1188 }
1189
1189
1190 #content div.box div.message-success h6 {
1190 #content div.box div.message-success h6 {
1191 color: #4e6100;
1191 color: #4e6100;
1192 }
1192 }
1193
1193
1194 #content div.box div.form div.fields div.field {
1194 #content div.box div.form div.fields div.field {
1195 height: 1%;
1195 height: 1%;
1196 min-height: 12px;
1196 min-height: 12px;
1197 border-bottom: 1px solid #DDD;
1197 border-bottom: 1px solid #DDD;
1198 clear: both;
1198 clear: both;
1199 margin: 0;
1199 margin: 0;
1200 padding: 10px 0;
1200 padding: 10px 0;
1201 }
1201 }
1202
1202
1203 #content div.box div.form div.fields div.field-first {
1203 #content div.box div.form div.fields div.field-first {
1204 padding: 0 0 10px;
1204 padding: 0 0 10px;
1205 }
1205 }
1206
1206
1207 #content div.box div.form div.fields div.field-noborder {
1207 #content div.box div.form div.fields div.field-noborder {
1208 border-bottom: 0 !important;
1208 border-bottom: 0 !important;
1209 }
1209 }
1210
1210
1211 #content div.box div.form div.fields div.field span.error-message {
1211 #content div.box div.form div.fields div.field span.error-message {
1212 height: 1%;
1212 height: 1%;
1213 display: inline-block;
1213 display: inline-block;
1214 color: red;
1214 color: red;
1215 margin: 8px 0 0 4px;
1215 margin: 8px 0 0 4px;
1216 padding: 0;
1216 padding: 0;
1217 }
1217 }
1218
1218
1219 #content div.box div.form div.fields div.field span.success {
1219 #content div.box div.form div.fields div.field span.success {
1220 height: 1%;
1220 height: 1%;
1221 display: block;
1221 display: block;
1222 color: #316309;
1222 color: #316309;
1223 margin: 8px 0 0;
1223 margin: 8px 0 0;
1224 padding: 0;
1224 padding: 0;
1225 }
1225 }
1226
1226
1227 #content div.box div.form div.fields div.field div.label {
1227 #content div.box div.form div.fields div.field div.label {
1228 left: 70px;
1228 left: 70px;
1229 width: 155px;
1229 width: 155px;
1230 position: absolute;
1230 position: absolute;
1231 margin: 0;
1231 margin: 0;
1232 padding: 5px 0 0 0px;
1232 padding: 5px 0 0 0px;
1233 }
1233 }
1234
1234
1235 #content div.box div.form div.fields div.field div.label-summary {
1235 #content div.box div.form div.fields div.field div.label-summary {
1236 left: 30px;
1236 left: 30px;
1237 width: 155px;
1237 width: 155px;
1238 position: absolute;
1238 position: absolute;
1239 margin: 0;
1239 margin: 0;
1240 padding: 0px 0 0 0px;
1240 padding: 0px 0 0 0px;
1241 }
1241 }
1242
1242
1243 #content div.box-left div.form div.fields div.field div.label,
1243 #content div.box-left div.form div.fields div.field div.label,
1244 #content div.box-right div.form div.fields div.field div.label,
1244 #content div.box-right div.form div.fields div.field div.label,
1245 #content div.box-left div.form div.fields div.field div.label,
1245 #content div.box-left div.form div.fields div.field div.label,
1246 #content div.box-left div.form div.fields div.field div.label-summary,
1246 #content div.box-left div.form div.fields div.field div.label-summary,
1247 #content div.box-right div.form div.fields div.field div.label-summary,
1247 #content div.box-right div.form div.fields div.field div.label-summary,
1248 #content div.box-left div.form div.fields div.field div.label-summary {
1248 #content div.box-left div.form div.fields div.field div.label-summary {
1249 clear: both;
1249 clear: both;
1250 overflow: hidden;
1250 overflow: hidden;
1251 left: 0;
1251 left: 0;
1252 width: auto;
1252 width: auto;
1253 position: relative;
1253 position: relative;
1254 margin: 0;
1254 margin: 0;
1255 padding: 0 0 8px;
1255 padding: 0 0 8px;
1256 }
1256 }
1257
1257
1258 #content div.box div.form div.fields div.field div.label-select {
1258 #content div.box div.form div.fields div.field div.label-select {
1259 padding: 5px 0 0 5px;
1259 padding: 5px 0 0 5px;
1260 }
1260 }
1261
1261
1262 #content div.box-left div.form div.fields div.field div.label-select,
1262 #content div.box-left div.form div.fields div.field div.label-select,
1263 #content div.box-right div.form div.fields div.field div.label-select {
1263 #content div.box-right div.form div.fields div.field div.label-select {
1264 padding: 0 0 8px;
1264 padding: 0 0 8px;
1265 }
1265 }
1266
1266
1267 #content div.box-left div.form div.fields div.field div.label-textarea,
1267 #content div.box-left div.form div.fields div.field div.label-textarea,
1268 #content div.box-right div.form div.fields div.field div.label-textarea {
1268 #content div.box-right div.form div.fields div.field div.label-textarea {
1269 padding: 0 0 8px !important;
1269 padding: 0 0 8px !important;
1270 }
1270 }
1271
1271
1272 #content div.box div.form div.fields div.field div.label label, div.label label {
1272 #content div.box div.form div.fields div.field div.label label, div.label label {
1273 color: #393939;
1273 color: #393939;
1274 font-weight: 700;
1274 font-weight: 700;
1275 }
1275 }
1276 #content div.box div.form div.fields div.field div.label label, div.label-summary label {
1276 #content div.box div.form div.fields div.field div.label label, div.label-summary label {
1277 color: #393939;
1277 color: #393939;
1278 font-weight: 700;
1278 font-weight: 700;
1279 }
1279 }
1280 #content div.box div.form div.fields div.field div.input {
1280 #content div.box div.form div.fields div.field div.input {
1281 margin: 0 0 0 200px;
1281 margin: 0 0 0 200px;
1282 }
1282 }
1283
1283
1284 #content div.box div.form div.fields div.field div.input.summary {
1284 #content div.box div.form div.fields div.field div.input.summary {
1285 margin: 0 0 0 110px;
1285 margin: 0 0 0 110px;
1286 }
1286 }
1287 #content div.box div.form div.fields div.field div.input.summary-short {
1287 #content div.box div.form div.fields div.field div.input.summary-short {
1288 margin: 0 0 0 110px;
1288 margin: 0 0 0 110px;
1289 }
1289 }
1290 #content div.box div.form div.fields div.field div.file {
1290 #content div.box div.form div.fields div.field div.file {
1291 margin: 0 0 0 200px;
1291 margin: 0 0 0 200px;
1292 }
1292 }
1293
1293
1294 #content div.box-left div.form div.fields div.field div.input, #content div.box-right div.form div.fields div.field div.input {
1294 #content div.box-left div.form div.fields div.field div.input, #content div.box-right div.form div.fields div.field div.input {
1295 margin: 0 0 0 0px;
1295 margin: 0 0 0 0px;
1296 }
1296 }
1297
1297
1298 #content div.box div.form div.fields div.field div.input input,
1298 #content div.box div.form div.fields div.field div.input input,
1299 .reviewer_ac input {
1299 .reviewer_ac input {
1300 background: #FFF;
1300 background: #FFF;
1301 border-top: 1px solid #b3b3b3;
1301 border-top: 1px solid #b3b3b3;
1302 border-left: 1px solid #b3b3b3;
1302 border-left: 1px solid #b3b3b3;
1303 border-right: 1px solid #eaeaea;
1303 border-right: 1px solid #eaeaea;
1304 border-bottom: 1px solid #eaeaea;
1304 border-bottom: 1px solid #eaeaea;
1305 color: #000;
1305 color: #000;
1306 font-size: 11px;
1306 font-size: 11px;
1307 margin: 0;
1307 margin: 0;
1308 padding: 7px 7px 6px;
1308 padding: 7px 7px 6px;
1309 }
1309 }
1310
1310
1311 #content div.box div.form div.fields div.field div.input input#clone_url,
1311 #content div.box div.form div.fields div.field div.input input#clone_url,
1312 #content div.box div.form div.fields div.field div.input input#clone_url_id
1312 #content div.box div.form div.fields div.field div.input input#clone_url_id
1313 {
1313 {
1314 font-size: 16px;
1314 font-size: 16px;
1315 padding: 2px;
1315 padding: 2px;
1316 }
1316 }
1317
1317
1318 #content div.box div.form div.fields div.field div.file input {
1318 #content div.box div.form div.fields div.field div.file input {
1319 background: none repeat scroll 0 0 #FFFFFF;
1319 background: none repeat scroll 0 0 #FFFFFF;
1320 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1320 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1321 border-style: solid;
1321 border-style: solid;
1322 border-width: 1px;
1322 border-width: 1px;
1323 color: #000000;
1323 color: #000000;
1324 font-size: 11px;
1324 font-size: 11px;
1325 margin: 0;
1325 margin: 0;
1326 padding: 7px 7px 6px;
1326 padding: 7px 7px 6px;
1327 }
1327 }
1328
1328
1329 input.disabled {
1329 input.disabled {
1330 background-color: #F5F5F5 !important;
1330 background-color: #F5F5F5 !important;
1331 }
1331 }
1332 #content div.box div.form div.fields div.field div.input input.small {
1332 #content div.box div.form div.fields div.field div.input input.small {
1333 width: 30%;
1333 width: 30%;
1334 }
1334 }
1335
1335
1336 #content div.box div.form div.fields div.field div.input input.medium {
1336 #content div.box div.form div.fields div.field div.input input.medium {
1337 width: 55%;
1337 width: 55%;
1338 }
1338 }
1339
1339
1340 #content div.box div.form div.fields div.field div.input input.large {
1340 #content div.box div.form div.fields div.field div.input input.large {
1341 width: 85%;
1341 width: 85%;
1342 }
1342 }
1343
1343
1344 #content div.box div.form div.fields div.field div.input input.date {
1344 #content div.box div.form div.fields div.field div.input input.date {
1345 width: 177px;
1345 width: 177px;
1346 }
1346 }
1347
1347
1348 #content div.box div.form div.fields div.field div.input input.button {
1348 #content div.box div.form div.fields div.field div.input input.button {
1349 background: #D4D0C8;
1349 background: #D4D0C8;
1350 border-top: 1px solid #FFF;
1350 border-top: 1px solid #FFF;
1351 border-left: 1px solid #FFF;
1351 border-left: 1px solid #FFF;
1352 border-right: 1px solid #404040;
1352 border-right: 1px solid #404040;
1353 border-bottom: 1px solid #404040;
1353 border-bottom: 1px solid #404040;
1354 color: #000;
1354 color: #000;
1355 margin: 0;
1355 margin: 0;
1356 padding: 4px 8px;
1356 padding: 4px 8px;
1357 }
1357 }
1358
1358
1359 #content div.box div.form div.fields div.field div.textarea {
1359 #content div.box div.form div.fields div.field div.textarea {
1360 border-top: 1px solid #b3b3b3;
1360 border-top: 1px solid #b3b3b3;
1361 border-left: 1px solid #b3b3b3;
1361 border-left: 1px solid #b3b3b3;
1362 border-right: 1px solid #eaeaea;
1362 border-right: 1px solid #eaeaea;
1363 border-bottom: 1px solid #eaeaea;
1363 border-bottom: 1px solid #eaeaea;
1364 margin: 0 0 0 200px;
1364 margin: 0 0 0 200px;
1365 padding: 10px;
1365 padding: 10px;
1366 }
1366 }
1367
1367
1368 #content div.box div.form div.fields div.field div.textarea-editor {
1368 #content div.box div.form div.fields div.field div.textarea-editor {
1369 border: 1px solid #ddd;
1369 border: 1px solid #ddd;
1370 padding: 0;
1370 padding: 0;
1371 }
1371 }
1372
1372
1373 #content div.box div.form div.fields div.field div.textarea textarea {
1373 #content div.box div.form div.fields div.field div.textarea textarea {
1374 width: 100%;
1374 width: 100%;
1375 height: 220px;
1375 height: 220px;
1376 overflow: hidden;
1376 overflow: hidden;
1377 background: #FFF;
1377 background: #FFF;
1378 color: #000;
1378 color: #000;
1379 font-size: 11px;
1379 font-size: 11px;
1380 outline: none;
1380 outline: none;
1381 border-width: 0;
1381 border-width: 0;
1382 margin: 0;
1382 margin: 0;
1383 padding: 0;
1383 padding: 0;
1384 }
1384 }
1385
1385
1386 #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 {
1386 #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 {
1387 width: 100%;
1387 width: 100%;
1388 height: 100px;
1388 height: 100px;
1389 }
1389 }
1390
1390
1391 #content div.box div.form div.fields div.field div.textarea table {
1391 #content div.box div.form div.fields div.field div.textarea table {
1392 width: 100%;
1392 width: 100%;
1393 border: none;
1393 border: none;
1394 margin: 0;
1394 margin: 0;
1395 padding: 0;
1395 padding: 0;
1396 }
1396 }
1397
1397
1398 #content div.box div.form div.fields div.field div.textarea table td {
1398 #content div.box div.form div.fields div.field div.textarea table td {
1399 background: #DDD;
1399 background: #DDD;
1400 border: none;
1400 border: none;
1401 padding: 0;
1401 padding: 0;
1402 }
1402 }
1403
1403
1404 #content div.box div.form div.fields div.field div.textarea table td table {
1404 #content div.box div.form div.fields div.field div.textarea table td table {
1405 width: auto;
1405 width: auto;
1406 border: none;
1406 border: none;
1407 margin: 0;
1407 margin: 0;
1408 padding: 0;
1408 padding: 0;
1409 }
1409 }
1410
1410
1411 #content div.box div.form div.fields div.field div.textarea table td table td {
1411 #content div.box div.form div.fields div.field div.textarea table td table td {
1412 font-size: 11px;
1412 font-size: 11px;
1413 padding: 5px 5px 5px 0;
1413 padding: 5px 5px 5px 0;
1414 }
1414 }
1415
1415
1416 #content div.box div.form div.fields div.field input[type=text]:focus,
1416 #content div.box div.form div.fields div.field input[type=text]:focus,
1417 #content div.box div.form div.fields div.field input[type=password]:focus,
1417 #content div.box div.form div.fields div.field input[type=password]:focus,
1418 #content div.box div.form div.fields div.field input[type=file]:focus,
1418 #content div.box div.form div.fields div.field input[type=file]:focus,
1419 #content div.box div.form div.fields div.field textarea:focus,
1419 #content div.box div.form div.fields div.field textarea:focus,
1420 #content div.box div.form div.fields div.field select:focus,
1420 #content div.box div.form div.fields div.field select:focus,
1421 .reviewer_ac input:focus {
1421 .reviewer_ac input:focus {
1422 background: #f6f6f6;
1422 background: #f6f6f6;
1423 border-color: #666;
1423 border-color: #666;
1424 }
1424 }
1425
1425
1426 .reviewer_ac {
1426 .reviewer_ac {
1427 padding: 10px
1427 padding: 10px
1428 }
1428 }
1429
1429
1430 div.form div.fields div.field div.button {
1430 div.form div.fields div.field div.button {
1431 margin: 0;
1431 margin: 0;
1432 padding: 0 0 0 8px;
1432 padding: 0 0 0 8px;
1433 }
1433 }
1434 #content div.box table.noborder {
1434 #content div.box table.noborder {
1435 border: 1px solid transparent;
1435 border: 1px solid transparent;
1436 }
1436 }
1437
1437
1438 #content div.box table {
1438 #content div.box table {
1439 width: 100%;
1439 width: 100%;
1440 border-collapse: separate;
1440 border-collapse: separate;
1441 margin: 0;
1441 margin: 0;
1442 padding: 0;
1442 padding: 0;
1443 border: 1px solid #eee;
1443 border: 1px solid #eee;
1444 -webkit-border-radius: 4px;
1444 -webkit-border-radius: 4px;
1445 border-radius: 4px;
1445 border-radius: 4px;
1446 }
1446 }
1447
1447
1448 #content div.box table th {
1448 #content div.box table th {
1449 background: #eee;
1449 background: #eee;
1450 border-bottom: 1px solid #ddd;
1450 border-bottom: 1px solid #ddd;
1451 padding: 5px 0px 5px 5px;
1451 padding: 5px 0px 5px 5px;
1452 text-align: left;
1452 text-align: left;
1453 }
1453 }
1454
1454
1455 #content div.box table th.left {
1455 #content div.box table th.left {
1456 text-align: left;
1456 text-align: left;
1457 }
1457 }
1458
1458
1459 #content div.box table th.right {
1459 #content div.box table th.right {
1460 text-align: right;
1460 text-align: right;
1461 }
1461 }
1462
1462
1463 #content div.box table th.center {
1463 #content div.box table th.center {
1464 text-align: center;
1464 text-align: center;
1465 }
1465 }
1466
1466
1467 #content div.box table th.selected {
1467 #content div.box table th.selected {
1468 vertical-align: middle;
1468 vertical-align: middle;
1469 padding: 0;
1469 padding: 0;
1470 }
1470 }
1471
1471
1472 #content div.box table td {
1472 #content div.box table td {
1473 background: #fff;
1473 background: #fff;
1474 border-bottom: 1px solid #cdcdcd;
1474 border-bottom: 1px solid #cdcdcd;
1475 vertical-align: middle;
1475 vertical-align: middle;
1476 padding: 5px;
1476 padding: 5px;
1477 }
1477 }
1478
1478
1479 #content div.box table tr.selected td {
1479 #content div.box table tr.selected td {
1480 background: #FFC;
1480 background: #FFC;
1481 }
1481 }
1482
1482
1483 #content div.box table td.selected {
1483 #content div.box table td.selected {
1484 width: 3%;
1484 width: 3%;
1485 text-align: center;
1485 text-align: center;
1486 vertical-align: middle;
1486 vertical-align: middle;
1487 padding: 0;
1487 padding: 0;
1488 }
1488 }
1489
1489
1490 #content div.box table td.action {
1490 #content div.box table td.action {
1491 width: 45%;
1491 width: 45%;
1492 text-align: left;
1492 text-align: left;
1493 }
1493 }
1494
1494
1495 #content div.box table td.date {
1495 #content div.box table td.date {
1496 width: 33%;
1496 width: 33%;
1497 text-align: center;
1497 text-align: center;
1498 }
1498 }
1499
1499
1500 #content div.box div.action {
1500 #content div.box div.action {
1501 float: right;
1501 float: right;
1502 background: #FFF;
1502 background: #FFF;
1503 text-align: right;
1503 text-align: right;
1504 margin: 10px 0 0;
1504 margin: 10px 0 0;
1505 padding: 0;
1505 padding: 0;
1506 }
1506 }
1507
1507
1508 #content div.box div.action select {
1508 #content div.box div.action select {
1509 font-size: 11px;
1509 font-size: 11px;
1510 margin: 0;
1510 margin: 0;
1511 }
1511 }
1512
1512
1513 #content div.box div.action .ui-selectmenu {
1513 #content div.box div.action .ui-selectmenu {
1514 margin: 0;
1514 margin: 0;
1515 padding: 0;
1515 padding: 0;
1516 }
1516 }
1517
1517
1518 #content div.box div.pagination {
1518 #content div.box div.pagination {
1519 height: 1%;
1519 height: 1%;
1520 clear: both;
1520 clear: both;
1521 overflow: hidden;
1521 overflow: hidden;
1522 margin: 10px 0 0;
1522 margin: 10px 0 0;
1523 padding: 0;
1523 padding: 0;
1524 }
1524 }
1525
1525
1526 #content div.box div.pagination ul.pager {
1526 #content div.box div.pagination ul.pager {
1527 float: right;
1527 float: right;
1528 text-align: right;
1528 text-align: right;
1529 margin: 0;
1529 margin: 0;
1530 padding: 0;
1530 padding: 0;
1531 }
1531 }
1532
1532
1533 #content div.box div.pagination ul.pager li {
1533 #content div.box div.pagination ul.pager li {
1534 height: 1%;
1534 height: 1%;
1535 float: left;
1535 float: left;
1536 list-style: none;
1536 list-style: none;
1537 background: #ebebeb url("../images/pager.png") repeat-x;
1537 background: #ebebeb url("../images/pager.png") repeat-x;
1538 border-top: 1px solid #dedede;
1538 border-top: 1px solid #dedede;
1539 border-left: 1px solid #cfcfcf;
1539 border-left: 1px solid #cfcfcf;
1540 border-right: 1px solid #c4c4c4;
1540 border-right: 1px solid #c4c4c4;
1541 border-bottom: 1px solid #c4c4c4;
1541 border-bottom: 1px solid #c4c4c4;
1542 color: #4A4A4A;
1542 color: #4A4A4A;
1543 font-weight: 700;
1543 font-weight: 700;
1544 margin: 0 0 0 4px;
1544 margin: 0 0 0 4px;
1545 padding: 0;
1545 padding: 0;
1546 }
1546 }
1547
1547
1548 #content div.box div.pagination ul.pager li.separator {
1548 #content div.box div.pagination ul.pager li.separator {
1549 padding: 6px;
1549 padding: 6px;
1550 }
1550 }
1551
1551
1552 #content div.box div.pagination ul.pager li.current {
1552 #content div.box div.pagination ul.pager li.current {
1553 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1553 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1554 border-top: 1px solid #ccc;
1554 border-top: 1px solid #ccc;
1555 border-left: 1px solid #bebebe;
1555 border-left: 1px solid #bebebe;
1556 border-right: 1px solid #b1b1b1;
1556 border-right: 1px solid #b1b1b1;
1557 border-bottom: 1px solid #afafaf;
1557 border-bottom: 1px solid #afafaf;
1558 color: #515151;
1558 color: #515151;
1559 padding: 6px;
1559 padding: 6px;
1560 }
1560 }
1561
1561
1562 #content div.box div.pagination ul.pager li a {
1562 #content div.box div.pagination ul.pager li a {
1563 height: 1%;
1563 height: 1%;
1564 display: block;
1564 display: block;
1565 float: left;
1565 float: left;
1566 color: #515151;
1566 color: #515151;
1567 text-decoration: none;
1567 text-decoration: none;
1568 margin: 0;
1568 margin: 0;
1569 padding: 6px;
1569 padding: 6px;
1570 }
1570 }
1571
1571
1572 #content div.box div.pagination ul.pager li a:hover, #content div.box div.pagination ul.pager li a:active {
1572 #content div.box div.pagination ul.pager li a:hover, #content div.box div.pagination ul.pager li a:active {
1573 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1573 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1574 border-top: 1px solid #ccc;
1574 border-top: 1px solid #ccc;
1575 border-left: 1px solid #bebebe;
1575 border-left: 1px solid #bebebe;
1576 border-right: 1px solid #b1b1b1;
1576 border-right: 1px solid #b1b1b1;
1577 border-bottom: 1px solid #afafaf;
1577 border-bottom: 1px solid #afafaf;
1578 margin: -1px;
1578 margin: -1px;
1579 }
1579 }
1580
1580
1581 #content div.box div.pagination-wh {
1581 #content div.box div.pagination-wh {
1582 height: 1%;
1582 height: 1%;
1583 clear: both;
1583 clear: both;
1584 overflow: hidden;
1584 overflow: hidden;
1585 text-align: right;
1585 text-align: right;
1586 margin: 10px 0 0;
1586 margin: 10px 0 0;
1587 padding: 0;
1587 padding: 0;
1588 }
1588 }
1589
1589
1590 #content div.box div.pagination-right {
1590 #content div.box div.pagination-right {
1591 float: right;
1591 float: right;
1592 }
1592 }
1593
1593
1594 #content div.box div.pagination-wh a,
1594 #content div.box div.pagination-wh a,
1595 #content div.box div.pagination-wh span.pager_dotdot,
1595 #content div.box div.pagination-wh span.pager_dotdot,
1596 #content div.box div.pagination-wh span.yui-pg-previous,
1596 #content div.box div.pagination-wh span.yui-pg-previous,
1597 #content div.box div.pagination-wh span.yui-pg-last,
1597 #content div.box div.pagination-wh span.yui-pg-last,
1598 #content div.box div.pagination-wh span.yui-pg-next,
1598 #content div.box div.pagination-wh span.yui-pg-next,
1599 #content div.box div.pagination-wh span.yui-pg-first {
1599 #content div.box div.pagination-wh span.yui-pg-first {
1600 height: 1%;
1600 height: 1%;
1601 float: left;
1601 float: left;
1602 background: #ebebeb url("../images/pager.png") repeat-x;
1602 background: #ebebeb url("../images/pager.png") repeat-x;
1603 border-top: 1px solid #dedede;
1603 border-top: 1px solid #dedede;
1604 border-left: 1px solid #cfcfcf;
1604 border-left: 1px solid #cfcfcf;
1605 border-right: 1px solid #c4c4c4;
1605 border-right: 1px solid #c4c4c4;
1606 border-bottom: 1px solid #c4c4c4;
1606 border-bottom: 1px solid #c4c4c4;
1607 color: #4A4A4A;
1607 color: #4A4A4A;
1608 font-weight: 700;
1608 font-weight: 700;
1609 margin: 0 0 0 4px;
1609 margin: 0 0 0 4px;
1610 padding: 6px;
1610 padding: 6px;
1611 }
1611 }
1612
1612
1613 #content div.box div.pagination-wh span.pager_curpage {
1613 #content div.box div.pagination-wh span.pager_curpage {
1614 height: 1%;
1614 height: 1%;
1615 float: left;
1615 float: left;
1616 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1616 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1617 border-top: 1px solid #ccc;
1617 border-top: 1px solid #ccc;
1618 border-left: 1px solid #bebebe;
1618 border-left: 1px solid #bebebe;
1619 border-right: 1px solid #b1b1b1;
1619 border-right: 1px solid #b1b1b1;
1620 border-bottom: 1px solid #afafaf;
1620 border-bottom: 1px solid #afafaf;
1621 color: #515151;
1621 color: #515151;
1622 font-weight: 700;
1622 font-weight: 700;
1623 margin: 0 0 0 4px;
1623 margin: 0 0 0 4px;
1624 padding: 6px;
1624 padding: 6px;
1625 }
1625 }
1626
1626
1627 #content div.box div.pagination-wh a:hover, #content div.box div.pagination-wh a:active {
1627 #content div.box div.pagination-wh a:hover, #content div.box div.pagination-wh a:active {
1628 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1628 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1629 border-top: 1px solid #ccc;
1629 border-top: 1px solid #ccc;
1630 border-left: 1px solid #bebebe;
1630 border-left: 1px solid #bebebe;
1631 border-right: 1px solid #b1b1b1;
1631 border-right: 1px solid #b1b1b1;
1632 border-bottom: 1px solid #afafaf;
1632 border-bottom: 1px solid #afafaf;
1633 text-decoration: none;
1633 text-decoration: none;
1634 }
1634 }
1635
1635
1636 #content div.box div.traffic div.legend {
1636 #content div.box div.traffic div.legend {
1637 clear: both;
1637 clear: both;
1638 overflow: hidden;
1638 overflow: hidden;
1639 border-bottom: 1px solid #ddd;
1639 border-bottom: 1px solid #ddd;
1640 margin: 0 0 10px;
1640 margin: 0 0 10px;
1641 padding: 0 0 10px;
1641 padding: 0 0 10px;
1642 }
1642 }
1643
1643
1644 #content div.box div.traffic div.legend h6 {
1644 #content div.box div.traffic div.legend h6 {
1645 float: left;
1645 float: left;
1646 border: none;
1646 border: none;
1647 margin: 0;
1647 margin: 0;
1648 padding: 0;
1648 padding: 0;
1649 }
1649 }
1650
1650
1651 #content div.box div.traffic div.legend li {
1651 #content div.box div.traffic div.legend li {
1652 list-style: none;
1652 list-style: none;
1653 float: left;
1653 float: left;
1654 font-size: 11px;
1654 font-size: 11px;
1655 margin: 0;
1655 margin: 0;
1656 padding: 0 8px 0 4px;
1656 padding: 0 8px 0 4px;
1657 }
1657 }
1658
1658
1659 #content div.box div.traffic div.legend li.visits {
1659 #content div.box div.traffic div.legend li.visits {
1660 border-left: 12px solid #edc240;
1660 border-left: 12px solid #edc240;
1661 }
1661 }
1662
1662
1663 #content div.box div.traffic div.legend li.pageviews {
1663 #content div.box div.traffic div.legend li.pageviews {
1664 border-left: 12px solid #afd8f8;
1664 border-left: 12px solid #afd8f8;
1665 }
1665 }
1666
1666
1667 #content div.box div.traffic table {
1667 #content div.box div.traffic table {
1668 width: auto;
1668 width: auto;
1669 }
1669 }
1670
1670
1671 #content div.box div.traffic table td {
1671 #content div.box div.traffic table td {
1672 background: transparent;
1672 background: transparent;
1673 border: none;
1673 border: none;
1674 padding: 2px 3px 3px;
1674 padding: 2px 3px 3px;
1675 }
1675 }
1676
1676
1677 #content div.box div.traffic table td.legendLabel {
1677 #content div.box div.traffic table td.legendLabel {
1678 padding: 0 3px 2px;
1678 padding: 0 3px 2px;
1679 }
1679 }
1680
1680
1681 #content div.box #summary {
1681 #content div.box #summary {
1682 margin-right: 200px;
1682 margin-right: 200px;
1683 }
1683 }
1684
1684
1685 #summary-menu-stats {
1685 #summary-menu-stats {
1686 float: left;
1686 float: left;
1687 width: 180px;
1687 width: 180px;
1688 position: absolute;
1688 position: absolute;
1689 top: 0;
1689 top: 0;
1690 right: 0;
1690 right: 0;
1691 }
1691 }
1692
1692
1693 #summary-menu-stats ul {
1693 #summary-menu-stats ul {
1694 margin: 0 10px;
1694 margin: 0 10px;
1695 display: block;
1695 display: block;
1696 background-color: #f9f9f9;
1696 background-color: #f9f9f9;
1697 border: 1px solid #d1d1d1;
1697 border: 1px solid #d1d1d1;
1698 border-radius: 4px;
1698 border-radius: 4px;
1699 }
1699 }
1700
1700
1701 #content #summary-menu-stats li {
1701 #content #summary-menu-stats li {
1702 border-top: 1px solid #d1d1d1;
1702 border-top: 1px solid #d1d1d1;
1703 padding: 0;
1703 padding: 0;
1704 }
1704 }
1705
1705
1706 #content #summary-menu-stats li:hover {
1706 #content #summary-menu-stats li:hover {
1707 background: #f0f0f0;
1707 background: #f0f0f0;
1708 }
1708 }
1709
1709
1710 #content #summary-menu-stats li:first-child {
1710 #content #summary-menu-stats li:first-child {
1711 border-top: none;
1711 border-top: none;
1712 }
1712 }
1713
1713
1714 #summary-menu-stats a.followers { background-image: url('../images/icons/heart.png')}
1714 #summary-menu-stats a.followers { background-image: url('../images/icons/heart.png')}
1715 #summary-menu-stats a.forks { background-image: url('../images/icons/arrow_divide.png')}
1715 #summary-menu-stats a.forks { background-image: url('../images/icons/arrow_divide.png')}
1716 #summary-menu-stats a.settings { background-image: url('../images/icons/cog_edit.png')}
1716 #summary-menu-stats a.settings { background-image: url('../images/icons/cog_edit.png')}
1717 #summary-menu-stats a.feed { background-image: url('../images/icons/rss_16.png')}
1717 #summary-menu-stats a.feed { background-image: url('../images/icons/rss_16.png')}
1718 #summary-menu-stats a.repo-size { background-image: url('../images/icons/server.png')}
1718 #summary-menu-stats a.repo-size { background-image: url('../images/icons/server.png')}
1719
1719
1720 #summary-menu-stats a {
1720 #summary-menu-stats a {
1721 display: block;
1721 display: block;
1722 padding: 12px 30px;
1722 padding: 12px 30px;
1723 background-repeat: no-repeat;
1723 background-repeat: no-repeat;
1724 background-position: 10px 50%;
1724 background-position: 10px 50%;
1725 padding-right: 10px;
1725 padding-right: 10px;
1726 }
1726 }
1727
1727
1728
1728
1729 #repo_size_2 {
1729 #repo_size_2 {
1730 margin-left: 30px;
1730 margin-left: 30px;
1731 display: block;
1731 display: block;
1732 padding-right: 10px;
1732 padding-right: 10px;
1733 padding-bottom: 7px;
1733 padding-bottom: 7px;
1734 }
1734 }
1735
1735
1736 #summary-menu-stats a:hover {
1736 #summary-menu-stats a:hover {
1737 text-decoration: none;
1737 text-decoration: none;
1738 }
1738 }
1739
1739
1740 #summary-menu-stats a span {
1740 #summary-menu-stats a span {
1741 background-color: #DEDEDE;
1741 background-color: #DEDEDE;
1742 color: 888 !important;
1742 color: 888 !important;
1743 border-radius: 4px;
1743 border-radius: 4px;
1744 padding: 2px 4px;
1744 padding: 2px 4px;
1745 font-size: 10px;
1745 font-size: 10px;
1746 }
1746 }
1747
1747
1748 #summary .metatag {
1748 #summary .metatag {
1749 display: inline-block;
1749 display: inline-block;
1750 padding: 3px 5px;
1750 padding: 3px 5px;
1751 margin-bottom: 3px;
1751 margin-bottom: 3px;
1752 margin-right: 1px;
1752 margin-right: 1px;
1753 border-radius: 5px;
1753 border-radius: 5px;
1754 }
1754 }
1755
1755
1756 #content div.box #summary p {
1756 #content div.box #summary p {
1757 margin-bottom: -5px;
1757 margin-bottom: -5px;
1758 width: 600px;
1758 width: 600px;
1759 white-space: pre-wrap;
1759 white-space: pre-wrap;
1760 }
1760 }
1761
1761
1762 #content div.box #summary p:last-child {
1762 #content div.box #summary p:last-child {
1763 margin-bottom: 9px;
1763 margin-bottom: 9px;
1764 }
1764 }
1765
1765
1766 #content div.box #summary p:first-of-type {
1766 #content div.box #summary p:first-of-type {
1767 margin-top: 9px;
1767 margin-top: 9px;
1768 }
1768 }
1769
1769
1770 .metatag {
1770 .metatag {
1771 display: inline-block;
1771 display: inline-block;
1772 margin-right: 1px;
1772 margin-right: 1px;
1773 -webkit-border-radius: 4px 4px 4px 4px;
1773 -webkit-border-radius: 4px 4px 4px 4px;
1774 -khtml-border-radius: 4px 4px 4px 4px;
1774 -khtml-border-radius: 4px 4px 4px 4px;
1775 border-radius: 4px 4px 4px 4px;
1775 border-radius: 4px 4px 4px 4px;
1776
1776
1777 border: solid 1px #9CF;
1777 border: solid 1px #9CF;
1778 padding: 2px 3px 2px 3px !important;
1778 padding: 2px 3px 2px 3px !important;
1779 background-color: #DEF;
1779 background-color: #DEF;
1780 }
1780 }
1781
1781
1782 .metatag[tag="dead"] {
1782 .metatag[tag="dead"] {
1783 background-color: #E44;
1783 background-color: #E44;
1784 }
1784 }
1785
1785
1786 .metatag[tag="stale"] {
1786 .metatag[tag="stale"] {
1787 background-color: #EA4;
1787 background-color: #EA4;
1788 }
1788 }
1789
1789
1790 .metatag[tag="featured"] {
1790 .metatag[tag="featured"] {
1791 background-color: #AEA;
1791 background-color: #AEA;
1792 }
1792 }
1793
1793
1794 .metatag[tag="requires"] {
1794 .metatag[tag="requires"] {
1795 background-color: #9CF;
1795 background-color: #9CF;
1796 }
1796 }
1797
1797
1798 .metatag[tag="recommends"] {
1798 .metatag[tag="recommends"] {
1799 background-color: #BDF;
1799 background-color: #BDF;
1800 }
1800 }
1801
1801
1802 .metatag[tag="lang"] {
1802 .metatag[tag="lang"] {
1803 background-color: #FAF474;
1803 background-color: #FAF474;
1804 }
1804 }
1805
1805
1806 .metatag[tag="license"] {
1806 .metatag[tag="license"] {
1807 border: solid 1px #9CF;
1807 border: solid 1px #9CF;
1808 background-color: #DEF;
1808 background-color: #DEF;
1809 target-new: tab !important;
1809 target-new: tab !important;
1810 }
1810 }
1811 .metatag[tag="see"] {
1811 .metatag[tag="see"] {
1812 border: solid 1px #CBD;
1812 border: solid 1px #CBD;
1813 background-color: #EDF;
1813 background-color: #EDF;
1814 }
1814 }
1815
1815
1816 a.metatag[tag="license"]:hover {
1816 a.metatag[tag="license"]:hover {
1817 background-color: #003367;
1817 background-color: #003367;
1818 color: #FFF;
1818 color: #FFF;
1819 text-decoration: none;
1819 text-decoration: none;
1820 }
1820 }
1821
1821
1822 #summary .desc {
1822 #summary .desc {
1823 white-space: pre;
1823 white-space: pre;
1824 width: 100%;
1824 width: 100%;
1825 }
1825 }
1826
1826
1827 #summary .repo_name {
1827 #summary .repo_name {
1828 font-size: 1.6em;
1828 font-size: 1.6em;
1829 font-weight: bold;
1829 font-weight: bold;
1830 vertical-align: baseline;
1830 vertical-align: baseline;
1831 clear: right
1831 clear: right
1832 }
1832 }
1833
1833
1834 #footer {
1834 #footer {
1835 clear: both;
1835 clear: both;
1836 overflow: hidden;
1836 overflow: hidden;
1837 text-align: right;
1837 text-align: right;
1838 margin: 0;
1838 margin: 0;
1839 padding: 0 10px 4px;
1839 padding: 0 10px 4px;
1840 margin: -10px 0 0;
1840 margin: -10px 0 0;
1841 }
1841 }
1842
1842
1843 #footer div#footer-inner {
1843 #footer div#footer-inner {
1844 background-color: #003B76;
1844 background-color: #003B76;
1845 background-repeat: repeat-x;
1845 background-repeat: repeat-x;
1846 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1846 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1847 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1847 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1848 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1848 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1849 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1849 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1850 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1850 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1851 background-image: -o-linear-gradient( top, #003b76, #00376e));
1851 background-image: -o-linear-gradient( top, #003b76, #00376e));
1852 background-image: linear-gradient(to bottom, #003b76, #00376e);
1852 background-image: linear-gradient(to bottom, #003b76, #00376e);
1853 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1853 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1854 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1854 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1855 -webkit-border-radius: 4px 4px 4px 4px;
1855 -webkit-border-radius: 4px 4px 4px 4px;
1856 -khtml-border-radius: 4px 4px 4px 4px;
1856 -khtml-border-radius: 4px 4px 4px 4px;
1857 border-radius: 4px 4px 4px 4px;
1857 border-radius: 4px 4px 4px 4px;
1858 }
1858 }
1859
1859
1860 #footer div#footer-inner p {
1860 #footer div#footer-inner p {
1861 padding: 15px 25px 15px 0;
1861 padding: 15px 25px 15px 0;
1862 color: #FFF;
1862 color: #FFF;
1863 font-weight: 700;
1863 font-weight: 700;
1864 }
1864 }
1865
1865
1866 #footer div#footer-inner .footer-link {
1866 #footer div#footer-inner .footer-link {
1867 float: left;
1867 float: left;
1868 padding-left: 10px;
1868 padding-left: 10px;
1869 }
1869 }
1870
1870
1871 #footer div#footer-inner .footer-link a, #footer div#footer-inner .footer-link-right a {
1871 #footer div#footer-inner .footer-link a, #footer div#footer-inner .footer-link-right a {
1872 color: #FFF;
1872 color: #FFF;
1873 }
1873 }
1874
1874
1875 #login div.title {
1875 #login div.title {
1876 clear: both;
1876 clear: both;
1877 overflow: hidden;
1877 overflow: hidden;
1878 position: relative;
1878 position: relative;
1879 background-color: #003B76;
1879 background-color: #003B76;
1880 background-repeat: repeat-x;
1880 background-repeat: repeat-x;
1881 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1881 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1882 background-image: -moz-linear-gradient( top, #003b76, #00376e);
1882 background-image: -moz-linear-gradient( top, #003b76, #00376e);
1883 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1883 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1884 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1884 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1885 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1885 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1886 background-image: -o-linear-gradient( top, #003b76, #00376e));
1886 background-image: -o-linear-gradient( top, #003b76, #00376e));
1887 background-image: linear-gradient(to bottom, #003b76, #00376e);
1887 background-image: linear-gradient(to bottom, #003b76, #00376e);
1888 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1888 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1889 margin: 0 auto;
1889 margin: 0 auto;
1890 padding: 0;
1890 padding: 0;
1891 }
1891 }
1892
1892
1893 #login div.inner {
1893 #login div.inner {
1894 background: #FFF url("../images/login.png") no-repeat top left;
1894 background: #FFF url("../images/login.png") no-repeat top left;
1895 border-top: none;
1895 border-top: none;
1896 border-bottom: none;
1896 border-bottom: none;
1897 margin: 0 auto;
1897 margin: 0 auto;
1898 padding: 20px;
1898 padding: 20px;
1899 }
1899 }
1900
1900
1901 #login div.form div.fields div.field div.label {
1901 #login div.form div.fields div.field div.label {
1902 width: 173px;
1902 width: 173px;
1903 float: left;
1903 float: left;
1904 text-align: right;
1904 text-align: right;
1905 margin: 2px 10px 0 0;
1905 margin: 2px 10px 0 0;
1906 padding: 5px 0 0 5px;
1906 padding: 5px 0 0 5px;
1907 }
1907 }
1908
1908
1909 #login div.form div.fields div.field div.input input {
1909 #login div.form div.fields div.field div.input input {
1910 background: #FFF;
1910 background: #FFF;
1911 border-top: 1px solid #b3b3b3;
1911 border-top: 1px solid #b3b3b3;
1912 border-left: 1px solid #b3b3b3;
1912 border-left: 1px solid #b3b3b3;
1913 border-right: 1px solid #eaeaea;
1913 border-right: 1px solid #eaeaea;
1914 border-bottom: 1px solid #eaeaea;
1914 border-bottom: 1px solid #eaeaea;
1915 color: #000;
1915 color: #000;
1916 font-size: 11px;
1916 font-size: 11px;
1917 margin: 0;
1917 margin: 0;
1918 padding: 7px 7px 6px;
1918 padding: 7px 7px 6px;
1919 }
1919 }
1920
1920
1921 #login div.form div.fields div.buttons {
1921 #login div.form div.fields div.buttons {
1922 clear: both;
1922 clear: both;
1923 overflow: hidden;
1923 overflow: hidden;
1924 border-top: 1px solid #DDD;
1924 border-top: 1px solid #DDD;
1925 text-align: right;
1925 text-align: right;
1926 margin: 0;
1926 margin: 0;
1927 padding: 10px 0 0;
1927 padding: 10px 0 0;
1928 }
1928 }
1929
1929
1930 #login div.form div.links {
1930 #login div.form div.links {
1931 clear: both;
1931 clear: both;
1932 overflow: hidden;
1932 overflow: hidden;
1933 margin: 10px 0 0;
1933 margin: 10px 0 0;
1934 padding: 0 0 2px;
1934 padding: 0 0 2px;
1935 }
1935 }
1936
1936
1937 .user-menu {
1937 .user-menu {
1938 margin: 0px !important;
1938 margin: 0px !important;
1939 float: left;
1939 float: left;
1940 }
1940 }
1941
1941
1942 .user-menu .container {
1942 .user-menu .container {
1943 padding: 0px 4px 0px 4px;
1943 padding: 0px 4px 0px 4px;
1944 margin: 0px 0px 0px 0px;
1944 margin: 0px 0px 0px 0px;
1945 }
1945 }
1946
1946
1947 .user-menu .gravatar {
1947 .user-menu .gravatar {
1948 margin: 0px 0px 0px 0px;
1948 margin: 0px 0px 0px 0px;
1949 cursor: pointer;
1949 cursor: pointer;
1950 }
1950 }
1951 .user-menu .gravatar.enabled {
1951 .user-menu .gravatar.enabled {
1952 background-color: #FDF784 !important;
1952 background-color: #FDF784 !important;
1953 }
1953 }
1954 .user-menu .gravatar:hover {
1954 .user-menu .gravatar:hover {
1955 background-color: #FDF784 !important;
1955 background-color: #FDF784 !important;
1956 }
1956 }
1957 #quick_login {
1957 #quick_login {
1958 min-height: 80px;
1958 min-height: 80px;
1959 padding: 4px;
1959 padding: 4px;
1960 position: absolute;
1960 position: absolute;
1961 right: 0;
1961 right: 0;
1962 width: 278px;
1962 width: 278px;
1963 background-color: #003B76;
1963 background-color: #003B76;
1964 background-repeat: repeat-x;
1964 background-repeat: repeat-x;
1965 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1965 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1966 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1966 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1967 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1967 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1968 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1968 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1969 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1969 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1970 background-image: -o-linear-gradient(top, #003b76, #00376e);
1970 background-image: -o-linear-gradient(top, #003b76, #00376e);
1971 background-image: linear-gradient(to bottom, #003b76, #00376e);
1971 background-image: linear-gradient(to bottom, #003b76, #00376e);
1972 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1972 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1973
1973
1974 z-index: 999;
1974 z-index: 999;
1975 -webkit-border-radius: 0px 0px 4px 4px;
1975 -webkit-border-radius: 0px 0px 4px 4px;
1976 -khtml-border-radius: 0px 0px 4px 4px;
1976 -khtml-border-radius: 0px 0px 4px 4px;
1977 border-radius: 0px 0px 4px 4px;
1977 border-radius: 0px 0px 4px 4px;
1978 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1978 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1979 }
1979 }
1980 #quick_login h4 {
1980 #quick_login h4 {
1981 color: #fff;
1981 color: #fff;
1982 padding: 5px 0px 5px 14px;
1982 padding: 5px 0px 5px 14px;
1983 }
1983 }
1984
1984
1985 #quick_login .password_forgoten {
1985 #quick_login .password_forgoten {
1986 padding-right: 0px;
1986 padding-right: 0px;
1987 padding-top: 0px;
1987 padding-top: 0px;
1988 text-align: left;
1988 text-align: left;
1989 }
1989 }
1990
1990
1991 #quick_login .password_forgoten a {
1991 #quick_login .password_forgoten a {
1992 font-size: 10px;
1992 font-size: 10px;
1993 color: #fff;
1993 color: #fff;
1994 padding: 0px !important;
1994 padding: 0px !important;
1995 line-height: 20px !important;
1995 line-height: 20px !important;
1996 }
1996 }
1997
1997
1998 #quick_login .register {
1998 #quick_login .register {
1999 padding-right: 10px;
1999 padding-right: 10px;
2000 padding-top: 5px;
2000 padding-top: 5px;
2001 text-align: left;
2001 text-align: left;
2002 }
2002 }
2003
2003
2004 #quick_login .register a {
2004 #quick_login .register a {
2005 font-size: 10px;
2005 font-size: 10px;
2006 color: #fff;
2006 color: #fff;
2007 padding: 0px !important;
2007 padding: 0px !important;
2008 line-height: 20px !important;
2008 line-height: 20px !important;
2009 }
2009 }
2010
2010
2011 #quick_login .submit {
2011 #quick_login .submit {
2012 margin: -20px 0 0 0px;
2012 margin: -20px 0 0 0px;
2013 position: absolute;
2013 position: absolute;
2014 right: 15px;
2014 right: 15px;
2015 }
2015 }
2016
2016
2017 #quick_login .links_left {
2017 #quick_login .links_left {
2018 float: left;
2018 float: left;
2019 }
2019 }
2020 #quick_login .links_right {
2020 #quick_login .links_right {
2021 float: right;
2021 float: right;
2022 }
2022 }
2023 #quick_login .full_name {
2023 #quick_login .full_name {
2024 color: #FFFFFF;
2024 color: #FFFFFF;
2025 font-weight: bold;
2025 font-weight: bold;
2026 padding: 3px 3px 3px 6px;
2026 padding: 3px 3px 3px 6px;
2027 }
2027 }
2028 #quick_login .big_gravatar {
2028 #quick_login .big_gravatar {
2029 padding: 4px 0px 0px 6px;
2029 padding: 4px 0px 0px 6px;
2030 }
2030 }
2031 #quick_login .notifications {
2031 #quick_login .notifications {
2032 padding: 2px 0px 0px 6px;
2032 padding: 2px 0px 0px 6px;
2033 color: #FFFFFF;
2033 color: #FFFFFF;
2034 font-weight: bold;
2034 font-weight: bold;
2035 line-height: 10px !important;
2035 line-height: 10px !important;
2036 }
2036 }
2037 #quick_login .notifications a,
2037 #quick_login .notifications a,
2038 #quick_login .unread a {
2038 #quick_login .unread a {
2039 color: #FFFFFF;
2039 color: #FFFFFF;
2040 display: block;
2040 display: block;
2041 padding: 0px !important;
2041 padding: 0px !important;
2042 }
2042 }
2043 #quick_login .notifications a:hover,
2043 #quick_login .notifications a:hover,
2044 #quick_login .unread a:hover {
2044 #quick_login .unread a:hover {
2045 background-color: inherit !important;
2045 background-color: inherit !important;
2046 }
2046 }
2047 #quick_login .email, #quick_login .unread {
2047 #quick_login .email, #quick_login .unread {
2048 color: #FFFFFF;
2048 color: #FFFFFF;
2049 padding: 3px 3px 3px 6px;
2049 padding: 3px 3px 3px 6px;
2050 }
2050 }
2051 #quick_login .links .logout {
2051 #quick_login .links .logout {
2052 }
2052 }
2053
2053
2054 #quick_login div.form div.fields {
2054 #quick_login div.form div.fields {
2055 padding-top: 2px;
2055 padding-top: 2px;
2056 padding-left: 10px;
2056 padding-left: 10px;
2057 }
2057 }
2058
2058
2059 #quick_login div.form div.fields div.field {
2059 #quick_login div.form div.fields div.field {
2060 padding: 5px;
2060 padding: 5px;
2061 }
2061 }
2062
2062
2063 #quick_login div.form div.fields div.field div.label label {
2063 #quick_login div.form div.fields div.field div.label label {
2064 color: #fff;
2064 color: #fff;
2065 padding-bottom: 3px;
2065 padding-bottom: 3px;
2066 }
2066 }
2067
2067
2068 #quick_login div.form div.fields div.field div.input input {
2068 #quick_login div.form div.fields div.field div.input input {
2069 width: 236px;
2069 width: 236px;
2070 background: #FFF;
2070 background: #FFF;
2071 border-top: 1px solid #b3b3b3;
2071 border-top: 1px solid #b3b3b3;
2072 border-left: 1px solid #b3b3b3;
2072 border-left: 1px solid #b3b3b3;
2073 border-right: 1px solid #eaeaea;
2073 border-right: 1px solid #eaeaea;
2074 border-bottom: 1px solid #eaeaea;
2074 border-bottom: 1px solid #eaeaea;
2075 color: #000;
2075 color: #000;
2076 font-size: 11px;
2076 font-size: 11px;
2077 margin: 0;
2077 margin: 0;
2078 padding: 5px 7px 4px;
2078 padding: 5px 7px 4px;
2079 }
2079 }
2080
2080
2081 #quick_login div.form div.fields div.buttons {
2081 #quick_login div.form div.fields div.buttons {
2082 clear: both;
2082 clear: both;
2083 overflow: hidden;
2083 overflow: hidden;
2084 text-align: right;
2084 text-align: right;
2085 margin: 0;
2085 margin: 0;
2086 padding: 5px 14px 0px 5px;
2086 padding: 5px 14px 0px 5px;
2087 }
2087 }
2088
2088
2089 #quick_login div.form div.links {
2089 #quick_login div.form div.links {
2090 clear: both;
2090 clear: both;
2091 overflow: hidden;
2091 overflow: hidden;
2092 margin: 10px 0 0;
2092 margin: 10px 0 0;
2093 padding: 0 0 2px;
2093 padding: 0 0 2px;
2094 }
2094 }
2095
2095
2096 #quick_login ol.links {
2096 #quick_login ol.links {
2097 display: block;
2097 display: block;
2098 font-weight: bold;
2098 font-weight: bold;
2099 list-style: none outside none;
2099 list-style: none outside none;
2100 text-align: right;
2100 text-align: right;
2101 }
2101 }
2102 #quick_login ol.links li {
2102 #quick_login ol.links li {
2103 line-height: 27px;
2103 line-height: 27px;
2104 margin: 0;
2104 margin: 0;
2105 padding: 0;
2105 padding: 0;
2106 color: #fff;
2106 color: #fff;
2107 display: block;
2107 display: block;
2108 float: none !important;
2108 float: none !important;
2109 }
2109 }
2110
2110
2111 #quick_login ol.links li a {
2111 #quick_login ol.links li a {
2112 color: #fff;
2112 color: #fff;
2113 display: block;
2113 display: block;
2114 padding: 2px;
2114 padding: 2px;
2115 }
2115 }
2116 #quick_login ol.links li a:HOVER {
2116 #quick_login ol.links li a:HOVER {
2117 background-color: inherit !important;
2117 background-color: inherit !important;
2118 }
2118 }
2119
2119
2120 #register div.title {
2120 #register div.title {
2121 clear: both;
2121 clear: both;
2122 overflow: hidden;
2122 overflow: hidden;
2123 position: relative;
2123 position: relative;
2124 background-color: #003B76;
2124 background-color: #003B76;
2125 background-repeat: repeat-x;
2125 background-repeat: repeat-x;
2126 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2126 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2127 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2127 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2128 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2128 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2129 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2129 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2130 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2130 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2131 background-image: -o-linear-gradient(top, #003b76, #00376e);
2131 background-image: -o-linear-gradient(top, #003b76, #00376e);
2132 background-image: linear-gradient(to bottom, #003b76, #00376e);
2132 background-image: linear-gradient(to bottom, #003b76, #00376e);
2133 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
2133 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
2134 endColorstr='#00376e', GradientType=0 );
2134 endColorstr='#00376e', GradientType=0 );
2135 margin: 0 auto;
2135 margin: 0 auto;
2136 padding: 0;
2136 padding: 0;
2137 }
2137 }
2138
2138
2139 #register div.inner {
2139 #register div.inner {
2140 background: #FFF;
2140 background: #FFF;
2141 border-top: none;
2141 border-top: none;
2142 border-bottom: none;
2142 border-bottom: none;
2143 margin: 0 auto;
2143 margin: 0 auto;
2144 padding: 20px;
2144 padding: 20px;
2145 }
2145 }
2146
2146
2147 #register div.form div.fields div.field div.label {
2147 #register div.form div.fields div.field div.label {
2148 width: 135px;
2148 width: 135px;
2149 float: left;
2149 float: left;
2150 text-align: right;
2150 text-align: right;
2151 margin: 2px 10px 0 0;
2151 margin: 2px 10px 0 0;
2152 padding: 5px 0 0 5px;
2152 padding: 5px 0 0 5px;
2153 }
2153 }
2154
2154
2155 #register div.form div.fields div.field div.input input {
2155 #register div.form div.fields div.field div.input input {
2156 width: 300px;
2156 width: 300px;
2157 background: #FFF;
2157 background: #FFF;
2158 border-top: 1px solid #b3b3b3;
2158 border-top: 1px solid #b3b3b3;
2159 border-left: 1px solid #b3b3b3;
2159 border-left: 1px solid #b3b3b3;
2160 border-right: 1px solid #eaeaea;
2160 border-right: 1px solid #eaeaea;
2161 border-bottom: 1px solid #eaeaea;
2161 border-bottom: 1px solid #eaeaea;
2162 color: #000;
2162 color: #000;
2163 font-size: 11px;
2163 font-size: 11px;
2164 margin: 0;
2164 margin: 0;
2165 padding: 7px 7px 6px;
2165 padding: 7px 7px 6px;
2166 }
2166 }
2167
2167
2168 #register div.form div.fields div.buttons {
2168 #register div.form div.fields div.buttons {
2169 clear: both;
2169 clear: both;
2170 overflow: hidden;
2170 overflow: hidden;
2171 border-top: 1px solid #DDD;
2171 border-top: 1px solid #DDD;
2172 text-align: left;
2172 text-align: left;
2173 margin: 0;
2173 margin: 0;
2174 padding: 10px 0 0 150px;
2174 padding: 10px 0 0 150px;
2175 }
2175 }
2176
2176
2177 #register div.form div.activation_msg {
2177 #register div.form div.activation_msg {
2178 padding-top: 4px;
2178 padding-top: 4px;
2179 padding-bottom: 4px;
2179 padding-bottom: 4px;
2180 }
2180 }
2181
2181
2182 #journal .journal_day {
2182 #journal .journal_day {
2183 font-size: 20px;
2183 font-size: 20px;
2184 padding: 10px 0px;
2184 padding: 10px 0px;
2185 border-bottom: 2px solid #DDD;
2185 border-bottom: 2px solid #DDD;
2186 margin-left: 10px;
2186 margin-left: 10px;
2187 margin-right: 10px;
2187 margin-right: 10px;
2188 }
2188 }
2189
2189
2190 #journal .journal_container {
2190 #journal .journal_container {
2191 padding: 5px;
2191 padding: 5px;
2192 clear: both;
2192 clear: both;
2193 margin: 0px 5px 0px 10px;
2193 margin: 0px 5px 0px 10px;
2194 }
2194 }
2195
2195
2196 #journal .journal_action_container {
2196 #journal .journal_action_container {
2197 padding-left: 38px;
2197 padding-left: 38px;
2198 }
2198 }
2199
2199
2200 #journal .journal_user {
2200 #journal .journal_user {
2201 color: #747474;
2201 color: #747474;
2202 font-size: 14px;
2202 font-size: 14px;
2203 font-weight: bold;
2203 font-weight: bold;
2204 height: 30px;
2204 height: 30px;
2205 }
2205 }
2206
2206
2207 #journal .journal_user.deleted {
2207 #journal .journal_user.deleted {
2208 color: #747474;
2208 color: #747474;
2209 font-size: 14px;
2209 font-size: 14px;
2210 font-weight: normal;
2210 font-weight: normal;
2211 height: 30px;
2211 height: 30px;
2212 font-style: italic;
2212 font-style: italic;
2213 }
2213 }
2214
2214
2215
2215
2216 #journal .journal_icon {
2216 #journal .journal_icon {
2217 clear: both;
2217 clear: both;
2218 float: left;
2218 float: left;
2219 padding-right: 4px;
2219 padding-right: 4px;
2220 padding-top: 3px;
2220 padding-top: 3px;
2221 }
2221 }
2222
2222
2223 #journal .journal_action {
2223 #journal .journal_action {
2224 padding-top: 4px;
2224 padding-top: 4px;
2225 min-height: 2px;
2225 min-height: 2px;
2226 float: left
2226 float: left
2227 }
2227 }
2228
2228
2229 #journal .journal_action_params {
2229 #journal .journal_action_params {
2230 clear: left;
2230 clear: left;
2231 padding-left: 22px;
2231 padding-left: 22px;
2232 }
2232 }
2233
2233
2234 #journal .journal_repo {
2234 #journal .journal_repo {
2235 float: left;
2235 float: left;
2236 margin-left: 6px;
2236 margin-left: 6px;
2237 padding-top: 3px;
2237 padding-top: 3px;
2238 }
2238 }
2239
2239
2240 #journal .date {
2240 #journal .date {
2241 clear: both;
2241 clear: both;
2242 color: #777777;
2242 color: #777777;
2243 font-size: 11px;
2243 font-size: 11px;
2244 padding-left: 22px;
2244 padding-left: 22px;
2245 }
2245 }
2246
2246
2247 #journal .journal_repo .journal_repo_name {
2247 #journal .journal_repo .journal_repo_name {
2248 font-weight: bold;
2248 font-weight: bold;
2249 font-size: 1.1em;
2249 font-size: 1.1em;
2250 }
2250 }
2251
2251
2252 #journal .compare_view {
2252 #journal .compare_view {
2253 padding: 5px 0px 5px 0px;
2253 padding: 5px 0px 5px 0px;
2254 width: 95px;
2254 width: 95px;
2255 }
2255 }
2256
2256
2257 .journal_highlight {
2257 .journal_highlight {
2258 font-weight: bold;
2258 font-weight: bold;
2259 padding: 0 2px;
2259 padding: 0 2px;
2260 vertical-align: bottom;
2260 vertical-align: bottom;
2261 }
2261 }
2262
2262
2263 .trending_language_tbl, .trending_language_tbl td {
2263 .trending_language_tbl, .trending_language_tbl td {
2264 border: 0 !important;
2264 border: 0 !important;
2265 margin: 0 !important;
2265 margin: 0 !important;
2266 padding: 0 !important;
2266 padding: 0 !important;
2267 }
2267 }
2268
2268
2269 .trending_language_tbl, .trending_language_tbl tr {
2269 .trending_language_tbl, .trending_language_tbl tr {
2270 border-spacing: 1px;
2270 border-spacing: 1px;
2271 }
2271 }
2272
2272
2273 .trending_language {
2273 .trending_language {
2274 background-color: #003367;
2274 background-color: #003367;
2275 color: #FFF;
2275 color: #FFF;
2276 display: block;
2276 display: block;
2277 min-width: 20px;
2277 min-width: 20px;
2278 text-decoration: none;
2278 text-decoration: none;
2279 height: 12px;
2279 height: 12px;
2280 margin-bottom: 0px;
2280 margin-bottom: 0px;
2281 margin-left: 5px;
2281 margin-left: 5px;
2282 white-space: pre;
2282 white-space: pre;
2283 padding: 3px;
2283 padding: 3px;
2284 }
2284 }
2285
2285
2286 h3.files_location {
2286 h3.files_location {
2287 font-size: 1.8em;
2287 font-size: 1.8em;
2288 font-weight: 700;
2288 font-weight: 700;
2289 border-bottom: none !important;
2289 border-bottom: none !important;
2290 margin: 10px 0 !important;
2290 margin: 10px 0 !important;
2291 }
2291 }
2292
2292
2293 #files_data dl dt {
2293 #files_data dl dt {
2294 float: left;
2294 float: left;
2295 width: 60px;
2295 width: 60px;
2296 margin: 0 !important;
2296 margin: 0 !important;
2297 padding: 5px;
2297 padding: 5px;
2298 }
2298 }
2299
2299
2300 #files_data dl dd {
2300 #files_data dl dd {
2301 margin: 0 !important;
2301 margin: 0 !important;
2302 padding: 5px !important;
2302 padding: 5px !important;
2303 }
2303 }
2304
2304
2305 .file_history {
2305 .file_history {
2306 padding-top: 10px;
2306 padding-top: 10px;
2307 font-size: 16px;
2307 font-size: 16px;
2308 }
2308 }
2309 .file_author {
2309 .file_author {
2310 float: left;
2310 float: left;
2311 }
2311 }
2312
2312
2313 .file_author .item {
2313 .file_author .item {
2314 float: left;
2314 float: left;
2315 padding: 5px;
2315 padding: 5px;
2316 color: #888;
2316 color: #888;
2317 }
2317 }
2318
2318
2319 .tablerow0 {
2319 .tablerow0 {
2320 background-color: #F8F8F8;
2320 background-color: #F8F8F8;
2321 }
2321 }
2322
2322
2323 .tablerow1 {
2323 .tablerow1 {
2324 background-color: #FFFFFF;
2324 background-color: #FFFFFF;
2325 }
2325 }
2326
2326
2327 .changeset_id {
2327 .changeset_id {
2328 font-family: monospace;
2328 font-family: monospace;
2329 color: #666666;
2329 color: #666666;
2330 }
2330 }
2331
2331
2332 .changeset_hash {
2332 .changeset_hash {
2333 color: #000000;
2333 color: #000000;
2334 }
2334 }
2335
2335
2336 #changeset_content {
2336 #changeset_content {
2337 border-left: 1px solid #CCC;
2337 border-left: 1px solid #CCC;
2338 border-right: 1px solid #CCC;
2338 border-right: 1px solid #CCC;
2339 border-bottom: 1px solid #CCC;
2339 border-bottom: 1px solid #CCC;
2340 padding: 5px;
2340 padding: 5px;
2341 }
2341 }
2342
2342
2343 #changeset_compare_view_content {
2343 #changeset_compare_view_content {
2344 border: 1px solid #CCC;
2344 border: 1px solid #CCC;
2345 padding: 5px;
2345 padding: 5px;
2346 }
2346 }
2347
2347
2348 #changeset_content .container {
2348 #changeset_content .container {
2349 min-height: 100px;
2349 min-height: 100px;
2350 font-size: 1.2em;
2350 font-size: 1.2em;
2351 overflow: hidden;
2351 overflow: hidden;
2352 }
2352 }
2353
2353
2354 #changeset_compare_view_content .compare_view_commits {
2354 #changeset_compare_view_content .compare_view_commits {
2355 width: auto !important;
2355 width: auto !important;
2356 }
2356 }
2357
2357
2358 #changeset_compare_view_content .compare_view_commits td {
2358 #changeset_compare_view_content .compare_view_commits td {
2359 padding: 0px 0px 0px 12px !important;
2359 padding: 0px 0px 0px 12px !important;
2360 }
2360 }
2361
2361
2362 #changeset_content .container .right {
2362 #changeset_content .container .right {
2363 float: right;
2363 float: right;
2364 width: 20%;
2364 width: 20%;
2365 text-align: right;
2365 text-align: right;
2366 }
2366 }
2367
2367
2368 #changeset_content .container .message {
2368 #changeset_content .container .message {
2369 white-space: pre-wrap;
2369 white-space: pre-wrap;
2370 }
2370 }
2371 #changeset_content .container .message a:hover {
2371 #changeset_content .container .message a:hover {
2372 text-decoration: none;
2372 text-decoration: none;
2373 }
2373 }
2374 .cs_files .cur_cs {
2374 .cs_files .cur_cs {
2375 margin: 10px 2px;
2375 margin: 10px 2px;
2376 font-weight: bold;
2376 font-weight: bold;
2377 }
2377 }
2378
2378
2379 .cs_files .node {
2379 .cs_files .node {
2380 float: left;
2380 float: left;
2381 }
2381 }
2382
2382
2383 .cs_files .changes {
2383 .cs_files .changes {
2384 float: right;
2384 float: right;
2385 color: #003367;
2385 color: #003367;
2386 }
2386 }
2387
2387
2388 .cs_files .changes .added {
2388 .cs_files .changes .added {
2389 background-color: #BBFFBB;
2389 background-color: #BBFFBB;
2390 float: left;
2390 float: left;
2391 text-align: center;
2391 text-align: center;
2392 font-size: 9px;
2392 font-size: 9px;
2393 padding: 2px 0px 2px 0px;
2393 padding: 2px 0px 2px 0px;
2394 }
2394 }
2395
2395
2396 .cs_files .changes .deleted {
2396 .cs_files .changes .deleted {
2397 background-color: #FF8888;
2397 background-color: #FF8888;
2398 float: left;
2398 float: left;
2399 text-align: center;
2399 text-align: center;
2400 font-size: 9px;
2400 font-size: 9px;
2401 padding: 2px 0px 2px 0px;
2401 padding: 2px 0px 2px 0px;
2402 }
2402 }
2403 /*new binary*/
2403 /*new binary*/
2404 .cs_files .changes .bin1 {
2404 .cs_files .changes .bin1 {
2405 background-color: #BBFFBB;
2405 background-color: #BBFFBB;
2406 float: left;
2406 float: left;
2407 text-align: center;
2407 text-align: center;
2408 font-size: 9px;
2408 font-size: 9px;
2409 padding: 2px 0px 2px 0px;
2409 padding: 2px 0px 2px 0px;
2410 }
2410 }
2411
2411
2412 /*deleted binary*/
2412 /*deleted binary*/
2413 .cs_files .changes .bin2 {
2413 .cs_files .changes .bin2 {
2414 background-color: #FF8888;
2414 background-color: #FF8888;
2415 float: left;
2415 float: left;
2416 text-align: center;
2416 text-align: center;
2417 font-size: 9px;
2417 font-size: 9px;
2418 padding: 2px 0px 2px 0px;
2418 padding: 2px 0px 2px 0px;
2419 }
2419 }
2420
2420
2421 /*mod binary*/
2421 /*mod binary*/
2422 .cs_files .changes .bin3 {
2422 .cs_files .changes .bin3 {
2423 background-color: #DDDDDD;
2423 background-color: #DDDDDD;
2424 float: left;
2424 float: left;
2425 text-align: center;
2425 text-align: center;
2426 font-size: 9px;
2426 font-size: 9px;
2427 padding: 2px 0px 2px 0px;
2427 padding: 2px 0px 2px 0px;
2428 }
2428 }
2429
2429
2430 /*rename file*/
2430 /*rename file*/
2431 .cs_files .changes .bin4 {
2431 .cs_files .changes .bin4 {
2432 background-color: #6D99FF;
2432 background-color: #6D99FF;
2433 float: left;
2433 float: left;
2434 text-align: center;
2434 text-align: center;
2435 font-size: 9px;
2435 font-size: 9px;
2436 padding: 2px 0px 2px 0px;
2436 padding: 2px 0px 2px 0px;
2437 }
2437 }
2438
2438
2439
2439
2440 .cs_files .cs_added, .cs_files .cs_A {
2440 .cs_files .cs_added, .cs_files .cs_A {
2441 background: url("../images/icons/page_white_add.png") no-repeat scroll
2441 background: url("../images/icons/page_white_add.png") no-repeat scroll
2442 3px;
2442 3px;
2443 height: 16px;
2443 height: 16px;
2444 padding-left: 20px;
2444 padding-left: 20px;
2445 margin-top: 7px;
2445 margin-top: 7px;
2446 text-align: left;
2446 text-align: left;
2447 }
2447 }
2448
2448
2449 .cs_files .cs_changed, .cs_files .cs_M {
2449 .cs_files .cs_changed, .cs_files .cs_M {
2450 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2450 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2451 3px;
2451 3px;
2452 height: 16px;
2452 height: 16px;
2453 padding-left: 20px;
2453 padding-left: 20px;
2454 margin-top: 7px;
2454 margin-top: 7px;
2455 text-align: left;
2455 text-align: left;
2456 }
2456 }
2457
2457
2458 .cs_files .cs_removed, .cs_files .cs_D {
2458 .cs_files .cs_removed, .cs_files .cs_D {
2459 background: url("../images/icons/page_white_delete.png") no-repeat
2459 background: url("../images/icons/page_white_delete.png") no-repeat
2460 scroll 3px;
2460 scroll 3px;
2461 height: 16px;
2461 height: 16px;
2462 padding-left: 20px;
2462 padding-left: 20px;
2463 margin-top: 7px;
2463 margin-top: 7px;
2464 text-align: left;
2464 text-align: left;
2465 }
2465 }
2466
2466
2467 .table {
2467 .table {
2468 position: relative;
2468 position: relative;
2469 }
2469 }
2470
2470
2471 #graph {
2471 #graph {
2472 position: relative;
2472 position: relative;
2473 overflow: hidden;
2473 overflow: hidden;
2474 }
2474 }
2475
2475
2476 #graph_nodes {
2476 #graph_nodes {
2477 position: absolute;
2477 position: absolute;
2478 }
2478 }
2479
2479
2480 #graph_content,
2480 #graph_content,
2481 #graph .info_box,
2481 #graph .info_box,
2482 #graph .container_header {
2482 #graph .container_header {
2483 margin-left: 100px;
2483 margin-left: 100px;
2484 }
2484 }
2485
2485
2486 #graph_content {
2486 #graph_content {
2487 position: relative;
2487 position: relative;
2488 }
2488 }
2489
2489
2490 #graph .container_header {
2490 #graph .container_header {
2491 padding: 10px;
2491 padding: 10px;
2492 height: 25px;
2492 height: 25px;
2493 }
2493 }
2494
2494
2495 #graph_content #rev_range_container {
2495 #graph_content #rev_range_container {
2496 float: left;
2496 float: left;
2497 margin: 0px 0px 0px 3px;
2497 margin: 0px 0px 0px 3px;
2498 }
2498 }
2499
2499
2500 #graph_content #rev_range_clear {
2500 #graph_content #rev_range_clear {
2501 float: left;
2501 float: left;
2502 margin: 0px 0px 0px 3px;
2502 margin: 0px 0px 0px 3px;
2503 }
2503 }
2504
2504
2505 #graph_content #changesets {
2505 #graph_content #changesets {
2506 table-layout: fixed;
2506 table-layout: fixed;
2507 border-collapse: collapse;
2507 border-collapse: collapse;
2508 border-left: none;
2508 border-left: none;
2509 border-right: none;
2509 border-right: none;
2510 border-color: #cdcdcd;
2510 border-color: #cdcdcd;
2511 }
2511 }
2512
2512
2513 #graph_content .container {
2513 #graph_content .container {
2514
2514
2515 }
2515 }
2516
2516
2517 #graph_content #changesets td {
2517 #graph_content #changesets td {
2518 overflow: hidden;
2518 overflow: hidden;
2519 text-overflow: ellipsis;
2519 text-overflow: ellipsis;
2520 white-space: nowrap;
2520 white-space: nowrap;
2521 height: 31px;
2521 height: 31px;
2522 border-color: #cdcdcd;
2522 border-color: #cdcdcd;
2523 text-align: left;
2523 text-align: left;
2524 }
2524 }
2525
2525
2526 #graph_content .container .author {
2526 #graph_content .container .author {
2527 width: 105px;
2527 width: 105px;
2528 }
2528 }
2529
2529
2530 #graph_content .container .hash {
2530 #graph_content .container .hash {
2531 width: 85px;
2531 width: 85px;
2532 font-size: 0.85em;
2532 font-size: 0.85em;
2533 }
2533 }
2534
2534
2535 #graph_content #changesets .container .date {
2535 #graph_content #changesets .container .date {
2536 width: 76px;
2536 width: 76px;
2537 color: #666;
2537 color: #666;
2538 font-size: 10px;
2538 font-size: 10px;
2539 }
2539 }
2540
2540
2541 #graph_content #changesets .container .right {
2541 #graph_content #changesets .container .right {
2542 width: 120px;
2542 width: 120px;
2543 padding-right: 0px;
2543 padding-right: 0px;
2544 overflow: visible;
2544 overflow: visible;
2545 position: relative;
2545 position: relative;
2546 }
2546 }
2547
2547
2548 #graph_content .container .mid {
2548 #graph_content .container .mid {
2549 padding: 0;
2549 padding: 0;
2550 }
2550 }
2551
2551
2552 #graph_content .log-container {
2552 #graph_content .log-container {
2553 position: relative;
2553 position: relative;
2554 }
2554 }
2555
2555
2556 #graph_content #changesets td.checkbox {
2556 #graph_content #changesets td.checkbox {
2557 width: 20px;
2557 width: 20px;
2558 }
2558 }
2559
2559
2560 #graph_content .container .changeset_range {
2560 #graph_content .container .changeset_range {
2561 float: left;
2561 float: left;
2562 margin: 6px 3px;
2562 margin: 6px 3px;
2563 }
2563 }
2564
2564
2565 #graph_content .container .author img {
2565 #graph_content .container .author img {
2566 vertical-align: middle;
2566 vertical-align: middle;
2567 }
2567 }
2568
2568
2569 #graph_content .container .author .user {
2569 #graph_content .container .author .user {
2570 color: #444444;
2570 color: #444444;
2571 }
2571 }
2572
2572
2573 #graph_content .container .mid .message {
2573 #graph_content .container .mid .message {
2574 white-space: pre-wrap;
2574 white-space: pre-wrap;
2575 padding: 0;
2575 padding: 0;
2576 overflow: hidden;
2576 overflow: hidden;
2577 height: 1.1em;
2577 height: 1.1em;
2578 }
2578 }
2579
2579
2580 #graph_content .container .extra-container {
2580 #graph_content .container .extra-container {
2581 display: block;
2581 display: block;
2582 position: absolute;
2582 position: absolute;
2583 top: -15px;
2583 top: -15px;
2584 right: 0;
2584 right: 0;
2585 padding-left: 5px;
2585 padding-left: 5px;
2586 background: #FFFFFF;
2586 background: #FFFFFF;
2587 height: 41px;
2587 height: 41px;
2588 }
2588 }
2589
2589
2590 #graph_content .comments-container,
2590 #graph_content .comments-container,
2591 #graph_content .logtags {
2591 #graph_content .logtags {
2592 display: block;
2592 display: block;
2593 float: left;
2593 float: left;
2594 overflow: hidden;
2594 overflow: hidden;
2595 padding: 0;
2595 padding: 0;
2596 margin: 0;
2596 margin: 0;
2597 }
2597 }
2598
2598
2599 #graph_content .comments-container {
2599 #graph_content .comments-container {
2600 margin: 0.8em 0;
2600 margin: 0.8em 0;
2601 margin-right: 0.5em;
2601 margin-right: 0.5em;
2602 }
2602 }
2603
2603
2604 #graph_content .tagcontainer {
2604 #graph_content .tagcontainer {
2605 width: 80px;
2605 width: 80px;
2606 position: relative;
2606 position: relative;
2607 float: right;
2607 float: right;
2608 height: 100%;
2608 height: 100%;
2609 top: 7px;
2609 top: 7px;
2610 margin-left: 0.5em;
2610 margin-left: 0.5em;
2611 }
2611 }
2612
2612
2613 #graph_content .logtags {
2613 #graph_content .logtags {
2614 min-width: 80px;
2614 min-width: 80px;
2615 height: 1.1em;
2615 height: 1.1em;
2616 position: absolute;
2616 position: absolute;
2617 left: 0px;
2617 left: 0px;
2618 width: auto;
2618 width: auto;
2619 top: 0px;
2619 top: 0px;
2620 }
2620 }
2621
2621
2622 #graph_content .logtags.tags {
2622 #graph_content .logtags.tags {
2623 top: 14px;
2623 top: 14px;
2624 }
2624 }
2625
2625
2626 #graph_content .logtags:hover {
2626 #graph_content .logtags:hover {
2627 overflow: visible;
2627 overflow: visible;
2628 position: absolute;
2628 position: absolute;
2629 width: auto;
2629 width: auto;
2630 right: 0;
2630 right: 0;
2631 left: initial;
2631 left: initial;
2632 }
2632 }
2633
2633
2634 #graph_content .logtags .bookbook,
2634 #graph_content .logtags .bookbook,
2635 #graph_content .logtags .tagtag {
2635 #graph_content .logtags .tagtag {
2636 float: left;
2636 float: left;
2637 line-height: 1em;
2637 line-height: 1em;
2638 margin-bottom: 1px;
2638 margin-bottom: 1px;
2639 margin-right: 1px;
2639 margin-right: 1px;
2640 padding: 1px 3px;
2640 padding: 1px 3px;
2641 font-size: 10px;
2641 font-size: 10px;
2642 }
2642 }
2643
2643
2644 #graph_content .container .mid .message a:hover {
2644 #graph_content .container .mid .message a:hover {
2645 text-decoration: none;
2645 text-decoration: none;
2646 }
2646 }
2647
2647
2648 .revision-link {
2648 .revision-link {
2649 color: #3F6F9F;
2649 color: #3F6F9F;
2650 font-weight: bold !important;
2650 font-weight: bold !important;
2651 }
2651 }
2652
2652
2653 .issue-tracker-link {
2653 .issue-tracker-link {
2654 color: #3F6F9F;
2654 color: #3F6F9F;
2655 font-weight: bold !important;
2655 font-weight: bold !important;
2656 }
2656 }
2657
2657
2658 .changeset-status-container {
2658 .changeset-status-container {
2659 padding-right: 5px;
2659 padding-right: 5px;
2660 margin-top: 1px;
2660 margin-top: 1px;
2661 float: right;
2661 float: right;
2662 height: 14px;
2662 height: 14px;
2663 }
2663 }
2664 .code-header .changeset-status-container {
2664 .code-header .changeset-status-container {
2665 float: left;
2665 float: left;
2666 padding: 2px 0px 0px 2px;
2666 padding: 2px 0px 0px 2px;
2667 }
2667 }
2668 .changeset-status-container .changeset-status-lbl {
2668 .changeset-status-container .changeset-status-lbl {
2669 color: rgb(136, 136, 136);
2669 color: rgb(136, 136, 136);
2670 float: left;
2670 float: left;
2671 padding: 3px 4px 0px 0px
2671 padding: 3px 4px 0px 0px
2672 }
2672 }
2673 .code-header .changeset-status-container .changeset-status-lbl {
2673 .code-header .changeset-status-container .changeset-status-lbl {
2674 float: left;
2674 float: left;
2675 padding: 0px 4px 0px 0px;
2675 padding: 0px 4px 0px 0px;
2676 }
2676 }
2677 .changeset-status-container .changeset-status-ico {
2677 .changeset-status-container .changeset-status-ico {
2678 float: left;
2678 float: left;
2679 }
2679 }
2680 .code-header .changeset-status-container .changeset-status-ico, .container .changeset-status-ico {
2680 .code-header .changeset-status-container .changeset-status-ico, .container .changeset-status-ico {
2681 float: left;
2681 float: left;
2682 }
2682 }
2683
2683
2684 #graph_content .comments-cnt {
2684 #graph_content .comments-cnt {
2685 color: rgb(136, 136, 136);
2685 color: rgb(136, 136, 136);
2686 padding: 5px 0;
2686 padding: 5px 0;
2687 }
2687 }
2688
2688
2689 #graph_content .comments-cnt a {
2689 #graph_content .comments-cnt a {
2690 background-image: url('../images/icons/comments.png');
2690 background-image: url('../images/icons/comments.png');
2691 background-repeat: no-repeat;
2691 background-repeat: no-repeat;
2692 background-position: 100% 50%;
2692 background-position: 100% 50%;
2693 padding: 5px 0;
2693 padding: 5px 0;
2694 padding-right: 20px;
2694 padding-right: 20px;
2695 }
2695 }
2696
2696
2697 .right .changes {
2697 .right .changes {
2698 clear: both;
2698 clear: both;
2699 }
2699 }
2700
2700
2701 .right .changes .changed_total {
2701 .right .changes .changed_total {
2702 display: block;
2702 display: block;
2703 float: right;
2703 float: right;
2704 text-align: center;
2704 text-align: center;
2705 min-width: 45px;
2705 min-width: 45px;
2706 cursor: pointer;
2706 cursor: pointer;
2707 color: #444444;
2707 color: #444444;
2708 background: #FEA;
2708 background: #FEA;
2709 -webkit-border-radius: 0px 0px 0px 6px;
2709 -webkit-border-radius: 0px 0px 0px 6px;
2710 border-radius: 0px 0px 0px 6px;
2710 border-radius: 0px 0px 0px 6px;
2711 padding: 1px;
2711 padding: 1px;
2712 }
2712 }
2713
2713
2714 .right .changes .added, .changed, .removed {
2714 .right .changes .added, .changed, .removed {
2715 display: block;
2715 display: block;
2716 padding: 1px;
2716 padding: 1px;
2717 color: #444444;
2717 color: #444444;
2718 float: right;
2718 float: right;
2719 text-align: center;
2719 text-align: center;
2720 min-width: 15px;
2720 min-width: 15px;
2721 }
2721 }
2722
2722
2723 .right .changes .added {
2723 .right .changes .added {
2724 background: #CFC;
2724 background: #CFC;
2725 }
2725 }
2726
2726
2727 .right .changes .changed {
2727 .right .changes .changed {
2728 background: #FEA;
2728 background: #FEA;
2729 }
2729 }
2730
2730
2731 .right .changes .removed {
2731 .right .changes .removed {
2732 background: #FAA;
2732 background: #FAA;
2733 }
2733 }
2734
2734
2735 .right .merge {
2735 .right .merge {
2736 padding: 1px 3px 1px 3px;
2736 padding: 1px 3px 1px 3px;
2737 background-color: #fca062;
2737 background-color: #fca062;
2738 font-size: 10px;
2738 font-size: 10px;
2739 color: #ffffff;
2739 color: #ffffff;
2740 text-transform: uppercase;
2740 text-transform: uppercase;
2741 white-space: nowrap;
2741 white-space: nowrap;
2742 -webkit-border-radius: 3px;
2742 -webkit-border-radius: 3px;
2743 border-radius: 3px;
2743 border-radius: 3px;
2744 margin-right: 2px;
2744 margin-right: 2px;
2745 }
2745 }
2746
2746
2747 .right .parent {
2747 .right .parent {
2748 color: #666666;
2748 color: #666666;
2749 clear: both;
2749 clear: both;
2750 }
2750 }
2751 .right .logtags {
2751 .right .logtags {
2752 line-height: 2.2em;
2752 line-height: 2.2em;
2753 }
2753 }
2754 .branchtag, .logtags .tagtag, .logtags .booktag {
2754 .branchtag, .logtags .tagtag, .logtags .booktag {
2755 margin: 0px 2px;
2755 margin: 0px 2px;
2756 }
2756 }
2757
2757
2758 .branchtag,
2758 .branchtag,
2759 .tagtag,
2759 .tagtag,
2760 .bookbook,
2760 .bookbook,
2761 .spantag {
2761 .spantag {
2762 padding: 1px 3px 1px 3px;
2762 padding: 1px 3px 1px 3px;
2763 font-size: 10px;
2763 font-size: 10px;
2764 color: #336699;
2764 color: #336699;
2765 white-space: nowrap;
2765 white-space: nowrap;
2766 -webkit-border-radius: 4px;
2766 -webkit-border-radius: 4px;
2767 border-radius: 4px;
2767 border-radius: 4px;
2768 border: 1px solid #d9e8f8;
2768 border: 1px solid #d9e8f8;
2769 line-height: 1.5em;
2769 line-height: 1.5em;
2770 }
2770 }
2771
2771
2772 #graph_content .branchtag,
2772 #graph_content .branchtag,
2773 #graph_content .tagtag,
2773 #graph_content .tagtag,
2774 #graph_content .bookbook {
2774 #graph_content .bookbook {
2775 margin: 1.1em 0;
2775 margin: 1.1em 0;
2776 margin-right: 0.5em;
2776 margin-right: 0.5em;
2777 }
2777 }
2778
2778
2779 .branchtag,
2779 .branchtag,
2780 .tagtag,
2780 .tagtag,
2781 .bookbook {
2781 .bookbook {
2782 float: left;
2782 float: left;
2783 }
2783 }
2784
2784
2785 .right .logtags .branchtag,
2785 .right .logtags .branchtag,
2786 .logtags .tagtag,
2786 .logtags .tagtag,
2787 .right .merge {
2787 .right .merge {
2788 float: right;
2788 float: right;
2789 line-height: 1em;
2789 line-height: 1em;
2790 margin: 1px 1px !important;
2790 margin: 1px 1px !important;
2791 display: block;
2791 display: block;
2792 }
2792 }
2793
2793
2794 .bookbook {
2794 .bookbook {
2795 border-color: #46A546;
2795 border-color: #46A546;
2796 color: #46A546;
2796 color: #46A546;
2797 }
2797 }
2798
2798
2799 .tagtag {
2799 .tagtag {
2800 border-color: #62cffc;
2800 border-color: #62cffc;
2801 color: #62cffc;
2801 color: #62cffc;
2802 }
2802 }
2803
2803
2804 .logtags .branchtag a:hover,
2804 .logtags .branchtag a:hover,
2805 .logtags .branchtag a,
2805 .logtags .branchtag a,
2806 .branchtag a,
2806 .branchtag a,
2807 .branchtag a:hover {
2807 .branchtag a:hover {
2808 text-decoration: none;
2808 text-decoration: none;
2809 color: inherit;
2809 color: inherit;
2810 }
2810 }
2811 .logtags .tagtag {
2811 .logtags .tagtag {
2812 padding: 1px 3px 1px 3px;
2812 padding: 1px 3px 1px 3px;
2813 background-color: #62cffc;
2813 background-color: #62cffc;
2814 font-size: 10px;
2814 font-size: 10px;
2815 color: #ffffff;
2815 color: #ffffff;
2816 white-space: nowrap;
2816 white-space: nowrap;
2817 -webkit-border-radius: 3px;
2817 -webkit-border-radius: 3px;
2818 border-radius: 3px;
2818 border-radius: 3px;
2819 }
2819 }
2820
2820
2821 .tagtag a,
2821 .tagtag a,
2822 .tagtag a:hover,
2822 .tagtag a:hover,
2823 .logtags .tagtag a,
2823 .logtags .tagtag a,
2824 .logtags .tagtag a:hover {
2824 .logtags .tagtag a:hover {
2825 text-decoration: none;
2825 text-decoration: none;
2826 color: inherit;
2826 color: inherit;
2827 }
2827 }
2828 .logbooks .bookbook, .logbooks .bookbook, .logtags .bookbook, .logtags .bookbook {
2828 .logbooks .bookbook, .logbooks .bookbook, .logtags .bookbook, .logtags .bookbook {
2829 padding: 1px 3px 1px 3px;
2829 padding: 1px 3px 1px 3px;
2830 background-color: #46A546;
2830 background-color: #46A546;
2831 font-size: 10px;
2831 font-size: 10px;
2832 color: #ffffff;
2832 color: #ffffff;
2833 white-space: nowrap;
2833 white-space: nowrap;
2834 -webkit-border-radius: 3px;
2834 -webkit-border-radius: 3px;
2835 border-radius: 3px;
2835 border-radius: 3px;
2836 }
2836 }
2837 .logbooks .bookbook, .logbooks .bookbook a, .right .logtags .bookbook, .logtags .bookbook a {
2837 .logbooks .bookbook, .logbooks .bookbook a, .right .logtags .bookbook, .logtags .bookbook a {
2838 color: #ffffff;
2838 color: #ffffff;
2839 }
2839 }
2840
2840
2841 .logbooks .bookbook, .logbooks .bookbook a:hover,
2841 .logbooks .bookbook, .logbooks .bookbook a:hover,
2842 .logtags .bookbook, .logtags .bookbook a:hover,
2842 .logtags .bookbook, .logtags .bookbook a:hover,
2843 .bookbook a,
2843 .bookbook a,
2844 .bookbook a:hover {
2844 .bookbook a:hover {
2845 text-decoration: none;
2845 text-decoration: none;
2846 color: inherit;
2846 color: inherit;
2847 }
2847 }
2848 div.browserblock {
2848 div.browserblock {
2849 overflow: hidden;
2849 overflow: hidden;
2850 border: 1px solid #ccc;
2850 border: 1px solid #ccc;
2851 background: #f8f8f8;
2851 background: #f8f8f8;
2852 font-size: 100%;
2852 font-size: 100%;
2853 line-height: 125%;
2853 line-height: 125%;
2854 padding: 0;
2854 padding: 0;
2855 -webkit-border-radius: 6px 6px 0px 0px;
2855 -webkit-border-radius: 6px 6px 0px 0px;
2856 border-radius: 6px 6px 0px 0px;
2856 border-radius: 6px 6px 0px 0px;
2857 }
2857 }
2858
2858
2859 div.browserblock .browser-header {
2859 div.browserblock .browser-header {
2860 background: #FFF;
2860 background: #FFF;
2861 padding: 10px 0px 15px 0px;
2861 padding: 10px 0px 15px 0px;
2862 width: 100%;
2862 width: 100%;
2863 }
2863 }
2864
2864
2865 div.browserblock .browser-nav {
2865 div.browserblock .browser-nav {
2866 float: left
2866 float: left
2867 }
2867 }
2868
2868
2869 div.browserblock .browser-branch {
2869 div.browserblock .browser-branch {
2870 float: left;
2870 float: left;
2871 }
2871 }
2872
2872
2873 div.browserblock .browser-branch label {
2873 div.browserblock .browser-branch label {
2874 color: #4A4A4A;
2874 color: #4A4A4A;
2875 vertical-align: text-top;
2875 vertical-align: text-top;
2876 }
2876 }
2877
2877
2878 div.browserblock .browser-header span {
2878 div.browserblock .browser-header span {
2879 margin-left: 5px;
2879 margin-left: 5px;
2880 font-weight: 700;
2880 font-weight: 700;
2881 }
2881 }
2882
2882
2883 div.browserblock .browser-search {
2883 div.browserblock .browser-search {
2884 clear: both;
2884 clear: both;
2885 padding: 8px 8px 0px 5px;
2885 padding: 8px 8px 0px 5px;
2886 height: 20px;
2886 height: 20px;
2887 }
2887 }
2888
2888
2889 div.browserblock #node_filter_box {
2889 div.browserblock #node_filter_box {
2890 }
2890 }
2891
2891
2892 div.browserblock .search_activate {
2892 div.browserblock .search_activate {
2893 float: left
2893 float: left
2894 }
2894 }
2895
2895
2896 div.browserblock .add_node {
2896 div.browserblock .add_node {
2897 float: left;
2897 float: left;
2898 padding-left: 5px;
2898 padding-left: 5px;
2899 }
2899 }
2900
2900
2901 div.browserblock .search_activate a:hover, div.browserblock .add_node a:hover {
2901 div.browserblock .search_activate a:hover, div.browserblock .add_node a:hover {
2902 text-decoration: none !important;
2902 text-decoration: none !important;
2903 }
2903 }
2904
2904
2905 div.browserblock .browser-body {
2905 div.browserblock .browser-body {
2906 background: #EEE;
2906 background: #EEE;
2907 border-top: 1px solid #CCC;
2907 border-top: 1px solid #CCC;
2908 }
2908 }
2909
2909
2910 table.code-browser {
2910 table.code-browser {
2911 border-collapse: collapse;
2911 border-collapse: collapse;
2912 width: 100%;
2912 width: 100%;
2913 }
2913 }
2914
2914
2915 table.code-browser tr {
2915 table.code-browser tr {
2916 margin: 3px;
2916 margin: 3px;
2917 }
2917 }
2918
2918
2919 table.code-browser thead th {
2919 table.code-browser thead th {
2920 background-color: #EEE;
2920 background-color: #EEE;
2921 height: 20px;
2921 height: 20px;
2922 font-size: 1.1em;
2922 font-size: 1.1em;
2923 font-weight: 700;
2923 font-weight: 700;
2924 text-align: left;
2924 text-align: left;
2925 padding-left: 10px;
2925 padding-left: 10px;
2926 }
2926 }
2927
2927
2928 table.code-browser tbody td {
2928 table.code-browser tbody td {
2929 padding-left: 10px;
2929 padding-left: 10px;
2930 height: 20px;
2930 height: 20px;
2931 }
2931 }
2932
2932
2933 table.code-browser .browser-file {
2933 table.code-browser .browser-file {
2934 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2934 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2935 height: 16px;
2935 height: 16px;
2936 padding-left: 20px;
2936 padding-left: 20px;
2937 text-align: left;
2937 text-align: left;
2938 }
2938 }
2939 .diffblock .changeset_header {
2939 .diffblock .changeset_header {
2940 height: 16px;
2940 height: 16px;
2941 }
2941 }
2942 .diffblock .changeset_file {
2942 .diffblock .changeset_file {
2943 background: url("../images/icons/file.png") no-repeat scroll 3px;
2943 background: url("../images/icons/file.png") no-repeat scroll 3px;
2944 text-align: left;
2944 text-align: left;
2945 float: left;
2945 float: left;
2946 padding: 2px 0px 2px 22px;
2946 padding: 2px 0px 2px 22px;
2947 }
2947 }
2948 .diffblock .diff-menu-wrapper {
2948 .diffblock .diff-menu-wrapper {
2949 float: left;
2949 float: left;
2950 }
2950 }
2951
2951
2952 .diffblock .diff-menu {
2952 .diffblock .diff-menu {
2953 position: absolute;
2953 position: absolute;
2954 background: none repeat scroll 0 0 #FFFFFF;
2954 background: none repeat scroll 0 0 #FFFFFF;
2955 border-color: #003367 #666666 #666666;
2955 border-color: #003367 #666666 #666666;
2956 border-right: 1px solid #666666;
2956 border-right: 1px solid #666666;
2957 border-style: solid solid solid;
2957 border-style: solid solid solid;
2958 border-width: 1px;
2958 border-width: 1px;
2959 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2959 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2960 margin-top: 5px;
2960 margin-top: 5px;
2961 margin-left: 1px;
2961 margin-left: 1px;
2962
2962
2963 }
2963 }
2964 .diffblock .diff-actions {
2964 .diffblock .diff-actions {
2965 padding: 2px 0px 0px 2px;
2965 padding: 2px 0px 0px 2px;
2966 float: left;
2966 float: left;
2967 }
2967 }
2968 .diffblock .diff-menu ul li {
2968 .diffblock .diff-menu ul li {
2969 padding: 0px 0px 0px 0px !important;
2969 padding: 0px 0px 0px 0px !important;
2970 }
2970 }
2971 .diffblock .diff-menu ul li a {
2971 .diffblock .diff-menu ul li a {
2972 display: block;
2972 display: block;
2973 padding: 3px 8px 3px 8px !important;
2973 padding: 3px 8px 3px 8px !important;
2974 }
2974 }
2975 .diffblock .diff-menu ul li a:hover {
2975 .diffblock .diff-menu ul li a:hover {
2976 text-decoration: none;
2976 text-decoration: none;
2977 background-color: #EEEEEE;
2977 background-color: #EEEEEE;
2978 }
2978 }
2979 table.code-browser .browser-dir {
2979 table.code-browser .browser-dir {
2980 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2980 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2981 height: 16px;
2981 height: 16px;
2982 padding-left: 20px;
2982 padding-left: 20px;
2983 text-align: left;
2983 text-align: left;
2984 }
2984 }
2985
2985
2986 table.code-browser .submodule-dir {
2986 table.code-browser .submodule-dir {
2987 background: url("../images/icons/disconnect.png") no-repeat scroll 3px;
2987 background: url("../images/icons/disconnect.png") no-repeat scroll 3px;
2988 height: 16px;
2988 height: 16px;
2989 padding-left: 20px;
2989 padding-left: 20px;
2990 text-align: left;
2990 text-align: left;
2991 }
2991 }
2992
2992
2993
2993
2994 .box .search {
2994 .box .search {
2995 clear: both;
2995 clear: both;
2996 overflow: hidden;
2996 overflow: hidden;
2997 margin: 0;
2997 margin: 0;
2998 padding: 0 20px 10px;
2998 padding: 0 20px 10px;
2999 }
2999 }
3000
3000
3001 .box .search div.search_path {
3001 .box .search div.search_path {
3002 background: none repeat scroll 0 0 #EEE;
3002 background: none repeat scroll 0 0 #EEE;
3003 border: 1px solid #CCC;
3003 border: 1px solid #CCC;
3004 color: blue;
3004 color: blue;
3005 margin-bottom: 10px;
3005 margin-bottom: 10px;
3006 padding: 10px 0;
3006 padding: 10px 0;
3007 }
3007 }
3008
3008
3009 .box .search div.search_path div.link {
3009 .box .search div.search_path div.link {
3010 font-weight: 700;
3010 font-weight: 700;
3011 margin-left: 25px;
3011 margin-left: 25px;
3012 }
3012 }
3013
3013
3014 .box .search div.search_path div.link a {
3014 .box .search div.search_path div.link a {
3015 color: #003367;
3015 color: #003367;
3016 cursor: pointer;
3016 cursor: pointer;
3017 text-decoration: none;
3017 text-decoration: none;
3018 }
3018 }
3019
3019
3020 #path_unlock {
3020 #path_unlock {
3021 color: red;
3021 color: red;
3022 font-size: 1.2em;
3022 font-size: 1.2em;
3023 padding-left: 4px;
3023 padding-left: 4px;
3024 }
3024 }
3025
3025
3026 .info_box span {
3026 .info_box span {
3027 margin-left: 3px;
3027 margin-left: 3px;
3028 margin-right: 3px;
3028 margin-right: 3px;
3029 }
3029 }
3030
3030
3031 .info_box .rev {
3031 .info_box .rev {
3032 color: #003367;
3032 color: #003367;
3033 font-size: 1.6em;
3033 font-size: 1.6em;
3034 font-weight: bold;
3034 font-weight: bold;
3035 vertical-align: sub;
3035 vertical-align: sub;
3036 }
3036 }
3037
3037
3038 .info_box input#at_rev, .info_box input#size {
3038 .info_box input#at_rev, .info_box input#size {
3039 background: #FFF;
3039 background: #FFF;
3040 border-top: 1px solid #b3b3b3;
3040 border-top: 1px solid #b3b3b3;
3041 border-left: 1px solid #b3b3b3;
3041 border-left: 1px solid #b3b3b3;
3042 border-right: 1px solid #eaeaea;
3042 border-right: 1px solid #eaeaea;
3043 border-bottom: 1px solid #eaeaea;
3043 border-bottom: 1px solid #eaeaea;
3044 color: #000;
3044 color: #000;
3045 font-size: 12px;
3045 font-size: 12px;
3046 margin: 0;
3046 margin: 0;
3047 padding: 1px 5px 1px;
3047 padding: 1px 5px 1px;
3048 }
3048 }
3049
3049
3050 .info_box input#view {
3050 .info_box input#view {
3051 text-align: center;
3051 text-align: center;
3052 padding: 4px 3px 2px 2px;
3052 padding: 4px 3px 2px 2px;
3053 }
3053 }
3054
3054
3055 .yui-overlay, .yui-panel-container {
3055 .yui-overlay, .yui-panel-container {
3056 visibility: hidden;
3056 visibility: hidden;
3057 position: absolute;
3057 position: absolute;
3058 z-index: 2;
3058 z-index: 2;
3059 }
3059 }
3060
3060
3061 #tip-box {
3061 #tip-box {
3062 position: absolute;
3062 position: absolute;
3063
3063
3064 background-color: #FFF;
3064 background-color: #FFF;
3065 border: 2px solid #003367;
3065 border: 2px solid #003367;
3066 font: 100% sans-serif;
3066 font: 100% sans-serif;
3067 width: auto;
3067 width: auto;
3068 opacity: 1;
3068 opacity: 1;
3069 padding: 8px;
3069 padding: 8px;
3070
3070
3071 white-space: pre-wrap;
3071 white-space: pre-wrap;
3072 -webkit-border-radius: 8px 8px 8px 8px;
3072 -webkit-border-radius: 8px 8px 8px 8px;
3073 -khtml-border-radius: 8px 8px 8px 8px;
3073 -khtml-border-radius: 8px 8px 8px 8px;
3074 border-radius: 8px 8px 8px 8px;
3074 border-radius: 8px 8px 8px 8px;
3075 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3075 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3076 -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3076 -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3077 }
3077 }
3078
3078
3079 .hl-tip-box {
3079 .hl-tip-box {
3080 visibility: hidden;
3080 visibility: hidden;
3081 position: absolute;
3081 position: absolute;
3082 color: #666;
3082 color: #666;
3083 background-color: #FFF;
3083 background-color: #FFF;
3084 border: 2px solid #003367;
3084 border: 2px solid #003367;
3085 font: 100% sans-serif;
3085 font: 100% sans-serif;
3086 width: auto;
3086 width: auto;
3087 opacity: 1;
3087 opacity: 1;
3088 padding: 8px;
3088 padding: 8px;
3089 white-space: pre-wrap;
3089 white-space: pre-wrap;
3090 -webkit-border-radius: 8px 8px 8px 8px;
3090 -webkit-border-radius: 8px 8px 8px 8px;
3091 -khtml-border-radius: 8px 8px 8px 8px;
3091 -khtml-border-radius: 8px 8px 8px 8px;
3092 border-radius: 8px 8px 8px 8px;
3092 border-radius: 8px 8px 8px 8px;
3093 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3093 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3094 }
3094 }
3095
3095
3096
3096
3097 .mentions-container {
3097 .mentions-container {
3098 width: 90% !important;
3098 width: 90% !important;
3099 }
3099 }
3100 .mentions-container .yui-ac-content {
3100 .mentions-container .yui-ac-content {
3101 width: 100% !important;
3101 width: 100% !important;
3102 }
3102 }
3103
3103
3104 .ac {
3104 .ac {
3105 vertical-align: top;
3105 vertical-align: top;
3106 }
3106 }
3107
3107
3108 .ac .yui-ac {
3108 .ac .yui-ac {
3109 position: inherit;
3109 position: inherit;
3110 font-size: 100%;
3110 font-size: 100%;
3111 }
3111 }
3112
3112
3113 .ac .perm_ac {
3113 .ac .perm_ac {
3114 width: 20em;
3114 width: 20em;
3115 }
3115 }
3116
3116
3117 .ac .yui-ac-input {
3117 .ac .yui-ac-input {
3118 width: 100%;
3118 width: 100%;
3119 }
3119 }
3120
3120
3121 .ac .yui-ac-container {
3121 .ac .yui-ac-container {
3122 position: absolute;
3122 position: absolute;
3123 top: 1.6em;
3123 top: 1.6em;
3124 width: auto;
3124 width: auto;
3125 }
3125 }
3126
3126
3127 .ac .yui-ac-content {
3127 .ac .yui-ac-content {
3128 position: absolute;
3128 position: absolute;
3129 border: 1px solid gray;
3129 border: 1px solid gray;
3130 background: #fff;
3130 background: #fff;
3131 z-index: 9050;
3131 z-index: 9050;
3132 }
3132 }
3133
3133
3134 .ac .yui-ac-shadow {
3134 .ac .yui-ac-shadow {
3135 position: absolute;
3135 position: absolute;
3136 width: 100%;
3136 width: 100%;
3137 background: #000;
3137 background: #000;
3138 opacity: .10;
3138 opacity: .10;
3139 filter: alpha(opacity = 10);
3139 filter: alpha(opacity = 10);
3140 z-index: 9049;
3140 z-index: 9049;
3141 margin: .3em;
3141 margin: .3em;
3142 }
3142 }
3143
3143
3144 .ac .yui-ac-content ul {
3144 .ac .yui-ac-content ul {
3145 width: 100%;
3145 width: 100%;
3146 margin: 0;
3146 margin: 0;
3147 padding: 0;
3147 padding: 0;
3148 z-index: 9050;
3148 z-index: 9050;
3149 }
3149 }
3150
3150
3151 .ac .yui-ac-content li {
3151 .ac .yui-ac-content li {
3152 cursor: default;
3152 cursor: default;
3153 white-space: nowrap;
3153 white-space: nowrap;
3154 margin: 0;
3154 margin: 0;
3155 padding: 2px 5px;
3155 padding: 2px 5px;
3156 height: 18px;
3156 height: 18px;
3157 z-index: 9050;
3157 z-index: 9050;
3158 display: block;
3158 display: block;
3159 width: auto !important;
3159 width: auto !important;
3160 }
3160 }
3161
3161
3162 .ac .yui-ac-content li .ac-container-wrap {
3162 .ac .yui-ac-content li .ac-container-wrap {
3163 width: auto;
3163 width: auto;
3164 }
3164 }
3165
3165
3166 .ac .yui-ac-content li.yui-ac-prehighlight {
3166 .ac .yui-ac-content li.yui-ac-prehighlight {
3167 background: #B3D4FF;
3167 background: #B3D4FF;
3168 z-index: 9050;
3168 z-index: 9050;
3169 }
3169 }
3170
3170
3171 .ac .yui-ac-content li.yui-ac-highlight {
3171 .ac .yui-ac-content li.yui-ac-highlight {
3172 background: #556CB5;
3172 background: #556CB5;
3173 color: #FFF;
3173 color: #FFF;
3174 z-index: 9050;
3174 z-index: 9050;
3175 }
3175 }
3176 .ac .yui-ac-bd {
3176 .ac .yui-ac-bd {
3177 z-index: 9050;
3177 z-index: 9050;
3178 }
3178 }
3179
3179
3180 .follow {
3180 .follow {
3181 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3181 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3182 height: 16px;
3182 height: 16px;
3183 width: 20px;
3183 width: 20px;
3184 cursor: pointer;
3184 cursor: pointer;
3185 display: block;
3185 display: block;
3186 float: right;
3186 float: right;
3187 margin-top: 2px;
3187 margin-top: 2px;
3188 }
3188 }
3189
3189
3190 .following {
3190 .following {
3191 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3191 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3192 height: 16px;
3192 height: 16px;
3193 width: 20px;
3193 width: 20px;
3194 cursor: pointer;
3194 cursor: pointer;
3195 display: block;
3195 display: block;
3196 float: right;
3196 float: right;
3197 margin-top: 2px;
3197 margin-top: 2px;
3198 }
3198 }
3199
3199
3200 .reposize {
3200 .reposize {
3201 background: url("../images/icons/server.png") no-repeat scroll 3px;
3201 background: url("../images/icons/server.png") no-repeat scroll 3px;
3202 height: 16px;
3202 height: 16px;
3203 width: 20px;
3203 width: 20px;
3204 cursor: pointer;
3204 cursor: pointer;
3205 display: block;
3205 display: block;
3206 float: right;
3206 float: right;
3207 margin-top: 2px;
3207 margin-top: 2px;
3208 }
3208 }
3209
3209
3210 #repo_size {
3210 #repo_size {
3211 display: block;
3211 display: block;
3212 margin-top: 4px;
3212 margin-top: 4px;
3213 color: #666;
3213 color: #666;
3214 float: right;
3214 float: right;
3215 }
3215 }
3216
3216
3217 .locking_locked {
3217 .locking_locked {
3218 background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px;
3218 background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px;
3219 height: 16px;
3219 height: 16px;
3220 width: 20px;
3220 width: 20px;
3221 cursor: pointer;
3221 cursor: pointer;
3222 display: block;
3222 display: block;
3223 float: right;
3223 float: right;
3224 margin-top: 2px;
3224 margin-top: 2px;
3225 }
3225 }
3226
3226
3227 .locking_unlocked {
3227 .locking_unlocked {
3228 background: #FFF url("../images/icons/accept.png") no-repeat scroll 3px;
3228 background: #FFF url("../images/icons/accept.png") no-repeat scroll 3px;
3229 height: 16px;
3229 height: 16px;
3230 width: 20px;
3230 width: 20px;
3231 cursor: pointer;
3231 cursor: pointer;
3232 display: block;
3232 display: block;
3233 float: right;
3233 float: right;
3234 margin-top: 2px;
3234 margin-top: 2px;
3235 }
3235 }
3236
3236
3237 .currently_following {
3237 .currently_following {
3238 padding-left: 10px;
3238 padding-left: 10px;
3239 padding-bottom: 5px;
3239 padding-bottom: 5px;
3240 }
3240 }
3241
3241
3242 .add_icon {
3242 .add_icon {
3243 background: url("../images/icons/add.png") no-repeat scroll 3px;
3243 background: url("../images/icons/add.png") no-repeat scroll 3px;
3244 padding-left: 20px;
3244 padding-left: 20px;
3245 padding-top: 0px;
3245 padding-top: 0px;
3246 text-align: left;
3246 text-align: left;
3247 }
3247 }
3248
3248
3249 .accept_icon {
3249 .accept_icon {
3250 background: url("../images/icons/accept.png") no-repeat scroll 3px;
3250 background: url("../images/icons/accept.png") no-repeat scroll 3px;
3251 padding-left: 20px;
3251 padding-left: 20px;
3252 padding-top: 0px;
3252 padding-top: 0px;
3253 text-align: left;
3253 text-align: left;
3254 }
3254 }
3255
3255
3256 .edit_icon {
3256 .edit_icon {
3257 background: url("../images/icons/application_form_edit.png") no-repeat scroll 3px;
3257 background: url("../images/icons/application_form_edit.png") no-repeat scroll 3px;
3258 padding-left: 20px;
3258 padding-left: 20px;
3259 padding-top: 0px;
3259 padding-top: 0px;
3260 text-align: left;
3260 text-align: left;
3261 }
3261 }
3262
3262
3263 .delete_icon {
3263 .delete_icon {
3264 background: url("../images/icons/delete.png") no-repeat scroll 3px;
3264 background: url("../images/icons/delete.png") no-repeat scroll 3px;
3265 padding-left: 20px;
3265 padding-left: 20px;
3266 padding-top: 0px;
3266 padding-top: 0px;
3267 text-align: left;
3267 text-align: left;
3268 }
3268 }
3269
3269
3270 .refresh_icon {
3270 .refresh_icon {
3271 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
3271 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
3272 3px;
3272 3px;
3273 padding-left: 20px;
3273 padding-left: 20px;
3274 padding-top: 0px;
3274 padding-top: 0px;
3275 text-align: left;
3275 text-align: left;
3276 }
3276 }
3277
3277
3278 .pull_icon {
3278 .pull_icon {
3279 background: url("../images/icons/connect.png") no-repeat scroll 3px;
3279 background: url("../images/icons/connect.png") no-repeat scroll 3px;
3280 padding-left: 20px;
3280 padding-left: 20px;
3281 padding-top: 0px;
3281 padding-top: 0px;
3282 text-align: left;
3282 text-align: left;
3283 }
3283 }
3284
3284
3285 .rss_icon {
3285 .rss_icon {
3286 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3286 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3287 padding-left: 20px;
3287 padding-left: 20px;
3288 padding-top: 4px;
3288 padding-top: 4px;
3289 text-align: left;
3289 text-align: left;
3290 font-size: 8px
3290 font-size: 8px
3291 }
3291 }
3292
3292
3293 .atom_icon {
3293 .atom_icon {
3294 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3294 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3295 padding-left: 20px;
3295 padding-left: 20px;
3296 padding-top: 4px;
3296 padding-top: 4px;
3297 text-align: left;
3297 text-align: left;
3298 font-size: 8px
3298 font-size: 8px
3299 }
3299 }
3300
3300
3301 .archive_icon {
3301 .archive_icon {
3302 background: url("../images/icons/compress.png") no-repeat scroll 3px;
3302 background: url("../images/icons/compress.png") no-repeat scroll 3px;
3303 padding-left: 20px;
3303 padding-left: 20px;
3304 text-align: left;
3304 text-align: left;
3305 padding-top: 1px;
3305 padding-top: 1px;
3306 }
3306 }
3307
3307
3308 .start_following_icon {
3308 .start_following_icon {
3309 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3309 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3310 padding-left: 20px;
3310 padding-left: 20px;
3311 text-align: left;
3311 text-align: left;
3312 padding-top: 0px;
3312 padding-top: 0px;
3313 }
3313 }
3314
3314
3315 .stop_following_icon {
3315 .stop_following_icon {
3316 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3316 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3317 padding-left: 20px;
3317 padding-left: 20px;
3318 text-align: left;
3318 text-align: left;
3319 padding-top: 0px;
3319 padding-top: 0px;
3320 }
3320 }
3321
3321
3322 .action_button {
3322 .action_button {
3323 border: 0;
3323 border: 0;
3324 display: inline;
3324 display: inline;
3325 }
3325 }
3326
3326
3327 .action_button:hover {
3327 .action_button:hover {
3328 border: 0;
3328 border: 0;
3329 text-decoration: underline;
3329 text-decoration: underline;
3330 cursor: pointer;
3330 cursor: pointer;
3331 }
3331 }
3332
3332
3333 #switch_repos {
3333 #switch_repos {
3334 position: absolute;
3334 position: absolute;
3335 height: 25px;
3335 height: 25px;
3336 z-index: 1;
3336 z-index: 1;
3337 }
3337 }
3338
3338
3339 #switch_repos select {
3339 #switch_repos select {
3340 min-width: 150px;
3340 min-width: 150px;
3341 max-height: 250px;
3341 max-height: 250px;
3342 z-index: 1;
3342 z-index: 1;
3343 }
3343 }
3344
3344
3345 .breadcrumbs {
3345 .breadcrumbs {
3346 border: medium none;
3346 border: medium none;
3347 color: #FFF;
3347 color: #FFF;
3348 float: left;
3348 float: left;
3349 font-weight: 700;
3349 font-weight: 700;
3350 font-size: 14px;
3350 font-size: 14px;
3351 margin: 0;
3351 margin: 0;
3352 padding: 11px 0 11px 10px;
3352 padding: 11px 0 11px 10px;
3353 }
3353 }
3354
3354
3355 .breadcrumbs .hash {
3355 .breadcrumbs .hash {
3356 text-transform: none;
3356 text-transform: none;
3357 color: #fff;
3357 color: #fff;
3358 }
3358 }
3359
3359
3360 .breadcrumbs a {
3360 .breadcrumbs a {
3361 color: #FFF;
3361 color: #FFF;
3362 }
3362 }
3363
3363
3364 .flash_msg {
3364 .flash_msg {
3365 }
3365 }
3366
3366
3367 .flash_msg ul {
3367 .flash_msg ul {
3368 }
3368 }
3369
3369
3370 .error_red {
3370 .error_red {
3371 color: red;
3371 color: red;
3372 }
3372 }
3373
3373
3374 .error_msg {
3374 .error_msg {
3375 background-color: #c43c35;
3375 background-color: #c43c35;
3376 background-repeat: repeat-x;
3376 background-repeat: repeat-x;
3377 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35) );
3377 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35) );
3378 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3378 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3379 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3379 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3380 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35) );
3380 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35) );
3381 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3381 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3382 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3382 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3383 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3383 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3384 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35', GradientType=0 );
3384 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35', GradientType=0 );
3385 border-color: #c43c35 #c43c35 #882a25;
3385 border-color: #c43c35 #c43c35 #882a25;
3386 }
3386 }
3387
3387
3388 .error_msg a {
3389 text-decoration: underline;
3390 }
3391
3388 .warning_msg {
3392 .warning_msg {
3389 color: #404040 !important;
3393 color: #404040 !important;
3390 background-color: #eedc94;
3394 background-color: #eedc94;
3391 background-repeat: repeat-x;
3395 background-repeat: repeat-x;
3392 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94) );
3396 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94) );
3393 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
3397 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
3394 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
3398 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
3395 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94) );
3399 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94) );
3396 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
3400 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
3397 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
3401 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
3398 background-image: linear-gradient(to bottom, #fceec1, #eedc94);
3402 background-image: linear-gradient(to bottom, #fceec1, #eedc94);
3399 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0 );
3403 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0 );
3400 border-color: #eedc94 #eedc94 #e4c652;
3404 border-color: #eedc94 #eedc94 #e4c652;
3401 }
3405 }
3402
3406
3407 .warning_msg a {
3408 text-decoration: underline;
3409 }
3410
3403 .success_msg {
3411 .success_msg {
3404 background-color: #57a957;
3412 background-color: #57a957;
3405 background-repeat: repeat-x !important;
3413 background-repeat: repeat-x !important;
3406 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957) );
3414 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957) );
3407 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3415 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3408 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3416 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3409 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957) );
3417 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957) );
3410 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3418 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3411 background-image: -o-linear-gradient(top, #62c462, #57a957);
3419 background-image: -o-linear-gradient(top, #62c462, #57a957);
3412 background-image: linear-gradient(to bottom, #62c462, #57a957);
3420 background-image: linear-gradient(to bottom, #62c462, #57a957);
3413 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0 );
3421 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0 );
3414 border-color: #57a957 #57a957 #3d773d;
3422 border-color: #57a957 #57a957 #3d773d;
3415 }
3423 }
3416
3424
3425 .success_msg a {
3426 text-decoration: underline;
3427 color: #FFF !important;
3428 }
3429
3417 .notice_msg {
3430 .notice_msg {
3418 background-color: #339bb9;
3431 background-color: #339bb9;
3419 background-repeat: repeat-x;
3432 background-repeat: repeat-x;
3420 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9) );
3433 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9) );
3421 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3434 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3422 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3435 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3423 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9) );
3436 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9) );
3424 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3437 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3425 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3438 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3426 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3439 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3427 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0 );
3440 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0 );
3428 border-color: #339bb9 #339bb9 #22697d;
3441 border-color: #339bb9 #339bb9 #22697d;
3429 }
3442 }
3430
3443
3444 .notice_msg a {
3445 text-decoration: underline;
3446 }
3447
3431 .success_msg, .error_msg, .notice_msg, .warning_msg {
3448 .success_msg, .error_msg, .notice_msg, .warning_msg {
3432 font-size: 12px;
3449 font-size: 12px;
3433 font-weight: 700;
3450 font-weight: 700;
3434 min-height: 14px;
3451 min-height: 14px;
3435 line-height: 14px;
3452 line-height: 14px;
3436 margin-bottom: 10px;
3453 margin-bottom: 10px;
3437 margin-top: 0;
3454 margin-top: 0;
3438 display: block;
3455 display: block;
3439 overflow: auto;
3456 overflow: auto;
3440 padding: 6px 10px 6px 10px;
3457 padding: 6px 10px 6px 10px;
3441 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3458 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3442 position: relative;
3459 position: relative;
3443 color: #FFF;
3460 color: #FFF;
3444 border-width: 1px;
3461 border-width: 1px;
3445 border-style: solid;
3462 border-style: solid;
3446 -webkit-border-radius: 4px;
3463 -webkit-border-radius: 4px;
3447 border-radius: 4px;
3464 border-radius: 4px;
3448 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3465 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3449 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3466 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3450 }
3467 }
3451
3468
3452 #msg_close {
3469 #msg_close {
3453 background: transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
3470 background: transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
3454 cursor: pointer;
3471 cursor: pointer;
3455 height: 16px;
3472 height: 16px;
3456 position: absolute;
3473 position: absolute;
3457 right: 5px;
3474 right: 5px;
3458 top: 5px;
3475 top: 5px;
3459 width: 16px;
3476 width: 16px;
3460 }
3477 }
3461 div#legend_data {
3478 div#legend_data {
3462 padding-left: 10px;
3479 padding-left: 10px;
3463 }
3480 }
3464 div#legend_container table {
3481 div#legend_container table {
3465 border: none !important;
3482 border: none !important;
3466 }
3483 }
3467 div#legend_container table, div#legend_choices table {
3484 div#legend_container table, div#legend_choices table {
3468 width: auto !important;
3485 width: auto !important;
3469 }
3486 }
3470
3487
3471 table#permissions_manage {
3488 table#permissions_manage {
3472 width: 0 !important;
3489 width: 0 !important;
3473 }
3490 }
3474
3491
3475 table#permissions_manage span.private_repo_msg {
3492 table#permissions_manage span.private_repo_msg {
3476 font-size: 0.8em;
3493 font-size: 0.8em;
3477 opacity: 0.6;
3494 opacity: 0.6;
3478 }
3495 }
3479
3496
3480 table#permissions_manage td.private_repo_msg {
3497 table#permissions_manage td.private_repo_msg {
3481 font-size: 0.8em;
3498 font-size: 0.8em;
3482 }
3499 }
3483
3500
3484 table#permissions_manage tr#add_perm_input td {
3501 table#permissions_manage tr#add_perm_input td {
3485 vertical-align: middle;
3502 vertical-align: middle;
3486 }
3503 }
3487
3504
3488 div.gravatar {
3505 div.gravatar {
3489 background-color: #FFF;
3506 background-color: #FFF;
3490 float: left;
3507 float: left;
3491 margin-right: 0.7em;
3508 margin-right: 0.7em;
3492 padding: 1px 1px 1px 1px;
3509 padding: 1px 1px 1px 1px;
3493 line-height: 0;
3510 line-height: 0;
3494 -webkit-border-radius: 3px;
3511 -webkit-border-radius: 3px;
3495 -khtml-border-radius: 3px;
3512 -khtml-border-radius: 3px;
3496 border-radius: 3px;
3513 border-radius: 3px;
3497 }
3514 }
3498
3515
3499 div.gravatar img {
3516 div.gravatar img {
3500 -webkit-border-radius: 2px;
3517 -webkit-border-radius: 2px;
3501 -khtml-border-radius: 2px;
3518 -khtml-border-radius: 2px;
3502 border-radius: 2px;
3519 border-radius: 2px;
3503 }
3520 }
3504
3521
3505 #header, #content, #footer {
3522 #header, #content, #footer {
3506 min-width: 978px;
3523 min-width: 978px;
3507 }
3524 }
3508
3525
3509 #content {
3526 #content {
3510 clear: both;
3527 clear: both;
3511 padding: 10px 10px 14px 10px;
3528 padding: 10px 10px 14px 10px;
3512 }
3529 }
3513
3530
3514 #content.hover {
3531 #content.hover {
3515 padding: 55px 10px 14px 10px !important;
3532 padding: 55px 10px 14px 10px !important;
3516 }
3533 }
3517
3534
3518 #content div.box div.title div.search {
3535 #content div.box div.title div.search {
3519 border-left: 1px solid #316293;
3536 border-left: 1px solid #316293;
3520 }
3537 }
3521
3538
3522 #content div.box div.title div.search div.input input {
3539 #content div.box div.title div.search div.input input {
3523 border: 1px solid #316293;
3540 border: 1px solid #316293;
3524 }
3541 }
3525
3542
3526 .ui-btn {
3543 .ui-btn {
3527 color: #515151;
3544 color: #515151;
3528 background-color: #DADADA;
3545 background-color: #DADADA;
3529 background-repeat: repeat-x;
3546 background-repeat: repeat-x;
3530 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3547 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3531 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3548 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3532 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3549 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3533 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3550 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3534 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3551 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3535 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3552 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3536 background-image: linear-gradient(to bottom, #F4F4F4, #DADADA);
3553 background-image: linear-gradient(to bottom, #F4F4F4, #DADADA);
3537 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3554 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3538
3555
3539 border-top: 1px solid #DDD;
3556 border-top: 1px solid #DDD;
3540 border-left: 1px solid #c6c6c6;
3557 border-left: 1px solid #c6c6c6;
3541 border-right: 1px solid #DDD;
3558 border-right: 1px solid #DDD;
3542 border-bottom: 1px solid #c6c6c6;
3559 border-bottom: 1px solid #c6c6c6;
3543 color: #515151;
3560 color: #515151;
3544 outline: none;
3561 outline: none;
3545 margin: 0px 3px 3px 0px;
3562 margin: 0px 3px 3px 0px;
3546 -webkit-border-radius: 4px 4px 4px 4px !important;
3563 -webkit-border-radius: 4px 4px 4px 4px !important;
3547 -khtml-border-radius: 4px 4px 4px 4px !important;
3564 -khtml-border-radius: 4px 4px 4px 4px !important;
3548 border-radius: 4px 4px 4px 4px !important;
3565 border-radius: 4px 4px 4px 4px !important;
3549 cursor: pointer !important;
3566 cursor: pointer !important;
3550 padding: 3px 3px 3px 3px;
3567 padding: 3px 3px 3px 3px;
3551 background-position: 0 -15px;
3568 background-position: 0 -15px;
3552
3569
3553 }
3570 }
3554
3571
3555 .ui-btn.disabled {
3572 .ui-btn.disabled {
3556 color: #999;
3573 color: #999;
3557 }
3574 }
3558
3575
3559 .ui-btn.xsmall {
3576 .ui-btn.xsmall {
3560 padding: 1px 2px 1px 1px;
3577 padding: 1px 2px 1px 1px;
3561 }
3578 }
3562
3579
3563 .ui-btn.large {
3580 .ui-btn.large {
3564 padding: 6px 12px;
3581 padding: 6px 12px;
3565 }
3582 }
3566
3583
3567 .ui-btn.clone {
3584 .ui-btn.clone {
3568 padding: 5px 2px 6px 1px;
3585 padding: 5px 2px 6px 1px;
3569 margin: 0px 0px 3px -4px;
3586 margin: 0px 0px 3px -4px;
3570 -webkit-border-radius: 0px 4px 4px 0px !important;
3587 -webkit-border-radius: 0px 4px 4px 0px !important;
3571 -khtml-border-radius: 0px 4px 4px 0px !important;
3588 -khtml-border-radius: 0px 4px 4px 0px !important;
3572 border-radius: 0px 4px 4px 0px !important;
3589 border-radius: 0px 4px 4px 0px !important;
3573 width: 100px;
3590 width: 100px;
3574 text-align: center;
3591 text-align: center;
3575 display: inline-block;
3592 display: inline-block;
3576 position: relative;
3593 position: relative;
3577 top: -2px;
3594 top: -2px;
3578 }
3595 }
3579 .ui-btn:focus {
3596 .ui-btn:focus {
3580 outline: none;
3597 outline: none;
3581 }
3598 }
3582 .ui-btn:hover {
3599 .ui-btn:hover {
3583 background-position: 0 -15px;
3600 background-position: 0 -15px;
3584 text-decoration: none;
3601 text-decoration: none;
3585 color: #515151;
3602 color: #515151;
3586 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3603 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3587 }
3604 }
3588
3605
3589 .ui-btn.disabled:hover {
3606 .ui-btn.disabled:hover {
3590 background-position: 0;
3607 background-position: 0;
3591 color: #999;
3608 color: #999;
3592 text-decoration: none;
3609 text-decoration: none;
3593 box-shadow: none !important;
3610 box-shadow: none !important;
3594 }
3611 }
3595
3612
3596 .ui-btn.red {
3613 .ui-btn.red {
3597 color: #fff;
3614 color: #fff;
3598 background-color: #c43c35;
3615 background-color: #c43c35;
3599 background-repeat: repeat-x;
3616 background-repeat: repeat-x;
3600 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3617 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3601 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3618 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3602 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3619 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3603 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3620 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3604 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3621 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3605 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3622 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3606 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3623 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3607 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3624 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3608 border-color: #c43c35 #c43c35 #882a25;
3625 border-color: #c43c35 #c43c35 #882a25;
3609 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3626 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3610 }
3627 }
3611
3628
3612
3629
3613 .ui-btn.blue {
3630 .ui-btn.blue {
3614 color: #fff;
3631 color: #fff;
3615 background-color: #339bb9;
3632 background-color: #339bb9;
3616 background-repeat: repeat-x;
3633 background-repeat: repeat-x;
3617 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3634 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3618 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3635 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3619 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3636 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3620 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3637 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3621 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3638 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3622 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3639 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3623 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3640 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3624 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3641 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3625 border-color: #339bb9 #339bb9 #22697d;
3642 border-color: #339bb9 #339bb9 #22697d;
3626 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3643 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3627 }
3644 }
3628
3645
3629 .ui-btn.green {
3646 .ui-btn.green {
3630 background-color: #57a957;
3647 background-color: #57a957;
3631 background-repeat: repeat-x;
3648 background-repeat: repeat-x;
3632 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3649 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3633 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3650 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3634 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3651 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3635 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3652 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3636 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3653 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3637 background-image: -o-linear-gradient(top, #62c462, #57a957);
3654 background-image: -o-linear-gradient(top, #62c462, #57a957);
3638 background-image: linear-gradient(to bottom, #62c462, #57a957);
3655 background-image: linear-gradient(to bottom, #62c462, #57a957);
3639 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3656 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3640 border-color: #57a957 #57a957 #3d773d;
3657 border-color: #57a957 #57a957 #3d773d;
3641 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3658 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3642 }
3659 }
3643
3660
3644 .ui-btn.blue.hidden {
3661 .ui-btn.blue.hidden {
3645 display: none;
3662 display: none;
3646 }
3663 }
3647
3664
3648 .ui-btn.active {
3665 .ui-btn.active {
3649 font-weight: bold;
3666 font-weight: bold;
3650 }
3667 }
3651
3668
3652 ins, div.options a:hover {
3669 ins, div.options a:hover {
3653 text-decoration: none;
3670 text-decoration: none;
3654 }
3671 }
3655
3672
3656 img,
3673 img,
3657 #header #header-inner #quick li a:hover span.normal,
3674 #header #header-inner #quick li a:hover span.normal,
3658 #content div.box div.form div.fields div.field div.textarea table td table td a,
3675 #content div.box div.form div.fields div.field div.textarea table td table td a,
3659 #clone_url,
3676 #clone_url,
3660 #clone_url_id
3677 #clone_url_id
3661 {
3678 {
3662 border: none;
3679 border: none;
3663 }
3680 }
3664
3681
3665 img.icon, .right .merge img {
3682 img.icon, .right .merge img {
3666 vertical-align: bottom;
3683 vertical-align: bottom;
3667 }
3684 }
3668
3685
3669 #header ul#logged-user, #content div.box div.title ul.links,
3686 #header ul#logged-user, #content div.box div.title ul.links,
3670 #content div.box div.message div.dismiss,
3687 #content div.box div.message div.dismiss,
3671 #content div.box div.traffic div.legend ul {
3688 #content div.box div.traffic div.legend ul {
3672 float: right;
3689 float: right;
3673 margin: 0;
3690 margin: 0;
3674 padding: 0;
3691 padding: 0;
3675 }
3692 }
3676
3693
3677 #header #header-inner #home, #header #header-inner #logo,
3694 #header #header-inner #home, #header #header-inner #logo,
3678 #content div.box ul.left, #content div.box ol.left,
3695 #content div.box ul.left, #content div.box ol.left,
3679 #content div.box div.pagination-left, div#commit_history,
3696 #content div.box div.pagination-left, div#commit_history,
3680 div#legend_data, div#legend_container, div#legend_choices {
3697 div#legend_data, div#legend_container, div#legend_choices {
3681 float: left;
3698 float: left;
3682 }
3699 }
3683
3700
3684 #header #header-inner #quick li #quick_login,
3701 #header #header-inner #quick li #quick_login,
3685 #header #header-inner #quick li:hover ul ul,
3702 #header #header-inner #quick li:hover ul ul,
3686 #header #header-inner #quick li:hover ul ul ul,
3703 #header #header-inner #quick li:hover ul ul ul,
3687 #header #header-inner #quick li:hover ul ul ul ul,
3704 #header #header-inner #quick li:hover ul ul ul ul,
3688 #content #left #menu ul.closed, #content #left #menu li ul.collapsed, .yui-tt-shadow {
3705 #content #left #menu ul.closed, #content #left #menu li ul.collapsed, .yui-tt-shadow {
3689 display: none;
3706 display: none;
3690 }
3707 }
3691
3708
3692 #header #header-inner #quick li:hover #quick_login,
3709 #header #header-inner #quick li:hover #quick_login,
3693 #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 {
3710 #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 {
3694 display: block;
3711 display: block;
3695 }
3712 }
3696
3713
3697 #content div.graph {
3714 #content div.graph {
3698 padding: 0 10px 10px;
3715 padding: 0 10px 10px;
3699 }
3716 }
3700
3717
3701 #content div.box div.title ul.links li a:hover,
3718 #content div.box div.title ul.links li a:hover,
3702 #content div.box div.title ul.links li.ui-tabs-selected a {
3719 #content div.box div.title ul.links li.ui-tabs-selected a {
3703
3720
3704 background: #6388ad; /* Old browsers */
3721 background: #6388ad; /* Old browsers */
3705 background: -moz-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* FF3.6+ */
3722 background: -moz-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* FF3.6+ */
3706 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.1)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */
3723 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.1)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */
3707 background: -webkit-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Chrome10+,Safari5.1+ */
3724 background: -webkit-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Chrome10+,Safari5.1+ */
3708 background: -o-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Opera 11.10+ */
3725 background: -o-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Opera 11.10+ */
3709 background: -ms-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* IE10+ */
3726 background: -ms-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* IE10+ */
3710 background: linear-gradient(to bottom, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* W3C */
3727 background: linear-gradient(to bottom, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* W3C */
3711 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#88bfe8', endColorstr='#70b0e0',GradientType=0 ); /* IE6-9 */*/
3728 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#88bfe8', endColorstr='#70b0e0',GradientType=0 ); /* IE6-9 */*/
3712 }
3729 }
3713
3730
3714 #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 {
3731 #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 {
3715 margin: 10px 24px 10px 44px;
3732 margin: 10px 24px 10px 44px;
3716 }
3733 }
3717
3734
3718 #content div.box div.form, #content div.box div.table, #content div.box div.traffic {
3735 #content div.box div.form, #content div.box div.table, #content div.box div.traffic {
3719 position: relative;
3736 position: relative;
3720 clear: both;
3737 clear: both;
3721 overflow: hidden;
3738 overflow: hidden;
3722 margin: 0;
3739 margin: 0;
3723 padding: 0 20px 10px;
3740 padding: 0 20px 10px;
3724 }
3741 }
3725
3742
3726 #content div.box div.form div.fields, #login div.form, #login div.form div.fields, #register div.form, #register div.form div.fields {
3743 #content div.box div.form div.fields, #login div.form, #login div.form div.fields, #register div.form, #register div.form div.fields {
3727 clear: both;
3744 clear: both;
3728 overflow: hidden;
3745 overflow: hidden;
3729 margin: 0;
3746 margin: 0;
3730 padding: 0;
3747 padding: 0;
3731 }
3748 }
3732
3749
3733 #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 {
3750 #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 {
3734 height: 1%;
3751 height: 1%;
3735 display: block;
3752 display: block;
3736 color: #363636;
3753 color: #363636;
3737 margin: 0;
3754 margin: 0;
3738 padding: 2px 0 0;
3755 padding: 2px 0 0;
3739 }
3756 }
3740
3757
3741 #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 {
3758 #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 {
3742 background: #FBE3E4;
3759 background: #FBE3E4;
3743 border-top: 1px solid #e1b2b3;
3760 border-top: 1px solid #e1b2b3;
3744 border-left: 1px solid #e1b2b3;
3761 border-left: 1px solid #e1b2b3;
3745 border-right: 1px solid #FBC2C4;
3762 border-right: 1px solid #FBC2C4;
3746 border-bottom: 1px solid #FBC2C4;
3763 border-bottom: 1px solid #FBC2C4;
3747 }
3764 }
3748
3765
3749 #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 {
3766 #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 {
3750 background: #E6EFC2;
3767 background: #E6EFC2;
3751 border-top: 1px solid #cebb98;
3768 border-top: 1px solid #cebb98;
3752 border-left: 1px solid #cebb98;
3769 border-left: 1px solid #cebb98;
3753 border-right: 1px solid #c6d880;
3770 border-right: 1px solid #c6d880;
3754 border-bottom: 1px solid #c6d880;
3771 border-bottom: 1px solid #c6d880;
3755 }
3772 }
3756
3773
3757 #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 {
3774 #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 {
3758 margin: 0;
3775 margin: 0;
3759 }
3776 }
3760
3777
3761 #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 {
3778 #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 {
3762 margin: 0 0 0 0px !important;
3779 margin: 0 0 0 0px !important;
3763 padding: 0;
3780 padding: 0;
3764 }
3781 }
3765
3782
3766 #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 {
3783 #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 {
3767 margin: 0 0 0 200px;
3784 margin: 0 0 0 200px;
3768 padding: 0;
3785 padding: 0;
3769 }
3786 }
3770
3787
3771 #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 {
3788 #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 {
3772 color: #000;
3789 color: #000;
3773 text-decoration: none;
3790 text-decoration: none;
3774 }
3791 }
3775
3792
3776 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus, #content div.box div.action a.ui-selectmenu-focus {
3793 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus, #content div.box div.action a.ui-selectmenu-focus {
3777 border: 1px solid #666;
3794 border: 1px solid #666;
3778 }
3795 }
3779
3796
3780 #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 {
3797 #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 {
3781 clear: both;
3798 clear: both;
3782 overflow: hidden;
3799 overflow: hidden;
3783 margin: 0;
3800 margin: 0;
3784 padding: 8px 0 2px;
3801 padding: 8px 0 2px;
3785 }
3802 }
3786
3803
3787 #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 {
3804 #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 {
3788 float: left;
3805 float: left;
3789 margin: 0;
3806 margin: 0;
3790 }
3807 }
3791
3808
3792 #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 {
3809 #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 {
3793 height: 1%;
3810 height: 1%;
3794 display: block;
3811 display: block;
3795 float: left;
3812 float: left;
3796 margin: 2px 0 0 4px;
3813 margin: 2px 0 0 4px;
3797 }
3814 }
3798
3815
3799 div.form div.fields div.field div.button input,
3816 div.form div.fields div.field div.button input,
3800 #content div.box div.form div.fields div.buttons input
3817 #content div.box div.form div.fields div.buttons input
3801 div.form div.fields div.buttons input,
3818 div.form div.fields div.buttons input,
3802 #content div.box div.action div.button input {
3819 #content div.box div.action div.button input {
3803 font-size: 11px;
3820 font-size: 11px;
3804 font-weight: 700;
3821 font-weight: 700;
3805 margin: 0;
3822 margin: 0;
3806 }
3823 }
3807
3824
3808 input.ui-button {
3825 input.ui-button {
3809 background: #e5e3e3 url("../images/button.png") repeat-x;
3826 background: #e5e3e3 url("../images/button.png") repeat-x;
3810 border-top: 1px solid #DDD;
3827 border-top: 1px solid #DDD;
3811 border-left: 1px solid #c6c6c6;
3828 border-left: 1px solid #c6c6c6;
3812 border-right: 1px solid #DDD;
3829 border-right: 1px solid #DDD;
3813 border-bottom: 1px solid #c6c6c6;
3830 border-bottom: 1px solid #c6c6c6;
3814 color: #515151 !important;
3831 color: #515151 !important;
3815 outline: none;
3832 outline: none;
3816 margin: 0;
3833 margin: 0;
3817 padding: 6px 12px;
3834 padding: 6px 12px;
3818 -webkit-border-radius: 4px 4px 4px 4px;
3835 -webkit-border-radius: 4px 4px 4px 4px;
3819 -khtml-border-radius: 4px 4px 4px 4px;
3836 -khtml-border-radius: 4px 4px 4px 4px;
3820 border-radius: 4px 4px 4px 4px;
3837 border-radius: 4px 4px 4px 4px;
3821 box-shadow: 0 1px 0 #ececec;
3838 box-shadow: 0 1px 0 #ececec;
3822 cursor: pointer;
3839 cursor: pointer;
3823 }
3840 }
3824
3841
3825 input.ui-button:hover {
3842 input.ui-button:hover {
3826 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3843 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3827 border-top: 1px solid #ccc;
3844 border-top: 1px solid #ccc;
3828 border-left: 1px solid #bebebe;
3845 border-left: 1px solid #bebebe;
3829 border-right: 1px solid #b1b1b1;
3846 border-right: 1px solid #b1b1b1;
3830 border-bottom: 1px solid #afafaf;
3847 border-bottom: 1px solid #afafaf;
3831 }
3848 }
3832
3849
3833 div.form div.fields div.field div.highlight, #content div.box div.form div.fields div.buttons div.highlight {
3850 div.form div.fields div.field div.highlight, #content div.box div.form div.fields div.buttons div.highlight {
3834 display: inline;
3851 display: inline;
3835 }
3852 }
3836
3853
3837 #content div.box div.form div.fields div.buttons, div.form div.fields div.buttons {
3854 #content div.box div.form div.fields div.buttons, div.form div.fields div.buttons {
3838 margin: 10px 0 0 200px;
3855 margin: 10px 0 0 200px;
3839 padding: 0;
3856 padding: 0;
3840 }
3857 }
3841
3858
3842 #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 {
3859 #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 {
3843 margin: 10px 0 0;
3860 margin: 10px 0 0;
3844 }
3861 }
3845
3862
3846 #content div.box table td.user, #content div.box table td.address {
3863 #content div.box table td.user, #content div.box table td.address {
3847 width: 10%;
3864 width: 10%;
3848 text-align: center;
3865 text-align: center;
3849 }
3866 }
3850
3867
3851 #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 {
3868 #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 {
3852 text-align: right;
3869 text-align: right;
3853 margin: 6px 0 0;
3870 margin: 6px 0 0;
3854 padding: 0;
3871 padding: 0;
3855 }
3872 }
3856
3873
3857 #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 {
3874 #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 {
3858 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3875 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3859 border-top: 1px solid #ccc;
3876 border-top: 1px solid #ccc;
3860 border-left: 1px solid #bebebe;
3877 border-left: 1px solid #bebebe;
3861 border-right: 1px solid #b1b1b1;
3878 border-right: 1px solid #b1b1b1;
3862 border-bottom: 1px solid #afafaf;
3879 border-bottom: 1px solid #afafaf;
3863 color: #515151;
3880 color: #515151;
3864 margin: 0;
3881 margin: 0;
3865 padding: 6px 12px;
3882 padding: 6px 12px;
3866 }
3883 }
3867
3884
3868 #content div.box div.pagination div.results, #content div.box div.pagination-wh div.results {
3885 #content div.box div.pagination div.results, #content div.box div.pagination-wh div.results {
3869 text-align: left;
3886 text-align: left;
3870 float: left;
3887 float: left;
3871 margin: 0;
3888 margin: 0;
3872 padding: 0;
3889 padding: 0;
3873 }
3890 }
3874
3891
3875 #content div.box div.pagination div.results span, #content div.box div.pagination-wh div.results span {
3892 #content div.box div.pagination div.results span, #content div.box div.pagination-wh div.results span {
3876 height: 1%;
3893 height: 1%;
3877 display: block;
3894 display: block;
3878 float: left;
3895 float: left;
3879 background: #ebebeb url("../images/pager.png") repeat-x;
3896 background: #ebebeb url("../images/pager.png") repeat-x;
3880 border-top: 1px solid #dedede;
3897 border-top: 1px solid #dedede;
3881 border-left: 1px solid #cfcfcf;
3898 border-left: 1px solid #cfcfcf;
3882 border-right: 1px solid #c4c4c4;
3899 border-right: 1px solid #c4c4c4;
3883 border-bottom: 1px solid #c4c4c4;
3900 border-bottom: 1px solid #c4c4c4;
3884 color: #4A4A4A;
3901 color: #4A4A4A;
3885 font-weight: 700;
3902 font-weight: 700;
3886 margin: 0;
3903 margin: 0;
3887 padding: 6px 8px;
3904 padding: 6px 8px;
3888 }
3905 }
3889
3906
3890 #content div.box div.pagination ul.pager li.disabled, #content div.box div.pagination-wh a.disabled {
3907 #content div.box div.pagination ul.pager li.disabled, #content div.box div.pagination-wh a.disabled {
3891 color: #B4B4B4;
3908 color: #B4B4B4;
3892 padding: 6px;
3909 padding: 6px;
3893 }
3910 }
3894
3911
3895 #login, #register {
3912 #login, #register {
3896 width: 520px;
3913 width: 520px;
3897 margin: 10% auto 0;
3914 margin: 10% auto 0;
3898 padding: 0;
3915 padding: 0;
3899 }
3916 }
3900
3917
3901 #login div.color, #register div.color {
3918 #login div.color, #register div.color {
3902 clear: both;
3919 clear: both;
3903 overflow: hidden;
3920 overflow: hidden;
3904 background: #FFF;
3921 background: #FFF;
3905 margin: 10px auto 0;
3922 margin: 10px auto 0;
3906 padding: 3px 3px 3px 0;
3923 padding: 3px 3px 3px 0;
3907 }
3924 }
3908
3925
3909 #login div.color a, #register div.color a {
3926 #login div.color a, #register div.color a {
3910 width: 20px;
3927 width: 20px;
3911 height: 20px;
3928 height: 20px;
3912 display: block;
3929 display: block;
3913 float: left;
3930 float: left;
3914 margin: 0 0 0 3px;
3931 margin: 0 0 0 3px;
3915 padding: 0;
3932 padding: 0;
3916 }
3933 }
3917
3934
3918 #login div.title h5, #register div.title h5 {
3935 #login div.title h5, #register div.title h5 {
3919 color: #fff;
3936 color: #fff;
3920 margin: 10px;
3937 margin: 10px;
3921 padding: 0;
3938 padding: 0;
3922 }
3939 }
3923
3940
3924 #login div.form div.fields div.field, #register div.form div.fields div.field {
3941 #login div.form div.fields div.field, #register div.form div.fields div.field {
3925 clear: both;
3942 clear: both;
3926 overflow: hidden;
3943 overflow: hidden;
3927 margin: 0;
3944 margin: 0;
3928 padding: 0 0 10px;
3945 padding: 0 0 10px;
3929 }
3946 }
3930
3947
3931 #login div.form div.fields div.field span.error-message, #register div.form div.fields div.field span.error-message {
3948 #login div.form div.fields div.field span.error-message, #register div.form div.fields div.field span.error-message {
3932 height: 1%;
3949 height: 1%;
3933 display: block;
3950 display: block;
3934 color: red;
3951 color: red;
3935 margin: 8px 0 0;
3952 margin: 8px 0 0;
3936 padding: 0;
3953 padding: 0;
3937 max-width: 320px;
3954 max-width: 320px;
3938 }
3955 }
3939
3956
3940 #login div.form div.fields div.field div.label label, #register div.form div.fields div.field div.label label {
3957 #login div.form div.fields div.field div.label label, #register div.form div.fields div.field div.label label {
3941 color: #000;
3958 color: #000;
3942 font-weight: 700;
3959 font-weight: 700;
3943 }
3960 }
3944
3961
3945 #login div.form div.fields div.field div.input, #register div.form div.fields div.field div.input {
3962 #login div.form div.fields div.field div.input, #register div.form div.fields div.field div.input {
3946 float: left;
3963 float: left;
3947 margin: 0;
3964 margin: 0;
3948 padding: 0;
3965 padding: 0;
3949 }
3966 }
3950
3967
3951 #login div.form div.fields div.field div.input input.large {
3968 #login div.form div.fields div.field div.input input.large {
3952 width: 250px;
3969 width: 250px;
3953 }
3970 }
3954
3971
3955 #login div.form div.fields div.field div.checkbox, #register div.form div.fields div.field div.checkbox {
3972 #login div.form div.fields div.field div.checkbox, #register div.form div.fields div.field div.checkbox {
3956 margin: 0 0 0 184px;
3973 margin: 0 0 0 184px;
3957 padding: 0;
3974 padding: 0;
3958 }
3975 }
3959
3976
3960 #login div.form div.fields div.field div.checkbox label, #register div.form div.fields div.field div.checkbox label {
3977 #login div.form div.fields div.field div.checkbox label, #register div.form div.fields div.field div.checkbox label {
3961 color: #565656;
3978 color: #565656;
3962 font-weight: 700;
3979 font-weight: 700;
3963 }
3980 }
3964
3981
3965 #login div.form div.fields div.buttons input, #register div.form div.fields div.buttons input {
3982 #login div.form div.fields div.buttons input, #register div.form div.fields div.buttons input {
3966 color: #000;
3983 color: #000;
3967 font-size: 1em;
3984 font-size: 1em;
3968 font-weight: 700;
3985 font-weight: 700;
3969 margin: 0;
3986 margin: 0;
3970 }
3987 }
3971
3988
3972 #changeset_content .container .wrapper, #graph_content .container .wrapper {
3989 #changeset_content .container .wrapper, #graph_content .container .wrapper {
3973 width: 600px;
3990 width: 600px;
3974 }
3991 }
3975
3992
3976 #changeset_content .container .date, .ac .match {
3993 #changeset_content .container .date, .ac .match {
3977 font-weight: 700;
3994 font-weight: 700;
3978 padding-top: 5px;
3995 padding-top: 5px;
3979 padding-bottom: 5px;
3996 padding-bottom: 5px;
3980 }
3997 }
3981
3998
3982 div#legend_container table td, div#legend_choices table td {
3999 div#legend_container table td, div#legend_choices table td {
3983 border: none !important;
4000 border: none !important;
3984 height: 20px !important;
4001 height: 20px !important;
3985 padding: 0 !important;
4002 padding: 0 !important;
3986 }
4003 }
3987
4004
3988 .q_filter_box {
4005 .q_filter_box {
3989 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4006 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3990 -webkit-border-radius: 4px;
4007 -webkit-border-radius: 4px;
3991 border-radius: 4px;
4008 border-radius: 4px;
3992 border: 0 none;
4009 border: 0 none;
3993 color: #AAAAAA;
4010 color: #AAAAAA;
3994 margin-bottom: -4px;
4011 margin-bottom: -4px;
3995 margin-top: -4px;
4012 margin-top: -4px;
3996 padding-left: 3px;
4013 padding-left: 3px;
3997 }
4014 }
3998
4015
3999 #node_filter {
4016 #node_filter {
4000 border: 0px solid #545454;
4017 border: 0px solid #545454;
4001 color: #AAAAAA;
4018 color: #AAAAAA;
4002 padding-left: 3px;
4019 padding-left: 3px;
4003 }
4020 }
4004
4021
4005
4022
4006 .group_members_wrap {
4023 .group_members_wrap {
4007 min-height: 85px;
4024 min-height: 85px;
4008 padding-left: 20px;
4025 padding-left: 20px;
4009 }
4026 }
4010
4027
4011 .group_members .group_member {
4028 .group_members .group_member {
4012 height: 30px;
4029 height: 30px;
4013 padding: 0px 0px 0px 0px;
4030 padding: 0px 0px 0px 0px;
4014 }
4031 }
4015
4032
4016 .reviewers_member {
4033 .reviewers_member {
4017 height: 15px;
4034 height: 15px;
4018 padding: 0px 0px 0px 10px;
4035 padding: 0px 0px 0px 10px;
4019 }
4036 }
4020
4037
4021 .emails_wrap {
4038 .emails_wrap {
4022 padding: 0px 20px;
4039 padding: 0px 20px;
4023 }
4040 }
4024
4041
4025 .emails_wrap .email_entry {
4042 .emails_wrap .email_entry {
4026 height: 30px;
4043 height: 30px;
4027 padding: 0px 0px 0px 10px;
4044 padding: 0px 0px 0px 10px;
4028 }
4045 }
4029 .emails_wrap .email_entry .email {
4046 .emails_wrap .email_entry .email {
4030 float: left
4047 float: left
4031 }
4048 }
4032 .emails_wrap .email_entry .email_action {
4049 .emails_wrap .email_entry .email_action {
4033 float: left
4050 float: left
4034 }
4051 }
4035
4052
4036 .ips_wrap {
4053 .ips_wrap {
4037 padding: 0px 20px;
4054 padding: 0px 20px;
4038 }
4055 }
4039
4056
4040 .ips_wrap .ip_entry {
4057 .ips_wrap .ip_entry {
4041 height: 30px;
4058 height: 30px;
4042 padding: 0px 0px 0px 10px;
4059 padding: 0px 0px 0px 10px;
4043 }
4060 }
4044 .ips_wrap .ip_entry .ip {
4061 .ips_wrap .ip_entry .ip {
4045 float: left
4062 float: left
4046 }
4063 }
4047 .ips_wrap .ip_entry .ip_action {
4064 .ips_wrap .ip_entry .ip_action {
4048 float: left
4065 float: left
4049 }
4066 }
4050
4067
4051
4068
4052 /*README STYLE*/
4069 /*README STYLE*/
4053
4070
4054 div.readme {
4071 div.readme {
4055 padding: 0px;
4072 padding: 0px;
4056 }
4073 }
4057
4074
4058 div.readme h2 {
4075 div.readme h2 {
4059 font-weight: normal;
4076 font-weight: normal;
4060 }
4077 }
4061
4078
4062 div.readme .readme_box {
4079 div.readme .readme_box {
4063 background-color: #fafafa;
4080 background-color: #fafafa;
4064 }
4081 }
4065
4082
4066 div.readme .readme_box {
4083 div.readme .readme_box {
4067 clear: both;
4084 clear: both;
4068 overflow: hidden;
4085 overflow: hidden;
4069 margin: 0;
4086 margin: 0;
4070 padding: 0 20px 10px;
4087 padding: 0 20px 10px;
4071 }
4088 }
4072
4089
4073 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 {
4090 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 {
4074 border-bottom: 0 !important;
4091 border-bottom: 0 !important;
4075 margin: 0 !important;
4092 margin: 0 !important;
4076 padding: 0 !important;
4093 padding: 0 !important;
4077 line-height: 1.5em !important;
4094 line-height: 1.5em !important;
4078 }
4095 }
4079
4096
4080
4097
4081 div.readme .readme_box h1:first-child {
4098 div.readme .readme_box h1:first-child {
4082 padding-top: .25em !important;
4099 padding-top: .25em !important;
4083 }
4100 }
4084
4101
4085 div.readme .readme_box h2, div.readme .readme_box h3 {
4102 div.readme .readme_box h2, div.readme .readme_box h3 {
4086 margin: 1em 0 !important;
4103 margin: 1em 0 !important;
4087 }
4104 }
4088
4105
4089 div.readme .readme_box h2 {
4106 div.readme .readme_box h2 {
4090 margin-top: 1.5em !important;
4107 margin-top: 1.5em !important;
4091 border-top: 4px solid #e0e0e0 !important;
4108 border-top: 4px solid #e0e0e0 !important;
4092 padding-top: .5em !important;
4109 padding-top: .5em !important;
4093 }
4110 }
4094
4111
4095 div.readme .readme_box p {
4112 div.readme .readme_box p {
4096 color: black !important;
4113 color: black !important;
4097 margin: 1em 0 !important;
4114 margin: 1em 0 !important;
4098 line-height: 1.5em !important;
4115 line-height: 1.5em !important;
4099 }
4116 }
4100
4117
4101 div.readme .readme_box ul {
4118 div.readme .readme_box ul {
4102 list-style: disc !important;
4119 list-style: disc !important;
4103 margin: 1em 0 1em 2em !important;
4120 margin: 1em 0 1em 2em !important;
4104 }
4121 }
4105
4122
4106 div.readme .readme_box ol {
4123 div.readme .readme_box ol {
4107 list-style: decimal;
4124 list-style: decimal;
4108 margin: 1em 0 1em 2em !important;
4125 margin: 1em 0 1em 2em !important;
4109 }
4126 }
4110
4127
4111 div.readme .readme_box pre, code {
4128 div.readme .readme_box pre, code {
4112 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4129 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4113 }
4130 }
4114
4131
4115 div.readme .readme_box code {
4132 div.readme .readme_box code {
4116 font-size: 12px !important;
4133 font-size: 12px !important;
4117 background-color: ghostWhite !important;
4134 background-color: ghostWhite !important;
4118 color: #444 !important;
4135 color: #444 !important;
4119 padding: 0 .2em !important;
4136 padding: 0 .2em !important;
4120 border: 1px solid #dedede !important;
4137 border: 1px solid #dedede !important;
4121 }
4138 }
4122
4139
4123 div.readme .readme_box pre code {
4140 div.readme .readme_box pre code {
4124 padding: 0 !important;
4141 padding: 0 !important;
4125 font-size: 12px !important;
4142 font-size: 12px !important;
4126 background-color: #eee !important;
4143 background-color: #eee !important;
4127 border: none !important;
4144 border: none !important;
4128 }
4145 }
4129
4146
4130 div.readme .readme_box pre {
4147 div.readme .readme_box pre {
4131 margin: 1em 0;
4148 margin: 1em 0;
4132 font-size: 12px;
4149 font-size: 12px;
4133 background-color: #eee;
4150 background-color: #eee;
4134 border: 1px solid #ddd;
4151 border: 1px solid #ddd;
4135 padding: 5px;
4152 padding: 5px;
4136 color: #444;
4153 color: #444;
4137 overflow: auto;
4154 overflow: auto;
4138 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4155 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4139 -webkit-border-radius: 3px;
4156 -webkit-border-radius: 3px;
4140 border-radius: 3px;
4157 border-radius: 3px;
4141 }
4158 }
4142
4159
4143 div.readme .readme_box table {
4160 div.readme .readme_box table {
4144 display: table;
4161 display: table;
4145 border-collapse: separate;
4162 border-collapse: separate;
4146 border-spacing: 2px;
4163 border-spacing: 2px;
4147 border-color: gray;
4164 border-color: gray;
4148 width: auto !important;
4165 width: auto !important;
4149 }
4166 }
4150
4167
4151
4168
4152 /** RST STYLE **/
4169 /** RST STYLE **/
4153
4170
4154
4171
4155 div.rst-block {
4172 div.rst-block {
4156 padding: 0px;
4173 padding: 0px;
4157 }
4174 }
4158
4175
4159 div.rst-block h2 {
4176 div.rst-block h2 {
4160 font-weight: normal;
4177 font-weight: normal;
4161 }
4178 }
4162
4179
4163 div.rst-block {
4180 div.rst-block {
4164 background-color: #fafafa;
4181 background-color: #fafafa;
4165 }
4182 }
4166
4183
4167 div.rst-block {
4184 div.rst-block {
4168 clear: both;
4185 clear: both;
4169 overflow: hidden;
4186 overflow: hidden;
4170 margin: 0;
4187 margin: 0;
4171 padding: 0 20px 10px;
4188 padding: 0 20px 10px;
4172 }
4189 }
4173
4190
4174 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
4191 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
4175 border-bottom: 0 !important;
4192 border-bottom: 0 !important;
4176 margin: 0 !important;
4193 margin: 0 !important;
4177 padding: 0 !important;
4194 padding: 0 !important;
4178 line-height: 1.5em !important;
4195 line-height: 1.5em !important;
4179 }
4196 }
4180
4197
4181
4198
4182 div.rst-block h1:first-child {
4199 div.rst-block h1:first-child {
4183 padding-top: .25em !important;
4200 padding-top: .25em !important;
4184 }
4201 }
4185
4202
4186 div.rst-block h2, div.rst-block h3 {
4203 div.rst-block h2, div.rst-block h3 {
4187 margin: 1em 0 !important;
4204 margin: 1em 0 !important;
4188 }
4205 }
4189
4206
4190 div.rst-block h2 {
4207 div.rst-block h2 {
4191 margin-top: 1.5em !important;
4208 margin-top: 1.5em !important;
4192 border-top: 4px solid #e0e0e0 !important;
4209 border-top: 4px solid #e0e0e0 !important;
4193 padding-top: .5em !important;
4210 padding-top: .5em !important;
4194 }
4211 }
4195
4212
4196 div.rst-block p {
4213 div.rst-block p {
4197 color: black !important;
4214 color: black !important;
4198 margin: 1em 0 !important;
4215 margin: 1em 0 !important;
4199 line-height: 1.5em !important;
4216 line-height: 1.5em !important;
4200 }
4217 }
4201
4218
4202 div.rst-block ul {
4219 div.rst-block ul {
4203 list-style: disc !important;
4220 list-style: disc !important;
4204 margin: 1em 0 1em 2em !important;
4221 margin: 1em 0 1em 2em !important;
4205 }
4222 }
4206
4223
4207 div.rst-block ol {
4224 div.rst-block ol {
4208 list-style: decimal;
4225 list-style: decimal;
4209 margin: 1em 0 1em 2em !important;
4226 margin: 1em 0 1em 2em !important;
4210 }
4227 }
4211
4228
4212 div.rst-block pre, code {
4229 div.rst-block pre, code {
4213 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4230 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4214 }
4231 }
4215
4232
4216 div.rst-block code {
4233 div.rst-block code {
4217 font-size: 12px !important;
4234 font-size: 12px !important;
4218 background-color: ghostWhite !important;
4235 background-color: ghostWhite !important;
4219 color: #444 !important;
4236 color: #444 !important;
4220 padding: 0 .2em !important;
4237 padding: 0 .2em !important;
4221 border: 1px solid #dedede !important;
4238 border: 1px solid #dedede !important;
4222 }
4239 }
4223
4240
4224 div.rst-block pre code {
4241 div.rst-block pre code {
4225 padding: 0 !important;
4242 padding: 0 !important;
4226 font-size: 12px !important;
4243 font-size: 12px !important;
4227 background-color: #eee !important;
4244 background-color: #eee !important;
4228 border: none !important;
4245 border: none !important;
4229 }
4246 }
4230
4247
4231 div.rst-block pre {
4248 div.rst-block pre {
4232 margin: 1em 0;
4249 margin: 1em 0;
4233 font-size: 12px;
4250 font-size: 12px;
4234 background-color: #eee;
4251 background-color: #eee;
4235 border: 1px solid #ddd;
4252 border: 1px solid #ddd;
4236 padding: 5px;
4253 padding: 5px;
4237 color: #444;
4254 color: #444;
4238 overflow: auto;
4255 overflow: auto;
4239 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4256 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4240 -webkit-border-radius: 3px;
4257 -webkit-border-radius: 3px;
4241 border-radius: 3px;
4258 border-radius: 3px;
4242 }
4259 }
4243
4260
4244
4261
4245 /** comment main **/
4262 /** comment main **/
4246 .comments {
4263 .comments {
4247 padding: 10px 20px;
4264 padding: 10px 20px;
4248 }
4265 }
4249
4266
4250 .comments .comment {
4267 .comments .comment {
4251 border: 1px solid #ddd;
4268 border: 1px solid #ddd;
4252 margin-top: 10px;
4269 margin-top: 10px;
4253 -webkit-border-radius: 4px;
4270 -webkit-border-radius: 4px;
4254 border-radius: 4px;
4271 border-radius: 4px;
4255 }
4272 }
4256
4273
4257 .comments .comment .meta {
4274 .comments .comment .meta {
4258 background: #f8f8f8;
4275 background: #f8f8f8;
4259 padding: 4px;
4276 padding: 4px;
4260 border-bottom: 1px solid #ddd;
4277 border-bottom: 1px solid #ddd;
4261 height: 18px;
4278 height: 18px;
4262 }
4279 }
4263
4280
4264 .comments .comment .meta img {
4281 .comments .comment .meta img {
4265 vertical-align: middle;
4282 vertical-align: middle;
4266 }
4283 }
4267
4284
4268 .comments .comment .meta .user {
4285 .comments .comment .meta .user {
4269 font-weight: bold;
4286 font-weight: bold;
4270 float: left;
4287 float: left;
4271 padding: 4px 2px 2px 2px;
4288 padding: 4px 2px 2px 2px;
4272 }
4289 }
4273
4290
4274 .comments .comment .meta .date {
4291 .comments .comment .meta .date {
4275 float: left;
4292 float: left;
4276 padding: 4px 4px 0px 4px;
4293 padding: 4px 4px 0px 4px;
4277 }
4294 }
4278
4295
4279 .comments .comment .text {
4296 .comments .comment .text {
4280 background-color: #FAFAFA;
4297 background-color: #FAFAFA;
4281 }
4298 }
4282 .comment .text div.rst-block p {
4299 .comment .text div.rst-block p {
4283 margin: 0.5em 0px !important;
4300 margin: 0.5em 0px !important;
4284 }
4301 }
4285
4302
4286 .comments .comments-number {
4303 .comments .comments-number {
4287 padding: 0px 0px 10px 0px;
4304 padding: 0px 0px 10px 0px;
4288 font-weight: bold;
4305 font-weight: bold;
4289 color: #666;
4306 color: #666;
4290 font-size: 16px;
4307 font-size: 16px;
4291 }
4308 }
4292
4309
4293 /** comment form **/
4310 /** comment form **/
4294
4311
4295 .status-block {
4312 .status-block {
4296 min-height: 80px;
4313 min-height: 80px;
4297 clear: both
4314 clear: both
4298 }
4315 }
4299
4316
4300 .comment-form .clearfix {
4317 .comment-form .clearfix {
4301 background: #EEE;
4318 background: #EEE;
4302 -webkit-border-radius: 4px;
4319 -webkit-border-radius: 4px;
4303 border-radius: 4px;
4320 border-radius: 4px;
4304 padding: 10px;
4321 padding: 10px;
4305 }
4322 }
4306
4323
4307 div.comment-form {
4324 div.comment-form {
4308 margin-top: 20px;
4325 margin-top: 20px;
4309 }
4326 }
4310
4327
4311 .comment-form strong {
4328 .comment-form strong {
4312 display: block;
4329 display: block;
4313 margin-bottom: 15px;
4330 margin-bottom: 15px;
4314 }
4331 }
4315
4332
4316 .comment-form textarea {
4333 .comment-form textarea {
4317 width: 100%;
4334 width: 100%;
4318 height: 100px;
4335 height: 100px;
4319 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4336 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4320 }
4337 }
4321
4338
4322 form.comment-form {
4339 form.comment-form {
4323 margin-top: 10px;
4340 margin-top: 10px;
4324 margin-left: 10px;
4341 margin-left: 10px;
4325 }
4342 }
4326
4343
4327 .comment-form-submit {
4344 .comment-form-submit {
4328 margin-top: 5px;
4345 margin-top: 5px;
4329 margin-left: 525px;
4346 margin-left: 525px;
4330 }
4347 }
4331
4348
4332 .file-comments {
4349 .file-comments {
4333 display: none;
4350 display: none;
4334 }
4351 }
4335
4352
4336 .comment-form .comment {
4353 .comment-form .comment {
4337 margin-left: 10px;
4354 margin-left: 10px;
4338 }
4355 }
4339
4356
4340 .comment-form .comment-help {
4357 .comment-form .comment-help {
4341 padding: 0px 0px 5px 0px;
4358 padding: 0px 0px 5px 0px;
4342 color: #666;
4359 color: #666;
4343 }
4360 }
4344
4361
4345 .comment-form .comment-button {
4362 .comment-form .comment-button {
4346 padding-top: 5px;
4363 padding-top: 5px;
4347 }
4364 }
4348
4365
4349 .add-another-button {
4366 .add-another-button {
4350 margin-left: 10px;
4367 margin-left: 10px;
4351 margin-top: 10px;
4368 margin-top: 10px;
4352 margin-bottom: 10px;
4369 margin-bottom: 10px;
4353 }
4370 }
4354
4371
4355 .comment .buttons {
4372 .comment .buttons {
4356 float: right;
4373 float: right;
4357 padding: 2px 2px 0px 0px;
4374 padding: 2px 2px 0px 0px;
4358 }
4375 }
4359
4376
4360
4377
4361 .show-inline-comments {
4378 .show-inline-comments {
4362 position: relative;
4379 position: relative;
4363 top: 1px
4380 top: 1px
4364 }
4381 }
4365
4382
4366 /** comment inline form **/
4383 /** comment inline form **/
4367 .comment-inline-form .overlay {
4384 .comment-inline-form .overlay {
4368 display: none;
4385 display: none;
4369 }
4386 }
4370 .comment-inline-form .overlay.submitting {
4387 .comment-inline-form .overlay.submitting {
4371 display: block;
4388 display: block;
4372 background: none repeat scroll 0 0 white;
4389 background: none repeat scroll 0 0 white;
4373 font-size: 16px;
4390 font-size: 16px;
4374 opacity: 0.5;
4391 opacity: 0.5;
4375 position: absolute;
4392 position: absolute;
4376 text-align: center;
4393 text-align: center;
4377 vertical-align: top;
4394 vertical-align: top;
4378
4395
4379 }
4396 }
4380 .comment-inline-form .overlay.submitting .overlay-text {
4397 .comment-inline-form .overlay.submitting .overlay-text {
4381 width: 100%;
4398 width: 100%;
4382 margin-top: 5%;
4399 margin-top: 5%;
4383 }
4400 }
4384
4401
4385 .comment-inline-form .clearfix {
4402 .comment-inline-form .clearfix {
4386 background: #EEE;
4403 background: #EEE;
4387 -webkit-border-radius: 4px;
4404 -webkit-border-radius: 4px;
4388 border-radius: 4px;
4405 border-radius: 4px;
4389 padding: 5px;
4406 padding: 5px;
4390 }
4407 }
4391
4408
4392 div.comment-inline-form {
4409 div.comment-inline-form {
4393 padding: 4px 0px 6px 0px;
4410 padding: 4px 0px 6px 0px;
4394 }
4411 }
4395
4412
4396 .comment-inline-form strong {
4413 .comment-inline-form strong {
4397 display: block;
4414 display: block;
4398 margin-bottom: 15px;
4415 margin-bottom: 15px;
4399 }
4416 }
4400
4417
4401 .comment-inline-form textarea {
4418 .comment-inline-form textarea {
4402 width: 100%;
4419 width: 100%;
4403 height: 100px;
4420 height: 100px;
4404 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4421 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4405 }
4422 }
4406
4423
4407 form.comment-inline-form {
4424 form.comment-inline-form {
4408 margin-top: 10px;
4425 margin-top: 10px;
4409 margin-left: 10px;
4426 margin-left: 10px;
4410 }
4427 }
4411
4428
4412 .comment-inline-form-submit {
4429 .comment-inline-form-submit {
4413 margin-top: 5px;
4430 margin-top: 5px;
4414 margin-left: 525px;
4431 margin-left: 525px;
4415 }
4432 }
4416
4433
4417 .file-comments {
4434 .file-comments {
4418 display: none;
4435 display: none;
4419 }
4436 }
4420
4437
4421 .comment-inline-form .comment {
4438 .comment-inline-form .comment {
4422 margin-left: 10px;
4439 margin-left: 10px;
4423 }
4440 }
4424
4441
4425 .comment-inline-form .comment-help {
4442 .comment-inline-form .comment-help {
4426 padding: 0px 0px 2px 0px;
4443 padding: 0px 0px 2px 0px;
4427 color: #666666;
4444 color: #666666;
4428 font-size: 10px;
4445 font-size: 10px;
4429 }
4446 }
4430
4447
4431 .comment-inline-form .comment-button {
4448 .comment-inline-form .comment-button {
4432 padding-top: 5px;
4449 padding-top: 5px;
4433 }
4450 }
4434
4451
4435 /** comment inline **/
4452 /** comment inline **/
4436 .inline-comments {
4453 .inline-comments {
4437 padding: 10px 20px;
4454 padding: 10px 20px;
4438 }
4455 }
4439
4456
4440 .inline-comments div.rst-block {
4457 .inline-comments div.rst-block {
4441 clear: both;
4458 clear: both;
4442 overflow: hidden;
4459 overflow: hidden;
4443 margin: 0;
4460 margin: 0;
4444 padding: 0 20px 0px;
4461 padding: 0 20px 0px;
4445 }
4462 }
4446 .inline-comments .comment {
4463 .inline-comments .comment {
4447 border: 1px solid #ddd;
4464 border: 1px solid #ddd;
4448 -webkit-border-radius: 4px;
4465 -webkit-border-radius: 4px;
4449 border-radius: 4px;
4466 border-radius: 4px;
4450 margin: 3px 3px 5px 5px;
4467 margin: 3px 3px 5px 5px;
4451 background-color: #FAFAFA;
4468 background-color: #FAFAFA;
4452 }
4469 }
4453 .inline-comments .add-comment {
4470 .inline-comments .add-comment {
4454 padding: 2px 4px 8px 5px;
4471 padding: 2px 4px 8px 5px;
4455 }
4472 }
4456
4473
4457 .inline-comments .comment-wrapp {
4474 .inline-comments .comment-wrapp {
4458 padding: 1px;
4475 padding: 1px;
4459 }
4476 }
4460 .inline-comments .comment .meta {
4477 .inline-comments .comment .meta {
4461 background: #f8f8f8;
4478 background: #f8f8f8;
4462 padding: 4px;
4479 padding: 4px;
4463 border-bottom: 1px solid #ddd;
4480 border-bottom: 1px solid #ddd;
4464 height: 20px;
4481 height: 20px;
4465 }
4482 }
4466
4483
4467 .inline-comments .comment .meta img {
4484 .inline-comments .comment .meta img {
4468 vertical-align: middle;
4485 vertical-align: middle;
4469 }
4486 }
4470
4487
4471 .inline-comments .comment .meta .user {
4488 .inline-comments .comment .meta .user {
4472 font-weight: bold;
4489 font-weight: bold;
4473 float: left;
4490 float: left;
4474 padding: 3px;
4491 padding: 3px;
4475 }
4492 }
4476
4493
4477 .inline-comments .comment .meta .date {
4494 .inline-comments .comment .meta .date {
4478 float: left;
4495 float: left;
4479 padding: 3px;
4496 padding: 3px;
4480 }
4497 }
4481
4498
4482 .inline-comments .comment .text {
4499 .inline-comments .comment .text {
4483 background-color: #FAFAFA;
4500 background-color: #FAFAFA;
4484 }
4501 }
4485
4502
4486 .inline-comments .comments-number {
4503 .inline-comments .comments-number {
4487 padding: 0px 0px 10px 0px;
4504 padding: 0px 0px 10px 0px;
4488 font-weight: bold;
4505 font-weight: bold;
4489 color: #666;
4506 color: #666;
4490 font-size: 16px;
4507 font-size: 16px;
4491 }
4508 }
4492 .inline-comments-button .add-comment {
4509 .inline-comments-button .add-comment {
4493 margin: 2px 0px 8px 5px !important
4510 margin: 2px 0px 8px 5px !important
4494 }
4511 }
4495
4512
4496 .notification-paginator {
4513 .notification-paginator {
4497 padding: 0px 0px 4px 16px;
4514 padding: 0px 0px 4px 16px;
4498 float: left;
4515 float: left;
4499 }
4516 }
4500
4517
4501 #context-pages .pull-request span,
4518 #context-pages .pull-request span,
4502 .menu_link_notifications {
4519 .menu_link_notifications {
4503 padding: 4px 4px !important;
4520 padding: 4px 4px !important;
4504 text-align: center;
4521 text-align: center;
4505 color: #888 !important;
4522 color: #888 !important;
4506 background-color: #DEDEDE !important;
4523 background-color: #DEDEDE !important;
4507 border-radius: 4px !important;
4524 border-radius: 4px !important;
4508 -webkit-border-radius: 4px !important;
4525 -webkit-border-radius: 4px !important;
4509 }
4526 }
4510
4527
4511 .notification-header {
4528 .notification-header {
4512 padding-top: 6px;
4529 padding-top: 6px;
4513 }
4530 }
4514 .notification-header .desc {
4531 .notification-header .desc {
4515 font-size: 16px;
4532 font-size: 16px;
4516 height: 24px;
4533 height: 24px;
4517 float: left
4534 float: left
4518 }
4535 }
4519 .notification-list .container.unread {
4536 .notification-list .container.unread {
4520 background: none repeat scroll 0 0 rgba(255, 255, 180, 0.6);
4537 background: none repeat scroll 0 0 rgba(255, 255, 180, 0.6);
4521 }
4538 }
4522 .notification-header .gravatar {
4539 .notification-header .gravatar {
4523 background: none repeat scroll 0 0 transparent;
4540 background: none repeat scroll 0 0 transparent;
4524 padding: 0px 0px 0px 8px;
4541 padding: 0px 0px 0px 8px;
4525 }
4542 }
4526 .notification-list .container .notification-header .desc {
4543 .notification-list .container .notification-header .desc {
4527 font-weight: bold;
4544 font-weight: bold;
4528 font-size: 17px;
4545 font-size: 17px;
4529 }
4546 }
4530 .notification-table {
4547 .notification-table {
4531 border: 1px solid #ccc;
4548 border: 1px solid #ccc;
4532 -webkit-border-radius: 6px 6px 6px 6px;
4549 -webkit-border-radius: 6px 6px 6px 6px;
4533 border-radius: 6px 6px 6px 6px;
4550 border-radius: 6px 6px 6px 6px;
4534 clear: both;
4551 clear: both;
4535 margin: 0px 20px 0px 20px;
4552 margin: 0px 20px 0px 20px;
4536 }
4553 }
4537 .notification-header .delete-notifications {
4554 .notification-header .delete-notifications {
4538 float: right;
4555 float: right;
4539 padding-top: 8px;
4556 padding-top: 8px;
4540 cursor: pointer;
4557 cursor: pointer;
4541 }
4558 }
4542 .notification-header .read-notifications {
4559 .notification-header .read-notifications {
4543 float: right;
4560 float: right;
4544 padding-top: 8px;
4561 padding-top: 8px;
4545 cursor: pointer;
4562 cursor: pointer;
4546 }
4563 }
4547 .notification-subject {
4564 .notification-subject {
4548 clear: both;
4565 clear: both;
4549 border-bottom: 1px solid #eee;
4566 border-bottom: 1px solid #eee;
4550 padding: 5px 0px 5px 38px;
4567 padding: 5px 0px 5px 38px;
4551 }
4568 }
4552
4569
4553 .notification-body {
4570 .notification-body {
4554 clear: both;
4571 clear: both;
4555 margin: 34px 2px 2px 8px
4572 margin: 34px 2px 2px 8px
4556 }
4573 }
4557
4574
4558 /****
4575 /****
4559 PULL REQUESTS
4576 PULL REQUESTS
4560 *****/
4577 *****/
4561 .pullrequests_section_head {
4578 .pullrequests_section_head {
4562 padding: 10px 10px 10px 0px;
4579 padding: 10px 10px 10px 0px;
4563 font-size: 16px;
4580 font-size: 16px;
4564 font-weight: bold;
4581 font-weight: bold;
4565 }
4582 }
4566
4583
4567 /****
4584 /****
4568 PERMS
4585 PERMS
4569 *****/
4586 *****/
4570 #perms .perms_section_head {
4587 #perms .perms_section_head {
4571 padding: 10px 10px 10px 0px;
4588 padding: 10px 10px 10px 0px;
4572 font-size: 16px;
4589 font-size: 16px;
4573 font-weight: bold;
4590 font-weight: bold;
4574 }
4591 }
4575
4592
4576 #perms .perm_tag {
4593 #perms .perm_tag {
4577 padding: 1px 3px 1px 3px;
4594 padding: 1px 3px 1px 3px;
4578 font-size: 10px;
4595 font-size: 10px;
4579 font-weight: bold;
4596 font-weight: bold;
4580 text-transform: uppercase;
4597 text-transform: uppercase;
4581 white-space: nowrap;
4598 white-space: nowrap;
4582 -webkit-border-radius: 3px;
4599 -webkit-border-radius: 3px;
4583 border-radius: 3px;
4600 border-radius: 3px;
4584 }
4601 }
4585
4602
4586 #perms .perm_tag.admin {
4603 #perms .perm_tag.admin {
4587 background-color: #B94A48;
4604 background-color: #B94A48;
4588 color: #ffffff;
4605 color: #ffffff;
4589 }
4606 }
4590
4607
4591 #perms .perm_tag.write {
4608 #perms .perm_tag.write {
4592 background-color: #DB7525;
4609 background-color: #DB7525;
4593 color: #ffffff;
4610 color: #ffffff;
4594 }
4611 }
4595
4612
4596 #perms .perm_tag.read {
4613 #perms .perm_tag.read {
4597 background-color: #468847;
4614 background-color: #468847;
4598 color: #ffffff;
4615 color: #ffffff;
4599 }
4616 }
4600
4617
4601 #perms .perm_tag.none {
4618 #perms .perm_tag.none {
4602 background-color: #bfbfbf;
4619 background-color: #bfbfbf;
4603 color: #ffffff;
4620 color: #ffffff;
4604 }
4621 }
4605
4622
4606 .perm-gravatar {
4623 .perm-gravatar {
4607 vertical-align: middle;
4624 vertical-align: middle;
4608 padding: 2px;
4625 padding: 2px;
4609 }
4626 }
4610 .perm-gravatar-ac {
4627 .perm-gravatar-ac {
4611 vertical-align: middle;
4628 vertical-align: middle;
4612 padding: 2px;
4629 padding: 2px;
4613 width: 14px;
4630 width: 14px;
4614 height: 14px;
4631 height: 14px;
4615 }
4632 }
4616
4633
4617 /*****************************************************************************
4634 /*****************************************************************************
4618 DIFFS CSS
4635 DIFFS CSS
4619 ******************************************************************************/
4636 ******************************************************************************/
4620 .diff-collapse {
4637 .diff-collapse {
4621 text-align: center;
4638 text-align: center;
4622 margin-bottom: -15px;
4639 margin-bottom: -15px;
4623 }
4640 }
4624 .diff-collapse-button {
4641 .diff-collapse-button {
4625 cursor: pointer;
4642 cursor: pointer;
4626 color: #666;
4643 color: #666;
4627 font-size: 16px;
4644 font-size: 16px;
4628 }
4645 }
4629 .diff-container {
4646 .diff-container {
4630
4647
4631 }
4648 }
4632
4649
4633 .diff-container.hidden {
4650 .diff-container.hidden {
4634 display: none;
4651 display: none;
4635 overflow: hidden;
4652 overflow: hidden;
4636 }
4653 }
4637
4654
4638
4655
4639 div.diffblock {
4656 div.diffblock {
4640 overflow: auto;
4657 overflow: auto;
4641 padding: 0px;
4658 padding: 0px;
4642 border: 1px solid #ccc;
4659 border: 1px solid #ccc;
4643 background: #f8f8f8;
4660 background: #f8f8f8;
4644 font-size: 100%;
4661 font-size: 100%;
4645 line-height: 100%;
4662 line-height: 100%;
4646 /* new */
4663 /* new */
4647 line-height: 125%;
4664 line-height: 125%;
4648 -webkit-border-radius: 6px 6px 0px 0px;
4665 -webkit-border-radius: 6px 6px 0px 0px;
4649 border-radius: 6px 6px 0px 0px;
4666 border-radius: 6px 6px 0px 0px;
4650 }
4667 }
4651 div.diffblock.margined {
4668 div.diffblock.margined {
4652 margin: 0px 20px 0px 20px;
4669 margin: 0px 20px 0px 20px;
4653 }
4670 }
4654 div.diffblock .code-header {
4671 div.diffblock .code-header {
4655 border-bottom: 1px solid #CCCCCC;
4672 border-bottom: 1px solid #CCCCCC;
4656 background: #EEEEEE;
4673 background: #EEEEEE;
4657 padding: 10px 0 10px 0;
4674 padding: 10px 0 10px 0;
4658 height: 14px;
4675 height: 14px;
4659 }
4676 }
4660
4677
4661 div.diffblock .code-header.banner {
4678 div.diffblock .code-header.banner {
4662 border-bottom: 1px solid #CCCCCC;
4679 border-bottom: 1px solid #CCCCCC;
4663 background: #EEEEEE;
4680 background: #EEEEEE;
4664 height: 14px;
4681 height: 14px;
4665 margin: 0px 95px 0px 95px;
4682 margin: 0px 95px 0px 95px;
4666 padding: 3px 3px 11px 3px;
4683 padding: 3px 3px 11px 3px;
4667 }
4684 }
4668
4685
4669 div.diffblock .code-header.cv {
4686 div.diffblock .code-header.cv {
4670 height: 34px;
4687 height: 34px;
4671 }
4688 }
4672 div.diffblock .code-header-title {
4689 div.diffblock .code-header-title {
4673 padding: 0px 0px 10px 5px !important;
4690 padding: 0px 0px 10px 5px !important;
4674 margin: 0 !important;
4691 margin: 0 !important;
4675 }
4692 }
4676 div.diffblock .code-header .hash {
4693 div.diffblock .code-header .hash {
4677 float: left;
4694 float: left;
4678 padding: 2px 0 0 2px;
4695 padding: 2px 0 0 2px;
4679 }
4696 }
4680 div.diffblock .code-header .date {
4697 div.diffblock .code-header .date {
4681 float: left;
4698 float: left;
4682 text-transform: uppercase;
4699 text-transform: uppercase;
4683 padding: 2px 0px 0px 2px;
4700 padding: 2px 0px 0px 2px;
4684 }
4701 }
4685 div.diffblock .code-header div {
4702 div.diffblock .code-header div {
4686 margin-left: 4px;
4703 margin-left: 4px;
4687 font-weight: bold;
4704 font-weight: bold;
4688 font-size: 14px;
4705 font-size: 14px;
4689 }
4706 }
4690
4707
4691 div.diffblock .parents {
4708 div.diffblock .parents {
4692 float: left;
4709 float: left;
4693 height: 26px;
4710 height: 26px;
4694 width: 100px;
4711 width: 100px;
4695 font-size: 10px;
4712 font-size: 10px;
4696 font-weight: 400;
4713 font-weight: 400;
4697 vertical-align: middle;
4714 vertical-align: middle;
4698 padding: 0px 2px 2px 2px;
4715 padding: 0px 2px 2px 2px;
4699 background-color: #eeeeee;
4716 background-color: #eeeeee;
4700 border-bottom: 1px solid #CCCCCC;
4717 border-bottom: 1px solid #CCCCCC;
4701 }
4718 }
4702
4719
4703 div.diffblock .children {
4720 div.diffblock .children {
4704 float: right;
4721 float: right;
4705 height: 26px;
4722 height: 26px;
4706 width: 100px;
4723 width: 100px;
4707 font-size: 10px;
4724 font-size: 10px;
4708 font-weight: 400;
4725 font-weight: 400;
4709 vertical-align: middle;
4726 vertical-align: middle;
4710 text-align: right;
4727 text-align: right;
4711 padding: 0px 2px 2px 2px;
4728 padding: 0px 2px 2px 2px;
4712 background-color: #eeeeee;
4729 background-color: #eeeeee;
4713 border-bottom: 1px solid #CCCCCC;
4730 border-bottom: 1px solid #CCCCCC;
4714 }
4731 }
4715
4732
4716 div.diffblock .code-body {
4733 div.diffblock .code-body {
4717 background: #FFFFFF;
4734 background: #FFFFFF;
4718 }
4735 }
4719 div.diffblock pre.raw {
4736 div.diffblock pre.raw {
4720 background: #FFFFFF;
4737 background: #FFFFFF;
4721 color: #000000;
4738 color: #000000;
4722 }
4739 }
4723 table.code-difftable {
4740 table.code-difftable {
4724 border-collapse: collapse;
4741 border-collapse: collapse;
4725 width: 99%;
4742 width: 99%;
4726 border-radius: 0px !important;
4743 border-radius: 0px !important;
4727 }
4744 }
4728 table.code-difftable td {
4745 table.code-difftable td {
4729 padding: 0 !important;
4746 padding: 0 !important;
4730 background: none !important;
4747 background: none !important;
4731 border: 0 !important;
4748 border: 0 !important;
4732 vertical-align: baseline !important
4749 vertical-align: baseline !important
4733 }
4750 }
4734 table.code-difftable .context {
4751 table.code-difftable .context {
4735 background: none repeat scroll 0 0 #DDE7EF;
4752 background: none repeat scroll 0 0 #DDE7EF;
4736 }
4753 }
4737 table.code-difftable .add {
4754 table.code-difftable .add {
4738 background: none repeat scroll 0 0 #DDFFDD;
4755 background: none repeat scroll 0 0 #DDFFDD;
4739 }
4756 }
4740 table.code-difftable .add ins {
4757 table.code-difftable .add ins {
4741 background: none repeat scroll 0 0 #AAFFAA;
4758 background: none repeat scroll 0 0 #AAFFAA;
4742 text-decoration: none;
4759 text-decoration: none;
4743 }
4760 }
4744 table.code-difftable .del {
4761 table.code-difftable .del {
4745 background: none repeat scroll 0 0 #FFDDDD;
4762 background: none repeat scroll 0 0 #FFDDDD;
4746 }
4763 }
4747 table.code-difftable .del del {
4764 table.code-difftable .del del {
4748 background: none repeat scroll 0 0 #FFAAAA;
4765 background: none repeat scroll 0 0 #FFAAAA;
4749 text-decoration: none;
4766 text-decoration: none;
4750 }
4767 }
4751
4768
4752 /** LINE NUMBERS **/
4769 /** LINE NUMBERS **/
4753 table.code-difftable .lineno {
4770 table.code-difftable .lineno {
4754
4771
4755 padding-left: 2px;
4772 padding-left: 2px;
4756 padding-right: 2px;
4773 padding-right: 2px;
4757 text-align: right;
4774 text-align: right;
4758 width: 32px;
4775 width: 32px;
4759 -moz-user-select: none;
4776 -moz-user-select: none;
4760 -webkit-user-select: none;
4777 -webkit-user-select: none;
4761 border-right: 1px solid #CCC !important;
4778 border-right: 1px solid #CCC !important;
4762 border-left: 0px solid #CCC !important;
4779 border-left: 0px solid #CCC !important;
4763 border-top: 0px solid #CCC !important;
4780 border-top: 0px solid #CCC !important;
4764 border-bottom: none !important;
4781 border-bottom: none !important;
4765 vertical-align: middle !important;
4782 vertical-align: middle !important;
4766
4783
4767 }
4784 }
4768 table.code-difftable .lineno.new {
4785 table.code-difftable .lineno.new {
4769 }
4786 }
4770 table.code-difftable .lineno.old {
4787 table.code-difftable .lineno.old {
4771 }
4788 }
4772 table.code-difftable .lineno a {
4789 table.code-difftable .lineno a {
4773 color: #747474 !important;
4790 color: #747474 !important;
4774 font: 11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4791 font: 11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4775 letter-spacing: -1px;
4792 letter-spacing: -1px;
4776 text-align: right;
4793 text-align: right;
4777 padding-right: 2px;
4794 padding-right: 2px;
4778 cursor: pointer;
4795 cursor: pointer;
4779 display: block;
4796 display: block;
4780 width: 32px;
4797 width: 32px;
4781 }
4798 }
4782
4799
4783 table.code-difftable .lineno-inline {
4800 table.code-difftable .lineno-inline {
4784 background: none repeat scroll 0 0 #FFF !important;
4801 background: none repeat scroll 0 0 #FFF !important;
4785 padding-left: 2px;
4802 padding-left: 2px;
4786 padding-right: 2px;
4803 padding-right: 2px;
4787 text-align: right;
4804 text-align: right;
4788 width: 30px;
4805 width: 30px;
4789 -moz-user-select: none;
4806 -moz-user-select: none;
4790 -webkit-user-select: none;
4807 -webkit-user-select: none;
4791 }
4808 }
4792
4809
4793 /** CODE **/
4810 /** CODE **/
4794 table.code-difftable .code {
4811 table.code-difftable .code {
4795 display: block;
4812 display: block;
4796 width: 100%;
4813 width: 100%;
4797 }
4814 }
4798 table.code-difftable .code td {
4815 table.code-difftable .code td {
4799 margin: 0;
4816 margin: 0;
4800 padding: 0;
4817 padding: 0;
4801 }
4818 }
4802 table.code-difftable .code pre {
4819 table.code-difftable .code pre {
4803 margin: 0;
4820 margin: 0;
4804 padding: 0;
4821 padding: 0;
4805 height: 17px;
4822 height: 17px;
4806 line-height: 17px;
4823 line-height: 17px;
4807 }
4824 }
4808
4825
4809
4826
4810 .diffblock.margined.comm .line .code:hover {
4827 .diffblock.margined.comm .line .code:hover {
4811 background-color: #FFFFCC !important;
4828 background-color: #FFFFCC !important;
4812 cursor: pointer !important;
4829 cursor: pointer !important;
4813 background-image: url("../images/icons/comment_add.png") !important;
4830 background-image: url("../images/icons/comment_add.png") !important;
4814 background-repeat: no-repeat !important;
4831 background-repeat: no-repeat !important;
4815 background-position: right !important;
4832 background-position: right !important;
4816 background-position: 0% 50% !important;
4833 background-position: 0% 50% !important;
4817 }
4834 }
4818 .diffblock.margined.comm .line .code.no-comment:hover {
4835 .diffblock.margined.comm .line .code.no-comment:hover {
4819 background-image: none !important;
4836 background-image: none !important;
4820 cursor: auto !important;
4837 cursor: auto !important;
4821 background-color: inherit !important;
4838 background-color: inherit !important;
4822 }
4839 }
4823
4840
4824 div.comment:target>.comment-wrapp {
4841 div.comment:target>.comment-wrapp {
4825 border: solid 2px #ee0 !important;
4842 border: solid 2px #ee0 !important;
4826 }
4843 }
4827
4844
4828 .lineno:target a {
4845 .lineno:target a {
4829 border: solid 2px #ee0 !important;
4846 border: solid 2px #ee0 !important;
4830 margin: -2px;
4847 margin: -2px;
4831 } No newline at end of file
4848 }
General Comments 0
You need to be logged in to leave comments. Login now