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