##// END OF EJS Templates
fixes #77 moved out ldap config to it's own section
marcink -
r769:4bdcc08b beta
parent child Browse files
Show More
@@ -0,0 +1,106 b''
1 # -*- coding: utf-8 -*-
2 """
3 package.rhodecode.controllers.admin.ldap_settings
4 ~~~~~~~~~~~~~~
5
6 ldap controller for RhodeCode
7 :created_on: Nov 26, 2010
8 :author: marcink
9 :copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
10 :license: GPLv3, see COPYING for more details.
11 """
12 # This program is free software; you can redistribute it and/or
13 # modify it under the terms of the GNU General Public License
14 # as published by the Free Software Foundation; version 2
15 # of the License or (at your opinion) any later version of the license.
16 #
17 # This program is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
21 #
22 # You should have received a copy of the GNU General Public License
23 # along with this program; if not, write to the Free Software
24 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 # MA 02110-1301, USA.
26 import logging
27 import formencode
28 import traceback
29
30 from formencode import htmlfill
31
32 from pylons import request, response, session, tmpl_context as c, url
33 from pylons.controllers.util import abort, redirect
34 from pylons.i18n.translation import _
35
36 from rhodecode.lib.base import BaseController, render
37 from rhodecode.lib import helpers as h
38 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
39 from rhodecode.lib.auth_ldap import LdapImportError
40 from rhodecode.model.settings import SettingsModel
41 from rhodecode.model.forms import LdapSettingsForm
42 from sqlalchemy.exc import DatabaseError
43
44 log = logging.getLogger(__name__)
45
46
47
48 class LdapSettingsController(BaseController):
49
50 @LoginRequired()
51 @HasPermissionAllDecorator('hg.admin')
52 def __before__(self):
53 c.admin_user = session.get('admin_user')
54 c.admin_username = session.get('admin_username')
55 super(LdapSettingsController, self).__before__()
56
57 def index(self):
58 defaults = SettingsModel().get_ldap_settings()
59
60 return htmlfill.render(
61 render('admin/ldap/ldap.html'),
62 defaults=defaults,
63 encoding="UTF-8",
64 force_defaults=True,)
65
66 def ldap_settings(self):
67 """
68 POST ldap create and store ldap settings
69 """
70
71 settings_model = SettingsModel()
72 _form = LdapSettingsForm()()
73
74 try:
75 form_result = _form.to_python(dict(request.POST))
76 try:
77
78 for k, v in form_result.items():
79 if k.startswith('ldap_'):
80 setting = settings_model.get(k)
81 setting.app_settings_value = v
82 self.sa.add(setting)
83
84 self.sa.commit()
85 h.flash(_('Ldap settings updated successfully'),
86 category='success')
87 except (DatabaseError,):
88 raise
89 except LdapImportError:
90 h.flash(_('Unable to activate ldap. The "ldap-python" library '
91 'is missing.'), category='warning')
92
93 except formencode.Invalid, errors:
94
95 return htmlfill.render(
96 render('admin/ldap/ldap.html'),
97 defaults=errors.value,
98 errors=errors.error_dict or {},
99 prefix_error=False,
100 encoding="UTF-8")
101 except Exception:
102 log.error(traceback.format_exc())
103 h.flash(_('error occured during update of ldap settings'),
104 category='error')
105
106 return redirect(url('ldap_home'))
@@ -0,0 +1,73 b''
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
3
4 <%def name="title()">
5 ${_('LDAP administration')} - ${c.rhodecode_name}
6 </%def>
7
8 <%def name="breadcrumbs_links()">
9 ${h.link_to(_('Admin'),h.url('admin_home'))}
10 &raquo;
11 ${_('Ldap')}
12 </%def>
13
14 <%def name="page_nav()">
15 ${self.menu('admin')}
16 </%def>
17
18 <%def name="main()">
19 <div class="box">
20 <!-- box / title -->
21 <div class="title">
22 ${self.breadcrumbs()}
23 </div>
24 <h3>${_('LDAP administration')}</h3>
25 ${h.form(url('ldap_settings'))}
26 <div class="form">
27 <div class="fields">
28
29 <div class="field">
30 <div class="label label-checkbox"><label for="ldap_active">${_('Enable ldap')}</label></div>
31 <div class="checkboxes"><div class="checkbox">${h.checkbox('ldap_active',True,class_='small')}</div></div>
32 </div>
33 <div class="field">
34 <div class="label"><label for="ldap_host">${_('Host')}</label></div>
35 <div class="input">${h.text('ldap_host',class_='small')}</div>
36 </div>
37 <div class="field">
38 <div class="label"><label for="ldap_port">${_('Port')}</label></div>
39 <div class="input">${h.text('ldap_port',class_='small')}</div>
40 </div>
41 <div class="field">
42 <div class="label label-checkbox"><label for="ldap_ldaps">${_('Enable LDAPS')}</label></div>
43 <div class="checkboxes"><div class="checkbox">${h.checkbox('ldap_ldaps',True,class_='small')}</div></div>
44 </div>
45 <div class="field">
46 <div class="label"><label for="ldap_dn_user">${_('Account')}</label></div>
47 <div class="input">${h.text('ldap_dn_user',class_='small')}</div>
48 </div>
49 <div class="field">
50 <div class="label"><label for="ldap_dn_pass">${_('Password')}</label></div>
51 <div class="input">${h.password('ldap_dn_pass',class_='small')}</div>
52 </div>
53 <div class="field">
54 <div class="label"><label for="ldap_base_dn">${_('Base DN')}</label></div>
55 <div class="input">${h.text('ldap_base_dn',class_='small')}</div>
56 </div>
57
58 <div class="buttons">
59 ${h.submit('save','Save',class_="ui-button ui-widget ui-state-default ui-corner-all")}
60 </div>
61 </div>
62 </div>
63 ${h.end_form()}
64 </div>
65 </%def>
66
67
68
69
70
71
72
73
@@ -0,0 +1,7 b''
1 from rhodecode.tests import *
2
3 class TestLdapSettingsController(TestController):
4
5 def test_index(self):
6 response = self.app.get(url(controller='admin/ldap_settings', action='index'))
7 # Test response...
@@ -1,206 +1,212 b''
1 """
1 """
2 Routes configuration
2 Routes configuration
3
3
4 The more specific and detailed routes should be defined first so they
4 The more specific and detailed routes should be defined first so they
5 may take precedent over the more generic routes. For more information
5 may take precedent over the more generic routes. For more information
6 refer to the routes manual at http://routes.groovie.org/docs/
6 refer to the routes manual at http://routes.groovie.org/docs/
7 """
7 """
8 from __future__ import with_statement
8 from __future__ import with_statement
9 from routes import Mapper
9 from routes import Mapper
10 from rhodecode.lib.utils import check_repo_fast as cr
10 from rhodecode.lib.utils import check_repo_fast as cr
11
11
12 def make_map(config):
12 def make_map(config):
13 """Create, configure and return the routes Mapper"""
13 """Create, configure and return the routes Mapper"""
14 map = Mapper(directory=config['pylons.paths']['controllers'],
14 map = Mapper(directory=config['pylons.paths']['controllers'],
15 always_scan=config['debug'])
15 always_scan=config['debug'])
16 map.minimization = False
16 map.minimization = False
17 map.explicit = False
17 map.explicit = False
18
18
19 def check_repo(environ, match_dict):
19 def check_repo(environ, match_dict):
20 """
20 """
21 check for valid repository for proper 404 handling
21 check for valid repository for proper 404 handling
22 :param environ:
22 :param environ:
23 :param match_dict:
23 :param match_dict:
24 """
24 """
25 repo_name = match_dict.get('repo_name')
25 repo_name = match_dict.get('repo_name')
26 return not cr(repo_name, config['base_path'])
26 return not cr(repo_name, config['base_path'])
27
27
28 # The ErrorController route (handles 404/500 error pages); it should
28 # The ErrorController route (handles 404/500 error pages); it should
29 # likely stay at the top, ensuring it can always be resolved
29 # likely stay at the top, ensuring it can always be resolved
30 map.connect('/error/{action}', controller='error')
30 map.connect('/error/{action}', controller='error')
31 map.connect('/error/{action}/{id}', controller='error')
31 map.connect('/error/{action}/{id}', controller='error')
32
32
33 #==========================================================================
33 #==========================================================================
34 # CUSTOM ROUTES HERE
34 # CUSTOM ROUTES HERE
35 #==========================================================================
35 #==========================================================================
36
36
37 #MAIN PAGE
37 #MAIN PAGE
38 map.connect('home', '/', controller='home', action='index')
38 map.connect('home', '/', controller='home', action='index')
39 map.connect('bugtracker', "http://bitbucket.org/marcinkuzminski/rhodecode/issues", _static=True)
39 map.connect('bugtracker', "http://bitbucket.org/marcinkuzminski/rhodecode/issues", _static=True)
40 map.connect('gpl_license', "http://www.gnu.org/licenses/gpl.html", _static=True)
40 map.connect('gpl_license', "http://www.gnu.org/licenses/gpl.html", _static=True)
41 #ADMIN REPOSITORY REST ROUTES
41 #ADMIN REPOSITORY REST ROUTES
42 with map.submapper(path_prefix='/_admin', controller='admin/repos') as m:
42 with map.submapper(path_prefix='/_admin', controller='admin/repos') as m:
43 m.connect("repos", "/repos",
43 m.connect("repos", "/repos",
44 action="create", conditions=dict(method=["POST"]))
44 action="create", conditions=dict(method=["POST"]))
45 m.connect("repos", "/repos",
45 m.connect("repos", "/repos",
46 action="index", conditions=dict(method=["GET"]))
46 action="index", conditions=dict(method=["GET"]))
47 m.connect("formatted_repos", "/repos.{format}",
47 m.connect("formatted_repos", "/repos.{format}",
48 action="index",
48 action="index",
49 conditions=dict(method=["GET"]))
49 conditions=dict(method=["GET"]))
50 m.connect("new_repo", "/repos/new",
50 m.connect("new_repo", "/repos/new",
51 action="new", conditions=dict(method=["GET"]))
51 action="new", conditions=dict(method=["GET"]))
52 m.connect("formatted_new_repo", "/repos/new.{format}",
52 m.connect("formatted_new_repo", "/repos/new.{format}",
53 action="new", conditions=dict(method=["GET"]))
53 action="new", conditions=dict(method=["GET"]))
54 m.connect("/repos/{repo_name:.*}",
54 m.connect("/repos/{repo_name:.*}",
55 action="update", conditions=dict(method=["PUT"],
55 action="update", conditions=dict(method=["PUT"],
56 function=check_repo))
56 function=check_repo))
57 m.connect("/repos/{repo_name:.*}",
57 m.connect("/repos/{repo_name:.*}",
58 action="delete", conditions=dict(method=["DELETE"],
58 action="delete", conditions=dict(method=["DELETE"],
59 function=check_repo))
59 function=check_repo))
60 m.connect("edit_repo", "/repos/{repo_name:.*}/edit",
60 m.connect("edit_repo", "/repos/{repo_name:.*}/edit",
61 action="edit", conditions=dict(method=["GET"],
61 action="edit", conditions=dict(method=["GET"],
62 function=check_repo))
62 function=check_repo))
63 m.connect("formatted_edit_repo", "/repos/{repo_name:.*}.{format}/edit",
63 m.connect("formatted_edit_repo", "/repos/{repo_name:.*}.{format}/edit",
64 action="edit", conditions=dict(method=["GET"],
64 action="edit", conditions=dict(method=["GET"],
65 function=check_repo))
65 function=check_repo))
66 m.connect("repo", "/repos/{repo_name:.*}",
66 m.connect("repo", "/repos/{repo_name:.*}",
67 action="show", conditions=dict(method=["GET"],
67 action="show", conditions=dict(method=["GET"],
68 function=check_repo))
68 function=check_repo))
69 m.connect("formatted_repo", "/repos/{repo_name:.*}.{format}",
69 m.connect("formatted_repo", "/repos/{repo_name:.*}.{format}",
70 action="show", conditions=dict(method=["GET"],
70 action="show", conditions=dict(method=["GET"],
71 function=check_repo))
71 function=check_repo))
72 #ajax delete repo perm user
72 #ajax delete repo perm user
73 m.connect('delete_repo_user', "/repos_delete_user/{repo_name:.*}",
73 m.connect('delete_repo_user', "/repos_delete_user/{repo_name:.*}",
74 action="delete_perm_user", conditions=dict(method=["DELETE"],
74 action="delete_perm_user", conditions=dict(method=["DELETE"],
75 function=check_repo))
75 function=check_repo))
76 #settings actions
76 #settings actions
77 m.connect('repo_stats', "/repos_stats/{repo_name:.*}",
77 m.connect('repo_stats', "/repos_stats/{repo_name:.*}",
78 action="repo_stats", conditions=dict(method=["DELETE"],
78 action="repo_stats", conditions=dict(method=["DELETE"],
79 function=check_repo))
79 function=check_repo))
80 m.connect('repo_cache', "/repos_cache/{repo_name:.*}",
80 m.connect('repo_cache', "/repos_cache/{repo_name:.*}",
81 action="repo_cache", conditions=dict(method=["DELETE"],
81 action="repo_cache", conditions=dict(method=["DELETE"],
82 function=check_repo))
82 function=check_repo))
83 #ADMIN USER REST ROUTES
83 #ADMIN USER REST ROUTES
84 map.resource('user', 'users', controller='admin/users', path_prefix='/_admin')
84 map.resource('user', 'users', controller='admin/users', path_prefix='/_admin')
85
85
86 #ADMIN PERMISSIONS REST ROUTES
86 #ADMIN PERMISSIONS REST ROUTES
87 map.resource('permission', 'permissions', controller='admin/permissions', path_prefix='/_admin')
87 map.resource('permission', 'permissions', controller='admin/permissions', path_prefix='/_admin')
88 map.connect('permissions_ldap', '/_admin/permissions_ldap', controller='admin/permissions', action='ldap')
88
89
90 ##ADMIN LDAP SETTINGS
91 map.connect('ldap_settings', '/_admin/ldap', controller='admin/ldap_settings',
92 action='ldap_settings', conditions=dict(method=["POST"]))
93 map.connect('ldap_home', '/_admin/ldap', controller='admin/ldap_settings',)
94
89
95
90
96
91 #ADMIN SETTINGS REST ROUTES
97 #ADMIN SETTINGS REST ROUTES
92 with map.submapper(path_prefix='/_admin', controller='admin/settings') as m:
98 with map.submapper(path_prefix='/_admin', controller='admin/settings') as m:
93 m.connect("admin_settings", "/settings",
99 m.connect("admin_settings", "/settings",
94 action="create", conditions=dict(method=["POST"]))
100 action="create", conditions=dict(method=["POST"]))
95 m.connect("admin_settings", "/settings",
101 m.connect("admin_settings", "/settings",
96 action="index", conditions=dict(method=["GET"]))
102 action="index", conditions=dict(method=["GET"]))
97 m.connect("formatted_admin_settings", "/settings.{format}",
103 m.connect("formatted_admin_settings", "/settings.{format}",
98 action="index", conditions=dict(method=["GET"]))
104 action="index", conditions=dict(method=["GET"]))
99 m.connect("admin_new_setting", "/settings/new",
105 m.connect("admin_new_setting", "/settings/new",
100 action="new", conditions=dict(method=["GET"]))
106 action="new", conditions=dict(method=["GET"]))
101 m.connect("formatted_admin_new_setting", "/settings/new.{format}",
107 m.connect("formatted_admin_new_setting", "/settings/new.{format}",
102 action="new", conditions=dict(method=["GET"]))
108 action="new", conditions=dict(method=["GET"]))
103 m.connect("/settings/{setting_id}",
109 m.connect("/settings/{setting_id}",
104 action="update", conditions=dict(method=["PUT"]))
110 action="update", conditions=dict(method=["PUT"]))
105 m.connect("/settings/{setting_id}",
111 m.connect("/settings/{setting_id}",
106 action="delete", conditions=dict(method=["DELETE"]))
112 action="delete", conditions=dict(method=["DELETE"]))
107 m.connect("admin_edit_setting", "/settings/{setting_id}/edit",
113 m.connect("admin_edit_setting", "/settings/{setting_id}/edit",
108 action="edit", conditions=dict(method=["GET"]))
114 action="edit", conditions=dict(method=["GET"]))
109 m.connect("formatted_admin_edit_setting", "/settings/{setting_id}.{format}/edit",
115 m.connect("formatted_admin_edit_setting", "/settings/{setting_id}.{format}/edit",
110 action="edit", conditions=dict(method=["GET"]))
116 action="edit", conditions=dict(method=["GET"]))
111 m.connect("admin_setting", "/settings/{setting_id}",
117 m.connect("admin_setting", "/settings/{setting_id}",
112 action="show", conditions=dict(method=["GET"]))
118 action="show", conditions=dict(method=["GET"]))
113 m.connect("formatted_admin_setting", "/settings/{setting_id}.{format}",
119 m.connect("formatted_admin_setting", "/settings/{setting_id}.{format}",
114 action="show", conditions=dict(method=["GET"]))
120 action="show", conditions=dict(method=["GET"]))
115 m.connect("admin_settings_my_account", "/my_account",
121 m.connect("admin_settings_my_account", "/my_account",
116 action="my_account", conditions=dict(method=["GET"]))
122 action="my_account", conditions=dict(method=["GET"]))
117 m.connect("admin_settings_my_account_update", "/my_account_update",
123 m.connect("admin_settings_my_account_update", "/my_account_update",
118 action="my_account_update", conditions=dict(method=["PUT"]))
124 action="my_account_update", conditions=dict(method=["PUT"]))
119 m.connect("admin_settings_create_repository", "/create_repository",
125 m.connect("admin_settings_create_repository", "/create_repository",
120 action="create_repository", conditions=dict(method=["GET"]))
126 action="create_repository", conditions=dict(method=["GET"]))
121
127
122 #ADMIN MAIN PAGES
128 #ADMIN MAIN PAGES
123 with map.submapper(path_prefix='/_admin', controller='admin/admin') as m:
129 with map.submapper(path_prefix='/_admin', controller='admin/admin') as m:
124 m.connect('admin_home', '', action='index')#main page
130 m.connect('admin_home', '', action='index')#main page
125 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
131 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
126 action='add_repo')
132 action='add_repo')
127
133
128
134
129 #USER JOURNAL
135 #USER JOURNAL
130 map.connect('journal', '/_admin/journal', controller='journal',)
136 map.connect('journal', '/_admin/journal', controller='journal',)
131 map.connect('toggle_following', '/_admin/toggle_following', controller='journal',
137 map.connect('toggle_following', '/_admin/toggle_following', controller='journal',
132 action='toggle_following', conditions=dict(method=["POST"]))
138 action='toggle_following', conditions=dict(method=["POST"]))
133
139
134
140
135 #SEARCH
141 #SEARCH
136 map.connect('search', '/_admin/search', controller='search',)
142 map.connect('search', '/_admin/search', controller='search',)
137 map.connect('search_repo', '/_admin/search/{search_repo:.*}', controller='search')
143 map.connect('search_repo', '/_admin/search/{search_repo:.*}', controller='search')
138
144
139 #LOGIN/LOGOUT/REGISTER/SIGN IN
145 #LOGIN/LOGOUT/REGISTER/SIGN IN
140 map.connect('login_home', '/_admin/login', controller='login')
146 map.connect('login_home', '/_admin/login', controller='login')
141 map.connect('logout_home', '/_admin/logout', controller='login', action='logout')
147 map.connect('logout_home', '/_admin/logout', controller='login', action='logout')
142 map.connect('register', '/_admin/register', controller='login', action='register')
148 map.connect('register', '/_admin/register', controller='login', action='register')
143 map.connect('reset_password', '/_admin/password_reset', controller='login', action='password_reset')
149 map.connect('reset_password', '/_admin/password_reset', controller='login', action='password_reset')
144
150
145 #FEEDS
151 #FEEDS
146 map.connect('rss_feed_home', '/{repo_name:.*}/feed/rss',
152 map.connect('rss_feed_home', '/{repo_name:.*}/feed/rss',
147 controller='feed', action='rss',
153 controller='feed', action='rss',
148 conditions=dict(function=check_repo))
154 conditions=dict(function=check_repo))
149 map.connect('atom_feed_home', '/{repo_name:.*}/feed/atom',
155 map.connect('atom_feed_home', '/{repo_name:.*}/feed/atom',
150 controller='feed', action='atom',
156 controller='feed', action='atom',
151 conditions=dict(function=check_repo))
157 conditions=dict(function=check_repo))
152
158
153
159
154 #REPOSITORY ROUTES
160 #REPOSITORY ROUTES
155 map.connect('changeset_home', '/{repo_name:.*}/changeset/{revision}',
161 map.connect('changeset_home', '/{repo_name:.*}/changeset/{revision}',
156 controller='changeset', revision='tip',
162 controller='changeset', revision='tip',
157 conditions=dict(function=check_repo))
163 conditions=dict(function=check_repo))
158 map.connect('raw_changeset_home', '/{repo_name:.*}/raw-changeset/{revision}',
164 map.connect('raw_changeset_home', '/{repo_name:.*}/raw-changeset/{revision}',
159 controller='changeset', action='raw_changeset', revision='tip',
165 controller='changeset', action='raw_changeset', revision='tip',
160 conditions=dict(function=check_repo))
166 conditions=dict(function=check_repo))
161 map.connect('summary_home', '/{repo_name:.*}/summary',
167 map.connect('summary_home', '/{repo_name:.*}/summary',
162 controller='summary', conditions=dict(function=check_repo))
168 controller='summary', conditions=dict(function=check_repo))
163 map.connect('shortlog_home', '/{repo_name:.*}/shortlog',
169 map.connect('shortlog_home', '/{repo_name:.*}/shortlog',
164 controller='shortlog', conditions=dict(function=check_repo))
170 controller='shortlog', conditions=dict(function=check_repo))
165 map.connect('branches_home', '/{repo_name:.*}/branches',
171 map.connect('branches_home', '/{repo_name:.*}/branches',
166 controller='branches', conditions=dict(function=check_repo))
172 controller='branches', conditions=dict(function=check_repo))
167 map.connect('tags_home', '/{repo_name:.*}/tags',
173 map.connect('tags_home', '/{repo_name:.*}/tags',
168 controller='tags', conditions=dict(function=check_repo))
174 controller='tags', conditions=dict(function=check_repo))
169 map.connect('changelog_home', '/{repo_name:.*}/changelog',
175 map.connect('changelog_home', '/{repo_name:.*}/changelog',
170 controller='changelog', conditions=dict(function=check_repo))
176 controller='changelog', conditions=dict(function=check_repo))
171 map.connect('files_home', '/{repo_name:.*}/files/{revision}/{f_path:.*}',
177 map.connect('files_home', '/{repo_name:.*}/files/{revision}/{f_path:.*}',
172 controller='files', revision='tip', f_path='',
178 controller='files', revision='tip', f_path='',
173 conditions=dict(function=check_repo))
179 conditions=dict(function=check_repo))
174 map.connect('files_diff_home', '/{repo_name:.*}/diff/{f_path:.*}',
180 map.connect('files_diff_home', '/{repo_name:.*}/diff/{f_path:.*}',
175 controller='files', action='diff', revision='tip', f_path='',
181 controller='files', action='diff', revision='tip', f_path='',
176 conditions=dict(function=check_repo))
182 conditions=dict(function=check_repo))
177 map.connect('files_rawfile_home', '/{repo_name:.*}/rawfile/{revision}/{f_path:.*}',
183 map.connect('files_rawfile_home', '/{repo_name:.*}/rawfile/{revision}/{f_path:.*}',
178 controller='files', action='rawfile', revision='tip', f_path='',
184 controller='files', action='rawfile', revision='tip', f_path='',
179 conditions=dict(function=check_repo))
185 conditions=dict(function=check_repo))
180 map.connect('files_raw_home', '/{repo_name:.*}/raw/{revision}/{f_path:.*}',
186 map.connect('files_raw_home', '/{repo_name:.*}/raw/{revision}/{f_path:.*}',
181 controller='files', action='raw', revision='tip', f_path='',
187 controller='files', action='raw', revision='tip', f_path='',
182 conditions=dict(function=check_repo))
188 conditions=dict(function=check_repo))
183 map.connect('files_annotate_home', '/{repo_name:.*}/annotate/{revision}/{f_path:.*}',
189 map.connect('files_annotate_home', '/{repo_name:.*}/annotate/{revision}/{f_path:.*}',
184 controller='files', action='annotate', revision='tip', f_path='',
190 controller='files', action='annotate', revision='tip', f_path='',
185 conditions=dict(function=check_repo))
191 conditions=dict(function=check_repo))
186 map.connect('files_archive_home', '/{repo_name:.*}/archive/{revision}/{fileformat}',
192 map.connect('files_archive_home', '/{repo_name:.*}/archive/{revision}/{fileformat}',
187 controller='files', action='archivefile', revision='tip',
193 controller='files', action='archivefile', revision='tip',
188 conditions=dict(function=check_repo))
194 conditions=dict(function=check_repo))
189 map.connect('repo_settings_delete', '/{repo_name:.*}/settings',
195 map.connect('repo_settings_delete', '/{repo_name:.*}/settings',
190 controller='settings', action="delete",
196 controller='settings', action="delete",
191 conditions=dict(method=["DELETE"], function=check_repo))
197 conditions=dict(method=["DELETE"], function=check_repo))
192 map.connect('repo_settings_update', '/{repo_name:.*}/settings',
198 map.connect('repo_settings_update', '/{repo_name:.*}/settings',
193 controller='settings', action="update",
199 controller='settings', action="update",
194 conditions=dict(method=["PUT"], function=check_repo))
200 conditions=dict(method=["PUT"], function=check_repo))
195 map.connect('repo_settings_home', '/{repo_name:.*}/settings',
201 map.connect('repo_settings_home', '/{repo_name:.*}/settings',
196 controller='settings', action='index',
202 controller='settings', action='index',
197 conditions=dict(function=check_repo))
203 conditions=dict(function=check_repo))
198
204
199 map.connect('repo_fork_create_home', '/{repo_name:.*}/fork',
205 map.connect('repo_fork_create_home', '/{repo_name:.*}/fork',
200 controller='settings', action='fork_create',
206 controller='settings', action='fork_create',
201 conditions=dict(function=check_repo, method=["POST"]))
207 conditions=dict(function=check_repo, method=["POST"]))
202 map.connect('repo_fork_home', '/{repo_name:.*}/fork',
208 map.connect('repo_fork_home', '/{repo_name:.*}/fork',
203 controller='settings', action='fork',
209 controller='settings', action='fork',
204 conditions=dict(function=check_repo))
210 conditions=dict(function=check_repo))
205
211
206 return map
212 return map
@@ -1,218 +1,170 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 package.rhodecode.controllers.admin.permissions
3 package.rhodecode.controllers.admin.permissions
4 ~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~
5 permissions controller for Rhodecode
5 permissions controller for Rhodecode
6
6
7 :created_on: Apr 27, 2010
7 :created_on: Apr 27, 2010
8 :author: marcink
8 :author: marcink
9 :copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
9 :copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
10 :license: GPLv3, see COPYING for more details.
10 :license: GPLv3, see COPYING for more details.
11 """
11 """
12 # This program is free software; you can redistribute it and/or
12 # This program is free software; you can redistribute it and/or
13 # modify it under the terms of the GNU General Public License
13 # modify it under the terms of the GNU General Public License
14 # as published by the Free Software Foundation; version 2
14 # as published by the Free Software Foundation; version 2
15 # of the License or (at your opinion) any later version of the license.
15 # of the License or (at your opinion) any later version of the license.
16 #
16 #
17 # This program is distributed in the hope that it will be useful,
17 # This program is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
20 # GNU General Public License for more details.
21 #
21 #
22 # You should have received a copy of the GNU General Public License
22 # You should have received a copy of the GNU General Public License
23 # along with this program; if not, write to the Free Software
23 # along with this program; if not, write to the Free Software
24 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
24 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 # MA 02110-1301, USA.
25 # MA 02110-1301, USA.
26
26
27 from formencode import htmlfill
27 from formencode import htmlfill
28 from pylons import request, session, tmpl_context as c, url
28 from pylons import request, session, tmpl_context as c, url
29 from pylons.controllers.util import abort, redirect
29 from pylons.controllers.util import abort, redirect
30 from pylons.i18n.translation import _
30 from pylons.i18n.translation import _
31 from rhodecode.lib import helpers as h
31 from rhodecode.lib import helpers as h
32 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
32 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
33 from rhodecode.lib.auth_ldap import LdapImportError
33 from rhodecode.lib.auth_ldap import LdapImportError
34 from rhodecode.lib.base import BaseController, render
34 from rhodecode.lib.base import BaseController, render
35 from rhodecode.model.forms import LdapSettingsForm, DefaultPermissionsForm
35 from rhodecode.model.forms import LdapSettingsForm, DefaultPermissionsForm
36 from rhodecode.model.permission import PermissionModel
36 from rhodecode.model.permission import PermissionModel
37 from rhodecode.model.settings import SettingsModel
37 from rhodecode.model.settings import SettingsModel
38 from rhodecode.model.user import UserModel
38 from rhodecode.model.user import UserModel
39 import formencode
39 import formencode
40 import logging
40 import logging
41 import traceback
41 import traceback
42
42
43 log = logging.getLogger(__name__)
43 log = logging.getLogger(__name__)
44
44
45 class PermissionsController(BaseController):
45 class PermissionsController(BaseController):
46 """REST Controller styled on the Atom Publishing Protocol"""
46 """REST Controller styled on the Atom Publishing Protocol"""
47 # To properly map this controller, ensure your config/routing.py
47 # To properly map this controller, ensure your config/routing.py
48 # file has a resource setup:
48 # file has a resource setup:
49 # map.resource('permission', 'permissions')
49 # map.resource('permission', 'permissions')
50
50
51 @LoginRequired()
51 @LoginRequired()
52 @HasPermissionAllDecorator('hg.admin')
52 @HasPermissionAllDecorator('hg.admin')
53 def __before__(self):
53 def __before__(self):
54 c.admin_user = session.get('admin_user')
54 c.admin_user = session.get('admin_user')
55 c.admin_username = session.get('admin_username')
55 c.admin_username = session.get('admin_username')
56 super(PermissionsController, self).__before__()
56 super(PermissionsController, self).__before__()
57
57
58 self.perms_choices = [('repository.none', _('None'),),
58 self.perms_choices = [('repository.none', _('None'),),
59 ('repository.read', _('Read'),),
59 ('repository.read', _('Read'),),
60 ('repository.write', _('Write'),),
60 ('repository.write', _('Write'),),
61 ('repository.admin', _('Admin'),)]
61 ('repository.admin', _('Admin'),)]
62 self.register_choices = [
62 self.register_choices = [
63 ('hg.register.none',
63 ('hg.register.none',
64 _('disabled')),
64 _('disabled')),
65 ('hg.register.manual_activate',
65 ('hg.register.manual_activate',
66 _('allowed with manual account activation')),
66 _('allowed with manual account activation')),
67 ('hg.register.auto_activate',
67 ('hg.register.auto_activate',
68 _('allowed with automatic account activation')), ]
68 _('allowed with automatic account activation')), ]
69
69
70 self.create_choices = [('hg.create.none', _('Disabled')),
70 self.create_choices = [('hg.create.none', _('Disabled')),
71 ('hg.create.repository', _('Enabled'))]
71 ('hg.create.repository', _('Enabled'))]
72
72
73
73
74 def index(self, format='html'):
74 def index(self, format='html'):
75 """GET /permissions: All items in the collection"""
75 """GET /permissions: All items in the collection"""
76 # url('permissions')
76 # url('permissions')
77
77
78 def create(self):
78 def create(self):
79 """POST /permissions: Create a new item"""
79 """POST /permissions: Create a new item"""
80 # url('permissions')
80 # url('permissions')
81
81
82 def new(self, format='html'):
82 def new(self, format='html'):
83 """GET /permissions/new: Form to create a new item"""
83 """GET /permissions/new: Form to create a new item"""
84 # url('new_permission')
84 # url('new_permission')
85
85
86 def update(self, id):
86 def update(self, id):
87 """PUT /permissions/id: Update an existing item"""
87 """PUT /permissions/id: Update an existing item"""
88 # Forms posted to this method should contain a hidden field:
88 # Forms posted to this method should contain a hidden field:
89 # <input type="hidden" name="_method" value="PUT" />
89 # <input type="hidden" name="_method" value="PUT" />
90 # Or using helpers:
90 # Or using helpers:
91 # h.form(url('permission', id=ID),
91 # h.form(url('permission', id=ID),
92 # method='put')
92 # method='put')
93 # url('permission', id=ID)
93 # url('permission', id=ID)
94
94
95 permission_model = PermissionModel()
95 permission_model = PermissionModel()
96
96
97 _form = DefaultPermissionsForm([x[0] for x in self.perms_choices],
97 _form = DefaultPermissionsForm([x[0] for x in self.perms_choices],
98 [x[0] for x in self.register_choices],
98 [x[0] for x in self.register_choices],
99 [x[0] for x in self.create_choices])()
99 [x[0] for x in self.create_choices])()
100
100
101 try:
101 try:
102 form_result = _form.to_python(dict(request.POST))
102 form_result = _form.to_python(dict(request.POST))
103 form_result.update({'perm_user_name':id})
103 form_result.update({'perm_user_name':id})
104 permission_model.update(form_result)
104 permission_model.update(form_result)
105 h.flash(_('Default permissions updated successfully'),
105 h.flash(_('Default permissions updated successfully'),
106 category='success')
106 category='success')
107
107
108 except formencode.Invalid, errors:
108 except formencode.Invalid, errors:
109 c.perms_choices = self.perms_choices
109 c.perms_choices = self.perms_choices
110 c.register_choices = self.register_choices
110 c.register_choices = self.register_choices
111 c.create_choices = self.create_choices
111 c.create_choices = self.create_choices
112 defaults = errors.value
112 defaults = errors.value
113 defaults.update(SettingsModel().get_ldap_settings())
114
113
115 return htmlfill.render(
114 return htmlfill.render(
116 render('admin/permissions/permissions.html'),
115 render('admin/permissions/permissions.html'),
117 defaults=defaults,
116 defaults=defaults,
118 errors=errors.error_dict or {},
117 errors=errors.error_dict or {},
119 prefix_error=False,
118 prefix_error=False,
120 encoding="UTF-8")
119 encoding="UTF-8")
121 except Exception:
120 except Exception:
122 log.error(traceback.format_exc())
121 log.error(traceback.format_exc())
123 h.flash(_('error occured during update of permissions'),
122 h.flash(_('error occured during update of permissions'),
124 category='error')
123 category='error')
125
124
126 return redirect(url('edit_permission', id=id))
125 return redirect(url('edit_permission', id=id))
127
126
128
127
129
128
130 def delete(self, id):
129 def delete(self, id):
131 """DELETE /permissions/id: Delete an existing item"""
130 """DELETE /permissions/id: Delete an existing item"""
132 # Forms posted to this method should contain a hidden field:
131 # Forms posted to this method should contain a hidden field:
133 # <input type="hidden" name="_method" value="DELETE" />
132 # <input type="hidden" name="_method" value="DELETE" />
134 # Or using helpers:
133 # Or using helpers:
135 # h.form(url('permission', id=ID),
134 # h.form(url('permission', id=ID),
136 # method='delete')
135 # method='delete')
137 # url('permission', id=ID)
136 # url('permission', id=ID)
138
137
139 def show(self, id, format='html'):
138 def show(self, id, format='html'):
140 """GET /permissions/id: Show a specific item"""
139 """GET /permissions/id: Show a specific item"""
141 # url('permission', id=ID)
140 # url('permission', id=ID)
142
141
143 def edit(self, id, format='html'):
142 def edit(self, id, format='html'):
144 """GET /permissions/id/edit: Form to edit an existing item"""
143 """GET /permissions/id/edit: Form to edit an existing item"""
145 #url('edit_permission', id=ID)
144 #url('edit_permission', id=ID)
146 c.perms_choices = self.perms_choices
145 c.perms_choices = self.perms_choices
147 c.register_choices = self.register_choices
146 c.register_choices = self.register_choices
148 c.create_choices = self.create_choices
147 c.create_choices = self.create_choices
149
148
150 if id == 'default':
149 if id == 'default':
151 default_user = UserModel().get_by_username('default')
150 default_user = UserModel().get_by_username('default')
152 defaults = {'_method':'put',
151 defaults = {'_method':'put',
153 'anonymous':default_user.active}
152 'anonymous':default_user.active}
154 defaults.update(SettingsModel().get_ldap_settings())
153
155 for p in default_user.user_perms:
154 for p in default_user.user_perms:
156 if p.permission.permission_name.startswith('repository.'):
155 if p.permission.permission_name.startswith('repository.'):
157 defaults['default_perm'] = p.permission.permission_name
156 defaults['default_perm'] = p.permission.permission_name
158
157
159 if p.permission.permission_name.startswith('hg.register.'):
158 if p.permission.permission_name.startswith('hg.register.'):
160 defaults['default_register'] = p.permission.permission_name
159 defaults['default_register'] = p.permission.permission_name
161
160
162 if p.permission.permission_name.startswith('hg.create.'):
161 if p.permission.permission_name.startswith('hg.create.'):
163 defaults['default_create'] = p.permission.permission_name
162 defaults['default_create'] = p.permission.permission_name
164
163
165 return htmlfill.render(
164 return htmlfill.render(
166 render('admin/permissions/permissions.html'),
165 render('admin/permissions/permissions.html'),
167 defaults=defaults,
166 defaults=defaults,
168 encoding="UTF-8",
167 encoding="UTF-8",
169 force_defaults=True,)
168 force_defaults=True,)
170 else:
169 else:
171 return redirect(url('admin_home'))
170 return redirect(url('admin_home'))
172
173
174 def ldap(self, id_user='default'):
175 """
176 POST ldap create and store ldap settings
177 """
178
179 settings_model = SettingsModel()
180 _form = LdapSettingsForm()()
181
182 try:
183 form_result = _form.to_python(dict(request.POST))
184 try:
185
186 for k, v in form_result.items():
187 if k.startswith('ldap_'):
188 setting = settings_model.get(k)
189 setting.app_settings_value = v
190 self.sa.add(setting)
191
192 self.sa.commit()
193 h.flash(_('Ldap settings updated successfully'),
194 category='success')
195 except:
196 raise
197 except LdapImportError:
198 h.flash(_('Unable to activate ldap. The "ldap-python" library '
199 'is missing.'),
200 category='warning')
201
202 except formencode.Invalid, errors:
203 c.perms_choices = self.perms_choices
204 c.register_choices = self.register_choices
205 c.create_choices = self.create_choices
206
207 return htmlfill.render(
208 render('admin/permissions/permissions.html'),
209 defaults=errors.value,
210 errors=errors.error_dict or {},
211 prefix_error=False,
212 encoding="UTF-8")
213 except Exception:
214 log.error(traceback.format_exc())
215 h.flash(_('error occured during update of ldap settings'),
216 category='error')
217
218 return redirect(url('edit_permission', id=id_user))
@@ -1,2381 +1,2388 b''
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
2 border:0;
2 border:0;
3 outline:0;
3 outline:0;
4 font-size:100%;
4 font-size:100%;
5 vertical-align:baseline;
5 vertical-align:baseline;
6 background:transparent;
6 background:transparent;
7 margin:0;
7 margin:0;
8 padding:0;
8 padding:0;
9 }
9 }
10
10
11 body {
11 body {
12 line-height:1;
12 line-height:1;
13 height:100%;
13 height:100%;
14 background:url("../images/background.png") repeat scroll 0 0 #B0B0B0;
14 background:url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
15 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
16 font-size:12px;
16 font-size:12px;
17 color:#000;
17 color:#000;
18 margin:0;
18 margin:0;
19 padding:0;
19 padding:0;
20 }
20 }
21
21
22 ol,ul {
22 ol,ul {
23 list-style:none;
23 list-style:none;
24 }
24 }
25
25
26 blockquote,q {
26 blockquote,q {
27 quotes:none;
27 quotes:none;
28 }
28 }
29
29
30 blockquote:before,blockquote:after,q:before,q:after {
30 blockquote:before,blockquote:after,q:before,q:after {
31 content:none;
31 content:none;
32 }
32 }
33
33
34 :focus {
34 :focus {
35 outline:0;
35 outline:0;
36 }
36 }
37
37
38 del {
38 del {
39 text-decoration:line-through;
39 text-decoration:line-through;
40 }
40 }
41
41
42 table {
42 table {
43 border-collapse:collapse;
43 border-collapse:collapse;
44 border-spacing:0;
44 border-spacing:0;
45 }
45 }
46
46
47 html {
47 html {
48 height:100%;
48 height:100%;
49 }
49 }
50
50
51 a {
51 a {
52 color:#003367;
52 color:#003367;
53 text-decoration:none;
53 text-decoration:none;
54 cursor:pointer;
54 cursor:pointer;
55 font-weight:700;
55 font-weight:700;
56 }
56 }
57
57
58 a:hover {
58 a:hover {
59 color:#316293;
59 color:#316293;
60 text-decoration:underline;
60 text-decoration:underline;
61 }
61 }
62
62
63 h1,h2,h3,h4,h5,h6 {
63 h1,h2,h3,h4,h5,h6 {
64 color:#292929;
64 color:#292929;
65 font-weight:700;
65 font-weight:700;
66 }
66 }
67
67
68 h1 {
68 h1 {
69 font-size:22px;
69 font-size:22px;
70 }
70 }
71
71
72 h2 {
72 h2 {
73 font-size:20px;
73 font-size:20px;
74 }
74 }
75
75
76 h3 {
76 h3 {
77 font-size:18px;
77 font-size:18px;
78 }
78 }
79
79
80 h4 {
80 h4 {
81 font-size:16px;
81 font-size:16px;
82 }
82 }
83
83
84 h5 {
84 h5 {
85 font-size:14px;
85 font-size:14px;
86 }
86 }
87
87
88 h6 {
88 h6 {
89 font-size:11px;
89 font-size:11px;
90 }
90 }
91
91
92 ul.circle {
92 ul.circle {
93 list-style-type:circle;
93 list-style-type:circle;
94 }
94 }
95
95
96 ul.disc {
96 ul.disc {
97 list-style-type:disc;
97 list-style-type:disc;
98 }
98 }
99
99
100 ul.square {
100 ul.square {
101 list-style-type:square;
101 list-style-type:square;
102 }
102 }
103
103
104 ol.lower-roman {
104 ol.lower-roman {
105 list-style-type:lower-roman;
105 list-style-type:lower-roman;
106 }
106 }
107
107
108 ol.upper-roman {
108 ol.upper-roman {
109 list-style-type:upper-roman;
109 list-style-type:upper-roman;
110 }
110 }
111
111
112 ol.lower-alpha {
112 ol.lower-alpha {
113 list-style-type:lower-alpha;
113 list-style-type:lower-alpha;
114 }
114 }
115
115
116 ol.upper-alpha {
116 ol.upper-alpha {
117 list-style-type:upper-alpha;
117 list-style-type:upper-alpha;
118 }
118 }
119
119
120 ol.decimal {
120 ol.decimal {
121 list-style-type:decimal;
121 list-style-type:decimal;
122 }
122 }
123
123
124 div.color {
124 div.color {
125 clear:both;
125 clear:both;
126 overflow:hidden;
126 overflow:hidden;
127 position:absolute;
127 position:absolute;
128 background:#FFF;
128 background:#FFF;
129 margin:7px 0 0 60px;
129 margin:7px 0 0 60px;
130 padding:1px 1px 1px 0;
130 padding:1px 1px 1px 0;
131 }
131 }
132
132
133 div.color a {
133 div.color a {
134 width:15px;
134 width:15px;
135 height:15px;
135 height:15px;
136 display:block;
136 display:block;
137 float:left;
137 float:left;
138 margin:0 0 0 1px;
138 margin:0 0 0 1px;
139 padding:0;
139 padding:0;
140 }
140 }
141
141
142 div.options {
142 div.options {
143 clear:both;
143 clear:both;
144 overflow:hidden;
144 overflow:hidden;
145 position:absolute;
145 position:absolute;
146 background:#FFF;
146 background:#FFF;
147 margin:7px 0 0 162px;
147 margin:7px 0 0 162px;
148 padding:0;
148 padding:0;
149 }
149 }
150
150
151 div.options a {
151 div.options a {
152 height:1%;
152 height:1%;
153 display:block;
153 display:block;
154 text-decoration:none;
154 text-decoration:none;
155 margin:0;
155 margin:0;
156 padding:3px 8px;
156 padding:3px 8px;
157 }
157 }
158
158
159 .top-left-rounded-corner {
159 .top-left-rounded-corner {
160 -webkit-border-top-left-radius: 8px;
160 -webkit-border-top-left-radius: 8px;
161 -khtml-border-radius-topleft: 8px;
161 -khtml-border-radius-topleft: 8px;
162 -moz-border-radius-topleft: 8px;
162 -moz-border-radius-topleft: 8px;
163 border-top-left-radius: 8px;
163 border-top-left-radius: 8px;
164 }
164 }
165
165
166 .top-right-rounded-corner {
166 .top-right-rounded-corner {
167 -webkit-border-top-right-radius: 8px;
167 -webkit-border-top-right-radius: 8px;
168 -khtml-border-radius-topright: 8px;
168 -khtml-border-radius-topright: 8px;
169 -moz-border-radius-topright: 8px;
169 -moz-border-radius-topright: 8px;
170 border-top-right-radius: 8px;
170 border-top-right-radius: 8px;
171 }
171 }
172
172
173 .bottom-left-rounded-corner {
173 .bottom-left-rounded-corner {
174 -webkit-border-bottom-left-radius: 8px;
174 -webkit-border-bottom-left-radius: 8px;
175 -khtml-border-radius-bottomleft: 8px;
175 -khtml-border-radius-bottomleft: 8px;
176 -moz-border-radius-bottomleft: 8px;
176 -moz-border-radius-bottomleft: 8px;
177 border-bottom-left-radius: 8px;
177 border-bottom-left-radius: 8px;
178 }
178 }
179
179
180 .bottom-right-rounded-corner {
180 .bottom-right-rounded-corner {
181 -webkit-border-bottom-right-radius: 8px;
181 -webkit-border-bottom-right-radius: 8px;
182 -khtml-border-radius-bottomright: 8px;
182 -khtml-border-radius-bottomright: 8px;
183 -moz-border-radius-bottomright: 8px;
183 -moz-border-radius-bottomright: 8px;
184 border-bottom-right-radius: 8px;
184 border-bottom-right-radius: 8px;
185 }
185 }
186
186
187
187
188 #header {
188 #header {
189 margin:0;
189 margin:0;
190 padding:0 30px;
190 padding:0 30px;
191 }
191 }
192
192
193 #header ul#logged-user li {
193 #header ul#logged-user li {
194 list-style:none;
194 list-style:none;
195 float:left;
195 float:left;
196 border-left:1px solid #bbb;
196 border-left:1px solid #bbb;
197 border-right:1px solid #a5a5a5;
197 border-right:1px solid #a5a5a5;
198 margin:-2px 0 0;
198 margin:-2px 0 0;
199 padding:10px 12px;
199 padding:10px 12px;
200 }
200 }
201
201
202 #header ul#logged-user li.first {
202 #header ul#logged-user li.first {
203 border-left:none;
203 border-left:none;
204 margin:-6px;
204 margin:-6px;
205 }
205 }
206
206
207 #header ul#logged-user li.first div.account {
207 #header ul#logged-user li.first div.account {
208 padding-top:4px;
208 padding-top:4px;
209 float:left;
209 float:left;
210 }
210 }
211
211
212 #header ul#logged-user li.last {
212 #header ul#logged-user li.last {
213 border-right:none;
213 border-right:none;
214 }
214 }
215
215
216 #header ul#logged-user li a {
216 #header ul#logged-user li a {
217 color:#4e4e4e;
217 color:#4e4e4e;
218 font-weight:700;
218 font-weight:700;
219 text-decoration:none;
219 text-decoration:none;
220 }
220 }
221
221
222 #header ul#logged-user li a:hover {
222 #header ul#logged-user li a:hover {
223 color:#376ea6;
223 color:#376ea6;
224 text-decoration:underline;
224 text-decoration:underline;
225 }
225 }
226
226
227 #header ul#logged-user li.highlight a {
227 #header ul#logged-user li.highlight a {
228 color:#fff;
228 color:#fff;
229 }
229 }
230
230
231 #header ul#logged-user li.highlight a:hover {
231 #header ul#logged-user li.highlight a:hover {
232 color:#376ea6;
232 color:#376ea6;
233 }
233 }
234
234
235 #header #header-inner {
235 #header #header-inner {
236 height:40px;
236 height:40px;
237 clear:both;
237 clear:both;
238 position:relative;
238 position:relative;
239 background:#003367 url("../images/header_inner.png") repeat-x;
239 background:#003367 url("../images/header_inner.png") repeat-x;
240 border-bottom:2px solid #fff;
240 border-bottom:2px solid #fff;
241 margin:0;
241 margin:0;
242 padding:0;
242 padding:0;
243 }
243 }
244
244
245 #header #header-inner #home a {
245 #header #header-inner #home a {
246 height:40px;
246 height:40px;
247 width:46px;
247 width:46px;
248 display:block;
248 display:block;
249 background:url("../images/button_home.png");
249 background:url("../images/button_home.png");
250 background-position:0 0;
250 background-position:0 0;
251 margin:0;
251 margin:0;
252 padding:0;
252 padding:0;
253 }
253 }
254
254
255 #header #header-inner #home a:hover {
255 #header #header-inner #home a:hover {
256 background-position:0 -40px;
256 background-position:0 -40px;
257 }
257 }
258
258
259 #header #header-inner #logo h1 {
259 #header #header-inner #logo h1 {
260 color:#FFF;
260 color:#FFF;
261 font-size:18px;
261 font-size:18px;
262 margin:10px 0 0 13px;
262 margin:10px 0 0 13px;
263 padding:0;
263 padding:0;
264 }
264 }
265
265
266 #header #header-inner #logo a {
266 #header #header-inner #logo a {
267 color:#fff;
267 color:#fff;
268 text-decoration:none;
268 text-decoration:none;
269 }
269 }
270
270
271 #header #header-inner #logo a:hover {
271 #header #header-inner #logo a:hover {
272 color:#bfe3ff;
272 color:#bfe3ff;
273 }
273 }
274
274
275 #header #header-inner #quick,#header #header-inner #quick ul {
275 #header #header-inner #quick,#header #header-inner #quick ul {
276 position:relative;
276 position:relative;
277 float:right;
277 float:right;
278 list-style-type:none;
278 list-style-type:none;
279 list-style-position:outside;
279 list-style-position:outside;
280 margin:10px 5px 0 0;
280 margin:10px 5px 0 0;
281 padding:0;
281 padding:0;
282 }
282 }
283
283
284 #header #header-inner #quick li {
284 #header #header-inner #quick li {
285 position:relative;
285 position:relative;
286 float:left;
286 float:left;
287 margin:0 5px 0 0;
287 margin:0 5px 0 0;
288 padding:0;
288 padding:0;
289 }
289 }
290
290
291 #header #header-inner #quick li a {
291 #header #header-inner #quick li a {
292 top:0;
292 top:0;
293 left:0;
293 left:0;
294 height:1%;
294 height:1%;
295 display:block;
295 display:block;
296 clear:both;
296 clear:both;
297 overflow:hidden;
297 overflow:hidden;
298 color:#FFF;
298 color:#FFF;
299 font-weight:700;
299 font-weight:700;
300 text-decoration:none;
300 text-decoration:none;
301 background:#369 url("../../images/quick_l.png") no-repeat top left;
301 background:#369 url("../../images/quick_l.png") no-repeat top left;
302 padding:0;
302 padding:0;
303 }
303 }
304
304
305 #header #header-inner #quick li span.short {
305 #header #header-inner #quick li span.short {
306 padding:9px 6px 8px 6px;
306 padding:9px 6px 8px 6px;
307 }
307 }
308
308
309 #header #header-inner #quick li span {
309 #header #header-inner #quick li span {
310 top:0;
310 top:0;
311 right:0;
311 right:0;
312 height:1%;
312 height:1%;
313 display:block;
313 display:block;
314 float:left;
314 float:left;
315 background:url("../../images/quick_r.png") no-repeat top right;
315 background:url("../../images/quick_r.png") no-repeat top right;
316 border-left:1px solid #3f6f9f;
316 border-left:1px solid #3f6f9f;
317 margin:0;
317 margin:0;
318 padding:10px 12px 8px 10px;
318 padding:10px 12px 8px 10px;
319 }
319 }
320
320
321 #header #header-inner #quick li span.normal {
321 #header #header-inner #quick li span.normal {
322 border:none;
322 border:none;
323 padding:10px 12px 8px;
323 padding:10px 12px 8px;
324 }
324 }
325
325
326 #header #header-inner #quick li span.icon {
326 #header #header-inner #quick li span.icon {
327 top:0;
327 top:0;
328 left:0;
328 left:0;
329 border-left:none;
329 border-left:none;
330 background:url("../../images/quick_l.png") no-repeat top left;
330 background:url("../../images/quick_l.png") no-repeat top left;
331 border-right:1px solid #2e5c89;
331 border-right:1px solid #2e5c89;
332 padding:8px 8px 4px;
332 padding:8px 8px 4px;
333 }
333 }
334
334
335 #header #header-inner #quick li span.icon_short {
335 #header #header-inner #quick li span.icon_short {
336 top:0;
336 top:0;
337 left:0;
337 left:0;
338 border-left:none;
338 border-left:none;
339 background:url("../../images/quick_l.png") no-repeat top left;
339 background:url("../../images/quick_l.png") no-repeat top left;
340 border-right:1px solid #2e5c89;
340 border-right:1px solid #2e5c89;
341 padding:9px 4px 4px;
341 padding:9px 4px 4px;
342 }
342 }
343
343
344 #header #header-inner #quick li a:hover {
344 #header #header-inner #quick li a:hover {
345 background:#4e4e4e url("../../images/quick_l_selected.png") no-repeat top left;
345 background:#4e4e4e url("../../images/quick_l_selected.png") no-repeat top left;
346 }
346 }
347
347
348 #header #header-inner #quick li a:hover span {
348 #header #header-inner #quick li a:hover span {
349 border-left:1px solid #545454;
349 border-left:1px solid #545454;
350 background:url("../../images/quick_r_selected.png") no-repeat top right;
350 background:url("../../images/quick_r_selected.png") no-repeat top right;
351 }
351 }
352
352
353 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short {
353 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short {
354 border-left:none;
354 border-left:none;
355 border-right:1px solid #464646;
355 border-right:1px solid #464646;
356 background:url("../../images/quick_l_selected.png") no-repeat top left;
356 background:url("../../images/quick_l_selected.png") no-repeat top left;
357 }
357 }
358
358
359
359
360 #header #header-inner #quick ul {
360 #header #header-inner #quick ul {
361 top:29px;
361 top:29px;
362 right:0;
362 right:0;
363 min-width:200px;
363 min-width:200px;
364 display:none;
364 display:none;
365 position:absolute;
365 position:absolute;
366 background:#FFF;
366 background:#FFF;
367 border:1px solid #666;
367 border:1px solid #666;
368 border-top:1px solid #003367;
368 border-top:1px solid #003367;
369 z-index:100;
369 z-index:100;
370 margin:0;
370 margin:0;
371 padding:0;
371 padding:0;
372 }
372 }
373
373
374 #header #header-inner #quick ul.repo_switcher {
374 #header #header-inner #quick ul.repo_switcher {
375 max-height:275px;
375 max-height:275px;
376 overflow-x:hidden;
376 overflow-x:hidden;
377 overflow-y:auto;
377 overflow-y:auto;
378 }
378 }
379
379
380 #header #header-inner #quick .repo_switcher_type{
380 #header #header-inner #quick .repo_switcher_type{
381 position:absolute;
381 position:absolute;
382 left:0;
382 left:0;
383 top:9px;
383 top:9px;
384
384
385 }
385 }
386 #header #header-inner #quick li ul li {
386 #header #header-inner #quick li ul li {
387 border-bottom:1px solid #ddd;
387 border-bottom:1px solid #ddd;
388 }
388 }
389
389
390 #header #header-inner #quick li ul li a {
390 #header #header-inner #quick li ul li a {
391 width:182px;
391 width:182px;
392 height:auto;
392 height:auto;
393 display:block;
393 display:block;
394 float:left;
394 float:left;
395 background:#FFF;
395 background:#FFF;
396 color:#003367;
396 color:#003367;
397 font-weight:400;
397 font-weight:400;
398 margin:0;
398 margin:0;
399 padding:7px 9px;
399 padding:7px 9px;
400 }
400 }
401
401
402 #header #header-inner #quick li ul li a:hover {
402 #header #header-inner #quick li ul li a:hover {
403 color:#000;
403 color:#000;
404 background:#FFF;
404 background:#FFF;
405 }
405 }
406
406
407 #header #header-inner #quick ul ul {
407 #header #header-inner #quick ul ul {
408 top:auto;
408 top:auto;
409 }
409 }
410
410
411 #header #header-inner #quick li ul ul {
411 #header #header-inner #quick li ul ul {
412 right:200px;
412 right:200px;
413 max-height:275px;
413 max-height:275px;
414 overflow:auto;
414 overflow:auto;
415 overflow-x:hidden;
415 overflow-x:hidden;
416 white-space:normal;
416 white-space:normal;
417 }
417 }
418
418
419 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover {
419 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover {
420 background:url("../images/icons/book.png") no-repeat scroll 4px 9px #FFF;
420 background:url("../images/icons/book.png") no-repeat scroll 4px 9px #FFF;
421 width:167px;
421 width:167px;
422 margin:0;
422 margin:0;
423 padding:12px 9px 7px 24px;
423 padding:12px 9px 7px 24px;
424 }
424 }
425
425
426 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover {
426 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover {
427 background:url("../images/icons/lock.png") no-repeat scroll 4px 9px #FFF;
427 background:url("../images/icons/lock.png") no-repeat scroll 4px 9px #FFF;
428 min-width:167px;
428 min-width:167px;
429 margin:0;
429 margin:0;
430 padding:12px 9px 7px 24px;
430 padding:12px 9px 7px 24px;
431 }
431 }
432
432
433 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover {
433 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover {
434 background:url("../images/icons/lock_open.png") no-repeat scroll 4px 9px #FFF;
434 background:url("../images/icons/lock_open.png") no-repeat scroll 4px 9px #FFF;
435 min-width:167px;
435 min-width:167px;
436 margin:0;
436 margin:0;
437 padding:12px 9px 7px 24px;
437 padding:12px 9px 7px 24px;
438 }
438 }
439
439
440 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover {
440 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover {
441 background:url("../images/icons/hgicon.png") no-repeat scroll 4px 9px #FFF;
441 background:url("../images/icons/hgicon.png") no-repeat scroll 4px 9px #FFF;
442 min-width:167px;
442 min-width:167px;
443 margin:0 0 0 14px;
443 margin:0 0 0 14px;
444 padding:12px 9px 7px 24px;
444 padding:12px 9px 7px 24px;
445 }
445 }
446
446
447 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover {
447 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover {
448 background:url("../images/icons/giticon.png") no-repeat scroll 4px 9px #FFF;
448 background:url("../images/icons/giticon.png") no-repeat scroll 4px 9px #FFF;
449 min-width:167px;
449 min-width:167px;
450 margin:0 0 0 14px;
450 margin:0 0 0 14px;
451 padding:12px 9px 7px 24px;
451 padding:12px 9px 7px 24px;
452 }
452 }
453
453
454 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover {
454 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover {
455 background:url("../images/icons/database_edit.png") no-repeat scroll 4px 9px #FFF;
455 background:url("../images/icons/database_edit.png") no-repeat scroll 4px 9px #FFF;
456 width:167px;
456 width:167px;
457 margin:0;
457 margin:0;
458 padding:12px 9px 7px 24px;
458 padding:12px 9px 7px 24px;
459 }
459 }
460
460
461 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover {
461 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover {
462 background:#FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
462 background:#FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
463 width:167px;
463 width:167px;
464 margin:0;
464 margin:0;
465 padding:12px 9px 7px 24px;
465 padding:12px 9px 7px 24px;
466 }
466 }
467
467
468 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover {
468 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover {
469 background:#FFF url("../images/icons/cog.png") no-repeat 4px 9px;
469 background:#FFF url("../images/icons/cog.png") no-repeat 4px 9px;
470 width:167px;
470 width:167px;
471 margin:0;
471 margin:0;
472 padding:12px 9px 7px 24px;
472 padding:12px 9px 7px 24px;
473 }
473 }
474
474
475 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover {
475 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover {
476 background:#FFF url("../images/icons/key.png") no-repeat 4px 9px;
476 background:#FFF url("../images/icons/key.png") no-repeat 4px 9px;
477 width:167px;
477 width:167px;
478 margin:0;
478 margin:0;
479 padding:12px 9px 7px 24px;
479 padding:12px 9px 7px 24px;
480 }
480 }
481
481
482 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover {
483 background:#FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
484 width:167px;
485 margin:0;
486 padding:12px 9px 7px 24px;
487 }
488
482 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover {
489 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover {
483 background:#FFF url("../images/icons/arrow_divide.png") no-repeat 4px 9px;
490 background:#FFF url("../images/icons/arrow_divide.png") no-repeat 4px 9px;
484 width:167px;
491 width:167px;
485 margin:0;
492 margin:0;
486 padding:12px 9px 7px 24px;
493 padding:12px 9px 7px 24px;
487 }
494 }
488
495
489 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover {
496 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover {
490 background:#FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
497 background:#FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
491 width:167px;
498 width:167px;
492 margin:0;
499 margin:0;
493 padding:12px 9px 7px 24px;
500 padding:12px 9px 7px 24px;
494 }
501 }
495
502
496 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover {
503 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover {
497 background:#FFF url("../images/icons/delete.png") no-repeat 4px 9px;
504 background:#FFF url("../images/icons/delete.png") no-repeat 4px 9px;
498 width:167px;
505 width:167px;
499 margin:0;
506 margin:0;
500 padding:12px 9px 7px 24px;
507 padding:12px 9px 7px 24px;
501 }
508 }
502
509
503 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover {
510 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover {
504 background:#FFF url("../images/icons/arrow_branch.png") no-repeat 4px 9px;
511 background:#FFF url("../images/icons/arrow_branch.png") no-repeat 4px 9px;
505 width:167px;
512 width:167px;
506 margin:0;
513 margin:0;
507 padding:12px 9px 7px 24px;
514 padding:12px 9px 7px 24px;
508 }
515 }
509
516
510 #header #header-inner #quick li ul li a.tags,#header #header-inner #quick li ul li a.tags:hover {
517 #header #header-inner #quick li ul li a.tags,#header #header-inner #quick li ul li a.tags:hover {
511 background:#FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
518 background:#FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
512 width:167px;
519 width:167px;
513 margin:0;
520 margin:0;
514 padding:12px 9px 7px 24px;
521 padding:12px 9px 7px 24px;
515 }
522 }
516
523
517 #header #header-inner #quick li ul li a.admin,#header #header-inner #quick li ul li a.admin:hover {
524 #header #header-inner #quick li ul li a.admin,#header #header-inner #quick li ul li a.admin:hover {
518 background:#FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
525 background:#FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
519 width:167px;
526 width:167px;
520 margin:0;
527 margin:0;
521 padding:12px 9px 7px 24px;
528 padding:12px 9px 7px 24px;
522 }
529 }
523
530
524 #content #left {
531 #content #left {
525 left:0;
532 left:0;
526 width:280px;
533 width:280px;
527 position:absolute;
534 position:absolute;
528 }
535 }
529
536
530 #content #right {
537 #content #right {
531 margin:0 60px 10px 290px;
538 margin:0 60px 10px 290px;
532 }
539 }
533
540
534 #content div.box {
541 #content div.box {
535 clear:both;
542 clear:both;
536 overflow:hidden;
543 overflow:hidden;
537 background:#fff;
544 background:#fff;
538 margin:0 0 10px;
545 margin:0 0 10px;
539 padding:0 0 10px;
546 padding:0 0 10px;
540 }
547 }
541
548
542 #content div.box-left {
549 #content div.box-left {
543 width:49%;
550 width:49%;
544 clear:none;
551 clear:none;
545 float:left;
552 float:left;
546 margin:0 0 10px;
553 margin:0 0 10px;
547 }
554 }
548
555
549 #content div.box-right {
556 #content div.box-right {
550 width:49%;
557 width:49%;
551 clear:none;
558 clear:none;
552 float:right;
559 float:right;
553 margin:0 0 10px;
560 margin:0 0 10px;
554 }
561 }
555
562
556 #content div.box div.title {
563 #content div.box div.title {
557 clear:both;
564 clear:both;
558 overflow:hidden;
565 overflow:hidden;
559 background:#369 url("../images/header_inner.png") repeat-x;
566 background:#369 url("../images/header_inner.png") repeat-x;
560 margin:0 0 20px;
567 margin:0 0 20px;
561 padding:0;
568 padding:0;
562 }
569 }
563
570
564 #content div.box div.title h5 {
571 #content div.box div.title h5 {
565 float:left;
572 float:left;
566 border:none;
573 border:none;
567 color:#fff;
574 color:#fff;
568 text-transform:uppercase;
575 text-transform:uppercase;
569 margin:0;
576 margin:0;
570 padding:11px 0 11px 10px;
577 padding:11px 0 11px 10px;
571 }
578 }
572
579
573 #content div.box div.title ul.links li {
580 #content div.box div.title ul.links li {
574 list-style:none;
581 list-style:none;
575 float:left;
582 float:left;
576 margin:0;
583 margin:0;
577 padding:0;
584 padding:0;
578 }
585 }
579
586
580 #content div.box div.title ul.links li a {
587 #content div.box div.title ul.links li a {
581 height:1%;
588 height:1%;
582 display:block;
589 display:block;
583 float:left;
590 float:left;
584 border-left:1px solid #316293;
591 border-left:1px solid #316293;
585 color:#fff;
592 color:#fff;
586 font-size:11px;
593 font-size:11px;
587 font-weight:700;
594 font-weight:700;
588 text-decoration:none;
595 text-decoration:none;
589 margin:0;
596 margin:0;
590 padding:13px 16px 12px;
597 padding:13px 16px 12px;
591 }
598 }
592
599
593 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6 {
600 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6 {
594 clear:both;
601 clear:both;
595 overflow:hidden;
602 overflow:hidden;
596 border-bottom:1px solid #DDD;
603 border-bottom:1px solid #DDD;
597 margin:10px 20px;
604 margin:10px 20px;
598 padding:0 0 15px;
605 padding:0 0 15px;
599 }
606 }
600
607
601 #content div.box p {
608 #content div.box p {
602 color:#5f5f5f;
609 color:#5f5f5f;
603 font-size:12px;
610 font-size:12px;
604 line-height:150%;
611 line-height:150%;
605 margin:0 24px 10px;
612 margin:0 24px 10px;
606 padding:0;
613 padding:0;
607 }
614 }
608
615
609 #content div.box blockquote {
616 #content div.box blockquote {
610 border-left:4px solid #DDD;
617 border-left:4px solid #DDD;
611 color:#5f5f5f;
618 color:#5f5f5f;
612 font-size:11px;
619 font-size:11px;
613 line-height:150%;
620 line-height:150%;
614 margin:0 34px;
621 margin:0 34px;
615 padding:0 0 0 14px;
622 padding:0 0 0 14px;
616 }
623 }
617
624
618 #content div.box blockquote p {
625 #content div.box blockquote p {
619 margin:10px 0;
626 margin:10px 0;
620 padding:0;
627 padding:0;
621 }
628 }
622
629
623 #content div.box dl {
630 #content div.box dl {
624 margin:10px 24px;
631 margin:10px 24px;
625 }
632 }
626
633
627 #content div.box dt {
634 #content div.box dt {
628 font-size:12px;
635 font-size:12px;
629 margin:0;
636 margin:0;
630 }
637 }
631
638
632 #content div.box dd {
639 #content div.box dd {
633 font-size:12px;
640 font-size:12px;
634 margin:0;
641 margin:0;
635 padding:8px 0 8px 15px;
642 padding:8px 0 8px 15px;
636 }
643 }
637
644
638 #content div.box li {
645 #content div.box li {
639 font-size:12px;
646 font-size:12px;
640 padding:4px 0;
647 padding:4px 0;
641 }
648 }
642
649
643 #content div.box ul.disc,#content div.box ul.circle {
650 #content div.box ul.disc,#content div.box ul.circle {
644 margin:10px 24px 10px 38px;
651 margin:10px 24px 10px 38px;
645 }
652 }
646
653
647 #content div.box ul.square {
654 #content div.box ul.square {
648 margin:10px 24px 10px 40px;
655 margin:10px 24px 10px 40px;
649 }
656 }
650
657
651 #content div.box img.left {
658 #content div.box img.left {
652 border:none;
659 border:none;
653 float:left;
660 float:left;
654 margin:10px 10px 10px 0;
661 margin:10px 10px 10px 0;
655 }
662 }
656
663
657 #content div.box img.right {
664 #content div.box img.right {
658 border:none;
665 border:none;
659 float:right;
666 float:right;
660 margin:10px 0 10px 10px;
667 margin:10px 0 10px 10px;
661 }
668 }
662
669
663 #content div.box div.messages {
670 #content div.box div.messages {
664 clear:both;
671 clear:both;
665 overflow:hidden;
672 overflow:hidden;
666 margin:0 20px;
673 margin:0 20px;
667 padding:0;
674 padding:0;
668 }
675 }
669
676
670 #content div.box div.message {
677 #content div.box div.message {
671 clear:both;
678 clear:both;
672 overflow:hidden;
679 overflow:hidden;
673 margin:0;
680 margin:0;
674 padding:10px 0;
681 padding:10px 0;
675 }
682 }
676
683
677 #content div.box div.message a {
684 #content div.box div.message a {
678 font-weight:400 !important;
685 font-weight:400 !important;
679 }
686 }
680
687
681 #content div.box div.message div.image {
688 #content div.box div.message div.image {
682 float:left;
689 float:left;
683 margin:9px 0 0 5px;
690 margin:9px 0 0 5px;
684 padding:6px;
691 padding:6px;
685 }
692 }
686
693
687 #content div.box div.message div.image img {
694 #content div.box div.message div.image img {
688 vertical-align:middle;
695 vertical-align:middle;
689 margin:0;
696 margin:0;
690 }
697 }
691
698
692 #content div.box div.message div.text {
699 #content div.box div.message div.text {
693 float:left;
700 float:left;
694 margin:0;
701 margin:0;
695 padding:9px 6px;
702 padding:9px 6px;
696 }
703 }
697
704
698 #content div.box div.message div.dismiss a {
705 #content div.box div.message div.dismiss a {
699 height:16px;
706 height:16px;
700 width:16px;
707 width:16px;
701 display:block;
708 display:block;
702 background:url("../images/icons/cross.png") no-repeat;
709 background:url("../images/icons/cross.png") no-repeat;
703 margin:15px 14px 0 0;
710 margin:15px 14px 0 0;
704 padding:0;
711 padding:0;
705 }
712 }
706
713
707 #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 {
714 #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 {
708 border:none;
715 border:none;
709 margin:0;
716 margin:0;
710 padding:0;
717 padding:0;
711 }
718 }
712
719
713 #content div.box div.message div.text span {
720 #content div.box div.message div.text span {
714 height:1%;
721 height:1%;
715 display:block;
722 display:block;
716 margin:0;
723 margin:0;
717 padding:5px 0 0;
724 padding:5px 0 0;
718 }
725 }
719
726
720 #content div.box div.message-error {
727 #content div.box div.message-error {
721 height:1%;
728 height:1%;
722 clear:both;
729 clear:both;
723 overflow:hidden;
730 overflow:hidden;
724 background:#FBE3E4;
731 background:#FBE3E4;
725 border:1px solid #FBC2C4;
732 border:1px solid #FBC2C4;
726 color:#860006;
733 color:#860006;
727 }
734 }
728
735
729 #content div.box div.message-error h6 {
736 #content div.box div.message-error h6 {
730 color:#860006;
737 color:#860006;
731 }
738 }
732
739
733 #content div.box div.message-warning {
740 #content div.box div.message-warning {
734 height:1%;
741 height:1%;
735 clear:both;
742 clear:both;
736 overflow:hidden;
743 overflow:hidden;
737 background:#FFF6BF;
744 background:#FFF6BF;
738 border:1px solid #FFD324;
745 border:1px solid #FFD324;
739 color:#5f5200;
746 color:#5f5200;
740 }
747 }
741
748
742 #content div.box div.message-warning h6 {
749 #content div.box div.message-warning h6 {
743 color:#5f5200;
750 color:#5f5200;
744 }
751 }
745
752
746 #content div.box div.message-notice {
753 #content div.box div.message-notice {
747 height:1%;
754 height:1%;
748 clear:both;
755 clear:both;
749 overflow:hidden;
756 overflow:hidden;
750 background:#8FBDE0;
757 background:#8FBDE0;
751 border:1px solid #6BACDE;
758 border:1px solid #6BACDE;
752 color:#003863;
759 color:#003863;
753 }
760 }
754
761
755 #content div.box div.message-notice h6 {
762 #content div.box div.message-notice h6 {
756 color:#003863;
763 color:#003863;
757 }
764 }
758
765
759 #content div.box div.message-success {
766 #content div.box div.message-success {
760 height:1%;
767 height:1%;
761 clear:both;
768 clear:both;
762 overflow:hidden;
769 overflow:hidden;
763 background:#E6EFC2;
770 background:#E6EFC2;
764 border:1px solid #C6D880;
771 border:1px solid #C6D880;
765 color:#4e6100;
772 color:#4e6100;
766 }
773 }
767
774
768 #content div.box div.message-success h6 {
775 #content div.box div.message-success h6 {
769 color:#4e6100;
776 color:#4e6100;
770 }
777 }
771
778
772 #content div.box div.form div.fields div.field {
779 #content div.box div.form div.fields div.field {
773 height:1%;
780 height:1%;
774 border-bottom:1px solid #DDD;
781 border-bottom:1px solid #DDD;
775 clear:both;
782 clear:both;
776 margin:0;
783 margin:0;
777 padding:10px 0;
784 padding:10px 0;
778 }
785 }
779
786
780 #content div.box div.form div.fields div.field-first {
787 #content div.box div.form div.fields div.field-first {
781 padding:0 0 10px;
788 padding:0 0 10px;
782 }
789 }
783
790
784 #content div.box div.form div.fields div.field-noborder {
791 #content div.box div.form div.fields div.field-noborder {
785 border-bottom:0 !important;
792 border-bottom:0 !important;
786 }
793 }
787
794
788 #content div.box div.form div.fields div.field span.error-message {
795 #content div.box div.form div.fields div.field span.error-message {
789 height:1%;
796 height:1%;
790 display:inline-block;
797 display:inline-block;
791 color:red;
798 color:red;
792 margin:8px 0 0 4px;
799 margin:8px 0 0 4px;
793 padding:0;
800 padding:0;
794 }
801 }
795
802
796 #content div.box div.form div.fields div.field span.success {
803 #content div.box div.form div.fields div.field span.success {
797 height:1%;
804 height:1%;
798 display:block;
805 display:block;
799 color:#316309;
806 color:#316309;
800 margin:8px 0 0;
807 margin:8px 0 0;
801 padding:0;
808 padding:0;
802 }
809 }
803
810
804 #content div.box div.form div.fields div.field div.label {
811 #content div.box div.form div.fields div.field div.label {
805 left:80px;
812 left:80px;
806 width:auto;
813 width:auto;
807 position:absolute;
814 position:absolute;
808 margin:0;
815 margin:0;
809 padding:8px 0 0 5px;
816 padding:8px 0 0 5px;
810 }
817 }
811
818
812 #content div.box-left div.form div.fields div.field div.label,#content div.box-right div.form div.fields div.field div.label {
819 #content div.box-left div.form div.fields div.field div.label,#content div.box-right div.form div.fields div.field div.label {
813 clear:both;
820 clear:both;
814 overflow:hidden;
821 overflow:hidden;
815 left:0;
822 left:0;
816 width:auto;
823 width:auto;
817 position:relative;
824 position:relative;
818 margin:0;
825 margin:0;
819 padding:0 0 8px;
826 padding:0 0 8px;
820 }
827 }
821
828
822 #content div.box div.form div.fields div.field div.label-select {
829 #content div.box div.form div.fields div.field div.label-select {
823 padding:5px 0 0 5px;
830 padding:5px 0 0 5px;
824 }
831 }
825
832
826 #content div.box-left div.form div.fields div.field div.label-select,#content div.box-right div.form div.fields div.field div.label-select {
833 #content div.box-left div.form div.fields div.field div.label-select,#content div.box-right div.form div.fields div.field div.label-select {
827 padding:0 0 8px;
834 padding:0 0 8px;
828 }
835 }
829
836
830 #content div.box-left div.form div.fields div.field div.label-textarea,#content div.box-right div.form div.fields div.field div.label-textarea {
837 #content div.box-left div.form div.fields div.field div.label-textarea,#content div.box-right div.form div.fields div.field div.label-textarea {
831 padding:0 0 8px !important;
838 padding:0 0 8px !important;
832 }
839 }
833
840
834 #content div.box div.form div.fields div.field div.label label {
841 #content div.box div.form div.fields div.field div.label label {
835 color:#393939;
842 color:#393939;
836 font-weight:700;
843 font-weight:700;
837 }
844 }
838
845
839 #content div.box div.form div.fields div.field div.input {
846 #content div.box div.form div.fields div.field div.input {
840 margin:0 0 0 200px;
847 margin:0 0 0 200px;
841 }
848 }
842 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input {
849 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input {
843 margin:0 0 0 0px;
850 margin:0 0 0 0px;
844 }
851 }
845
852
846 #content div.box div.form div.fields div.field div.input input {
853 #content div.box div.form div.fields div.field div.input input {
847 background:#FFF;
854 background:#FFF;
848 border-top:1px solid #b3b3b3;
855 border-top:1px solid #b3b3b3;
849 border-left:1px solid #b3b3b3;
856 border-left:1px solid #b3b3b3;
850 border-right:1px solid #eaeaea;
857 border-right:1px solid #eaeaea;
851 border-bottom:1px solid #eaeaea;
858 border-bottom:1px solid #eaeaea;
852 color:#000;
859 color:#000;
853 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
860 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
854 font-size:11px;
861 font-size:11px;
855 margin:0;
862 margin:0;
856 padding:7px 7px 6px;
863 padding:7px 7px 6px;
857 }
864 }
858
865
859
866
860
867
861 #content div.box div.form div.fields div.field div.input input.small {
868 #content div.box div.form div.fields div.field div.input input.small {
862 width:30%;
869 width:30%;
863 }
870 }
864
871
865 #content div.box div.form div.fields div.field div.input input.medium {
872 #content div.box div.form div.fields div.field div.input input.medium {
866 width:55%;
873 width:55%;
867 }
874 }
868
875
869 #content div.box div.form div.fields div.field div.input input.large {
876 #content div.box div.form div.fields div.field div.input input.large {
870 width:85%;
877 width:85%;
871 }
878 }
872
879
873 #content div.box div.form div.fields div.field div.input input.date {
880 #content div.box div.form div.fields div.field div.input input.date {
874 width:177px;
881 width:177px;
875 }
882 }
876
883
877 #content div.box div.form div.fields div.field div.input input.button {
884 #content div.box div.form div.fields div.field div.input input.button {
878 background:#D4D0C8;
885 background:#D4D0C8;
879 border-top:1px solid #FFF;
886 border-top:1px solid #FFF;
880 border-left:1px solid #FFF;
887 border-left:1px solid #FFF;
881 border-right:1px solid #404040;
888 border-right:1px solid #404040;
882 border-bottom:1px solid #404040;
889 border-bottom:1px solid #404040;
883 color:#000;
890 color:#000;
884 margin:0;
891 margin:0;
885 padding:4px 8px;
892 padding:4px 8px;
886 }
893 }
887
894
888 #content div.box div.form div.fields div.field div.input a.ui-input-file {
895 #content div.box div.form div.fields div.field div.input a.ui-input-file {
889 width:28px;
896 width:28px;
890 height:28px;
897 height:28px;
891 display:inline;
898 display:inline;
892 position:absolute;
899 position:absolute;
893 overflow:hidden;
900 overflow:hidden;
894 cursor:pointer;
901 cursor:pointer;
895 background:#e5e3e3 url("../images/button_browse.png") no-repeat;
902 background:#e5e3e3 url("../images/button_browse.png") no-repeat;
896 border:none;
903 border:none;
897 text-decoration:none;
904 text-decoration:none;
898 margin:0 0 0 6px;
905 margin:0 0 0 6px;
899 padding:0;
906 padding:0;
900 }
907 }
901
908
902 #content div.box div.form div.fields div.field div.textarea {
909 #content div.box div.form div.fields div.field div.textarea {
903 border-top:1px solid #b3b3b3;
910 border-top:1px solid #b3b3b3;
904 border-left:1px solid #b3b3b3;
911 border-left:1px solid #b3b3b3;
905 border-right:1px solid #eaeaea;
912 border-right:1px solid #eaeaea;
906 border-bottom:1px solid #eaeaea;
913 border-bottom:1px solid #eaeaea;
907 margin:0 0 0 200px;
914 margin:0 0 0 200px;
908 padding:10px;
915 padding:10px;
909 }
916 }
910
917
911 #content div.box div.form div.fields div.field div.textarea-editor {
918 #content div.box div.form div.fields div.field div.textarea-editor {
912 border:1px solid #ddd;
919 border:1px solid #ddd;
913 padding:0;
920 padding:0;
914 }
921 }
915
922
916 #content div.box div.form div.fields div.field div.textarea textarea {
923 #content div.box div.form div.fields div.field div.textarea textarea {
917 width:100%;
924 width:100%;
918 height:220px;
925 height:220px;
919 overflow:hidden;
926 overflow:hidden;
920 background:#FFF;
927 background:#FFF;
921 color:#000;
928 color:#000;
922 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
929 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
923 font-size:11px;
930 font-size:11px;
924 outline:none;
931 outline:none;
925 border-width:0;
932 border-width:0;
926 margin:0;
933 margin:0;
927 padding:0;
934 padding:0;
928 }
935 }
929
936
930 #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 {
937 #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 {
931 width:100%;
938 width:100%;
932 height:100px;
939 height:100px;
933 }
940 }
934
941
935 #content div.box div.form div.fields div.field div.textarea table {
942 #content div.box div.form div.fields div.field div.textarea table {
936 width:100%;
943 width:100%;
937 border:none;
944 border:none;
938 margin:0;
945 margin:0;
939 padding:0;
946 padding:0;
940 }
947 }
941
948
942 #content div.box div.form div.fields div.field div.textarea table td {
949 #content div.box div.form div.fields div.field div.textarea table td {
943 background:#DDD;
950 background:#DDD;
944 border:none;
951 border:none;
945 padding:0;
952 padding:0;
946 }
953 }
947
954
948 #content div.box div.form div.fields div.field div.textarea table td table {
955 #content div.box div.form div.fields div.field div.textarea table td table {
949 width:auto;
956 width:auto;
950 border:none;
957 border:none;
951 margin:0;
958 margin:0;
952 padding:0;
959 padding:0;
953 }
960 }
954
961
955 #content div.box div.form div.fields div.field div.textarea table td table td {
962 #content div.box div.form div.fields div.field div.textarea table td table td {
956 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
963 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
957 font-size:11px;
964 font-size:11px;
958 padding:5px 5px 5px 0;
965 padding:5px 5px 5px 0;
959 }
966 }
960
967
961 #content div.box div.form div.fields div.field div.textarea table td table td a.mceButtonActive {
968 #content div.box div.form div.fields div.field div.textarea table td table td a.mceButtonActive {
962 background:#b1b1b1;
969 background:#b1b1b1;
963 }
970 }
964
971
965 #content div.box div.form div.fields div.field div.select a.ui-selectmenu {
972 #content div.box div.form div.fields div.field div.select a.ui-selectmenu {
966 color:#565656;
973 color:#565656;
967 text-decoration:none;
974 text-decoration:none;
968 }
975 }
969
976
970 #content div.box div.form div.fields div.field input[type=text]:focus,#content div.box div.form div.fields div.field input[type=password]:focus,#content div.box div.form div.fields div.field input[type=file]:focus,#content div.box div.form div.fields div.field textarea:focus,#content div.box div.form div.fields div.field select:focus {
977 #content div.box div.form div.fields div.field input[type=text]:focus,#content div.box div.form div.fields div.field input[type=password]:focus,#content div.box div.form div.fields div.field input[type=file]:focus,#content div.box div.form div.fields div.field textarea:focus,#content div.box div.form div.fields div.field select:focus {
971 background:#f6f6f6;
978 background:#f6f6f6;
972 border-color:#666;
979 border-color:#666;
973 }
980 }
974
981
975 div.form div.fields div.field div.button {
982 div.form div.fields div.field div.button {
976 margin:0;
983 margin:0;
977 padding:0 0 0 8px;
984 padding:0 0 0 8px;
978 }
985 }
979
986
980 div.form div.fields div.field div.highlight .ui-state-default {
987 div.form div.fields div.field div.highlight .ui-state-default {
981 background:#4e85bb url("../images/button_highlight.png") repeat-x;
988 background:#4e85bb url("../images/button_highlight.png") repeat-x;
982 border-top:1px solid #5c91a4;
989 border-top:1px solid #5c91a4;
983 border-left:1px solid #2a6f89;
990 border-left:1px solid #2a6f89;
984 border-right:1px solid #2b7089;
991 border-right:1px solid #2b7089;
985 border-bottom:1px solid #1a6480;
992 border-bottom:1px solid #1a6480;
986 color:#FFF;
993 color:#FFF;
987 margin:0;
994 margin:0;
988 padding:6px 12px;
995 padding:6px 12px;
989 }
996 }
990
997
991 div.form div.fields div.field div.highlight .ui-state-hover {
998 div.form div.fields div.field div.highlight .ui-state-hover {
992 background:#46a0c1 url("../images/button_highlight_selected.png") repeat-x;
999 background:#46a0c1 url("../images/button_highlight_selected.png") repeat-x;
993 border-top:1px solid #78acbf;
1000 border-top:1px solid #78acbf;
994 border-left:1px solid #34819e;
1001 border-left:1px solid #34819e;
995 border-right:1px solid #35829f;
1002 border-right:1px solid #35829f;
996 border-bottom:1px solid #257897;
1003 border-bottom:1px solid #257897;
997 color:#FFF;
1004 color:#FFF;
998 margin:0;
1005 margin:0;
999 padding:6px 12px;
1006 padding:6px 12px;
1000 }
1007 }
1001
1008
1002 #content div.box div.form div.fields div.buttons div.highlight input.ui-state-default {
1009 #content div.box div.form div.fields div.buttons div.highlight input.ui-state-default {
1003 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
1010 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
1004 border-top:1px solid #5c91a4;
1011 border-top:1px solid #5c91a4;
1005 border-left:1px solid #2a6f89;
1012 border-left:1px solid #2a6f89;
1006 border-right:1px solid #2b7089;
1013 border-right:1px solid #2b7089;
1007 border-bottom:1px solid #1a6480;
1014 border-bottom:1px solid #1a6480;
1008 color:#fff;
1015 color:#fff;
1009 margin:0;
1016 margin:0;
1010 padding:6px 12px;
1017 padding:6px 12px;
1011 }
1018 }
1012
1019
1013 #content div.box div.form div.fields div.buttons div.highlight input.ui-state-hover {
1020 #content div.box div.form div.fields div.buttons div.highlight input.ui-state-hover {
1014 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
1021 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
1015 border-top:1px solid #78acbf;
1022 border-top:1px solid #78acbf;
1016 border-left:1px solid #34819e;
1023 border-left:1px solid #34819e;
1017 border-right:1px solid #35829f;
1024 border-right:1px solid #35829f;
1018 border-bottom:1px solid #257897;
1025 border-bottom:1px solid #257897;
1019 color:#fff;
1026 color:#fff;
1020 margin:0;
1027 margin:0;
1021 padding:6px 12px;
1028 padding:6px 12px;
1022 }
1029 }
1023
1030
1024 #content div.box table {
1031 #content div.box table {
1025 width:100%;
1032 width:100%;
1026 border-collapse:collapse;
1033 border-collapse:collapse;
1027 margin:0;
1034 margin:0;
1028 padding:0;
1035 padding:0;
1029 }
1036 }
1030
1037
1031 #content div.box table th {
1038 #content div.box table th {
1032 background:#eee;
1039 background:#eee;
1033 border-bottom:1px solid #ddd;
1040 border-bottom:1px solid #ddd;
1034 padding:5px 0px 5px 5px;
1041 padding:5px 0px 5px 5px;
1035 }
1042 }
1036
1043
1037 #content div.box table th.left {
1044 #content div.box table th.left {
1038 text-align:left;
1045 text-align:left;
1039 }
1046 }
1040
1047
1041 #content div.box table th.right {
1048 #content div.box table th.right {
1042 text-align:right;
1049 text-align:right;
1043 }
1050 }
1044
1051
1045 #content div.box table th.center {
1052 #content div.box table th.center {
1046 text-align:center;
1053 text-align:center;
1047 }
1054 }
1048
1055
1049 #content div.box table th.selected {
1056 #content div.box table th.selected {
1050 vertical-align:middle;
1057 vertical-align:middle;
1051 padding:0;
1058 padding:0;
1052 }
1059 }
1053
1060
1054 #content div.box table td {
1061 #content div.box table td {
1055 background:#fff;
1062 background:#fff;
1056 border-bottom:1px solid #cdcdcd;
1063 border-bottom:1px solid #cdcdcd;
1057 vertical-align:middle;
1064 vertical-align:middle;
1058 padding:5px;
1065 padding:5px;
1059 }
1066 }
1060
1067
1061 #content div.box table tr.selected td {
1068 #content div.box table tr.selected td {
1062 background:#FFC;
1069 background:#FFC;
1063 }
1070 }
1064
1071
1065 #content div.box table td.selected {
1072 #content div.box table td.selected {
1066 width:3%;
1073 width:3%;
1067 text-align:center;
1074 text-align:center;
1068 vertical-align:middle;
1075 vertical-align:middle;
1069 padding:0;
1076 padding:0;
1070 }
1077 }
1071
1078
1072 #content div.box table td.action {
1079 #content div.box table td.action {
1073 width:45%;
1080 width:45%;
1074 text-align:left;
1081 text-align:left;
1075 }
1082 }
1076
1083
1077 #content div.box table td.date {
1084 #content div.box table td.date {
1078 width:33%;
1085 width:33%;
1079 text-align:center;
1086 text-align:center;
1080 }
1087 }
1081
1088
1082 #content div.box div.action {
1089 #content div.box div.action {
1083 float:right;
1090 float:right;
1084 background:#FFF;
1091 background:#FFF;
1085 text-align:right;
1092 text-align:right;
1086 margin:10px 0 0;
1093 margin:10px 0 0;
1087 padding:0;
1094 padding:0;
1088 }
1095 }
1089
1096
1090 #content div.box div.action select {
1097 #content div.box div.action select {
1091 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1098 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1092 font-size:11px;
1099 font-size:11px;
1093 margin:0;
1100 margin:0;
1094 }
1101 }
1095
1102
1096 #content div.box div.action .ui-selectmenu {
1103 #content div.box div.action .ui-selectmenu {
1097 margin:0;
1104 margin:0;
1098 padding:0;
1105 padding:0;
1099 }
1106 }
1100
1107
1101 #content div.box div.pagination {
1108 #content div.box div.pagination {
1102 height:1%;
1109 height:1%;
1103 clear:both;
1110 clear:both;
1104 overflow:hidden;
1111 overflow:hidden;
1105 margin:10px 0 0;
1112 margin:10px 0 0;
1106 padding:0;
1113 padding:0;
1107 }
1114 }
1108
1115
1109 #content div.box div.pagination ul.pager {
1116 #content div.box div.pagination ul.pager {
1110 float:right;
1117 float:right;
1111 text-align:right;
1118 text-align:right;
1112 margin:0;
1119 margin:0;
1113 padding:0;
1120 padding:0;
1114 }
1121 }
1115
1122
1116 #content div.box div.pagination ul.pager li {
1123 #content div.box div.pagination ul.pager li {
1117 height:1%;
1124 height:1%;
1118 float:left;
1125 float:left;
1119 list-style:none;
1126 list-style:none;
1120 background:#ebebeb url("../images/pager.png") repeat-x;
1127 background:#ebebeb url("../images/pager.png") repeat-x;
1121 border-top:1px solid #dedede;
1128 border-top:1px solid #dedede;
1122 border-left:1px solid #cfcfcf;
1129 border-left:1px solid #cfcfcf;
1123 border-right:1px solid #c4c4c4;
1130 border-right:1px solid #c4c4c4;
1124 border-bottom:1px solid #c4c4c4;
1131 border-bottom:1px solid #c4c4c4;
1125 color:#4A4A4A;
1132 color:#4A4A4A;
1126 font-weight:700;
1133 font-weight:700;
1127 margin:0 0 0 4px;
1134 margin:0 0 0 4px;
1128 padding:0;
1135 padding:0;
1129 }
1136 }
1130
1137
1131 #content div.box div.pagination ul.pager li.separator {
1138 #content div.box div.pagination ul.pager li.separator {
1132 padding:6px;
1139 padding:6px;
1133 }
1140 }
1134
1141
1135 #content div.box div.pagination ul.pager li.current {
1142 #content div.box div.pagination ul.pager li.current {
1136 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1143 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1137 border-top:1px solid #ccc;
1144 border-top:1px solid #ccc;
1138 border-left:1px solid #bebebe;
1145 border-left:1px solid #bebebe;
1139 border-right:1px solid #b1b1b1;
1146 border-right:1px solid #b1b1b1;
1140 border-bottom:1px solid #afafaf;
1147 border-bottom:1px solid #afafaf;
1141 color:#515151;
1148 color:#515151;
1142 padding:6px;
1149 padding:6px;
1143 }
1150 }
1144
1151
1145 #content div.box div.pagination ul.pager li a {
1152 #content div.box div.pagination ul.pager li a {
1146 height:1%;
1153 height:1%;
1147 display:block;
1154 display:block;
1148 float:left;
1155 float:left;
1149 color:#515151;
1156 color:#515151;
1150 text-decoration:none;
1157 text-decoration:none;
1151 margin:0;
1158 margin:0;
1152 padding:6px;
1159 padding:6px;
1153 }
1160 }
1154
1161
1155 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active {
1162 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active {
1156 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1163 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1157 border-top:1px solid #ccc;
1164 border-top:1px solid #ccc;
1158 border-left:1px solid #bebebe;
1165 border-left:1px solid #bebebe;
1159 border-right:1px solid #b1b1b1;
1166 border-right:1px solid #b1b1b1;
1160 border-bottom:1px solid #afafaf;
1167 border-bottom:1px solid #afafaf;
1161 margin:-1px;
1168 margin:-1px;
1162 }
1169 }
1163
1170
1164 #content div.box div.pagination-wh {
1171 #content div.box div.pagination-wh {
1165 height:1%;
1172 height:1%;
1166 clear:both;
1173 clear:both;
1167 overflow:hidden;
1174 overflow:hidden;
1168 text-align:right;
1175 text-align:right;
1169 margin:10px 0 0;
1176 margin:10px 0 0;
1170 padding:0;
1177 padding:0;
1171 }
1178 }
1172
1179
1173 #content div.box div.pagination-right {
1180 #content div.box div.pagination-right {
1174 float:right;
1181 float:right;
1175 }
1182 }
1176
1183
1177 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot {
1184 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot {
1178 height:1%;
1185 height:1%;
1179 float:left;
1186 float:left;
1180 background:#ebebeb url("../images/pager.png") repeat-x;
1187 background:#ebebeb url("../images/pager.png") repeat-x;
1181 border-top:1px solid #dedede;
1188 border-top:1px solid #dedede;
1182 border-left:1px solid #cfcfcf;
1189 border-left:1px solid #cfcfcf;
1183 border-right:1px solid #c4c4c4;
1190 border-right:1px solid #c4c4c4;
1184 border-bottom:1px solid #c4c4c4;
1191 border-bottom:1px solid #c4c4c4;
1185 color:#4A4A4A;
1192 color:#4A4A4A;
1186 font-weight:700;
1193 font-weight:700;
1187 margin:0 0 0 4px;
1194 margin:0 0 0 4px;
1188 padding:6px;
1195 padding:6px;
1189 }
1196 }
1190
1197
1191 #content div.box div.pagination-wh span.pager_curpage {
1198 #content div.box div.pagination-wh span.pager_curpage {
1192 height:1%;
1199 height:1%;
1193 float:left;
1200 float:left;
1194 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1201 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1195 border-top:1px solid #ccc;
1202 border-top:1px solid #ccc;
1196 border-left:1px solid #bebebe;
1203 border-left:1px solid #bebebe;
1197 border-right:1px solid #b1b1b1;
1204 border-right:1px solid #b1b1b1;
1198 border-bottom:1px solid #afafaf;
1205 border-bottom:1px solid #afafaf;
1199 color:#515151;
1206 color:#515151;
1200 font-weight:700;
1207 font-weight:700;
1201 margin:0 0 0 4px;
1208 margin:0 0 0 4px;
1202 padding:6px;
1209 padding:6px;
1203 }
1210 }
1204
1211
1205 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active {
1212 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active {
1206 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1213 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1207 border-top:1px solid #ccc;
1214 border-top:1px solid #ccc;
1208 border-left:1px solid #bebebe;
1215 border-left:1px solid #bebebe;
1209 border-right:1px solid #b1b1b1;
1216 border-right:1px solid #b1b1b1;
1210 border-bottom:1px solid #afafaf;
1217 border-bottom:1px solid #afafaf;
1211 text-decoration:none;
1218 text-decoration:none;
1212 }
1219 }
1213
1220
1214 #content div.box div.traffic div.legend {
1221 #content div.box div.traffic div.legend {
1215 clear:both;
1222 clear:both;
1216 overflow:hidden;
1223 overflow:hidden;
1217 border-bottom:1px solid #ddd;
1224 border-bottom:1px solid #ddd;
1218 margin:0 0 10px;
1225 margin:0 0 10px;
1219 padding:0 0 10px;
1226 padding:0 0 10px;
1220 }
1227 }
1221
1228
1222 #content div.box div.traffic div.legend h6 {
1229 #content div.box div.traffic div.legend h6 {
1223 float:left;
1230 float:left;
1224 border:none;
1231 border:none;
1225 margin:0;
1232 margin:0;
1226 padding:0;
1233 padding:0;
1227 }
1234 }
1228
1235
1229 #content div.box div.traffic div.legend li {
1236 #content div.box div.traffic div.legend li {
1230 list-style:none;
1237 list-style:none;
1231 float:left;
1238 float:left;
1232 font-size:11px;
1239 font-size:11px;
1233 margin:0;
1240 margin:0;
1234 padding:0 8px 0 4px;
1241 padding:0 8px 0 4px;
1235 }
1242 }
1236
1243
1237 #content div.box div.traffic div.legend li.visits {
1244 #content div.box div.traffic div.legend li.visits {
1238 border-left:12px solid #edc240;
1245 border-left:12px solid #edc240;
1239 }
1246 }
1240
1247
1241 #content div.box div.traffic div.legend li.pageviews {
1248 #content div.box div.traffic div.legend li.pageviews {
1242 border-left:12px solid #afd8f8;
1249 border-left:12px solid #afd8f8;
1243 }
1250 }
1244
1251
1245 #content div.box div.traffic table {
1252 #content div.box div.traffic table {
1246 width:auto;
1253 width:auto;
1247 }
1254 }
1248
1255
1249 #content div.box div.traffic table td {
1256 #content div.box div.traffic table td {
1250 background:transparent;
1257 background:transparent;
1251 border:none;
1258 border:none;
1252 padding:2px 3px 3px;
1259 padding:2px 3px 3px;
1253 }
1260 }
1254
1261
1255 #content div.box div.traffic table td.legendLabel {
1262 #content div.box div.traffic table td.legendLabel {
1256 padding:0 3px 2px;
1263 padding:0 3px 2px;
1257 }
1264 }
1258
1265
1259 #footer {
1266 #footer {
1260 clear:both;
1267 clear:both;
1261 overflow:hidden;
1268 overflow:hidden;
1262 text-align:right;
1269 text-align:right;
1263 margin:0;
1270 margin:0;
1264 padding:0 30px 4px;
1271 padding:0 30px 4px;
1265 margin:-10px 0 0;
1272 margin:-10px 0 0;
1266 }
1273 }
1267
1274
1268 #footer div#footer-inner {
1275 #footer div#footer-inner {
1269 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
1276 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
1270 border-top:2px solid #FFFFFF;
1277 border-top:2px solid #FFFFFF;
1271 }
1278 }
1272
1279
1273 #footer div#footer-inner p {
1280 #footer div#footer-inner p {
1274 padding:15px 25px 15px 0;
1281 padding:15px 25px 15px 0;
1275 color:#FFF;
1282 color:#FFF;
1276 font-weight:700;
1283 font-weight:700;
1277 }
1284 }
1278 #footer div#footer-inner .footer-link {
1285 #footer div#footer-inner .footer-link {
1279 float:left;
1286 float:left;
1280 padding-left:10px;
1287 padding-left:10px;
1281 }
1288 }
1282 #footer div#footer-inner .footer-link a {
1289 #footer div#footer-inner .footer-link a {
1283 color:#FFF;
1290 color:#FFF;
1284 }
1291 }
1285
1292
1286 #login div.title {
1293 #login div.title {
1287 width:420px;
1294 width:420px;
1288 clear:both;
1295 clear:both;
1289 overflow:hidden;
1296 overflow:hidden;
1290 position:relative;
1297 position:relative;
1291 background:#003367 url("../../images/header_inner.png") repeat-x;
1298 background:#003367 url("../../images/header_inner.png") repeat-x;
1292 margin:0 auto;
1299 margin:0 auto;
1293 padding:0;
1300 padding:0;
1294 }
1301 }
1295
1302
1296 #login div.inner {
1303 #login div.inner {
1297 width:380px;
1304 width:380px;
1298 background:#FFF url("../images/login.png") no-repeat top left;
1305 background:#FFF url("../images/login.png") no-repeat top left;
1299 border-top:none;
1306 border-top:none;
1300 border-bottom:none;
1307 border-bottom:none;
1301 margin:0 auto;
1308 margin:0 auto;
1302 padding:20px;
1309 padding:20px;
1303 }
1310 }
1304
1311
1305 #login div.form div.fields div.field div.label {
1312 #login div.form div.fields div.field div.label {
1306 width:173px;
1313 width:173px;
1307 float:left;
1314 float:left;
1308 text-align:right;
1315 text-align:right;
1309 margin:2px 10px 0 0;
1316 margin:2px 10px 0 0;
1310 padding:5px 0 0 5px;
1317 padding:5px 0 0 5px;
1311 }
1318 }
1312
1319
1313 #login div.form div.fields div.field div.input input {
1320 #login div.form div.fields div.field div.input input {
1314 width:176px;
1321 width:176px;
1315 background:#FFF;
1322 background:#FFF;
1316 border-top:1px solid #b3b3b3;
1323 border-top:1px solid #b3b3b3;
1317 border-left:1px solid #b3b3b3;
1324 border-left:1px solid #b3b3b3;
1318 border-right:1px solid #eaeaea;
1325 border-right:1px solid #eaeaea;
1319 border-bottom:1px solid #eaeaea;
1326 border-bottom:1px solid #eaeaea;
1320 color:#000;
1327 color:#000;
1321 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1328 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1322 font-size:11px;
1329 font-size:11px;
1323 margin:0;
1330 margin:0;
1324 padding:7px 7px 6px;
1331 padding:7px 7px 6px;
1325 }
1332 }
1326
1333
1327 #login div.form div.fields div.buttons {
1334 #login div.form div.fields div.buttons {
1328 clear:both;
1335 clear:both;
1329 overflow:hidden;
1336 overflow:hidden;
1330 border-top:1px solid #DDD;
1337 border-top:1px solid #DDD;
1331 text-align:right;
1338 text-align:right;
1332 margin:0;
1339 margin:0;
1333 padding:10px 0 0;
1340 padding:10px 0 0;
1334 }
1341 }
1335
1342
1336 #login div.form div.links {
1343 #login div.form div.links {
1337 clear:both;
1344 clear:both;
1338 overflow:hidden;
1345 overflow:hidden;
1339 margin:10px 0 0;
1346 margin:10px 0 0;
1340 padding:0 0 2px;
1347 padding:0 0 2px;
1341 }
1348 }
1342
1349
1343 #register div.title {
1350 #register div.title {
1344 clear:both;
1351 clear:both;
1345 overflow:hidden;
1352 overflow:hidden;
1346 position:relative;
1353 position:relative;
1347 background:#003367 url("../images/header_inner.png") repeat-x;
1354 background:#003367 url("../images/header_inner.png") repeat-x;
1348 margin:0 auto;
1355 margin:0 auto;
1349 padding:0;
1356 padding:0;
1350 }
1357 }
1351
1358
1352 #register div.inner {
1359 #register div.inner {
1353 background:#FFF;
1360 background:#FFF;
1354 border-top:none;
1361 border-top:none;
1355 border-bottom:none;
1362 border-bottom:none;
1356 margin:0 auto;
1363 margin:0 auto;
1357 padding:20px;
1364 padding:20px;
1358 }
1365 }
1359
1366
1360 #register div.form div.fields div.field div.label {
1367 #register div.form div.fields div.field div.label {
1361 width:135px;
1368 width:135px;
1362 float:left;
1369 float:left;
1363 text-align:right;
1370 text-align:right;
1364 margin:2px 10px 0 0;
1371 margin:2px 10px 0 0;
1365 padding:5px 0 0 5px;
1372 padding:5px 0 0 5px;
1366 }
1373 }
1367
1374
1368 #register div.form div.fields div.field div.input input {
1375 #register div.form div.fields div.field div.input input {
1369 width:300px;
1376 width:300px;
1370 background:#FFF;
1377 background:#FFF;
1371 border-top:1px solid #b3b3b3;
1378 border-top:1px solid #b3b3b3;
1372 border-left:1px solid #b3b3b3;
1379 border-left:1px solid #b3b3b3;
1373 border-right:1px solid #eaeaea;
1380 border-right:1px solid #eaeaea;
1374 border-bottom:1px solid #eaeaea;
1381 border-bottom:1px solid #eaeaea;
1375 color:#000;
1382 color:#000;
1376 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1383 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1377 font-size:11px;
1384 font-size:11px;
1378 margin:0;
1385 margin:0;
1379 padding:7px 7px 6px;
1386 padding:7px 7px 6px;
1380 }
1387 }
1381
1388
1382 #register div.form div.fields div.buttons {
1389 #register div.form div.fields div.buttons {
1383 clear:both;
1390 clear:both;
1384 overflow:hidden;
1391 overflow:hidden;
1385 border-top:1px solid #DDD;
1392 border-top:1px solid #DDD;
1386 text-align:left;
1393 text-align:left;
1387 margin:0;
1394 margin:0;
1388 padding:10px 0 0 114px;
1395 padding:10px 0 0 114px;
1389 }
1396 }
1390
1397
1391 #register div.form div.fields div.buttons div.highlight input.ui-state-default {
1398 #register div.form div.fields div.buttons div.highlight input.ui-state-default {
1392 background:url("../images/button_highlight.png") repeat-x scroll 0 0 #4E85BB;
1399 background:url("../images/button_highlight.png") repeat-x scroll 0 0 #4E85BB;
1393 color:#FFF;
1400 color:#FFF;
1394 border-color:#5C91A4 #2B7089 #1A6480 #2A6F89;
1401 border-color:#5C91A4 #2B7089 #1A6480 #2A6F89;
1395 border-style:solid;
1402 border-style:solid;
1396 border-width:1px;
1403 border-width:1px;
1397 }
1404 }
1398
1405
1399 #register div.form div.activation_msg {
1406 #register div.form div.activation_msg {
1400 padding-top:4px;
1407 padding-top:4px;
1401 padding-bottom:4px;
1408 padding-bottom:4px;
1402 }
1409 }
1403
1410
1404 .trending_language_tbl,.trending_language_tbl td {
1411 .trending_language_tbl,.trending_language_tbl td {
1405 border:0 !important;
1412 border:0 !important;
1406 margin:0 !important;
1413 margin:0 !important;
1407 padding:0 !important;
1414 padding:0 !important;
1408 }
1415 }
1409
1416
1410 .trending_language {
1417 .trending_language {
1411 background-color:#003367;
1418 background-color:#003367;
1412 color:#FFF;
1419 color:#FFF;
1413 display:block;
1420 display:block;
1414 min-width:20px;
1421 min-width:20px;
1415 text-decoration:none;
1422 text-decoration:none;
1416 height:12px;
1423 height:12px;
1417 margin-bottom:4px;
1424 margin-bottom:4px;
1418 margin-left:5px;
1425 margin-left:5px;
1419 white-space:pre;
1426 white-space:pre;
1420 padding:3px;
1427 padding:3px;
1421 }
1428 }
1422
1429
1423 h3.files_location {
1430 h3.files_location {
1424 font-size:1.8em;
1431 font-size:1.8em;
1425 font-weight:700;
1432 font-weight:700;
1426 border-bottom:none !important;
1433 border-bottom:none !important;
1427 margin:10px 0 !important;
1434 margin:10px 0 !important;
1428 }
1435 }
1429
1436
1430 #files_data dl dt {
1437 #files_data dl dt {
1431 float:left;
1438 float:left;
1432 width:115px;
1439 width:115px;
1433 margin:0 !important;
1440 margin:0 !important;
1434 padding:5px;
1441 padding:5px;
1435 }
1442 }
1436
1443
1437 #files_data dl dd {
1444 #files_data dl dd {
1438 margin:0 !important;
1445 margin:0 !important;
1439 padding:5px !important;
1446 padding:5px !important;
1440 }
1447 }
1441
1448
1442 #changeset_content {
1449 #changeset_content {
1443 border:1px solid #CCC;
1450 border:1px solid #CCC;
1444 padding:5px;
1451 padding:5px;
1445 }
1452 }
1446
1453
1447 #changeset_content .container {
1454 #changeset_content .container {
1448 min-height:120px;
1455 min-height:120px;
1449 font-size:1.2em;
1456 font-size:1.2em;
1450 overflow:hidden;
1457 overflow:hidden;
1451 }
1458 }
1452
1459
1453 #changeset_content .container .right {
1460 #changeset_content .container .right {
1454 float:right;
1461 float:right;
1455 width:25%;
1462 width:25%;
1456 text-align:right;
1463 text-align:right;
1457 }
1464 }
1458
1465
1459 #changeset_content .container .left .message {
1466 #changeset_content .container .left .message {
1460 font-style:italic;
1467 font-style:italic;
1461 color:#556CB5;
1468 color:#556CB5;
1462 white-space:pre-wrap;
1469 white-space:pre-wrap;
1463 }
1470 }
1464
1471
1465 .cs_files .cs_added {
1472 .cs_files .cs_added {
1466 background:url("../images/icons/page_white_add.png") no-repeat scroll 3px;
1473 background:url("../images/icons/page_white_add.png") no-repeat scroll 3px;
1467 height:16px;
1474 height:16px;
1468 padding-left:20px;
1475 padding-left:20px;
1469 margin-top:7px;
1476 margin-top:7px;
1470 text-align:left;
1477 text-align:left;
1471 }
1478 }
1472
1479
1473 .cs_files .cs_changed {
1480 .cs_files .cs_changed {
1474 background:url("../images/icons/page_white_edit.png") no-repeat scroll 3px;
1481 background:url("../images/icons/page_white_edit.png") no-repeat scroll 3px;
1475 height:16px;
1482 height:16px;
1476 padding-left:20px;
1483 padding-left:20px;
1477 margin-top:7px;
1484 margin-top:7px;
1478 text-align:left;
1485 text-align:left;
1479 }
1486 }
1480
1487
1481 .cs_files .cs_removed {
1488 .cs_files .cs_removed {
1482 background:url("../images/icons/page_white_delete.png") no-repeat scroll 3px;
1489 background:url("../images/icons/page_white_delete.png") no-repeat scroll 3px;
1483 height:16px;
1490 height:16px;
1484 padding-left:20px;
1491 padding-left:20px;
1485 margin-top:7px;
1492 margin-top:7px;
1486 text-align:left;
1493 text-align:left;
1487 }
1494 }
1488
1495
1489 #graph {
1496 #graph {
1490 overflow:hidden;
1497 overflow:hidden;
1491 }
1498 }
1492
1499
1493 #graph_nodes {
1500 #graph_nodes {
1494 width:160px;
1501 width:160px;
1495 float:left;
1502 float:left;
1496 margin-left:-50px;
1503 margin-left:-50px;
1497 margin-top:5px;
1504 margin-top:5px;
1498 }
1505 }
1499
1506
1500 #graph_content {
1507 #graph_content {
1501 width:800px;
1508 width:800px;
1502 float:left;
1509 float:left;
1503 }
1510 }
1504
1511
1505 #graph_content .container_header {
1512 #graph_content .container_header {
1506 border:1px solid #CCC;
1513 border:1px solid #CCC;
1507 padding:10px;
1514 padding:10px;
1508 }
1515 }
1509
1516
1510 #graph_content .container {
1517 #graph_content .container {
1511 border-bottom:1px solid #CCC;
1518 border-bottom:1px solid #CCC;
1512 border-left:1px solid #CCC;
1519 border-left:1px solid #CCC;
1513 border-right:1px solid #CCC;
1520 border-right:1px solid #CCC;
1514 min-height:80px;
1521 min-height:80px;
1515 overflow:hidden;
1522 overflow:hidden;
1516 font-size:1.2em;
1523 font-size:1.2em;
1517 }
1524 }
1518
1525
1519 #graph_content .container .right {
1526 #graph_content .container .right {
1520 float:right;
1527 float:right;
1521 width:28%;
1528 width:28%;
1522 text-align:right;
1529 text-align:right;
1523 padding-bottom:5px;
1530 padding-bottom:5px;
1524 }
1531 }
1525
1532
1526 #graph_content .container .left .date {
1533 #graph_content .container .left .date {
1527 font-weight:700;
1534 font-weight:700;
1528 padding-bottom:5px;
1535 padding-bottom:5px;
1529 }
1536 }
1530
1537
1531 #graph_content .container .left .message {
1538 #graph_content .container .left .message {
1532 font-size:100%;
1539 font-size:100%;
1533 padding-top:3px;
1540 padding-top:3px;
1534 white-space:pre-wrap;
1541 white-space:pre-wrap;
1535 }
1542 }
1536
1543
1537 .right div {
1544 .right div {
1538 clear:both;
1545 clear:both;
1539 }
1546 }
1540
1547
1541 .right .changes .added,.changed,.removed {
1548 .right .changes .added,.changed,.removed {
1542 border:1px solid #DDD;
1549 border:1px solid #DDD;
1543 display:block;
1550 display:block;
1544 float:right;
1551 float:right;
1545 text-align:center;
1552 text-align:center;
1546 min-width:15px;
1553 min-width:15px;
1547 }
1554 }
1548
1555
1549 .right .changes .added {
1556 .right .changes .added {
1550 background:#BFB;
1557 background:#BFB;
1551 }
1558 }
1552
1559
1553 .right .changes .changed {
1560 .right .changes .changed {
1554 background:#FD8;
1561 background:#FD8;
1555 }
1562 }
1556
1563
1557 .right .changes .removed {
1564 .right .changes .removed {
1558 background:#F88;
1565 background:#F88;
1559 }
1566 }
1560
1567
1561 .right .merge {
1568 .right .merge {
1562 vertical-align:top;
1569 vertical-align:top;
1563 font-size:0.75em;
1570 font-size:0.75em;
1564 font-weight:700;
1571 font-weight:700;
1565 }
1572 }
1566
1573
1567 .right .parent {
1574 .right .parent {
1568 font-size:90%;
1575 font-size:90%;
1569 font-family:monospace;
1576 font-family:monospace;
1570 }
1577 }
1571
1578
1572 .right .logtags .branchtag {
1579 .right .logtags .branchtag {
1573 background:#FFF url("../images/icons/arrow_branch.png") no-repeat right 6px;
1580 background:#FFF url("../images/icons/arrow_branch.png") no-repeat right 6px;
1574 display:block;
1581 display:block;
1575 font-size:0.8em;
1582 font-size:0.8em;
1576 padding:11px 16px 0 0;
1583 padding:11px 16px 0 0;
1577 }
1584 }
1578
1585
1579 .right .logtags .tagtag {
1586 .right .logtags .tagtag {
1580 background:#FFF url("../images/icons/tag_blue.png") no-repeat right 6px;
1587 background:#FFF url("../images/icons/tag_blue.png") no-repeat right 6px;
1581 display:block;
1588 display:block;
1582 font-size:0.8em;
1589 font-size:0.8em;
1583 padding:11px 16px 0 0;
1590 padding:11px 16px 0 0;
1584 }
1591 }
1585
1592
1586 div.browserblock {
1593 div.browserblock {
1587 overflow:hidden;
1594 overflow:hidden;
1588 border:1px solid #ccc;
1595 border:1px solid #ccc;
1589 background:#f8f8f8;
1596 background:#f8f8f8;
1590 font-size:100%;
1597 font-size:100%;
1591 line-height:125%;
1598 line-height:125%;
1592 padding:0;
1599 padding:0;
1593 }
1600 }
1594
1601
1595 div.browserblock .browser-header {
1602 div.browserblock .browser-header {
1596 border-bottom:1px solid #CCC;
1603 border-bottom:1px solid #CCC;
1597 background:#FFF;
1604 background:#FFF;
1598 color:blue;
1605 color:blue;
1599 padding:10px 0;
1606 padding:10px 0;
1600 }
1607 }
1601
1608
1602 div.browserblock .browser-header span {
1609 div.browserblock .browser-header span {
1603 margin-left:25px;
1610 margin-left:25px;
1604 font-weight:700;
1611 font-weight:700;
1605 }
1612 }
1606
1613
1607 div.browserblock .browser-body {
1614 div.browserblock .browser-body {
1608 background:#EEE;
1615 background:#EEE;
1609 }
1616 }
1610
1617
1611 table.code-browser {
1618 table.code-browser {
1612 border-collapse:collapse;
1619 border-collapse:collapse;
1613 width:100%;
1620 width:100%;
1614 }
1621 }
1615
1622
1616 table.code-browser tr {
1623 table.code-browser tr {
1617 margin:3px;
1624 margin:3px;
1618 }
1625 }
1619
1626
1620 table.code-browser thead th {
1627 table.code-browser thead th {
1621 background-color:#EEE;
1628 background-color:#EEE;
1622 height:20px;
1629 height:20px;
1623 font-size:1.1em;
1630 font-size:1.1em;
1624 font-weight:700;
1631 font-weight:700;
1625 text-align:left;
1632 text-align:left;
1626 padding-left:10px;
1633 padding-left:10px;
1627 }
1634 }
1628
1635
1629 table.code-browser tbody td {
1636 table.code-browser tbody td {
1630 padding-left:10px;
1637 padding-left:10px;
1631 height:20px;
1638 height:20px;
1632 }
1639 }
1633
1640
1634 table.code-browser .browser-file {
1641 table.code-browser .browser-file {
1635 background:url("../images/icons/document_16.png") no-repeat scroll 3px;
1642 background:url("../images/icons/document_16.png") no-repeat scroll 3px;
1636 height:16px;
1643 height:16px;
1637 padding-left:20px;
1644 padding-left:20px;
1638 text-align:left;
1645 text-align:left;
1639 }
1646 }
1640
1647
1641 table.code-browser .browser-dir {
1648 table.code-browser .browser-dir {
1642 background:url("../images/icons/folder_16.png") no-repeat scroll 3px;
1649 background:url("../images/icons/folder_16.png") no-repeat scroll 3px;
1643 height:16px;
1650 height:16px;
1644 padding-left:20px;
1651 padding-left:20px;
1645 text-align:left;
1652 text-align:left;
1646 }
1653 }
1647
1654
1648 .box .search {
1655 .box .search {
1649 clear:both;
1656 clear:both;
1650 overflow:hidden;
1657 overflow:hidden;
1651 margin:0;
1658 margin:0;
1652 padding:0 20px 10px;
1659 padding:0 20px 10px;
1653 }
1660 }
1654
1661
1655 .box .search div.search_path {
1662 .box .search div.search_path {
1656 background:none repeat scroll 0 0 #EEE;
1663 background:none repeat scroll 0 0 #EEE;
1657 border:1px solid #CCC;
1664 border:1px solid #CCC;
1658 color:blue;
1665 color:blue;
1659 margin-bottom:10px;
1666 margin-bottom:10px;
1660 padding:10px 0;
1667 padding:10px 0;
1661 }
1668 }
1662
1669
1663 .box .search div.search_path div.link {
1670 .box .search div.search_path div.link {
1664 font-weight:700;
1671 font-weight:700;
1665 margin-left:25px;
1672 margin-left:25px;
1666 }
1673 }
1667
1674
1668 .box .search div.search_path div.link a {
1675 .box .search div.search_path div.link a {
1669 color:#003367;
1676 color:#003367;
1670 cursor:pointer;
1677 cursor:pointer;
1671 text-decoration:none;
1678 text-decoration:none;
1672 }
1679 }
1673
1680
1674 #path_unlock {
1681 #path_unlock {
1675 color:red;
1682 color:red;
1676 font-size:1.2em;
1683 font-size:1.2em;
1677 padding-left:4px;
1684 padding-left:4px;
1678 }
1685 }
1679
1686
1680 .info_box * {
1687 .info_box * {
1681 background:url("../../images/pager.png") repeat-x scroll 0 0 #EBEBEB;
1688 background:url("../../images/pager.png") repeat-x scroll 0 0 #EBEBEB;
1682 color:#4A4A4A;
1689 color:#4A4A4A;
1683 font-weight:700;
1690 font-weight:700;
1684 height:1%;
1691 height:1%;
1685 display:inline;
1692 display:inline;
1686 border-color:#DEDEDE #C4C4C4 #C4C4C4 #CFCFCF;
1693 border-color:#DEDEDE #C4C4C4 #C4C4C4 #CFCFCF;
1687 border-style:solid;
1694 border-style:solid;
1688 border-width:1px;
1695 border-width:1px;
1689 padding:4px 6px;
1696 padding:4px 6px;
1690 }
1697 }
1691
1698
1692 .info_box span {
1699 .info_box span {
1693 margin-left:3px;
1700 margin-left:3px;
1694 margin-right:3px;
1701 margin-right:3px;
1695 }
1702 }
1696
1703
1697 .info_box input#at_rev {
1704 .info_box input#at_rev {
1698 text-align:center;
1705 text-align:center;
1699 padding:5px 3px 3px 2px;
1706 padding:5px 3px 3px 2px;
1700 }
1707 }
1701
1708
1702 .info_box input#view {
1709 .info_box input#view {
1703 text-align:center;
1710 text-align:center;
1704 padding:4px 3px 2px 2px;
1711 padding:4px 3px 2px 2px;
1705 }
1712 }
1706
1713
1707 .yui-overlay,.yui-panel-container {
1714 .yui-overlay,.yui-panel-container {
1708 visibility:hidden;
1715 visibility:hidden;
1709 position:absolute;
1716 position:absolute;
1710 z-index:2;
1717 z-index:2;
1711 }
1718 }
1712
1719
1713 .yui-tt {
1720 .yui-tt {
1714 visibility:hidden;
1721 visibility:hidden;
1715 position:absolute;
1722 position:absolute;
1716 color:#666;
1723 color:#666;
1717 background-color:#FFF;
1724 background-color:#FFF;
1718 font-family:arial, helvetica, verdana, sans-serif;
1725 font-family:arial, helvetica, verdana, sans-serif;
1719 border:2px solid #003367;
1726 border:2px solid #003367;
1720 font:100% sans-serif;
1727 font:100% sans-serif;
1721 width:auto;
1728 width:auto;
1722 opacity:1px;
1729 opacity:1px;
1723 padding:8px;
1730 padding:8px;
1724 white-space: pre;
1731 white-space: pre;
1725 }
1732 }
1726
1733
1727 .ac {
1734 .ac {
1728 vertical-align:top;
1735 vertical-align:top;
1729 }
1736 }
1730
1737
1731 .ac .yui-ac {
1738 .ac .yui-ac {
1732 position:relative;
1739 position:relative;
1733 font-family:arial;
1740 font-family:arial;
1734 font-size:100%;
1741 font-size:100%;
1735 }
1742 }
1736
1743
1737 .ac .perm_ac {
1744 .ac .perm_ac {
1738 width:15em;
1745 width:15em;
1739 }
1746 }
1740
1747
1741 .ac .yui-ac-input {
1748 .ac .yui-ac-input {
1742 width:100%;
1749 width:100%;
1743 }
1750 }
1744
1751
1745 .ac .yui-ac-container {
1752 .ac .yui-ac-container {
1746 position:absolute;
1753 position:absolute;
1747 top:1.6em;
1754 top:1.6em;
1748 width:100%;
1755 width:100%;
1749 }
1756 }
1750
1757
1751 .ac .yui-ac-content {
1758 .ac .yui-ac-content {
1752 position:absolute;
1759 position:absolute;
1753 width:100%;
1760 width:100%;
1754 border:1px solid gray;
1761 border:1px solid gray;
1755 background:#fff;
1762 background:#fff;
1756 overflow:hidden;
1763 overflow:hidden;
1757 z-index:9050;
1764 z-index:9050;
1758 }
1765 }
1759
1766
1760 .ac .yui-ac-shadow {
1767 .ac .yui-ac-shadow {
1761 position:absolute;
1768 position:absolute;
1762 width:100%;
1769 width:100%;
1763 background:#000;
1770 background:#000;
1764 -moz-opacity:0.1px;
1771 -moz-opacity:0.1px;
1765 opacity:.10;
1772 opacity:.10;
1766 filter:alpha(opacity = 10);
1773 filter:alpha(opacity = 10);
1767 z-index:9049;
1774 z-index:9049;
1768 margin:.3em;
1775 margin:.3em;
1769 }
1776 }
1770
1777
1771 .ac .yui-ac-content ul {
1778 .ac .yui-ac-content ul {
1772 width:100%;
1779 width:100%;
1773 margin:0;
1780 margin:0;
1774 padding:0;
1781 padding:0;
1775 }
1782 }
1776
1783
1777 .ac .yui-ac-content li {
1784 .ac .yui-ac-content li {
1778 cursor:default;
1785 cursor:default;
1779 white-space:nowrap;
1786 white-space:nowrap;
1780 margin:0;
1787 margin:0;
1781 padding:2px 5px;
1788 padding:2px 5px;
1782 }
1789 }
1783
1790
1784 .ac .yui-ac-content li.yui-ac-prehighlight {
1791 .ac .yui-ac-content li.yui-ac-prehighlight {
1785 background:#B3D4FF;
1792 background:#B3D4FF;
1786 }
1793 }
1787
1794
1788 .ac .yui-ac-content li.yui-ac-highlight {
1795 .ac .yui-ac-content li.yui-ac-highlight {
1789 background:#556CB5;
1796 background:#556CB5;
1790 color:#FFF;
1797 color:#FFF;
1791 }
1798 }
1792
1799
1793 .follow{
1800 .follow{
1794 background:url("../images/icons/heart_add.png") no-repeat scroll 3px;
1801 background:url("../images/icons/heart_add.png") no-repeat scroll 3px;
1795 height: 16px;
1802 height: 16px;
1796 width: 20px;
1803 width: 20px;
1797 cursor: pointer;
1804 cursor: pointer;
1798 display: block;
1805 display: block;
1799 float: right;
1806 float: right;
1800 margin-top: 2px;
1807 margin-top: 2px;
1801 }
1808 }
1802
1809
1803 .following{
1810 .following{
1804 background:url("../images/icons/heart_delete.png") no-repeat scroll 3px;
1811 background:url("../images/icons/heart_delete.png") no-repeat scroll 3px;
1805 height: 16px;
1812 height: 16px;
1806 width: 20px;
1813 width: 20px;
1807 cursor: pointer;
1814 cursor: pointer;
1808 display: block;
1815 display: block;
1809 float: right;
1816 float: right;
1810 margin-top: 2px;
1817 margin-top: 2px;
1811 }
1818 }
1812
1819
1813 .currently_following{
1820 .currently_following{
1814
1821
1815 padding-left: 10px;
1822 padding-left: 10px;
1816 padding-bottom:5px;
1823 padding-bottom:5px;
1817
1824
1818 }
1825 }
1819
1826
1820
1827
1821
1828
1822 .add_icon {
1829 .add_icon {
1823 background:url("../images/icons/add.png") no-repeat scroll 3px;
1830 background:url("../images/icons/add.png") no-repeat scroll 3px;
1824 height:16px;
1831 height:16px;
1825 padding-left:20px;
1832 padding-left:20px;
1826 padding-top:1px;
1833 padding-top:1px;
1827 text-align:left;
1834 text-align:left;
1828 }
1835 }
1829
1836
1830 .edit_icon {
1837 .edit_icon {
1831 background:url("../images/icons/folder_edit.png") no-repeat scroll 3px;
1838 background:url("../images/icons/folder_edit.png") no-repeat scroll 3px;
1832 height:16px;
1839 height:16px;
1833 padding-left:20px;
1840 padding-left:20px;
1834 padding-top:1px;
1841 padding-top:1px;
1835 text-align:left;
1842 text-align:left;
1836 }
1843 }
1837
1844
1838 .delete_icon {
1845 .delete_icon {
1839 background:url("../images/icons/delete.png") no-repeat scroll 3px;
1846 background:url("../images/icons/delete.png") no-repeat scroll 3px;
1840 height:16px;
1847 height:16px;
1841 padding-left:20px;
1848 padding-left:20px;
1842 padding-top:1px;
1849 padding-top:1px;
1843 text-align:left;
1850 text-align:left;
1844 }
1851 }
1845
1852
1846 .refresh_icon {
1853 .refresh_icon {
1847 background:url("../images/icons/arrow_refresh.png") no-repeat scroll 3px;
1854 background:url("../images/icons/arrow_refresh.png") no-repeat scroll 3px;
1848 height:16px;
1855 height:16px;
1849 padding-left:20px;
1856 padding-left:20px;
1850 padding-top:1px;
1857 padding-top:1px;
1851 text-align:left;
1858 text-align:left;
1852 }
1859 }
1853
1860
1854 .rss_icon {
1861 .rss_icon {
1855 background:url("../images/icons/rss_16.png") no-repeat scroll 3px;
1862 background:url("../images/icons/rss_16.png") no-repeat scroll 3px;
1856 height:16px;
1863 height:16px;
1857 padding-left:20px;
1864 padding-left:20px;
1858 padding-top:1px;
1865 padding-top:1px;
1859 text-align:left;
1866 text-align:left;
1860 }
1867 }
1861
1868
1862 .atom_icon {
1869 .atom_icon {
1863 background:url("../images/icons/atom.png") no-repeat scroll 3px;
1870 background:url("../images/icons/atom.png") no-repeat scroll 3px;
1864 height:16px;
1871 height:16px;
1865 padding-left:20px;
1872 padding-left:20px;
1866 padding-top:1px;
1873 padding-top:1px;
1867 text-align:left;
1874 text-align:left;
1868 }
1875 }
1869
1876
1870 .archive_icon {
1877 .archive_icon {
1871 background:url("../images/icons/compress.png") no-repeat scroll 3px;
1878 background:url("../images/icons/compress.png") no-repeat scroll 3px;
1872 height:16px;
1879 height:16px;
1873 padding-left:20px;
1880 padding-left:20px;
1874 text-align:left;
1881 text-align:left;
1875 padding-top:1px;
1882 padding-top:1px;
1876 }
1883 }
1877
1884
1878 .action_button {
1885 .action_button {
1879 border:0;
1886 border:0;
1880 display:block;
1887 display:block;
1881 }
1888 }
1882
1889
1883 .action_button:hover {
1890 .action_button:hover {
1884 border:0;
1891 border:0;
1885 text-decoration:underline;
1892 text-decoration:underline;
1886 cursor:pointer;
1893 cursor:pointer;
1887 }
1894 }
1888
1895
1889 #switch_repos {
1896 #switch_repos {
1890 position:absolute;
1897 position:absolute;
1891 height:25px;
1898 height:25px;
1892 z-index:1;
1899 z-index:1;
1893 }
1900 }
1894
1901
1895 #switch_repos select {
1902 #switch_repos select {
1896 min-width:150px;
1903 min-width:150px;
1897 max-height:250px;
1904 max-height:250px;
1898 z-index:1;
1905 z-index:1;
1899 }
1906 }
1900
1907
1901 .breadcrumbs {
1908 .breadcrumbs {
1902 border:medium none;
1909 border:medium none;
1903 color:#FFF;
1910 color:#FFF;
1904 float:left;
1911 float:left;
1905 text-transform:uppercase;
1912 text-transform:uppercase;
1906 font-weight:700;
1913 font-weight:700;
1907 font-size:14px;
1914 font-size:14px;
1908 margin:0;
1915 margin:0;
1909 padding:11px 0 11px 10px;
1916 padding:11px 0 11px 10px;
1910 }
1917 }
1911
1918
1912 .breadcrumbs a {
1919 .breadcrumbs a {
1913 color:#FFF;
1920 color:#FFF;
1914 }
1921 }
1915
1922
1916 .flash_msg ul {
1923 .flash_msg ul {
1917 margin:0;
1924 margin:0;
1918 padding:0 0 10px;
1925 padding:0 0 10px;
1919 }
1926 }
1920
1927
1921 .error_msg {
1928 .error_msg {
1922 background-color:#FFCFCF;
1929 background-color:#FFCFCF;
1923 background-image:url("../../images/icons/error_msg.png");
1930 background-image:url("../../images/icons/error_msg.png");
1924 border:1px solid #FF9595;
1931 border:1px solid #FF9595;
1925 color:#C30;
1932 color:#C30;
1926 }
1933 }
1927
1934
1928 .warning_msg {
1935 .warning_msg {
1929 background-color:#FFFBCC;
1936 background-color:#FFFBCC;
1930 background-image:url("../../images/icons/warning_msg.png");
1937 background-image:url("../../images/icons/warning_msg.png");
1931 border:1px solid #FFF35E;
1938 border:1px solid #FFF35E;
1932 color:#C69E00;
1939 color:#C69E00;
1933 }
1940 }
1934
1941
1935 .success_msg {
1942 .success_msg {
1936 background-color:#D5FFCF;
1943 background-color:#D5FFCF;
1937 background-image:url("../../images/icons/success_msg.png");
1944 background-image:url("../../images/icons/success_msg.png");
1938 border:1px solid #97FF88;
1945 border:1px solid #97FF88;
1939 color:#090;
1946 color:#090;
1940 }
1947 }
1941
1948
1942 .notice_msg {
1949 .notice_msg {
1943 background-color:#DCE3FF;
1950 background-color:#DCE3FF;
1944 background-image:url("../../images/icons/notice_msg.png");
1951 background-image:url("../../images/icons/notice_msg.png");
1945 border:1px solid #93A8FF;
1952 border:1px solid #93A8FF;
1946 color:#556CB5;
1953 color:#556CB5;
1947 }
1954 }
1948
1955
1949 .success_msg,.error_msg,.notice_msg,.warning_msg {
1956 .success_msg,.error_msg,.notice_msg,.warning_msg {
1950 background-position:10px center;
1957 background-position:10px center;
1951 background-repeat:no-repeat;
1958 background-repeat:no-repeat;
1952 font-size:12px;
1959 font-size:12px;
1953 font-weight:700;
1960 font-weight:700;
1954 min-height:14px;
1961 min-height:14px;
1955 line-height:14px;
1962 line-height:14px;
1956 margin-bottom:0;
1963 margin-bottom:0;
1957 margin-top:0;
1964 margin-top:0;
1958 display:block;
1965 display:block;
1959 overflow:auto;
1966 overflow:auto;
1960 padding:6px 10px 6px 40px;
1967 padding:6px 10px 6px 40px;
1961 }
1968 }
1962
1969
1963 #msg_close {
1970 #msg_close {
1964 background:transparent url("../../icons/cross_grey_small.png") no-repeat scroll 0 0;
1971 background:transparent url("../../icons/cross_grey_small.png") no-repeat scroll 0 0;
1965 cursor:pointer;
1972 cursor:pointer;
1966 height:16px;
1973 height:16px;
1967 position:absolute;
1974 position:absolute;
1968 right:5px;
1975 right:5px;
1969 top:5px;
1976 top:5px;
1970 width:16px;
1977 width:16px;
1971 }
1978 }
1972
1979
1973 div#legend_container table,div#legend_choices table {
1980 div#legend_container table,div#legend_choices table {
1974 width:auto !important;
1981 width:auto !important;
1975 }
1982 }
1976
1983
1977 table#permissions_manage {
1984 table#permissions_manage {
1978 width:0 !important;
1985 width:0 !important;
1979 }
1986 }
1980
1987
1981 table#permissions_manage span.private_repo_msg {
1988 table#permissions_manage span.private_repo_msg {
1982 font-size:0.8em;
1989 font-size:0.8em;
1983 opacity:0.6px;
1990 opacity:0.6px;
1984 }
1991 }
1985
1992
1986 table#permissions_manage td.private_repo_msg {
1993 table#permissions_manage td.private_repo_msg {
1987 font-size:0.8em;
1994 font-size:0.8em;
1988 }
1995 }
1989
1996
1990 table#permissions_manage tr#add_perm_input td {
1997 table#permissions_manage tr#add_perm_input td {
1991 vertical-align:middle;
1998 vertical-align:middle;
1992 }
1999 }
1993
2000
1994 div.gravatar {
2001 div.gravatar {
1995 background-color:#FFF;
2002 background-color:#FFF;
1996 border:1px solid #D0D0D0;
2003 border:1px solid #D0D0D0;
1997 float:left;
2004 float:left;
1998 margin-right:0.7em;
2005 margin-right:0.7em;
1999 padding:2px 2px 0;
2006 padding:2px 2px 0;
2000 }
2007 }
2001
2008
2002 #header,#content,#footer {
2009 #header,#content,#footer {
2003 min-width:1024px;
2010 min-width:1024px;
2004 }
2011 }
2005
2012
2006 #content {
2013 #content {
2007 min-height:100%;
2014 min-height:100%;
2008 clear:both;
2015 clear:both;
2009 overflow:hidden;
2016 overflow:hidden;
2010 padding:14px 30px;
2017 padding:14px 30px;
2011 }
2018 }
2012
2019
2013 #content div.box div.title div.search {
2020 #content div.box div.title div.search {
2014 background:url("../../images/title_link.png") no-repeat top left;
2021 background:url("../../images/title_link.png") no-repeat top left;
2015 border-left:1px solid #316293;
2022 border-left:1px solid #316293;
2016 }
2023 }
2017
2024
2018 #content div.box div.title div.search div.input input {
2025 #content div.box div.title div.search div.input input {
2019 border:1px solid #316293;
2026 border:1px solid #316293;
2020 }
2027 }
2021
2028
2022 #content div.box div.title div.search div.button input.ui-state-default {
2029 #content div.box div.title div.search div.button input.ui-state-default {
2023 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
2030 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
2024 border:1px solid #316293;
2031 border:1px solid #316293;
2025 border-left:none;
2032 border-left:none;
2026 color:#FFF;
2033 color:#FFF;
2027 }
2034 }
2028
2035
2029 #content div.box div.title div.search div.button input.ui-state-hover {
2036 #content div.box div.title div.search div.button input.ui-state-hover {
2030 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
2037 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
2031 border:1px solid #316293;
2038 border:1px solid #316293;
2032 border-left:none;
2039 border-left:none;
2033 color:#FFF;
2040 color:#FFF;
2034 }
2041 }
2035
2042
2036 #content div.box div.form div.fields div.field div.highlight .ui-state-default {
2043 #content div.box div.form div.fields div.field div.highlight .ui-state-default {
2037 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
2044 background:#4e85bb url("../../images/button_highlight.png") repeat-x;
2038 border-top:1px solid #5c91a4;
2045 border-top:1px solid #5c91a4;
2039 border-left:1px solid #2a6f89;
2046 border-left:1px solid #2a6f89;
2040 border-right:1px solid #2b7089;
2047 border-right:1px solid #2b7089;
2041 border-bottom:1px solid #1a6480;
2048 border-bottom:1px solid #1a6480;
2042 color:#fff;
2049 color:#fff;
2043 }
2050 }
2044
2051
2045 #content div.box div.form div.fields div.field div.highlight .ui-state-hover {
2052 #content div.box div.form div.fields div.field div.highlight .ui-state-hover {
2046 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
2053 background:#46a0c1 url("../../images/button_highlight_selected.png") repeat-x;
2047 border-top:1px solid #78acbf;
2054 border-top:1px solid #78acbf;
2048 border-left:1px solid #34819e;
2055 border-left:1px solid #34819e;
2049 border-right:1px solid #35829f;
2056 border-right:1px solid #35829f;
2050 border-bottom:1px solid #257897;
2057 border-bottom:1px solid #257897;
2051 color:#fff;
2058 color:#fff;
2052 }
2059 }
2053
2060
2054 ins,div.options a:hover {
2061 ins,div.options a:hover {
2055 text-decoration:none;
2062 text-decoration:none;
2056 }
2063 }
2057
2064
2058 img,#header #header-inner #quick li a:hover span.normal,#header #header-inner #quick li ul li.last,#content div.box div.form div.fields div.field div.textarea table td table td a,#clone_url {
2065 img,#header #header-inner #quick li a:hover span.normal,#header #header-inner #quick li ul li.last,#content div.box div.form div.fields div.field div.textarea table td table td a,#clone_url {
2059 border:none;
2066 border:none;
2060 }
2067 }
2061
2068
2062 img.icon,.right .merge img {
2069 img.icon,.right .merge img {
2063 vertical-align:bottom;
2070 vertical-align:bottom;
2064 }
2071 }
2065
2072
2066 #header ul#logged-user,#content div.box div.title ul.links,#content div.box div.message div.dismiss,#content div.box div.traffic div.legend ul {
2073 #header ul#logged-user,#content div.box div.title ul.links,#content div.box div.message div.dismiss,#content div.box div.traffic div.legend ul {
2067 float:right;
2074 float:right;
2068 margin:0;
2075 margin:0;
2069 padding:0;
2076 padding:0;
2070 }
2077 }
2071
2078
2072 #header #header-inner #home,#header #header-inner #logo,#content div.box ul.left,#content div.box ol.left,#content div.box div.pagination-left,div#commit_history,div#legend_data,div#legend_container,div#legend_choices {
2079 #header #header-inner #home,#header #header-inner #logo,#content div.box ul.left,#content div.box ol.left,#content div.box div.pagination-left,div#commit_history,div#legend_data,div#legend_container,div#legend_choices {
2073 float:left;
2080 float:left;
2074 }
2081 }
2075
2082
2076 #header #header-inner #quick li:hover ul ul,#header #header-inner #quick li:hover ul ul ul,#header #header-inner #quick li:hover ul ul ul ul,#content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow {
2083 #header #header-inner #quick li:hover ul ul,#header #header-inner #quick li:hover ul ul ul,#header #header-inner #quick li:hover ul ul ul ul,#content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow {
2077 display:none;
2084 display:none;
2078 }
2085 }
2079
2086
2080 #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 {
2087 #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 {
2081 display:block;
2088 display:block;
2082 }
2089 }
2083
2090
2084 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a {
2091 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a {
2085 color:#bfe3ff;
2092 color:#bfe3ff;
2086 }
2093 }
2087
2094
2088 #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 {
2095 #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 {
2089 margin:10px 24px 10px 44px;
2096 margin:10px 24px 10px 44px;
2090 }
2097 }
2091
2098
2092 #content div.box div.form,#content div.box div.table,#content div.box div.traffic {
2099 #content div.box div.form,#content div.box div.table,#content div.box div.traffic {
2093 clear:both;
2100 clear:both;
2094 overflow:hidden;
2101 overflow:hidden;
2095 margin:0;
2102 margin:0;
2096 padding:0 20px 10px;
2103 padding:0 20px 10px;
2097 }
2104 }
2098
2105
2099 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields {
2106 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields {
2100 clear:both;
2107 clear:both;
2101 overflow:hidden;
2108 overflow:hidden;
2102 margin:0;
2109 margin:0;
2103 padding:0;
2110 padding:0;
2104 }
2111 }
2105
2112
2106 #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 {
2113 #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 {
2107 height:1%;
2114 height:1%;
2108 display:block;
2115 display:block;
2109 color:#363636;
2116 color:#363636;
2110 margin:0;
2117 margin:0;
2111 padding:2px 0 0;
2118 padding:2px 0 0;
2112 }
2119 }
2113
2120
2114 #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 {
2121 #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 {
2115 background:#FBE3E4;
2122 background:#FBE3E4;
2116 border-top:1px solid #e1b2b3;
2123 border-top:1px solid #e1b2b3;
2117 border-left:1px solid #e1b2b3;
2124 border-left:1px solid #e1b2b3;
2118 border-right:1px solid #FBC2C4;
2125 border-right:1px solid #FBC2C4;
2119 border-bottom:1px solid #FBC2C4;
2126 border-bottom:1px solid #FBC2C4;
2120 }
2127 }
2121
2128
2122 #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 {
2129 #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 {
2123 background:#E6EFC2;
2130 background:#E6EFC2;
2124 border-top:1px solid #cebb98;
2131 border-top:1px solid #cebb98;
2125 border-left:1px solid #cebb98;
2132 border-left:1px solid #cebb98;
2126 border-right:1px solid #c6d880;
2133 border-right:1px solid #c6d880;
2127 border-bottom:1px solid #c6d880;
2134 border-bottom:1px solid #c6d880;
2128 }
2135 }
2129
2136
2130 #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 {
2137 #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 {
2131 margin:0;
2138 margin:0;
2132 }
2139 }
2133
2140
2134 #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{
2141 #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{
2135 margin:0 0 0 0px !important;
2142 margin:0 0 0 0px !important;
2136 padding:0;
2143 padding:0;
2137 }
2144 }
2138
2145
2139 #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 {
2146 #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 {
2140 margin:0 0 0 200px;
2147 margin:0 0 0 200px;
2141 padding:0;
2148 padding:0;
2142 }
2149 }
2143
2150
2144
2151
2145 #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 {
2152 #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 {
2146 color:#000;
2153 color:#000;
2147 text-decoration:none;
2154 text-decoration:none;
2148 }
2155 }
2149
2156
2150 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus {
2157 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus {
2151 border:1px solid #666;
2158 border:1px solid #666;
2152 }
2159 }
2153
2160
2154 #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 {
2161 #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 {
2155 clear:both;
2162 clear:both;
2156 overflow:hidden;
2163 overflow:hidden;
2157 margin:0;
2164 margin:0;
2158 padding:8px 0 2px;
2165 padding:8px 0 2px;
2159 }
2166 }
2160
2167
2161 #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 {
2168 #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 {
2162 float:left;
2169 float:left;
2163 margin:0;
2170 margin:0;
2164 }
2171 }
2165
2172
2166 #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 {
2173 #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 {
2167 height:1%;
2174 height:1%;
2168 display:block;
2175 display:block;
2169 float:left;
2176 float:left;
2170 margin:2px 0 0 4px;
2177 margin:2px 0 0 4px;
2171 }
2178 }
2172
2179
2173 div.form div.fields div.field div.button input,#content div.box div.form div.fields div.buttons input,div.form div.fields div.buttons input,#content div.box div.action div.button input {
2180 div.form div.fields div.field div.button input,#content div.box div.form div.fields div.buttons input,div.form div.fields div.buttons input,#content div.box div.action div.button input {
2174 color:#000;
2181 color:#000;
2175 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2182 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2176 font-size:11px;
2183 font-size:11px;
2177 font-weight:700;
2184 font-weight:700;
2178 margin:0;
2185 margin:0;
2179 }
2186 }
2180
2187
2181 div.form div.fields div.field div.button .ui-state-default,#content div.box div.form div.fields div.buttons input.ui-state-default {
2188 div.form div.fields div.field div.button .ui-state-default,#content div.box div.form div.fields div.buttons input.ui-state-default {
2182 background:#e5e3e3 url("../images/button.png") repeat-x;
2189 background:#e5e3e3 url("../images/button.png") repeat-x;
2183 border-top:1px solid #DDD;
2190 border-top:1px solid #DDD;
2184 border-left:1px solid #c6c6c6;
2191 border-left:1px solid #c6c6c6;
2185 border-right:1px solid #DDD;
2192 border-right:1px solid #DDD;
2186 border-bottom:1px solid #c6c6c6;
2193 border-bottom:1px solid #c6c6c6;
2187 color:#515151;
2194 color:#515151;
2188 outline:none;
2195 outline:none;
2189 margin:0;
2196 margin:0;
2190 padding:6px 12px;
2197 padding:6px 12px;
2191 }
2198 }
2192
2199
2193 div.form div.fields div.field div.button .ui-state-hover,#content div.box div.form div.fields div.buttons input.ui-state-hover {
2200 div.form div.fields div.field div.button .ui-state-hover,#content div.box div.form div.fields div.buttons input.ui-state-hover {
2194 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2201 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2195 border-top:1px solid #ccc;
2202 border-top:1px solid #ccc;
2196 border-left:1px solid #bebebe;
2203 border-left:1px solid #bebebe;
2197 border-right:1px solid #b1b1b1;
2204 border-right:1px solid #b1b1b1;
2198 border-bottom:1px solid #afafaf;
2205 border-bottom:1px solid #afafaf;
2199 color:#515151;
2206 color:#515151;
2200 outline:none;
2207 outline:none;
2201 margin:0;
2208 margin:0;
2202 padding:6px 12px;
2209 padding:6px 12px;
2203 }
2210 }
2204
2211
2205 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight {
2212 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight {
2206 display:inline;
2213 display:inline;
2207 }
2214 }
2208
2215
2209 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons {
2216 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons {
2210 margin:10px 0 0 200px;
2217 margin:10px 0 0 200px;
2211 padding:0;
2218 padding:0;
2212 }
2219 }
2213
2220
2214 #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 {
2221 #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 {
2215 margin:10px 0 0;
2222 margin:10px 0 0;
2216 }
2223 }
2217
2224
2218 #content div.box table td.user,#content div.box table td.address {
2225 #content div.box table td.user,#content div.box table td.address {
2219 width:10%;
2226 width:10%;
2220 text-align:center;
2227 text-align:center;
2221 }
2228 }
2222
2229
2223 #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 {
2230 #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 {
2224 text-align:right;
2231 text-align:right;
2225 margin:6px 0 0;
2232 margin:6px 0 0;
2226 padding:0;
2233 padding:0;
2227 }
2234 }
2228
2235
2229 #content div.box div.action div.button input.ui-state-default,#login div.form div.fields div.buttons input.ui-state-default,#register div.form div.fields div.buttons input.ui-state-default {
2236 #content div.box div.action div.button input.ui-state-default,#login div.form div.fields div.buttons input.ui-state-default,#register div.form div.fields div.buttons input.ui-state-default {
2230 background:#e5e3e3 url("../images/button.png") repeat-x;
2237 background:#e5e3e3 url("../images/button.png") repeat-x;
2231 border-top:1px solid #DDD;
2238 border-top:1px solid #DDD;
2232 border-left:1px solid #c6c6c6;
2239 border-left:1px solid #c6c6c6;
2233 border-right:1px solid #DDD;
2240 border-right:1px solid #DDD;
2234 border-bottom:1px solid #c6c6c6;
2241 border-bottom:1px solid #c6c6c6;
2235 color:#515151;
2242 color:#515151;
2236 margin:0;
2243 margin:0;
2237 padding:6px 12px;
2244 padding:6px 12px;
2238 }
2245 }
2239
2246
2240 #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 {
2247 #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 {
2241 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2248 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2242 border-top:1px solid #ccc;
2249 border-top:1px solid #ccc;
2243 border-left:1px solid #bebebe;
2250 border-left:1px solid #bebebe;
2244 border-right:1px solid #b1b1b1;
2251 border-right:1px solid #b1b1b1;
2245 border-bottom:1px solid #afafaf;
2252 border-bottom:1px solid #afafaf;
2246 color:#515151;
2253 color:#515151;
2247 margin:0;
2254 margin:0;
2248 padding:6px 12px;
2255 padding:6px 12px;
2249 }
2256 }
2250
2257
2251 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results {
2258 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results {
2252 text-align:left;
2259 text-align:left;
2253 float:left;
2260 float:left;
2254 margin:0;
2261 margin:0;
2255 padding:0;
2262 padding:0;
2256 }
2263 }
2257
2264
2258 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span {
2265 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span {
2259 height:1%;
2266 height:1%;
2260 display:block;
2267 display:block;
2261 float:left;
2268 float:left;
2262 background:#ebebeb url("../images/pager.png") repeat-x;
2269 background:#ebebeb url("../images/pager.png") repeat-x;
2263 border-top:1px solid #dedede;
2270 border-top:1px solid #dedede;
2264 border-left:1px solid #cfcfcf;
2271 border-left:1px solid #cfcfcf;
2265 border-right:1px solid #c4c4c4;
2272 border-right:1px solid #c4c4c4;
2266 border-bottom:1px solid #c4c4c4;
2273 border-bottom:1px solid #c4c4c4;
2267 color:#4A4A4A;
2274 color:#4A4A4A;
2268 font-weight:700;
2275 font-weight:700;
2269 margin:0;
2276 margin:0;
2270 padding:6px 8px;
2277 padding:6px 8px;
2271 }
2278 }
2272
2279
2273 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled {
2280 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled {
2274 color:#B4B4B4;
2281 color:#B4B4B4;
2275 padding:6px;
2282 padding:6px;
2276 }
2283 }
2277
2284
2278 #login,#register {
2285 #login,#register {
2279 width:520px;
2286 width:520px;
2280 margin:10% auto 0;
2287 margin:10% auto 0;
2281 padding:0;
2288 padding:0;
2282 }
2289 }
2283
2290
2284 #login div.color,#register div.color {
2291 #login div.color,#register div.color {
2285 clear:both;
2292 clear:both;
2286 overflow:hidden;
2293 overflow:hidden;
2287 background:#FFF;
2294 background:#FFF;
2288 margin:10px auto 0;
2295 margin:10px auto 0;
2289 padding:3px 3px 3px 0;
2296 padding:3px 3px 3px 0;
2290 }
2297 }
2291
2298
2292 #login div.color a,#register div.color a {
2299 #login div.color a,#register div.color a {
2293 width:20px;
2300 width:20px;
2294 height:20px;
2301 height:20px;
2295 display:block;
2302 display:block;
2296 float:left;
2303 float:left;
2297 margin:0 0 0 3px;
2304 margin:0 0 0 3px;
2298 padding:0;
2305 padding:0;
2299 }
2306 }
2300
2307
2301 #login div.title h5,#register div.title h5 {
2308 #login div.title h5,#register div.title h5 {
2302 color:#fff;
2309 color:#fff;
2303 margin:10px;
2310 margin:10px;
2304 padding:0;
2311 padding:0;
2305 }
2312 }
2306
2313
2307 #login div.form div.fields div.field,#register div.form div.fields div.field {
2314 #login div.form div.fields div.field,#register div.form div.fields div.field {
2308 clear:both;
2315 clear:both;
2309 overflow:hidden;
2316 overflow:hidden;
2310 margin:0;
2317 margin:0;
2311 padding:0 0 10px;
2318 padding:0 0 10px;
2312 }
2319 }
2313
2320
2314 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message {
2321 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message {
2315 height:1%;
2322 height:1%;
2316 display:block;
2323 display:block;
2317 color:red;
2324 color:red;
2318 margin:8px 0 0;
2325 margin:8px 0 0;
2319 padding:0;
2326 padding:0;
2320 max-width: 320px;
2327 max-width: 320px;
2321 }
2328 }
2322
2329
2323 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label {
2330 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label {
2324 color:#000;
2331 color:#000;
2325 font-weight:700;
2332 font-weight:700;
2326 }
2333 }
2327
2334
2328 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input {
2335 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input {
2329 float:left;
2336 float:left;
2330 margin:0;
2337 margin:0;
2331 padding:0;
2338 padding:0;
2332 }
2339 }
2333
2340
2334 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox {
2341 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox {
2335 margin:0 0 0 184px;
2342 margin:0 0 0 184px;
2336 padding:0;
2343 padding:0;
2337 }
2344 }
2338
2345
2339 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label {
2346 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label {
2340 color:#565656;
2347 color:#565656;
2341 font-weight:700;
2348 font-weight:700;
2342 }
2349 }
2343
2350
2344 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input {
2351 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input {
2345 color:#000;
2352 color:#000;
2346 font-size:1em;
2353 font-size:1em;
2347 font-weight:700;
2354 font-weight:700;
2348 font-family:Verdana, Helvetica, Sans-Serif;
2355 font-family:Verdana, Helvetica, Sans-Serif;
2349 margin:0;
2356 margin:0;
2350 }
2357 }
2351
2358
2352 #changeset_content .container .wrapper,#graph_content .container .wrapper {
2359 #changeset_content .container .wrapper,#graph_content .container .wrapper {
2353 width:600px;
2360 width:600px;
2354 }
2361 }
2355
2362
2356 #changeset_content .container .left,#graph_content .container .left {
2363 #changeset_content .container .left,#graph_content .container .left {
2357 float:left;
2364 float:left;
2358 width:70%;
2365 width:70%;
2359 padding-left:5px;
2366 padding-left:5px;
2360 }
2367 }
2361
2368
2362 #changeset_content .container .left .date,.ac .match {
2369 #changeset_content .container .left .date,.ac .match {
2363 font-weight:700;
2370 font-weight:700;
2364 padding-top: 5px;
2371 padding-top: 5px;
2365 padding-bottom:5px;
2372 padding-bottom:5px;
2366 }
2373 }
2367
2374
2368 div#legend_container table td,div#legend_choices table td {
2375 div#legend_container table td,div#legend_choices table td {
2369 border:none !important;
2376 border:none !important;
2370 height:20px !important;
2377 height:20px !important;
2371 padding:0 !important;
2378 padding:0 !important;
2372 }
2379 }
2373
2380
2374 #q_filter{
2381 #q_filter{
2375 border:0 none;
2382 border:0 none;
2376 color:#AAAAAA;
2383 color:#AAAAAA;
2377 margin-bottom:-4px;
2384 margin-bottom:-4px;
2378 margin-top:-4px;
2385 margin-top:-4px;
2379 padding-left:3px;
2386 padding-left:3px;
2380 }
2387 }
2381
2388
@@ -1,125 +1,84 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
2 <%inherit file="/base/base.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('Permissions administration')} - ${c.rhodecode_name}
5 ${_('Permissions administration')} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7
7
8 <%def name="breadcrumbs_links()">
8 <%def name="breadcrumbs_links()">
9 ${h.link_to(_('Admin'),h.url('admin_home'))}
9 ${h.link_to(_('Admin'),h.url('admin_home'))}
10 &raquo;
10 &raquo;
11 ${_('Permissions')}
11 ${_('Permissions')}
12 </%def>
12 </%def>
13
13
14 <%def name="page_nav()">
14 <%def name="page_nav()">
15 ${self.menu('admin')}
15 ${self.menu('admin')}
16 </%def>
16 </%def>
17
17
18 <%def name="main()">
18 <%def name="main()">
19 <div class="box">
19 <div class="box">
20 <!-- box / title -->
20 <!-- box / title -->
21 <div class="title">
21 <div class="title">
22 ${self.breadcrumbs()}
22 ${self.breadcrumbs()}
23 </div>
23 </div>
24 <h3>${_('Default permissions')}</h3>
24 <h3>${_('Default permissions')}</h3>
25 ${h.form(url('permission', id='default'),method='put')}
25 ${h.form(url('permission', id='default'),method='put')}
26 <div class="form">
26 <div class="form">
27 <!-- fields -->
27 <!-- fields -->
28 <div class="fields">
28 <div class="fields">
29 <div class="field">
29 <div class="field">
30 <div class="label label-checkbox">
30 <div class="label label-checkbox">
31 <label for="anonymous">${_('Anonymous access')}:</label>
31 <label for="anonymous">${_('Anonymous access')}:</label>
32 </div>
32 </div>
33 <div class="checkboxes">
33 <div class="checkboxes">
34 <div class="checkbox">
34 <div class="checkbox">
35 ${h.checkbox('anonymous',True)}
35 ${h.checkbox('anonymous',True)}
36 </div>
36 </div>
37 </div>
37 </div>
38 </div>
38 </div>
39 <div class="field">
39 <div class="field">
40 <div class="label label-select">
40 <div class="label label-select">
41 <label for="default_perm">${_('Repository permission')}:</label>
41 <label for="default_perm">${_('Repository permission')}:</label>
42 </div>
42 </div>
43 <div class="select">
43 <div class="select">
44 ${h.select('default_perm','',c.perms_choices)}
44 ${h.select('default_perm','',c.perms_choices)}
45
45
46 ${h.checkbox('overwrite_default','true')}
46 ${h.checkbox('overwrite_default','true')}
47 <label for="overwrite_default">
47 <label for="overwrite_default">
48 <span class="tooltip"
48 <span class="tooltip"
49 tooltip_title="${h.tooltip(_('All default permissions on each repository will be reset to choosen permission, note that all custom default permission on repositories will be lost'))}">
49 tooltip_title="${h.tooltip(_('All default permissions on each repository will be reset to choosen permission, note that all custom default permission on repositories will be lost'))}">
50 ${_('overwrite existing settings')}</span> </label>
50 ${_('overwrite existing settings')}</span> </label>
51 </div>
51 </div>
52 </div>
52 </div>
53 <div class="field">
53 <div class="field">
54 <div class="label">
54 <div class="label">
55 <label for="default_register">${_('Registration')}:</label>
55 <label for="default_register">${_('Registration')}:</label>
56 </div>
56 </div>
57 <div class="select">
57 <div class="select">
58 ${h.select('default_register','',c.register_choices)}
58 ${h.select('default_register','',c.register_choices)}
59 </div>
59 </div>
60 </div>
60 </div>
61 <div class="field">
61 <div class="field">
62 <div class="label">
62 <div class="label">
63 <label for="default_create">${_('Repository creation')}:</label>
63 <label for="default_create">${_('Repository creation')}:</label>
64 </div>
64 </div>
65 <div class="select">
65 <div class="select">
66 ${h.select('default_create','',c.create_choices)}
66 ${h.select('default_create','',c.create_choices)}
67 </div>
67 </div>
68 </div>
68 </div>
69
69
70 <div class="buttons">
70 <div class="buttons">
71 ${h.submit('set','set',class_="ui-button ui-widget ui-state-default ui-corner-all")}
71 ${h.submit('set','set',class_="ui-button ui-widget ui-state-default ui-corner-all")}
72 </div>
72 </div>
73 </div>
73 </div>
74 </div>
74 </div>
75 ${h.end_form()}
75 ${h.end_form()}
76 ##LDAP
77 <h3>${_('LDAP settings')}</h3>
78 ${h.form(url('permissions_ldap',id_iser='default'),method='put')}
79 <div class="form">
80 <div class="fields">
81
82 <div class="field">
83 <div class="label label-checkbox"><label for="ldap_active">${_('Enable ldap')}</label></div>
84 <div class="checkboxes"><div class="checkbox">${h.checkbox('ldap_active',True,class_='small')}</div></div>
85 </div>
86 <div class="field">
87 <div class="label"><label for="ldap_host">${_('Host')}</label></div>
88 <div class="input">${h.text('ldap_host',class_='small')}</div>
89 </div>
90 <div class="field">
91 <div class="label"><label for="ldap_port">${_('Port')}</label></div>
92 <div class="input">${h.text('ldap_port',class_='small')}</div>
93 </div>
94 <div class="field">
95 <div class="label label-checkbox"><label for="ldap_ldaps">${_('Enable LDAPS')}</label></div>
96 <div class="checkboxes"><div class="checkbox">${h.checkbox('ldap_ldaps',True,class_='small')}</div></div>
97 </div>
98 <div class="field">
99 <div class="label"><label for="ldap_dn_user">${_('Account')}</label></div>
100 <div class="input">${h.text('ldap_dn_user',class_='small')}</div>
101 </div>
102 <div class="field">
103 <div class="label"><label for="ldap_dn_pass">${_('Password')}</label></div>
104 <div class="input">${h.password('ldap_dn_pass',class_='small')}</div>
105 </div>
106 <div class="field">
107 <div class="label"><label for="ldap_base_dn">${_('Base DN')}</label></div>
108 <div class="input">${h.text('ldap_base_dn',class_='small')}</div>
109 </div>
110
111 <div class="buttons">
112 ${h.submit('save','Save',class_="ui-button ui-widget ui-state-default ui-corner-all")}
113 </div>
114 </div>
115 </div>
116 ${h.end_form()}
117 </div>
76 </div>
118 </%def>
77 </%def>
119
78
120
79
121
80
122
81
123
82
124
83
125
84
@@ -1,356 +1,354 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" id="mainhtml">
3 <html xmlns="http://www.w3.org/1999/xhtml" id="mainhtml">
4 <head>
4 <head>
5 <title>${next.title()}</title>
5 <title>${next.title()}</title>
6 <link rel="icon" href="/images/icons/database_gear.png" type="image/png" />
6 <link rel="icon" href="/images/icons/database_gear.png" type="image/png" />
7 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
7 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8 <meta name="robots" content="index, nofollow"/>
8 <meta name="robots" content="index, nofollow"/>
9 <!-- stylesheets -->
9 <!-- stylesheets -->
10 ${self.css()}
10 ${self.css()}
11 <!-- scripts -->
11 <!-- scripts -->
12 ${self.js()}
12 ${self.js()}
13 </head>
13 </head>
14 <body>
14 <body>
15 <!-- header -->
15 <!-- header -->
16 <div id="header">
16 <div id="header">
17 <!-- user -->
17 <!-- user -->
18 <ul id="logged-user">
18 <ul id="logged-user">
19 <li class="first">
19 <li class="first">
20 <div class="gravatar">
20 <div class="gravatar">
21 <img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,24)}" />
21 <img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,24)}" />
22 </div>
22 </div>
23 %if c.rhodecode_user.username == 'default':
23 %if c.rhodecode_user.username == 'default':
24 <div class="account">
24 <div class="account">
25 ${h.link_to('%s %s'%(c.rhodecode_user.name,c.rhodecode_user.lastname),h.url('#'))}<br/>
25 ${h.link_to('%s %s'%(c.rhodecode_user.name,c.rhodecode_user.lastname),h.url('#'))}<br/>
26 ${h.link_to(c.rhodecode_user.username,h.url('#'))}
26 ${h.link_to(c.rhodecode_user.username,h.url('#'))}
27 </div>
27 </div>
28 </li>
28 </li>
29 <li class="last highlight">${h.link_to(u'Login',h.url('login_home'))}</li>
29 <li class="last highlight">${h.link_to(u'Login',h.url('login_home'))}</li>
30 %else:
30 %else:
31
31
32 <div class="account">
32 <div class="account">
33 ${h.link_to('%s %s'%(c.rhodecode_user.name,c.rhodecode_user.lastname),h.url('admin_settings_my_account'))}<br/>
33 ${h.link_to('%s %s'%(c.rhodecode_user.name,c.rhodecode_user.lastname),h.url('admin_settings_my_account'))}<br/>
34 ${h.link_to(c.rhodecode_user.username,h.url('admin_settings_my_account'))}
34 ${h.link_to(c.rhodecode_user.username,h.url('admin_settings_my_account'))}
35 </div>
35 </div>
36 </li>
36 </li>
37 <li class="last highlight">${h.link_to(u'Logout',h.url('logout_home'))}</li>
37 <li class="last highlight">${h.link_to(u'Logout',h.url('logout_home'))}</li>
38 %endif
38 %endif
39 </ul>
39 </ul>
40 <!-- end user -->
40 <!-- end user -->
41 <div id="header-inner" class="title top-left-rounded-corner top-right-rounded-corner">
41 <div id="header-inner" class="title top-left-rounded-corner top-right-rounded-corner">
42 <!-- logo -->
42 <!-- logo -->
43 <div id="logo">
43 <div id="logo">
44 <h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1>
44 <h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1>
45 </div>
45 </div>
46 <!-- end logo -->
46 <!-- end logo -->
47 <!-- menu -->
47 <!-- menu -->
48 ${self.page_nav()}
48 ${self.page_nav()}
49 <!-- quick -->
49 <!-- quick -->
50 </div>
50 </div>
51 </div>
51 </div>
52 <!-- end header -->
52 <!-- end header -->
53
53
54 <!-- CONTENT -->
54 <!-- CONTENT -->
55 <div id="content">
55 <div id="content">
56 <div class="flash_msg">
56 <div class="flash_msg">
57 <% messages = h.flash.pop_messages() %>
57 <% messages = h.flash.pop_messages() %>
58 % if messages:
58 % if messages:
59 <ul id="flash-messages">
59 <ul id="flash-messages">
60 % for message in messages:
60 % for message in messages:
61 <li class="${message.category}_msg">${message}</li>
61 <li class="${message.category}_msg">${message}</li>
62 % endfor
62 % endfor
63 </ul>
63 </ul>
64 % endif
64 % endif
65 </div>
65 </div>
66 <div id="main">
66 <div id="main">
67 ${next.main()}
67 ${next.main()}
68 </div>
68 </div>
69 </div>
69 </div>
70 <!-- END CONTENT -->
70 <!-- END CONTENT -->
71
71
72 <!-- footer -->
72 <!-- footer -->
73 <div id="footer">
73 <div id="footer">
74 <div id="footer-inner" class="title bottom-left-rounded-corner bottom-right-rounded-corner">
74 <div id="footer-inner" class="title bottom-left-rounded-corner bottom-right-rounded-corner">
75 <div>
75 <div>
76 <p class="footer-link">${h.link_to(_('Submit a bug'),h.url('bugtracker'))}</p>
76 <p class="footer-link">${h.link_to(_('Submit a bug'),h.url('bugtracker'))}</p>
77 <p class="footer-link">${h.link_to(_('GPL license'),h.url('gpl_license'))}</p>
77 <p class="footer-link">${h.link_to(_('GPL license'),h.url('gpl_license'))}</p>
78 <p>RhodeCode ${c.rhodecode_version} &copy; 2010 by Marcin Kuzminski</p>
78 <p>RhodeCode ${c.rhodecode_version} &copy; 2010 by Marcin Kuzminski</p>
79 </div>
79 </div>
80 </div>
80 </div>
81 <script type="text/javascript">${h.tooltip.activate()}</script>
81 <script type="text/javascript">${h.tooltip.activate()}</script>
82 </div>
82 </div>
83 <!-- end footer -->
83 <!-- end footer -->
84 </body>
84 </body>
85
85
86 </html>
86 </html>
87
87
88 ### MAKO DEFS ###
88 ### MAKO DEFS ###
89 <%def name="page_nav()">
89 <%def name="page_nav()">
90 ${self.menu()}
90 ${self.menu()}
91 </%def>
91 </%def>
92
92
93 <%def name="menu(current=None)">
93 <%def name="menu(current=None)">
94 <%
94 <%
95 def is_current(selected):
95 def is_current(selected):
96 if selected == current:
96 if selected == current:
97 return h.literal('class="current"')
97 return h.literal('class="current"')
98 %>
98 %>
99 %if current not in ['home','admin']:
99 %if current not in ['home','admin']:
100 ##REGULAR MENU
100 ##REGULAR MENU
101 <ul id="quick">
101 <ul id="quick">
102 <!-- repo switcher -->
102 <!-- repo switcher -->
103 <li>
103 <li>
104 <a id="repo_switcher" title="${_('Switch repository')}" href="#">
104 <a id="repo_switcher" title="${_('Switch repository')}" href="#">
105 <span class="icon">
105 <span class="icon">
106 <img src="/images/icons/database.png" alt="${_('Products')}" />
106 <img src="/images/icons/database.png" alt="${_('Products')}" />
107 </span>
107 </span>
108 <span>&darr;</span>
108 <span>&darr;</span>
109 </a>
109 </a>
110 <ul class="repo_switcher">
110 <ul class="repo_switcher">
111 %for repo in c.cached_repo_list:
111 %for repo in c.cached_repo_list:
112
112
113 %if repo['repo'].dbrepo.private:
113 %if repo['repo'].dbrepo.private:
114 <li><img src="/images/icons/lock.png" alt="${_('Private repository')}" class="repo_switcher_type"/>${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['repo'].dbrepo.repo_type)}</li>
114 <li><img src="/images/icons/lock.png" alt="${_('Private repository')}" class="repo_switcher_type"/>${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['repo'].dbrepo.repo_type)}</li>
115 %else:
115 %else:
116 <li><img src="/images/icons/lock_open.png" alt="${_('Public repository')}" class="repo_switcher_type" />${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['repo'].dbrepo.repo_type)}</li>
116 <li><img src="/images/icons/lock_open.png" alt="${_('Public repository')}" class="repo_switcher_type" />${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['repo'].dbrepo.repo_type)}</li>
117 %endif
117 %endif
118 %endfor
118 %endfor
119 </ul>
119 </ul>
120 </li>
120 </li>
121
121
122 <li ${is_current('summary')}>
122 <li ${is_current('summary')}>
123 <a title="${_('Summary')}" href="${h.url('summary_home',repo_name=c.repo_name)}">
123 <a title="${_('Summary')}" href="${h.url('summary_home',repo_name=c.repo_name)}">
124 <span class="icon">
124 <span class="icon">
125 <img src="/images/icons/clipboard_16.png" alt="${_('Summary')}" />
125 <img src="/images/icons/clipboard_16.png" alt="${_('Summary')}" />
126 </span>
126 </span>
127 <span>${_('Summary')}</span>
127 <span>${_('Summary')}</span>
128 </a>
128 </a>
129 </li>
129 </li>
130 ##<li ${is_current('shortlog')}>
130 ##<li ${is_current('shortlog')}>
131 ## <a title="${_('Shortlog')}" href="${h.url('shortlog_home',repo_name=c.repo_name)}">
131 ## <a title="${_('Shortlog')}" href="${h.url('shortlog_home',repo_name=c.repo_name)}">
132 ## <span class="icon">
132 ## <span class="icon">
133 ## <img src="/images/icons/application_view_list.png" alt="${_('Shortlog')}" />
133 ## <img src="/images/icons/application_view_list.png" alt="${_('Shortlog')}" />
134 ## </span>
134 ## </span>
135 ## <span>${_('Shortlog')}</span>
135 ## <span>${_('Shortlog')}</span>
136 ## </a>
136 ## </a>
137 ##</li>
137 ##</li>
138 <li ${is_current('changelog')}>
138 <li ${is_current('changelog')}>
139 <a title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=c.repo_name)}">
139 <a title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=c.repo_name)}">
140 <span class="icon">
140 <span class="icon">
141 <img src="/images/icons/time.png" alt="${_('Changelog')}" />
141 <img src="/images/icons/time.png" alt="${_('Changelog')}" />
142 </span>
142 </span>
143 <span>${_('Changelog')}</span>
143 <span>${_('Changelog')}</span>
144 </a>
144 </a>
145 </li>
145 </li>
146
146
147 <li ${is_current('switch_to')}>
147 <li ${is_current('switch_to')}>
148 <a title="${_('Switch to')}" href="#">
148 <a title="${_('Switch to')}" href="#">
149 <span class="icon">
149 <span class="icon">
150 <img src="/images/icons/arrow_switch.png" alt="${_('Switch to')}" />
150 <img src="/images/icons/arrow_switch.png" alt="${_('Switch to')}" />
151 </span>
151 </span>
152 <span>${_('Switch to')}</span>
152 <span>${_('Switch to')}</span>
153 </a>
153 </a>
154 <ul>
154 <ul>
155 <li>
155 <li>
156 ${h.link_to('%s (%s)' % (_('branches'),len(c.repository_branches.values()),),h.url('branches_home',repo_name=c.repo_name),class_='branches childs')}
156 ${h.link_to('%s (%s)' % (_('branches'),len(c.repository_branches.values()),),h.url('branches_home',repo_name=c.repo_name),class_='branches childs')}
157 <ul>
157 <ul>
158 %if c.repository_branches.values():
158 %if c.repository_branches.values():
159 %for cnt,branch in enumerate(c.repository_branches.items()):
159 %for cnt,branch in enumerate(c.repository_branches.items()):
160 <li>${h.link_to('%s - %s' % (branch[0],h.short_id(branch[1])),h.url('files_home',repo_name=c.repo_name,revision=branch[1]))}</li>
160 <li>${h.link_to('%s - %s' % (branch[0],h.short_id(branch[1])),h.url('files_home',repo_name=c.repo_name,revision=branch[1]))}</li>
161 %endfor
161 %endfor
162 %else:
162 %else:
163 <li>${h.link_to(_('There are no branches yet'),'#')}</li>
163 <li>${h.link_to(_('There are no branches yet'),'#')}</li>
164 %endif
164 %endif
165 </ul>
165 </ul>
166 </li>
166 </li>
167 <li>
167 <li>
168 ${h.link_to('%s (%s)' % (_('tags'),len(c.repository_tags.values()),),h.url('tags_home',repo_name=c.repo_name),class_='tags childs')}
168 ${h.link_to('%s (%s)' % (_('tags'),len(c.repository_tags.values()),),h.url('tags_home',repo_name=c.repo_name),class_='tags childs')}
169 <ul>
169 <ul>
170 %if c.repository_tags.values():
170 %if c.repository_tags.values():
171 %for cnt,tag in enumerate(c.repository_tags.items()):
171 %for cnt,tag in enumerate(c.repository_tags.items()):
172 <li>${h.link_to('%s - %s' % (tag[0],h.short_id(tag[1])),h.url('files_home',repo_name=c.repo_name,revision=tag[1]))}</li>
172 <li>${h.link_to('%s - %s' % (tag[0],h.short_id(tag[1])),h.url('files_home',repo_name=c.repo_name,revision=tag[1]))}</li>
173 %endfor
173 %endfor
174 %else:
174 %else:
175 <li>${h.link_to(_('There are no tags yet'),'#')}</li>
175 <li>${h.link_to(_('There are no tags yet'),'#')}</li>
176 %endif
176 %endif
177 </ul>
177 </ul>
178 </li>
178 </li>
179 </ul>
179 </ul>
180 </li>
180 </li>
181 <li ${is_current('files')}>
181 <li ${is_current('files')}>
182 <a title="${_('Files')}" href="${h.url('files_home',repo_name=c.repo_name)}">
182 <a title="${_('Files')}" href="${h.url('files_home',repo_name=c.repo_name)}">
183 <span class="icon">
183 <span class="icon">
184 <img src="/images/icons/file.png" alt="${_('Files')}" />
184 <img src="/images/icons/file.png" alt="${_('Files')}" />
185 </span>
185 </span>
186 <span>${_('Files')}</span>
186 <span>${_('Files')}</span>
187 </a>
187 </a>
188 </li>
188 </li>
189
189
190 <li ${is_current('options')}>
190 <li ${is_current('options')}>
191 <a title="${_('Options')}" href="#">
191 <a title="${_('Options')}" href="#">
192 <span class="icon">
192 <span class="icon">
193 <img src="/images/icons/table_gear.png" alt="${_('Admin')}" />
193 <img src="/images/icons/table_gear.png" alt="${_('Admin')}" />
194 </span>
194 </span>
195 <span>${_('Options')}</span>
195 <span>${_('Options')}</span>
196 </a>
196 </a>
197 <ul>
197 <ul>
198 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
198 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
199 <li>${h.link_to(_('settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
199 <li>${h.link_to(_('settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
200 <li>${h.link_to(_('fork'),h.url('repo_fork_home',repo_name=c.repo_name),class_='fork')}</li>
200 <li>${h.link_to(_('fork'),h.url('repo_fork_home',repo_name=c.repo_name),class_='fork')}</li>
201 %endif
201 %endif
202 <li>${h.link_to(_('search'),h.url('search_repo',search_repo=c.repo_name),class_='search')}</li>
202 <li>${h.link_to(_('search'),h.url('search_repo',search_repo=c.repo_name),class_='search')}</li>
203
203
204 %if h.HasPermissionAll('hg.admin')('access admin main page'):
204 %if h.HasPermissionAll('hg.admin')('access admin main page'):
205 <li>
205 <li>
206 ${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
206 ${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
207 <%def name="admin_menu()">
207 <ul>
208 <ul>
208 <li>${h.link_to(_('journal'),h.url('admin_home'),class_='journal')}</li>
209 <li>${h.link_to(_('journal'),h.url('admin_home'),class_='journal')}</li>
209 <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
210 <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
210 <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
211 <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
211 <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
212 <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
213 <li>${h.link_to(_('ldap'),h.url('ldap_home'),class_='ldap')}</li>
212 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
214 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
213 </ul>
215 </ul>
216 </%def>
217
218 ${admin_menu()}
214 </li>
219 </li>
215 %endif
220 %endif
216
221
217 </ul>
222 </ul>
218 </li>
223 </li>
219
224
220 <li>
225 <li>
221 <a title="${_('Followers')}" href="#">
226 <a title="${_('Followers')}" href="#">
222 <span class="icon_short">
227 <span class="icon_short">
223 <img src="/images/icons/heart.png" alt="${_('Followers')}" />
228 <img src="/images/icons/heart.png" alt="${_('Followers')}" />
224 </span>
229 </span>
225 <span class="short">${c.repository_followers}</span>
230 <span class="short">${c.repository_followers}</span>
226 </a>
231 </a>
227 </li>
232 </li>
228 <li>
233 <li>
229 <a title="${_('Forks')}" href="#">
234 <a title="${_('Forks')}" href="#">
230 <span class="icon_short">
235 <span class="icon_short">
231 <img src="/images/icons/arrow_divide.png" alt="${_('Forks')}" />
236 <img src="/images/icons/arrow_divide.png" alt="${_('Forks')}" />
232 </span>
237 </span>
233 <span class="short">${c.repository_forks}</span>
238 <span class="short">${c.repository_forks}</span>
234 </a>
239 </a>
235 </li>
240 </li>
236
241
237
242
238
243
239 </ul>
244 </ul>
240 %else:
245 %else:
241 ##ROOT MENU
246 ##ROOT MENU
242 <ul id="quick">
247 <ul id="quick">
243 <li>
248 <li>
244 <a title="${_('Home')}" href="${h.url('home')}">
249 <a title="${_('Home')}" href="${h.url('home')}">
245 <span class="icon">
250 <span class="icon">
246 <img src="/images/icons/home_16.png" alt="${_('Home')}" />
251 <img src="/images/icons/home_16.png" alt="${_('Home')}" />
247 </span>
252 </span>
248 <span>${_('Home')}</span>
253 <span>${_('Home')}</span>
249 </a>
254 </a>
250 </li>
255 </li>
251
256
252 <li>
257 <li>
253 <a title="${_('Journal')}" href="${h.url('journal')}">
258 <a title="${_('Journal')}" href="${h.url('journal')}">
254 <span class="icon">
259 <span class="icon">
255 <img src="/images/icons/book.png" alt="${_('Journal')}" />
260 <img src="/images/icons/book.png" alt="${_('Journal')}" />
256 </span>
261 </span>
257 <span>${_('Journal')}</span>
262 <span>${_('Journal')}</span>
258 </a>
263 </a>
259 </li>
264 </li>
260
265
261 <li>
266 <li>
262 <a title="${_('Search')}" href="${h.url('search')}">
267 <a title="${_('Search')}" href="${h.url('search')}">
263 <span class="icon">
268 <span class="icon">
264 <img src="/images/icons/search_16.png" alt="${_('Search')}" />
269 <img src="/images/icons/search_16.png" alt="${_('Search')}" />
265 </span>
270 </span>
266 <span>${_('Search')}</span>
271 <span>${_('Search')}</span>
267 </a>
272 </a>
268 </li>
273 </li>
269
274
270 %if h.HasPermissionAll('hg.admin')('access admin main page'):
275 %if h.HasPermissionAll('hg.admin')('access admin main page'):
271 <li ${is_current('admin')}>
276 <li ${is_current('admin')}>
272 <a title="${_('Admin')}" href="${h.url('admin_home')}">
277 <a title="${_('Admin')}" href="${h.url('admin_home')}">
273 <span class="icon">
278 <span class="icon">
274 <img src="/images/icons/cog_edit.png" alt="${_('Admin')}" />
279 <img src="/images/icons/cog_edit.png" alt="${_('Admin')}" />
275 </span>
280 </span>
276 <span>${_('Admin')}</span>
281 <span>${_('Admin')}</span>
277 </a>
282 </a>
278 <ul>
283 ${admin_menu()}
279 <li>${h.link_to(_('journal'),h.url('admin_home'),class_='journal')}</li>
280 <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
281 <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
282 <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
283 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
284 </ul>
285 </li>
284 </li>
286 %endif
285 %endif
287
288 </ul>
286 </ul>
289 %endif
287 %endif
290 </%def>
288 </%def>
291
289
292
290
293 <%def name="css()">
291 <%def name="css()">
294 <link rel="stylesheet" type="text/css" href="/css/style.css" media="screen" />
292 <link rel="stylesheet" type="text/css" href="/css/style.css" media="screen" />
295 <link rel="stylesheet" type="text/css" href="/css/pygments.css" />
293 <link rel="stylesheet" type="text/css" href="/css/pygments.css" />
296 <link rel="stylesheet" type="text/css" href="/css/diff.css" />
294 <link rel="stylesheet" type="text/css" href="/css/diff.css" />
297 </%def>
295 </%def>
298
296
299 <%def name="js()">
297 <%def name="js()">
300 ##<script type="text/javascript" src="/js/yui/utilities/utilities.js"></script>
298 ##<script type="text/javascript" src="/js/yui/utilities/utilities.js"></script>
301 ##<script type="text/javascript" src="/js/yui/container/container.js"></script>
299 ##<script type="text/javascript" src="/js/yui/container/container.js"></script>
302 ##<script type="text/javascript" src="/js/yui/datasource/datasource.js"></script>
300 ##<script type="text/javascript" src="/js/yui/datasource/datasource.js"></script>
303 ##<script type="text/javascript" src="/js/yui/autocomplete/autocomplete.js"></script>
301 ##<script type="text/javascript" src="/js/yui/autocomplete/autocomplete.js"></script>
304 ##<script type="text/javascript" src="/js/yui/selector/selector-min.js"></script>
302 ##<script type="text/javascript" src="/js/yui/selector/selector-min.js"></script>
305
303
306 <script type="text/javascript" src="/js/yui2a.js"></script>
304 <script type="text/javascript" src="/js/yui2a.js"></script>
307 <!--[if IE]><script language="javascript" type="text/javascript" src="/js/excanvas.min.js"></script><![endif]-->
305 <!--[if IE]><script language="javascript" type="text/javascript" src="/js/excanvas.min.js"></script><![endif]-->
308 <script type="text/javascript" src="/js/yui.flot.js"></script>
306 <script type="text/javascript" src="/js/yui.flot.js"></script>
309
307
310 <script type="text/javascript">
308 <script type="text/javascript">
311 var base_url ='/_admin/toggle_following';
309 var base_url ='/_admin/toggle_following';
312 var YUC = YAHOO.util.Connect;
310 var YUC = YAHOO.util.Connect;
313 var YUD = YAHOO.util.Dom;
311 var YUD = YAHOO.util.Dom;
314 var YUE = YAHOO.util.Event;
312 var YUE = YAHOO.util.Event;
315
313
316 function onSuccess(){
314 function onSuccess(){
317
315
318 var f = YUD.get('follow_toggle');
316 var f = YUD.get('follow_toggle');
319 if(f.getAttribute('class')=='follow'){
317 if(f.getAttribute('class')=='follow'){
320 f.setAttribute('class','following');
318 f.setAttribute('class','following');
321 f.setAttribute('title',"${_('Stop following this repository')}");
319 f.setAttribute('title',"${_('Stop following this repository')}");
322 }
320 }
323 else{
321 else{
324 f.setAttribute('class','follow');
322 f.setAttribute('class','follow');
325 f.setAttribute('title',"${_('Start following this repository')}");
323 f.setAttribute('title',"${_('Start following this repository')}");
326 }
324 }
327 }
325 }
328
326
329 function toggleFollowingUser(fallows_user_id,token){
327 function toggleFollowingUser(fallows_user_id,token){
330 args = 'follows_user_id='+fallows_user_id;
328 args = 'follows_user_id='+fallows_user_id;
331 args+= '&auth_token='+token;
329 args+= '&auth_token='+token;
332 YUC.asyncRequest('POST',base_url,{
330 YUC.asyncRequest('POST',base_url,{
333 success:function(o){
331 success:function(o){
334 onSuccess();
332 onSuccess();
335 }
333 }
336 },args); return false;
334 },args); return false;
337 }
335 }
338
336
339 function toggleFollowingRepo(fallows_repo_id,token){
337 function toggleFollowingRepo(fallows_repo_id,token){
340 args = 'follows_repo_id='+fallows_repo_id;
338 args = 'follows_repo_id='+fallows_repo_id;
341 args+= '&auth_token='+token;
339 args+= '&auth_token='+token;
342 YUC.asyncRequest('POST',base_url,{
340 YUC.asyncRequest('POST',base_url,{
343 success:function(o){
341 success:function(o){
344 onSuccess();
342 onSuccess();
345 }
343 }
346 },args); return false;
344 },args); return false;
347 }
345 }
348 </script>
346 </script>
349
347
350 </%def>
348 </%def>
351
349
352 <%def name="breadcrumbs()">
350 <%def name="breadcrumbs()">
353 <div class="breadcrumbs">
351 <div class="breadcrumbs">
354 ${self.breadcrumbs_links()}
352 ${self.breadcrumbs_links()}
355 </div>
353 </div>
356 </%def> No newline at end of file
354 </%def>
General Comments 0
You need to be logged in to leave comments. Login now