##// END OF EJS Templates
Implemented file history page for showing detailed changelog for a given file...
marcink -
r3039:a520d542 beta
parent child Browse files
Show More
@@ -1,612 +1,616 b''
1 """
1 """
2 Routes configuration
2 Routes configuration
3
3
4 The more specific and detailed routes should be defined first so they
4 The more specific and detailed routes should be defined first so they
5 may take precedent over the more generic routes. For more information
5 may take precedent over the more generic routes. For more information
6 refer to the routes manual at http://routes.groovie.org/docs/
6 refer to the routes manual at http://routes.groovie.org/docs/
7 """
7 """
8 from __future__ import with_statement
8 from __future__ import with_statement
9 from routes import Mapper
9 from routes import Mapper
10
10
11 # prefix for non repository related links needs to be prefixed with `/`
11 # prefix for non repository related links needs to be prefixed with `/`
12 ADMIN_PREFIX = '/_admin'
12 ADMIN_PREFIX = '/_admin'
13
13
14
14
15 def make_map(config):
15 def make_map(config):
16 """Create, configure and return the routes Mapper"""
16 """Create, configure and return the routes Mapper"""
17 rmap = Mapper(directory=config['pylons.paths']['controllers'],
17 rmap = Mapper(directory=config['pylons.paths']['controllers'],
18 always_scan=config['debug'])
18 always_scan=config['debug'])
19 rmap.minimization = False
19 rmap.minimization = False
20 rmap.explicit = False
20 rmap.explicit = False
21
21
22 from rhodecode.lib.utils import is_valid_repo
22 from rhodecode.lib.utils import is_valid_repo
23 from rhodecode.lib.utils import is_valid_repos_group
23 from rhodecode.lib.utils import is_valid_repos_group
24
24
25 def check_repo(environ, match_dict):
25 def check_repo(environ, match_dict):
26 """
26 """
27 check for valid repository for proper 404 handling
27 check for valid repository for proper 404 handling
28
28
29 :param environ:
29 :param environ:
30 :param match_dict:
30 :param match_dict:
31 """
31 """
32 from rhodecode.model.db import Repository
32 from rhodecode.model.db import Repository
33 repo_name = match_dict.get('repo_name')
33 repo_name = match_dict.get('repo_name')
34
34
35 try:
35 try:
36 by_id = repo_name.split('_')
36 by_id = repo_name.split('_')
37 if len(by_id) == 2 and by_id[1].isdigit() and by_id[0] == '':
37 if len(by_id) == 2 and by_id[1].isdigit() and by_id[0] == '':
38 repo_name = Repository.get(by_id[1]).repo_name
38 repo_name = Repository.get(by_id[1]).repo_name
39 match_dict['repo_name'] = repo_name
39 match_dict['repo_name'] = repo_name
40 except:
40 except:
41 pass
41 pass
42
42
43 return is_valid_repo(repo_name, config['base_path'])
43 return is_valid_repo(repo_name, config['base_path'])
44
44
45 def check_group(environ, match_dict):
45 def check_group(environ, match_dict):
46 """
46 """
47 check for valid repositories group for proper 404 handling
47 check for valid repositories group for proper 404 handling
48
48
49 :param environ:
49 :param environ:
50 :param match_dict:
50 :param match_dict:
51 """
51 """
52 repos_group_name = match_dict.get('group_name')
52 repos_group_name = match_dict.get('group_name')
53
53
54 return is_valid_repos_group(repos_group_name, config['base_path'])
54 return is_valid_repos_group(repos_group_name, config['base_path'])
55
55
56 def check_int(environ, match_dict):
56 def check_int(environ, match_dict):
57 return match_dict.get('id').isdigit()
57 return match_dict.get('id').isdigit()
58
58
59 # The ErrorController route (handles 404/500 error pages); it should
59 # The ErrorController route (handles 404/500 error pages); it should
60 # likely stay at the top, ensuring it can always be resolved
60 # likely stay at the top, ensuring it can always be resolved
61 rmap.connect('/error/{action}', controller='error')
61 rmap.connect('/error/{action}', controller='error')
62 rmap.connect('/error/{action}/{id}', controller='error')
62 rmap.connect('/error/{action}/{id}', controller='error')
63
63
64 #==========================================================================
64 #==========================================================================
65 # CUSTOM ROUTES HERE
65 # CUSTOM ROUTES HERE
66 #==========================================================================
66 #==========================================================================
67
67
68 #MAIN PAGE
68 #MAIN PAGE
69 rmap.connect('home', '/', controller='home', action='index')
69 rmap.connect('home', '/', controller='home', action='index')
70 rmap.connect('repo_switcher', '/repos', controller='home',
70 rmap.connect('repo_switcher', '/repos', controller='home',
71 action='repo_switcher')
71 action='repo_switcher')
72 rmap.connect('branch_tag_switcher', '/branches-tags/{repo_name:.*?}',
72 rmap.connect('branch_tag_switcher', '/branches-tags/{repo_name:.*?}',
73 controller='home', action='branch_tag_switcher')
73 controller='home', action='branch_tag_switcher')
74 rmap.connect('bugtracker',
74 rmap.connect('bugtracker',
75 "http://bitbucket.org/marcinkuzminski/rhodecode/issues",
75 "http://bitbucket.org/marcinkuzminski/rhodecode/issues",
76 _static=True)
76 _static=True)
77 rmap.connect('rst_help',
77 rmap.connect('rst_help',
78 "http://docutils.sourceforge.net/docs/user/rst/quickref.html",
78 "http://docutils.sourceforge.net/docs/user/rst/quickref.html",
79 _static=True)
79 _static=True)
80 rmap.connect('rhodecode_official', "http://rhodecode.org", _static=True)
80 rmap.connect('rhodecode_official', "http://rhodecode.org", _static=True)
81
81
82 #ADMIN REPOSITORY REST ROUTES
82 #ADMIN REPOSITORY REST ROUTES
83 with rmap.submapper(path_prefix=ADMIN_PREFIX,
83 with rmap.submapper(path_prefix=ADMIN_PREFIX,
84 controller='admin/repos') as m:
84 controller='admin/repos') as m:
85 m.connect("repos", "/repos",
85 m.connect("repos", "/repos",
86 action="create", conditions=dict(method=["POST"]))
86 action="create", conditions=dict(method=["POST"]))
87 m.connect("repos", "/repos",
87 m.connect("repos", "/repos",
88 action="index", conditions=dict(method=["GET"]))
88 action="index", conditions=dict(method=["GET"]))
89 m.connect("formatted_repos", "/repos.{format}",
89 m.connect("formatted_repos", "/repos.{format}",
90 action="index",
90 action="index",
91 conditions=dict(method=["GET"]))
91 conditions=dict(method=["GET"]))
92 m.connect("new_repo", "/repos/new",
92 m.connect("new_repo", "/repos/new",
93 action="new", conditions=dict(method=["GET"]))
93 action="new", conditions=dict(method=["GET"]))
94 m.connect("formatted_new_repo", "/repos/new.{format}",
94 m.connect("formatted_new_repo", "/repos/new.{format}",
95 action="new", conditions=dict(method=["GET"]))
95 action="new", conditions=dict(method=["GET"]))
96 m.connect("/repos/{repo_name:.*?}",
96 m.connect("/repos/{repo_name:.*?}",
97 action="update", conditions=dict(method=["PUT"],
97 action="update", conditions=dict(method=["PUT"],
98 function=check_repo))
98 function=check_repo))
99 m.connect("/repos/{repo_name:.*?}",
99 m.connect("/repos/{repo_name:.*?}",
100 action="delete", conditions=dict(method=["DELETE"],
100 action="delete", conditions=dict(method=["DELETE"],
101 function=check_repo))
101 function=check_repo))
102 m.connect("edit_repo", "/repos/{repo_name:.*?}/edit",
102 m.connect("edit_repo", "/repos/{repo_name:.*?}/edit",
103 action="edit", conditions=dict(method=["GET"],
103 action="edit", conditions=dict(method=["GET"],
104 function=check_repo))
104 function=check_repo))
105 m.connect("formatted_edit_repo", "/repos/{repo_name:.*?}.{format}/edit",
105 m.connect("formatted_edit_repo", "/repos/{repo_name:.*?}.{format}/edit",
106 action="edit", conditions=dict(method=["GET"],
106 action="edit", conditions=dict(method=["GET"],
107 function=check_repo))
107 function=check_repo))
108 m.connect("repo", "/repos/{repo_name:.*?}",
108 m.connect("repo", "/repos/{repo_name:.*?}",
109 action="show", conditions=dict(method=["GET"],
109 action="show", conditions=dict(method=["GET"],
110 function=check_repo))
110 function=check_repo))
111 m.connect("formatted_repo", "/repos/{repo_name:.*?}.{format}",
111 m.connect("formatted_repo", "/repos/{repo_name:.*?}.{format}",
112 action="show", conditions=dict(method=["GET"],
112 action="show", conditions=dict(method=["GET"],
113 function=check_repo))
113 function=check_repo))
114 #ajax delete repo perm user
114 #ajax delete repo perm user
115 m.connect('delete_repo_user', "/repos_delete_user/{repo_name:.*?}",
115 m.connect('delete_repo_user', "/repos_delete_user/{repo_name:.*?}",
116 action="delete_perm_user",
116 action="delete_perm_user",
117 conditions=dict(method=["DELETE"], function=check_repo))
117 conditions=dict(method=["DELETE"], function=check_repo))
118
118
119 #ajax delete repo perm users_group
119 #ajax delete repo perm users_group
120 m.connect('delete_repo_users_group',
120 m.connect('delete_repo_users_group',
121 "/repos_delete_users_group/{repo_name:.*?}",
121 "/repos_delete_users_group/{repo_name:.*?}",
122 action="delete_perm_users_group",
122 action="delete_perm_users_group",
123 conditions=dict(method=["DELETE"], function=check_repo))
123 conditions=dict(method=["DELETE"], function=check_repo))
124
124
125 #settings actions
125 #settings actions
126 m.connect('repo_stats', "/repos_stats/{repo_name:.*?}",
126 m.connect('repo_stats', "/repos_stats/{repo_name:.*?}",
127 action="repo_stats", conditions=dict(method=["DELETE"],
127 action="repo_stats", conditions=dict(method=["DELETE"],
128 function=check_repo))
128 function=check_repo))
129 m.connect('repo_cache', "/repos_cache/{repo_name:.*?}",
129 m.connect('repo_cache', "/repos_cache/{repo_name:.*?}",
130 action="repo_cache", conditions=dict(method=["DELETE"],
130 action="repo_cache", conditions=dict(method=["DELETE"],
131 function=check_repo))
131 function=check_repo))
132 m.connect('repo_public_journal', "/repos_public_journal/{repo_name:.*?}",
132 m.connect('repo_public_journal', "/repos_public_journal/{repo_name:.*?}",
133 action="repo_public_journal", conditions=dict(method=["PUT"],
133 action="repo_public_journal", conditions=dict(method=["PUT"],
134 function=check_repo))
134 function=check_repo))
135 m.connect('repo_pull', "/repo_pull/{repo_name:.*?}",
135 m.connect('repo_pull', "/repo_pull/{repo_name:.*?}",
136 action="repo_pull", conditions=dict(method=["PUT"],
136 action="repo_pull", conditions=dict(method=["PUT"],
137 function=check_repo))
137 function=check_repo))
138 m.connect('repo_as_fork', "/repo_as_fork/{repo_name:.*?}",
138 m.connect('repo_as_fork', "/repo_as_fork/{repo_name:.*?}",
139 action="repo_as_fork", conditions=dict(method=["PUT"],
139 action="repo_as_fork", conditions=dict(method=["PUT"],
140 function=check_repo))
140 function=check_repo))
141 m.connect('repo_locking', "/repo_locking/{repo_name:.*?}",
141 m.connect('repo_locking', "/repo_locking/{repo_name:.*?}",
142 action="repo_locking", conditions=dict(method=["PUT"],
142 action="repo_locking", conditions=dict(method=["PUT"],
143 function=check_repo))
143 function=check_repo))
144
144
145 with rmap.submapper(path_prefix=ADMIN_PREFIX,
145 with rmap.submapper(path_prefix=ADMIN_PREFIX,
146 controller='admin/repos_groups') as m:
146 controller='admin/repos_groups') as m:
147 m.connect("repos_groups", "/repos_groups",
147 m.connect("repos_groups", "/repos_groups",
148 action="create", conditions=dict(method=["POST"]))
148 action="create", conditions=dict(method=["POST"]))
149 m.connect("repos_groups", "/repos_groups",
149 m.connect("repos_groups", "/repos_groups",
150 action="index", conditions=dict(method=["GET"]))
150 action="index", conditions=dict(method=["GET"]))
151 m.connect("formatted_repos_groups", "/repos_groups.{format}",
151 m.connect("formatted_repos_groups", "/repos_groups.{format}",
152 action="index", conditions=dict(method=["GET"]))
152 action="index", conditions=dict(method=["GET"]))
153 m.connect("new_repos_group", "/repos_groups/new",
153 m.connect("new_repos_group", "/repos_groups/new",
154 action="new", conditions=dict(method=["GET"]))
154 action="new", conditions=dict(method=["GET"]))
155 m.connect("formatted_new_repos_group", "/repos_groups/new.{format}",
155 m.connect("formatted_new_repos_group", "/repos_groups/new.{format}",
156 action="new", conditions=dict(method=["GET"]))
156 action="new", conditions=dict(method=["GET"]))
157 m.connect("update_repos_group", "/repos_groups/{id}",
157 m.connect("update_repos_group", "/repos_groups/{id}",
158 action="update", conditions=dict(method=["PUT"],
158 action="update", conditions=dict(method=["PUT"],
159 function=check_int))
159 function=check_int))
160 m.connect("delete_repos_group", "/repos_groups/{id}",
160 m.connect("delete_repos_group", "/repos_groups/{id}",
161 action="delete", conditions=dict(method=["DELETE"],
161 action="delete", conditions=dict(method=["DELETE"],
162 function=check_int))
162 function=check_int))
163 m.connect("edit_repos_group", "/repos_groups/{id:.*?}/edit",
163 m.connect("edit_repos_group", "/repos_groups/{id:.*?}/edit",
164 action="edit", conditions=dict(method=["GET"],))
164 action="edit", conditions=dict(method=["GET"],))
165 m.connect("formatted_edit_repos_group",
165 m.connect("formatted_edit_repos_group",
166 "/repos_groups/{id}.{format}/edit",
166 "/repos_groups/{id}.{format}/edit",
167 action="edit", conditions=dict(method=["GET"],
167 action="edit", conditions=dict(method=["GET"],
168 function=check_int))
168 function=check_int))
169 m.connect("repos_group", "/repos_groups/{id}",
169 m.connect("repos_group", "/repos_groups/{id}",
170 action="show", conditions=dict(method=["GET"],
170 action="show", conditions=dict(method=["GET"],
171 function=check_int))
171 function=check_int))
172 m.connect("formatted_repos_group", "/repos_groups/{id}.{format}",
172 m.connect("formatted_repos_group", "/repos_groups/{id}.{format}",
173 action="show", conditions=dict(method=["GET"],
173 action="show", conditions=dict(method=["GET"],
174 function=check_int))
174 function=check_int))
175 # ajax delete repos group perm user
175 # ajax delete repos group perm user
176 m.connect('delete_repos_group_user_perm',
176 m.connect('delete_repos_group_user_perm',
177 "/delete_repos_group_user_perm/{group_name:.*}",
177 "/delete_repos_group_user_perm/{group_name:.*}",
178 action="delete_repos_group_user_perm",
178 action="delete_repos_group_user_perm",
179 conditions=dict(method=["DELETE"], function=check_group))
179 conditions=dict(method=["DELETE"], function=check_group))
180
180
181 # ajax delete repos group perm users_group
181 # ajax delete repos group perm users_group
182 m.connect('delete_repos_group_users_group_perm',
182 m.connect('delete_repos_group_users_group_perm',
183 "/delete_repos_group_users_group_perm/{group_name:.*}",
183 "/delete_repos_group_users_group_perm/{group_name:.*}",
184 action="delete_repos_group_users_group_perm",
184 action="delete_repos_group_users_group_perm",
185 conditions=dict(method=["DELETE"], function=check_group))
185 conditions=dict(method=["DELETE"], function=check_group))
186
186
187 #ADMIN USER REST ROUTES
187 #ADMIN USER REST ROUTES
188 with rmap.submapper(path_prefix=ADMIN_PREFIX,
188 with rmap.submapper(path_prefix=ADMIN_PREFIX,
189 controller='admin/users') as m:
189 controller='admin/users') as m:
190 m.connect("users", "/users",
190 m.connect("users", "/users",
191 action="create", conditions=dict(method=["POST"]))
191 action="create", conditions=dict(method=["POST"]))
192 m.connect("users", "/users",
192 m.connect("users", "/users",
193 action="index", conditions=dict(method=["GET"]))
193 action="index", conditions=dict(method=["GET"]))
194 m.connect("formatted_users", "/users.{format}",
194 m.connect("formatted_users", "/users.{format}",
195 action="index", conditions=dict(method=["GET"]))
195 action="index", conditions=dict(method=["GET"]))
196 m.connect("new_user", "/users/new",
196 m.connect("new_user", "/users/new",
197 action="new", conditions=dict(method=["GET"]))
197 action="new", conditions=dict(method=["GET"]))
198 m.connect("formatted_new_user", "/users/new.{format}",
198 m.connect("formatted_new_user", "/users/new.{format}",
199 action="new", conditions=dict(method=["GET"]))
199 action="new", conditions=dict(method=["GET"]))
200 m.connect("update_user", "/users/{id}",
200 m.connect("update_user", "/users/{id}",
201 action="update", conditions=dict(method=["PUT"]))
201 action="update", conditions=dict(method=["PUT"]))
202 m.connect("delete_user", "/users/{id}",
202 m.connect("delete_user", "/users/{id}",
203 action="delete", conditions=dict(method=["DELETE"]))
203 action="delete", conditions=dict(method=["DELETE"]))
204 m.connect("edit_user", "/users/{id}/edit",
204 m.connect("edit_user", "/users/{id}/edit",
205 action="edit", conditions=dict(method=["GET"]))
205 action="edit", conditions=dict(method=["GET"]))
206 m.connect("formatted_edit_user",
206 m.connect("formatted_edit_user",
207 "/users/{id}.{format}/edit",
207 "/users/{id}.{format}/edit",
208 action="edit", conditions=dict(method=["GET"]))
208 action="edit", conditions=dict(method=["GET"]))
209 m.connect("user", "/users/{id}",
209 m.connect("user", "/users/{id}",
210 action="show", conditions=dict(method=["GET"]))
210 action="show", conditions=dict(method=["GET"]))
211 m.connect("formatted_user", "/users/{id}.{format}",
211 m.connect("formatted_user", "/users/{id}.{format}",
212 action="show", conditions=dict(method=["GET"]))
212 action="show", conditions=dict(method=["GET"]))
213
213
214 #EXTRAS USER ROUTES
214 #EXTRAS USER ROUTES
215 m.connect("user_perm", "/users_perm/{id}",
215 m.connect("user_perm", "/users_perm/{id}",
216 action="update_perm", conditions=dict(method=["PUT"]))
216 action="update_perm", conditions=dict(method=["PUT"]))
217 m.connect("user_emails", "/users_emails/{id}",
217 m.connect("user_emails", "/users_emails/{id}",
218 action="add_email", conditions=dict(method=["PUT"]))
218 action="add_email", conditions=dict(method=["PUT"]))
219 m.connect("user_emails_delete", "/users_emails/{id}",
219 m.connect("user_emails_delete", "/users_emails/{id}",
220 action="delete_email", conditions=dict(method=["DELETE"]))
220 action="delete_email", conditions=dict(method=["DELETE"]))
221
221
222 #ADMIN USERS GROUPS REST ROUTES
222 #ADMIN USERS GROUPS REST ROUTES
223 with rmap.submapper(path_prefix=ADMIN_PREFIX,
223 with rmap.submapper(path_prefix=ADMIN_PREFIX,
224 controller='admin/users_groups') as m:
224 controller='admin/users_groups') as m:
225 m.connect("users_groups", "/users_groups",
225 m.connect("users_groups", "/users_groups",
226 action="create", conditions=dict(method=["POST"]))
226 action="create", conditions=dict(method=["POST"]))
227 m.connect("users_groups", "/users_groups",
227 m.connect("users_groups", "/users_groups",
228 action="index", conditions=dict(method=["GET"]))
228 action="index", conditions=dict(method=["GET"]))
229 m.connect("formatted_users_groups", "/users_groups.{format}",
229 m.connect("formatted_users_groups", "/users_groups.{format}",
230 action="index", conditions=dict(method=["GET"]))
230 action="index", conditions=dict(method=["GET"]))
231 m.connect("new_users_group", "/users_groups/new",
231 m.connect("new_users_group", "/users_groups/new",
232 action="new", conditions=dict(method=["GET"]))
232 action="new", conditions=dict(method=["GET"]))
233 m.connect("formatted_new_users_group", "/users_groups/new.{format}",
233 m.connect("formatted_new_users_group", "/users_groups/new.{format}",
234 action="new", conditions=dict(method=["GET"]))
234 action="new", conditions=dict(method=["GET"]))
235 m.connect("update_users_group", "/users_groups/{id}",
235 m.connect("update_users_group", "/users_groups/{id}",
236 action="update", conditions=dict(method=["PUT"]))
236 action="update", conditions=dict(method=["PUT"]))
237 m.connect("delete_users_group", "/users_groups/{id}",
237 m.connect("delete_users_group", "/users_groups/{id}",
238 action="delete", conditions=dict(method=["DELETE"]))
238 action="delete", conditions=dict(method=["DELETE"]))
239 m.connect("edit_users_group", "/users_groups/{id}/edit",
239 m.connect("edit_users_group", "/users_groups/{id}/edit",
240 action="edit", conditions=dict(method=["GET"]))
240 action="edit", conditions=dict(method=["GET"]))
241 m.connect("formatted_edit_users_group",
241 m.connect("formatted_edit_users_group",
242 "/users_groups/{id}.{format}/edit",
242 "/users_groups/{id}.{format}/edit",
243 action="edit", conditions=dict(method=["GET"]))
243 action="edit", conditions=dict(method=["GET"]))
244 m.connect("users_group", "/users_groups/{id}",
244 m.connect("users_group", "/users_groups/{id}",
245 action="show", conditions=dict(method=["GET"]))
245 action="show", conditions=dict(method=["GET"]))
246 m.connect("formatted_users_group", "/users_groups/{id}.{format}",
246 m.connect("formatted_users_group", "/users_groups/{id}.{format}",
247 action="show", conditions=dict(method=["GET"]))
247 action="show", conditions=dict(method=["GET"]))
248
248
249 #EXTRAS USER ROUTES
249 #EXTRAS USER ROUTES
250 m.connect("users_group_perm", "/users_groups_perm/{id}",
250 m.connect("users_group_perm", "/users_groups_perm/{id}",
251 action="update_perm", conditions=dict(method=["PUT"]))
251 action="update_perm", conditions=dict(method=["PUT"]))
252
252
253 #ADMIN GROUP REST ROUTES
253 #ADMIN GROUP REST ROUTES
254 rmap.resource('group', 'groups',
254 rmap.resource('group', 'groups',
255 controller='admin/groups', path_prefix=ADMIN_PREFIX)
255 controller='admin/groups', path_prefix=ADMIN_PREFIX)
256
256
257 #ADMIN PERMISSIONS REST ROUTES
257 #ADMIN PERMISSIONS REST ROUTES
258 rmap.resource('permission', 'permissions',
258 rmap.resource('permission', 'permissions',
259 controller='admin/permissions', path_prefix=ADMIN_PREFIX)
259 controller='admin/permissions', path_prefix=ADMIN_PREFIX)
260
260
261 ##ADMIN LDAP SETTINGS
261 ##ADMIN LDAP SETTINGS
262 rmap.connect('ldap_settings', '%s/ldap' % ADMIN_PREFIX,
262 rmap.connect('ldap_settings', '%s/ldap' % ADMIN_PREFIX,
263 controller='admin/ldap_settings', action='ldap_settings',
263 controller='admin/ldap_settings', action='ldap_settings',
264 conditions=dict(method=["POST"]))
264 conditions=dict(method=["POST"]))
265
265
266 rmap.connect('ldap_home', '%s/ldap' % ADMIN_PREFIX,
266 rmap.connect('ldap_home', '%s/ldap' % ADMIN_PREFIX,
267 controller='admin/ldap_settings')
267 controller='admin/ldap_settings')
268
268
269 #ADMIN SETTINGS REST ROUTES
269 #ADMIN SETTINGS REST ROUTES
270 with rmap.submapper(path_prefix=ADMIN_PREFIX,
270 with rmap.submapper(path_prefix=ADMIN_PREFIX,
271 controller='admin/settings') as m:
271 controller='admin/settings') as m:
272 m.connect("admin_settings", "/settings",
272 m.connect("admin_settings", "/settings",
273 action="create", conditions=dict(method=["POST"]))
273 action="create", conditions=dict(method=["POST"]))
274 m.connect("admin_settings", "/settings",
274 m.connect("admin_settings", "/settings",
275 action="index", conditions=dict(method=["GET"]))
275 action="index", conditions=dict(method=["GET"]))
276 m.connect("formatted_admin_settings", "/settings.{format}",
276 m.connect("formatted_admin_settings", "/settings.{format}",
277 action="index", conditions=dict(method=["GET"]))
277 action="index", conditions=dict(method=["GET"]))
278 m.connect("admin_new_setting", "/settings/new",
278 m.connect("admin_new_setting", "/settings/new",
279 action="new", conditions=dict(method=["GET"]))
279 action="new", conditions=dict(method=["GET"]))
280 m.connect("formatted_admin_new_setting", "/settings/new.{format}",
280 m.connect("formatted_admin_new_setting", "/settings/new.{format}",
281 action="new", conditions=dict(method=["GET"]))
281 action="new", conditions=dict(method=["GET"]))
282 m.connect("/settings/{setting_id}",
282 m.connect("/settings/{setting_id}",
283 action="update", conditions=dict(method=["PUT"]))
283 action="update", conditions=dict(method=["PUT"]))
284 m.connect("/settings/{setting_id}",
284 m.connect("/settings/{setting_id}",
285 action="delete", conditions=dict(method=["DELETE"]))
285 action="delete", conditions=dict(method=["DELETE"]))
286 m.connect("admin_edit_setting", "/settings/{setting_id}/edit",
286 m.connect("admin_edit_setting", "/settings/{setting_id}/edit",
287 action="edit", conditions=dict(method=["GET"]))
287 action="edit", conditions=dict(method=["GET"]))
288 m.connect("formatted_admin_edit_setting",
288 m.connect("formatted_admin_edit_setting",
289 "/settings/{setting_id}.{format}/edit",
289 "/settings/{setting_id}.{format}/edit",
290 action="edit", conditions=dict(method=["GET"]))
290 action="edit", conditions=dict(method=["GET"]))
291 m.connect("admin_setting", "/settings/{setting_id}",
291 m.connect("admin_setting", "/settings/{setting_id}",
292 action="show", conditions=dict(method=["GET"]))
292 action="show", conditions=dict(method=["GET"]))
293 m.connect("formatted_admin_setting", "/settings/{setting_id}.{format}",
293 m.connect("formatted_admin_setting", "/settings/{setting_id}.{format}",
294 action="show", conditions=dict(method=["GET"]))
294 action="show", conditions=dict(method=["GET"]))
295 m.connect("admin_settings_my_account", "/my_account",
295 m.connect("admin_settings_my_account", "/my_account",
296 action="my_account", conditions=dict(method=["GET"]))
296 action="my_account", conditions=dict(method=["GET"]))
297 m.connect("admin_settings_my_account_update", "/my_account_update",
297 m.connect("admin_settings_my_account_update", "/my_account_update",
298 action="my_account_update", conditions=dict(method=["PUT"]))
298 action="my_account_update", conditions=dict(method=["PUT"]))
299 m.connect("admin_settings_create_repository", "/create_repository",
299 m.connect("admin_settings_create_repository", "/create_repository",
300 action="create_repository", conditions=dict(method=["GET"]))
300 action="create_repository", conditions=dict(method=["GET"]))
301 m.connect("admin_settings_my_repos", "/my_account/repos",
301 m.connect("admin_settings_my_repos", "/my_account/repos",
302 action="my_account_my_repos", conditions=dict(method=["GET"]))
302 action="my_account_my_repos", conditions=dict(method=["GET"]))
303 m.connect("admin_settings_my_pullrequests", "/my_account/pull_requests",
303 m.connect("admin_settings_my_pullrequests", "/my_account/pull_requests",
304 action="my_account_my_pullrequests", conditions=dict(method=["GET"]))
304 action="my_account_my_pullrequests", conditions=dict(method=["GET"]))
305
305
306 #NOTIFICATION REST ROUTES
306 #NOTIFICATION REST ROUTES
307 with rmap.submapper(path_prefix=ADMIN_PREFIX,
307 with rmap.submapper(path_prefix=ADMIN_PREFIX,
308 controller='admin/notifications') as m:
308 controller='admin/notifications') as m:
309 m.connect("notifications", "/notifications",
309 m.connect("notifications", "/notifications",
310 action="create", conditions=dict(method=["POST"]))
310 action="create", conditions=dict(method=["POST"]))
311 m.connect("notifications", "/notifications",
311 m.connect("notifications", "/notifications",
312 action="index", conditions=dict(method=["GET"]))
312 action="index", conditions=dict(method=["GET"]))
313 m.connect("notifications_mark_all_read", "/notifications/mark_all_read",
313 m.connect("notifications_mark_all_read", "/notifications/mark_all_read",
314 action="mark_all_read", conditions=dict(method=["GET"]))
314 action="mark_all_read", conditions=dict(method=["GET"]))
315 m.connect("formatted_notifications", "/notifications.{format}",
315 m.connect("formatted_notifications", "/notifications.{format}",
316 action="index", conditions=dict(method=["GET"]))
316 action="index", conditions=dict(method=["GET"]))
317 m.connect("new_notification", "/notifications/new",
317 m.connect("new_notification", "/notifications/new",
318 action="new", conditions=dict(method=["GET"]))
318 action="new", conditions=dict(method=["GET"]))
319 m.connect("formatted_new_notification", "/notifications/new.{format}",
319 m.connect("formatted_new_notification", "/notifications/new.{format}",
320 action="new", conditions=dict(method=["GET"]))
320 action="new", conditions=dict(method=["GET"]))
321 m.connect("/notification/{notification_id}",
321 m.connect("/notification/{notification_id}",
322 action="update", conditions=dict(method=["PUT"]))
322 action="update", conditions=dict(method=["PUT"]))
323 m.connect("/notification/{notification_id}",
323 m.connect("/notification/{notification_id}",
324 action="delete", conditions=dict(method=["DELETE"]))
324 action="delete", conditions=dict(method=["DELETE"]))
325 m.connect("edit_notification", "/notification/{notification_id}/edit",
325 m.connect("edit_notification", "/notification/{notification_id}/edit",
326 action="edit", conditions=dict(method=["GET"]))
326 action="edit", conditions=dict(method=["GET"]))
327 m.connect("formatted_edit_notification",
327 m.connect("formatted_edit_notification",
328 "/notification/{notification_id}.{format}/edit",
328 "/notification/{notification_id}.{format}/edit",
329 action="edit", conditions=dict(method=["GET"]))
329 action="edit", conditions=dict(method=["GET"]))
330 m.connect("notification", "/notification/{notification_id}",
330 m.connect("notification", "/notification/{notification_id}",
331 action="show", conditions=dict(method=["GET"]))
331 action="show", conditions=dict(method=["GET"]))
332 m.connect("formatted_notification", "/notifications/{notification_id}.{format}",
332 m.connect("formatted_notification", "/notifications/{notification_id}.{format}",
333 action="show", conditions=dict(method=["GET"]))
333 action="show", conditions=dict(method=["GET"]))
334
334
335 #ADMIN MAIN PAGES
335 #ADMIN MAIN PAGES
336 with rmap.submapper(path_prefix=ADMIN_PREFIX,
336 with rmap.submapper(path_prefix=ADMIN_PREFIX,
337 controller='admin/admin') as m:
337 controller='admin/admin') as m:
338 m.connect('admin_home', '', action='index')
338 m.connect('admin_home', '', action='index')
339 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
339 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
340 action='add_repo')
340 action='add_repo')
341
341
342 #==========================================================================
342 #==========================================================================
343 # API V2
343 # API V2
344 #==========================================================================
344 #==========================================================================
345 with rmap.submapper(path_prefix=ADMIN_PREFIX,
345 with rmap.submapper(path_prefix=ADMIN_PREFIX,
346 controller='api/api') as m:
346 controller='api/api') as m:
347 m.connect('api', '/api')
347 m.connect('api', '/api')
348
348
349 #USER JOURNAL
349 #USER JOURNAL
350 rmap.connect('journal_my_repos', '%s/journal_my_repos' % ADMIN_PREFIX,
350 rmap.connect('journal_my_repos', '%s/journal_my_repos' % ADMIN_PREFIX,
351 controller='journal', action='index_my_repos')
351 controller='journal', action='index_my_repos')
352 rmap.connect('journal', '%s/journal' % ADMIN_PREFIX,
352 rmap.connect('journal', '%s/journal' % ADMIN_PREFIX,
353 controller='journal', action='index')
353 controller='journal', action='index')
354 rmap.connect('journal_rss', '%s/journal/rss' % ADMIN_PREFIX,
354 rmap.connect('journal_rss', '%s/journal/rss' % ADMIN_PREFIX,
355 controller='journal', action='journal_rss')
355 controller='journal', action='journal_rss')
356 rmap.connect('journal_atom', '%s/journal/atom' % ADMIN_PREFIX,
356 rmap.connect('journal_atom', '%s/journal/atom' % ADMIN_PREFIX,
357 controller='journal', action='journal_atom')
357 controller='journal', action='journal_atom')
358
358
359 rmap.connect('public_journal', '%s/public_journal' % ADMIN_PREFIX,
359 rmap.connect('public_journal', '%s/public_journal' % ADMIN_PREFIX,
360 controller='journal', action="public_journal")
360 controller='journal', action="public_journal")
361
361
362 rmap.connect('public_journal_rss', '%s/public_journal/rss' % ADMIN_PREFIX,
362 rmap.connect('public_journal_rss', '%s/public_journal/rss' % ADMIN_PREFIX,
363 controller='journal', action="public_journal_rss")
363 controller='journal', action="public_journal_rss")
364
364
365 rmap.connect('public_journal_rss_old', '%s/public_journal_rss' % ADMIN_PREFIX,
365 rmap.connect('public_journal_rss_old', '%s/public_journal_rss' % ADMIN_PREFIX,
366 controller='journal', action="public_journal_rss")
366 controller='journal', action="public_journal_rss")
367
367
368 rmap.connect('public_journal_atom',
368 rmap.connect('public_journal_atom',
369 '%s/public_journal/atom' % ADMIN_PREFIX, controller='journal',
369 '%s/public_journal/atom' % ADMIN_PREFIX, controller='journal',
370 action="public_journal_atom")
370 action="public_journal_atom")
371
371
372 rmap.connect('public_journal_atom_old',
372 rmap.connect('public_journal_atom_old',
373 '%s/public_journal_atom' % ADMIN_PREFIX, controller='journal',
373 '%s/public_journal_atom' % ADMIN_PREFIX, controller='journal',
374 action="public_journal_atom")
374 action="public_journal_atom")
375
375
376 rmap.connect('toggle_following', '%s/toggle_following' % ADMIN_PREFIX,
376 rmap.connect('toggle_following', '%s/toggle_following' % ADMIN_PREFIX,
377 controller='journal', action='toggle_following',
377 controller='journal', action='toggle_following',
378 conditions=dict(method=["POST"]))
378 conditions=dict(method=["POST"]))
379
379
380 #SEARCH
380 #SEARCH
381 rmap.connect('search', '%s/search' % ADMIN_PREFIX, controller='search',)
381 rmap.connect('search', '%s/search' % ADMIN_PREFIX, controller='search',)
382 rmap.connect('search_repo', '%s/search/{search_repo:.*}' % ADMIN_PREFIX,
382 rmap.connect('search_repo', '%s/search/{search_repo:.*}' % ADMIN_PREFIX,
383 controller='search')
383 controller='search')
384
384
385 #LOGIN/LOGOUT/REGISTER/SIGN IN
385 #LOGIN/LOGOUT/REGISTER/SIGN IN
386 rmap.connect('login_home', '%s/login' % ADMIN_PREFIX, controller='login')
386 rmap.connect('login_home', '%s/login' % ADMIN_PREFIX, controller='login')
387 rmap.connect('logout_home', '%s/logout' % ADMIN_PREFIX, controller='login',
387 rmap.connect('logout_home', '%s/logout' % ADMIN_PREFIX, controller='login',
388 action='logout')
388 action='logout')
389
389
390 rmap.connect('register', '%s/register' % ADMIN_PREFIX, controller='login',
390 rmap.connect('register', '%s/register' % ADMIN_PREFIX, controller='login',
391 action='register')
391 action='register')
392
392
393 rmap.connect('reset_password', '%s/password_reset' % ADMIN_PREFIX,
393 rmap.connect('reset_password', '%s/password_reset' % ADMIN_PREFIX,
394 controller='login', action='password_reset')
394 controller='login', action='password_reset')
395
395
396 rmap.connect('reset_password_confirmation',
396 rmap.connect('reset_password_confirmation',
397 '%s/password_reset_confirmation' % ADMIN_PREFIX,
397 '%s/password_reset_confirmation' % ADMIN_PREFIX,
398 controller='login', action='password_reset_confirmation')
398 controller='login', action='password_reset_confirmation')
399
399
400 #FEEDS
400 #FEEDS
401 rmap.connect('rss_feed_home', '/{repo_name:.*?}/feed/rss',
401 rmap.connect('rss_feed_home', '/{repo_name:.*?}/feed/rss',
402 controller='feed', action='rss',
402 controller='feed', action='rss',
403 conditions=dict(function=check_repo))
403 conditions=dict(function=check_repo))
404
404
405 rmap.connect('atom_feed_home', '/{repo_name:.*?}/feed/atom',
405 rmap.connect('atom_feed_home', '/{repo_name:.*?}/feed/atom',
406 controller='feed', action='atom',
406 controller='feed', action='atom',
407 conditions=dict(function=check_repo))
407 conditions=dict(function=check_repo))
408
408
409 #==========================================================================
409 #==========================================================================
410 # REPOSITORY ROUTES
410 # REPOSITORY ROUTES
411 #==========================================================================
411 #==========================================================================
412 rmap.connect('summary_home', '/{repo_name:.*?}',
412 rmap.connect('summary_home', '/{repo_name:.*?}',
413 controller='summary',
413 controller='summary',
414 conditions=dict(function=check_repo))
414 conditions=dict(function=check_repo))
415
415
416 rmap.connect('repos_group_home', '/{group_name:.*}',
416 rmap.connect('repos_group_home', '/{group_name:.*}',
417 controller='admin/repos_groups', action="show_by_name",
417 controller='admin/repos_groups', action="show_by_name",
418 conditions=dict(function=check_group))
418 conditions=dict(function=check_group))
419
419
420 rmap.connect('changeset_home', '/{repo_name:.*?}/changeset/{revision}',
420 rmap.connect('changeset_home', '/{repo_name:.*?}/changeset/{revision}',
421 controller='changeset', revision='tip',
421 controller='changeset', revision='tip',
422 conditions=dict(function=check_repo))
422 conditions=dict(function=check_repo))
423
423
424 #still working url for backward compat.
424 #still working url for backward compat.
425 rmap.connect('raw_changeset_home_depraced',
425 rmap.connect('raw_changeset_home_depraced',
426 '/{repo_name:.*?}/raw-changeset/{revision}',
426 '/{repo_name:.*?}/raw-changeset/{revision}',
427 controller='changeset', action='changeset_raw',
427 controller='changeset', action='changeset_raw',
428 revision='tip', conditions=dict(function=check_repo))
428 revision='tip', conditions=dict(function=check_repo))
429
429
430 ## new URLs
430 ## new URLs
431 rmap.connect('changeset_raw_home',
431 rmap.connect('changeset_raw_home',
432 '/{repo_name:.*?}/changeset-diff/{revision}',
432 '/{repo_name:.*?}/changeset-diff/{revision}',
433 controller='changeset', action='changeset_raw',
433 controller='changeset', action='changeset_raw',
434 revision='tip', conditions=dict(function=check_repo))
434 revision='tip', conditions=dict(function=check_repo))
435
435
436 rmap.connect('changeset_patch_home',
436 rmap.connect('changeset_patch_home',
437 '/{repo_name:.*?}/changeset-patch/{revision}',
437 '/{repo_name:.*?}/changeset-patch/{revision}',
438 controller='changeset', action='changeset_patch',
438 controller='changeset', action='changeset_patch',
439 revision='tip', conditions=dict(function=check_repo))
439 revision='tip', conditions=dict(function=check_repo))
440
440
441 rmap.connect('changeset_download_home',
441 rmap.connect('changeset_download_home',
442 '/{repo_name:.*?}/changeset-download/{revision}',
442 '/{repo_name:.*?}/changeset-download/{revision}',
443 controller='changeset', action='changeset_download',
443 controller='changeset', action='changeset_download',
444 revision='tip', conditions=dict(function=check_repo))
444 revision='tip', conditions=dict(function=check_repo))
445
445
446 rmap.connect('changeset_comment',
446 rmap.connect('changeset_comment',
447 '/{repo_name:.*?}/changeset/{revision}/comment',
447 '/{repo_name:.*?}/changeset/{revision}/comment',
448 controller='changeset', revision='tip', action='comment',
448 controller='changeset', revision='tip', action='comment',
449 conditions=dict(function=check_repo))
449 conditions=dict(function=check_repo))
450
450
451 rmap.connect('changeset_comment_delete',
451 rmap.connect('changeset_comment_delete',
452 '/{repo_name:.*?}/changeset/comment/{comment_id}/delete',
452 '/{repo_name:.*?}/changeset/comment/{comment_id}/delete',
453 controller='changeset', action='delete_comment',
453 controller='changeset', action='delete_comment',
454 conditions=dict(function=check_repo, method=["DELETE"]))
454 conditions=dict(function=check_repo, method=["DELETE"]))
455
455
456 rmap.connect('changeset_info', '/changeset_info/{repo_name:.*?}/{revision}',
456 rmap.connect('changeset_info', '/changeset_info/{repo_name:.*?}/{revision}',
457 controller='changeset', action='changeset_info')
457 controller='changeset', action='changeset_info')
458
458
459 rmap.connect('compare_url',
459 rmap.connect('compare_url',
460 '/{repo_name:.*?}/compare/{org_ref_type}@{org_ref:.*?}...{other_ref_type}@{other_ref:.*?}',
460 '/{repo_name:.*?}/compare/{org_ref_type}@{org_ref:.*?}...{other_ref_type}@{other_ref:.*?}',
461 controller='compare', action='index',
461 controller='compare', action='index',
462 conditions=dict(function=check_repo),
462 conditions=dict(function=check_repo),
463 requirements=dict(
463 requirements=dict(
464 org_ref_type='(branch|book|tag|rev|org_ref_type)',
464 org_ref_type='(branch|book|tag|rev|org_ref_type)',
465 other_ref_type='(branch|book|tag|rev|other_ref_type)')
465 other_ref_type='(branch|book|tag|rev|other_ref_type)')
466 )
466 )
467
467
468 rmap.connect('pullrequest_home',
468 rmap.connect('pullrequest_home',
469 '/{repo_name:.*?}/pull-request/new', controller='pullrequests',
469 '/{repo_name:.*?}/pull-request/new', controller='pullrequests',
470 action='index', conditions=dict(function=check_repo,
470 action='index', conditions=dict(function=check_repo,
471 method=["GET"]))
471 method=["GET"]))
472
472
473 rmap.connect('pullrequest',
473 rmap.connect('pullrequest',
474 '/{repo_name:.*?}/pull-request/new', controller='pullrequests',
474 '/{repo_name:.*?}/pull-request/new', controller='pullrequests',
475 action='create', conditions=dict(function=check_repo,
475 action='create', conditions=dict(function=check_repo,
476 method=["POST"]))
476 method=["POST"]))
477
477
478 rmap.connect('pullrequest_show',
478 rmap.connect('pullrequest_show',
479 '/{repo_name:.*?}/pull-request/{pull_request_id}',
479 '/{repo_name:.*?}/pull-request/{pull_request_id}',
480 controller='pullrequests',
480 controller='pullrequests',
481 action='show', conditions=dict(function=check_repo,
481 action='show', conditions=dict(function=check_repo,
482 method=["GET"]))
482 method=["GET"]))
483 rmap.connect('pullrequest_update',
483 rmap.connect('pullrequest_update',
484 '/{repo_name:.*?}/pull-request/{pull_request_id}',
484 '/{repo_name:.*?}/pull-request/{pull_request_id}',
485 controller='pullrequests',
485 controller='pullrequests',
486 action='update', conditions=dict(function=check_repo,
486 action='update', conditions=dict(function=check_repo,
487 method=["PUT"]))
487 method=["PUT"]))
488 rmap.connect('pullrequest_delete',
488 rmap.connect('pullrequest_delete',
489 '/{repo_name:.*?}/pull-request/{pull_request_id}',
489 '/{repo_name:.*?}/pull-request/{pull_request_id}',
490 controller='pullrequests',
490 controller='pullrequests',
491 action='delete', conditions=dict(function=check_repo,
491 action='delete', conditions=dict(function=check_repo,
492 method=["DELETE"]))
492 method=["DELETE"]))
493
493
494 rmap.connect('pullrequest_show_all',
494 rmap.connect('pullrequest_show_all',
495 '/{repo_name:.*?}/pull-request',
495 '/{repo_name:.*?}/pull-request',
496 controller='pullrequests',
496 controller='pullrequests',
497 action='show_all', conditions=dict(function=check_repo,
497 action='show_all', conditions=dict(function=check_repo,
498 method=["GET"]))
498 method=["GET"]))
499
499
500 rmap.connect('pullrequest_comment',
500 rmap.connect('pullrequest_comment',
501 '/{repo_name:.*?}/pull-request-comment/{pull_request_id}',
501 '/{repo_name:.*?}/pull-request-comment/{pull_request_id}',
502 controller='pullrequests',
502 controller='pullrequests',
503 action='comment', conditions=dict(function=check_repo,
503 action='comment', conditions=dict(function=check_repo,
504 method=["POST"]))
504 method=["POST"]))
505
505
506 rmap.connect('pullrequest_comment_delete',
506 rmap.connect('pullrequest_comment_delete',
507 '/{repo_name:.*?}/pull-request-comment/{comment_id}/delete',
507 '/{repo_name:.*?}/pull-request-comment/{comment_id}/delete',
508 controller='pullrequests', action='delete_comment',
508 controller='pullrequests', action='delete_comment',
509 conditions=dict(function=check_repo, method=["DELETE"]))
509 conditions=dict(function=check_repo, method=["DELETE"]))
510
510
511 rmap.connect('summary_home', '/{repo_name:.*?}/summary',
511 rmap.connect('summary_home', '/{repo_name:.*?}/summary',
512 controller='summary', conditions=dict(function=check_repo))
512 controller='summary', conditions=dict(function=check_repo))
513
513
514 rmap.connect('shortlog_home', '/{repo_name:.*?}/shortlog',
514 rmap.connect('shortlog_home', '/{repo_name:.*?}/shortlog',
515 controller='shortlog', conditions=dict(function=check_repo))
515 controller='shortlog', conditions=dict(function=check_repo))
516
516
517 rmap.connect('shortlog_file_home', '/{repo_name:.*?}/shortlog/{revision}/{f_path:.*}',
518 controller='shortlog', f_path=None,
519 conditions=dict(function=check_repo))
520
517 rmap.connect('branches_home', '/{repo_name:.*?}/branches',
521 rmap.connect('branches_home', '/{repo_name:.*?}/branches',
518 controller='branches', conditions=dict(function=check_repo))
522 controller='branches', conditions=dict(function=check_repo))
519
523
520 rmap.connect('tags_home', '/{repo_name:.*?}/tags',
524 rmap.connect('tags_home', '/{repo_name:.*?}/tags',
521 controller='tags', conditions=dict(function=check_repo))
525 controller='tags', conditions=dict(function=check_repo))
522
526
523 rmap.connect('bookmarks_home', '/{repo_name:.*?}/bookmarks',
527 rmap.connect('bookmarks_home', '/{repo_name:.*?}/bookmarks',
524 controller='bookmarks', conditions=dict(function=check_repo))
528 controller='bookmarks', conditions=dict(function=check_repo))
525
529
526 rmap.connect('changelog_home', '/{repo_name:.*?}/changelog',
530 rmap.connect('changelog_home', '/{repo_name:.*?}/changelog',
527 controller='changelog', conditions=dict(function=check_repo))
531 controller='changelog', conditions=dict(function=check_repo))
528
532
529 rmap.connect('changelog_details', '/{repo_name:.*?}/changelog_details/{cs}',
533 rmap.connect('changelog_details', '/{repo_name:.*?}/changelog_details/{cs}',
530 controller='changelog', action='changelog_details',
534 controller='changelog', action='changelog_details',
531 conditions=dict(function=check_repo))
535 conditions=dict(function=check_repo))
532
536
533 rmap.connect('files_home', '/{repo_name:.*?}/files/{revision}/{f_path:.*}',
537 rmap.connect('files_home', '/{repo_name:.*?}/files/{revision}/{f_path:.*}',
534 controller='files', revision='tip', f_path='',
538 controller='files', revision='tip', f_path='',
535 conditions=dict(function=check_repo))
539 conditions=dict(function=check_repo))
536
540
537 rmap.connect('files_history_home',
541 rmap.connect('files_history_home',
538 '/{repo_name:.*?}/history/{revision}/{f_path:.*}',
542 '/{repo_name:.*?}/history/{revision}/{f_path:.*}',
539 controller='files', action='history', revision='tip', f_path='',
543 controller='files', action='history', revision='tip', f_path='',
540 conditions=dict(function=check_repo))
544 conditions=dict(function=check_repo))
541
545
542 rmap.connect('files_diff_home', '/{repo_name:.*?}/diff/{f_path:.*}',
546 rmap.connect('files_diff_home', '/{repo_name:.*?}/diff/{f_path:.*}',
543 controller='files', action='diff', revision='tip', f_path='',
547 controller='files', action='diff', revision='tip', f_path='',
544 conditions=dict(function=check_repo))
548 conditions=dict(function=check_repo))
545
549
546 rmap.connect('files_rawfile_home',
550 rmap.connect('files_rawfile_home',
547 '/{repo_name:.*?}/rawfile/{revision}/{f_path:.*}',
551 '/{repo_name:.*?}/rawfile/{revision}/{f_path:.*}',
548 controller='files', action='rawfile', revision='tip',
552 controller='files', action='rawfile', revision='tip',
549 f_path='', conditions=dict(function=check_repo))
553 f_path='', conditions=dict(function=check_repo))
550
554
551 rmap.connect('files_raw_home',
555 rmap.connect('files_raw_home',
552 '/{repo_name:.*?}/raw/{revision}/{f_path:.*}',
556 '/{repo_name:.*?}/raw/{revision}/{f_path:.*}',
553 controller='files', action='raw', revision='tip', f_path='',
557 controller='files', action='raw', revision='tip', f_path='',
554 conditions=dict(function=check_repo))
558 conditions=dict(function=check_repo))
555
559
556 rmap.connect('files_annotate_home',
560 rmap.connect('files_annotate_home',
557 '/{repo_name:.*?}/annotate/{revision}/{f_path:.*}',
561 '/{repo_name:.*?}/annotate/{revision}/{f_path:.*}',
558 controller='files', action='index', revision='tip',
562 controller='files', action='index', revision='tip',
559 f_path='', annotate=True, conditions=dict(function=check_repo))
563 f_path='', annotate=True, conditions=dict(function=check_repo))
560
564
561 rmap.connect('files_edit_home',
565 rmap.connect('files_edit_home',
562 '/{repo_name:.*?}/edit/{revision}/{f_path:.*}',
566 '/{repo_name:.*?}/edit/{revision}/{f_path:.*}',
563 controller='files', action='edit', revision='tip',
567 controller='files', action='edit', revision='tip',
564 f_path='', conditions=dict(function=check_repo))
568 f_path='', conditions=dict(function=check_repo))
565
569
566 rmap.connect('files_add_home',
570 rmap.connect('files_add_home',
567 '/{repo_name:.*?}/add/{revision}/{f_path:.*}',
571 '/{repo_name:.*?}/add/{revision}/{f_path:.*}',
568 controller='files', action='add', revision='tip',
572 controller='files', action='add', revision='tip',
569 f_path='', conditions=dict(function=check_repo))
573 f_path='', conditions=dict(function=check_repo))
570
574
571 rmap.connect('files_archive_home', '/{repo_name:.*?}/archive/{fname}',
575 rmap.connect('files_archive_home', '/{repo_name:.*?}/archive/{fname}',
572 controller='files', action='archivefile',
576 controller='files', action='archivefile',
573 conditions=dict(function=check_repo))
577 conditions=dict(function=check_repo))
574
578
575 rmap.connect('files_nodelist_home',
579 rmap.connect('files_nodelist_home',
576 '/{repo_name:.*?}/nodelist/{revision}/{f_path:.*}',
580 '/{repo_name:.*?}/nodelist/{revision}/{f_path:.*}',
577 controller='files', action='nodelist',
581 controller='files', action='nodelist',
578 conditions=dict(function=check_repo))
582 conditions=dict(function=check_repo))
579
583
580 rmap.connect('repo_settings_delete', '/{repo_name:.*?}/settings',
584 rmap.connect('repo_settings_delete', '/{repo_name:.*?}/settings',
581 controller='settings', action="delete",
585 controller='settings', action="delete",
582 conditions=dict(method=["DELETE"], function=check_repo))
586 conditions=dict(method=["DELETE"], function=check_repo))
583
587
584 rmap.connect('repo_settings_update', '/{repo_name:.*?}/settings',
588 rmap.connect('repo_settings_update', '/{repo_name:.*?}/settings',
585 controller='settings', action="update",
589 controller='settings', action="update",
586 conditions=dict(method=["PUT"], function=check_repo))
590 conditions=dict(method=["PUT"], function=check_repo))
587
591
588 rmap.connect('repo_settings_home', '/{repo_name:.*?}/settings',
592 rmap.connect('repo_settings_home', '/{repo_name:.*?}/settings',
589 controller='settings', action='index',
593 controller='settings', action='index',
590 conditions=dict(function=check_repo))
594 conditions=dict(function=check_repo))
591
595
592 rmap.connect('toggle_locking', "/{repo_name:.*?}/locking_toggle",
596 rmap.connect('toggle_locking', "/{repo_name:.*?}/locking_toggle",
593 controller='settings', action="toggle_locking",
597 controller='settings', action="toggle_locking",
594 conditions=dict(method=["GET"], function=check_repo))
598 conditions=dict(method=["GET"], function=check_repo))
595
599
596 rmap.connect('repo_fork_create_home', '/{repo_name:.*?}/fork',
600 rmap.connect('repo_fork_create_home', '/{repo_name:.*?}/fork',
597 controller='forks', action='fork_create',
601 controller='forks', action='fork_create',
598 conditions=dict(function=check_repo, method=["POST"]))
602 conditions=dict(function=check_repo, method=["POST"]))
599
603
600 rmap.connect('repo_fork_home', '/{repo_name:.*?}/fork',
604 rmap.connect('repo_fork_home', '/{repo_name:.*?}/fork',
601 controller='forks', action='fork',
605 controller='forks', action='fork',
602 conditions=dict(function=check_repo))
606 conditions=dict(function=check_repo))
603
607
604 rmap.connect('repo_forks_home', '/{repo_name:.*?}/forks',
608 rmap.connect('repo_forks_home', '/{repo_name:.*?}/forks',
605 controller='forks', action='forks',
609 controller='forks', action='forks',
606 conditions=dict(function=check_repo))
610 conditions=dict(function=check_repo))
607
611
608 rmap.connect('repo_followers_home', '/{repo_name:.*?}/followers',
612 rmap.connect('repo_followers_home', '/{repo_name:.*?}/followers',
609 controller='followers', action='followers',
613 controller='followers', action='followers',
610 conditions=dict(function=check_repo))
614 conditions=dict(function=check_repo))
611
615
612 return rmap
616 return rmap
@@ -1,66 +1,104 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.controllers.shortlog
3 rhodecode.controllers.shortlog
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
5
6 Shortlog controller for rhodecode
6 Shortlog controller for rhodecode
7
7
8 :created_on: Apr 18, 2010
8 :created_on: Apr 18, 2010
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software: you can redistribute it and/or modify
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
16 # (at your option) any later version.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25
25
26 import logging
26 import logging
27
27
28 from pylons import tmpl_context as c, request, url
28 from pylons import tmpl_context as c, request, url
29 from pylons.i18n.translation import _
29
30
31 from rhodecode.lib import helpers as h
30 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
32 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
31 from rhodecode.lib.base import BaseRepoController, render
33 from rhodecode.lib.base import BaseRepoController, render
32 from rhodecode.lib.helpers import RepoPage
34 from rhodecode.lib.helpers import RepoPage
33 from pylons.controllers.util import redirect
35 from pylons.controllers.util import redirect
34 from rhodecode.lib.utils2 import safe_int
36 from rhodecode.lib.utils2 import safe_int
37 from rhodecode.lib.vcs.exceptions import NodeDoesNotExistError, ChangesetError,\
38 RepositoryError
35
39
36 log = logging.getLogger(__name__)
40 log = logging.getLogger(__name__)
37
41
38
42
39 class ShortlogController(BaseRepoController):
43 class ShortlogController(BaseRepoController):
40
44
41 @LoginRequired()
45 @LoginRequired()
42 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
46 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
43 'repository.admin')
47 'repository.admin')
44 def __before__(self):
48 def __before__(self):
45 super(ShortlogController, self).__before__()
49 super(ShortlogController, self).__before__()
46
50
47 def index(self, repo_name):
51 def __get_cs_or_redirect(self, rev, repo_name, redirect_after=True):
52 """
53 Safe way to get changeset if error occur it redirects to tip with
54 proper message
55
56 :param rev: revision to fetch
57 :param repo_name: repo name to redirect after
58 """
59
60 try:
61 return c.rhodecode_repo.get_changeset(rev)
62 except RepositoryError, e:
63 h.flash(str(e), category='warning')
64 redirect(h.url('shortlog_home', repo_name=repo_name))
65
66 def index(self, repo_name, revision=None, f_path=None):
48 p = safe_int(request.params.get('page', 1), 1)
67 p = safe_int(request.params.get('page', 1), 1)
49 size = safe_int(request.params.get('size', 20), 20)
68 size = safe_int(request.params.get('size', 20), 20)
50
69
51 def url_generator(**kw):
70 def url_generator(**kw):
52 return url('shortlog_home', repo_name=repo_name, size=size, **kw)
71 return url('shortlog_home', repo_name=repo_name, size=size, **kw)
53
72
54 c.repo_changesets = RepoPage(c.rhodecode_repo, page=p,
73 collection = c.rhodecode_repo
74 c.file_history = f_path
75 if f_path:
76 f_path = f_path.lstrip('/')
77 # get the history for the file !
78 tip_cs = c.rhodecode_repo.get_changeset()
79 try:
80 collection = tip_cs.get_file_history(f_path)
81 except (NodeDoesNotExistError, ChangesetError):
82 #this node is not present at tip !
83 try:
84 cs = self.__get_cs_or_redirect(revision, repo_name)
85 collection = cs.get_file_history(f_path)
86 except RepositoryError, e:
87 h.flash(str(e), category='warning')
88 redirect(h.url('shortlog_home', repo_name=repo_name))
89 collection = list(reversed(collection))
90
91 c.repo_changesets = RepoPage(collection, page=p,
55 items_per_page=size, url=url_generator)
92 items_per_page=size, url=url_generator)
56 page_revisions = [x.raw_id for x in list(c.repo_changesets)]
93 page_revisions = [x.raw_id for x in list(collection)]
57 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
94 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
58
95
59 if not c.repo_changesets:
96 if not c.repo_changesets:
97 h.flash(_('There are no changesets yet'), category='warning')
60 return redirect(url('summary_home', repo_name=repo_name))
98 return redirect(url('summary_home', repo_name=repo_name))
61
99
62 c.shortlog_data = render('shortlog/shortlog_data.html')
100 c.shortlog_data = render('shortlog/shortlog_data.html')
63 if request.environ.get('HTTP_X_PARTIAL_XHR'):
101 if request.environ.get('HTTP_X_PARTIAL_XHR'):
64 return c.shortlog_data
102 return c.shortlog_data
65 r = render('shortlog/shortlog.html')
103 r = render('shortlog/shortlog.html')
66 return r
104 return r
@@ -1,505 +1,513 b''
1 import re
1 import re
2 from itertools import chain
2 from itertools import chain
3 from dulwich import objects
3 from dulwich import objects
4 from subprocess import Popen, PIPE
4 from subprocess import Popen, PIPE
5 from rhodecode.lib.vcs.conf import settings
5 from rhodecode.lib.vcs.conf import settings
6 from rhodecode.lib.vcs.exceptions import RepositoryError
6 from rhodecode.lib.vcs.exceptions import RepositoryError
7 from rhodecode.lib.vcs.exceptions import ChangesetError
7 from rhodecode.lib.vcs.exceptions import ChangesetError
8 from rhodecode.lib.vcs.exceptions import NodeDoesNotExistError
8 from rhodecode.lib.vcs.exceptions import NodeDoesNotExistError
9 from rhodecode.lib.vcs.exceptions import VCSError
9 from rhodecode.lib.vcs.exceptions import VCSError
10 from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError
10 from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError
11 from rhodecode.lib.vcs.exceptions import ImproperArchiveTypeError
11 from rhodecode.lib.vcs.exceptions import ImproperArchiveTypeError
12 from rhodecode.lib.vcs.backends.base import BaseChangeset, EmptyChangeset
12 from rhodecode.lib.vcs.backends.base import BaseChangeset, EmptyChangeset
13 from rhodecode.lib.vcs.nodes import FileNode, DirNode, NodeKind, RootNode, \
13 from rhodecode.lib.vcs.nodes import FileNode, DirNode, NodeKind, RootNode, \
14 RemovedFileNode, SubModuleNode, ChangedFileNodesGenerator,\
14 RemovedFileNode, SubModuleNode, ChangedFileNodesGenerator,\
15 AddedFileNodesGenerator, RemovedFileNodesGenerator
15 AddedFileNodesGenerator, RemovedFileNodesGenerator
16 from rhodecode.lib.vcs.utils import safe_unicode
16 from rhodecode.lib.vcs.utils import safe_unicode
17 from rhodecode.lib.vcs.utils import date_fromtimestamp
17 from rhodecode.lib.vcs.utils import date_fromtimestamp
18 from rhodecode.lib.vcs.utils.lazy import LazyProperty
18 from rhodecode.lib.vcs.utils.lazy import LazyProperty
19
19
20
20
21 class GitChangeset(BaseChangeset):
21 class GitChangeset(BaseChangeset):
22 """
22 """
23 Represents state of the repository at single revision.
23 Represents state of the repository at single revision.
24 """
24 """
25
25
26 def __init__(self, repository, revision):
26 def __init__(self, repository, revision):
27 self._stat_modes = {}
27 self._stat_modes = {}
28 self.repository = repository
28 self.repository = repository
29
29
30 try:
30 try:
31 commit = self.repository._repo.get_object(revision)
31 commit = self.repository._repo.get_object(revision)
32 if isinstance(commit, objects.Tag):
32 if isinstance(commit, objects.Tag):
33 revision = commit.object[1]
33 revision = commit.object[1]
34 commit = self.repository._repo.get_object(commit.object[1])
34 commit = self.repository._repo.get_object(commit.object[1])
35 except KeyError:
35 except KeyError:
36 raise RepositoryError("Cannot get object with id %s" % revision)
36 raise RepositoryError("Cannot get object with id %s" % revision)
37 self.raw_id = revision
37 self.raw_id = revision
38 self.id = self.raw_id
38 self.id = self.raw_id
39 self.short_id = self.raw_id[:12]
39 self.short_id = self.raw_id[:12]
40 self._commit = commit
40 self._commit = commit
41
41
42 self._tree_id = commit.tree
42 self._tree_id = commit.tree
43 self._commiter_property = 'committer'
43 self._commiter_property = 'committer'
44 self._author_property = 'author'
44 self._author_property = 'author'
45 self._date_property = 'commit_time'
45 self._date_property = 'commit_time'
46 self._date_tz_property = 'commit_timezone'
46 self._date_tz_property = 'commit_timezone'
47 self.revision = repository.revisions.index(revision)
47 self.revision = repository.revisions.index(revision)
48
48
49 self.message = safe_unicode(commit.message)
49 self.message = safe_unicode(commit.message)
50
50
51 self.nodes = {}
51 self.nodes = {}
52 self._paths = {}
52 self._paths = {}
53
53
54 @LazyProperty
54 @LazyProperty
55 def commiter(self):
55 def commiter(self):
56 return safe_unicode(getattr(self._commit, self._commiter_property))
56 return safe_unicode(getattr(self._commit, self._commiter_property))
57
57
58 @LazyProperty
58 @LazyProperty
59 def author(self):
59 def author(self):
60 return safe_unicode(getattr(self._commit, self._author_property))
60 return safe_unicode(getattr(self._commit, self._author_property))
61
61
62 @LazyProperty
62 @LazyProperty
63 def date(self):
63 def date(self):
64 return date_fromtimestamp(getattr(self._commit, self._date_property),
64 return date_fromtimestamp(getattr(self._commit, self._date_property),
65 getattr(self._commit, self._date_tz_property))
65 getattr(self._commit, self._date_tz_property))
66
66
67 @LazyProperty
67 @LazyProperty
68 def _timestamp(self):
68 def _timestamp(self):
69 return getattr(self._commit, self._date_property)
69 return getattr(self._commit, self._date_property)
70
70
71 @LazyProperty
71 @LazyProperty
72 def status(self):
72 def status(self):
73 """
73 """
74 Returns modified, added, removed, deleted files for current changeset
74 Returns modified, added, removed, deleted files for current changeset
75 """
75 """
76 return self.changed, self.added, self.removed
76 return self.changed, self.added, self.removed
77
77
78 @LazyProperty
78 @LazyProperty
79 def tags(self):
79 def tags(self):
80 _tags = []
80 _tags = []
81 for tname, tsha in self.repository.tags.iteritems():
81 for tname, tsha in self.repository.tags.iteritems():
82 if tsha == self.raw_id:
82 if tsha == self.raw_id:
83 _tags.append(tname)
83 _tags.append(tname)
84 return _tags
84 return _tags
85
85
86 @LazyProperty
86 @LazyProperty
87 def branch(self):
87 def branch(self):
88
88
89 heads = self.repository._heads(reverse=False)
89 heads = self.repository._heads(reverse=False)
90
90
91 ref = heads.get(self.raw_id)
91 ref = heads.get(self.raw_id)
92 if ref:
92 if ref:
93 return safe_unicode(ref)
93 return safe_unicode(ref)
94
94
95 def _fix_path(self, path):
95 def _fix_path(self, path):
96 """
96 """
97 Paths are stored without trailing slash so we need to get rid off it if
97 Paths are stored without trailing slash so we need to get rid off it if
98 needed.
98 needed.
99 """
99 """
100 if path.endswith('/'):
100 if path.endswith('/'):
101 path = path.rstrip('/')
101 path = path.rstrip('/')
102 return path
102 return path
103
103
104 def _get_id_for_path(self, path):
104 def _get_id_for_path(self, path):
105
105
106 # FIXME: Please, spare a couple of minutes and make those codes cleaner;
106 # FIXME: Please, spare a couple of minutes and make those codes cleaner;
107 if not path in self._paths:
107 if not path in self._paths:
108 path = path.strip('/')
108 path = path.strip('/')
109 # set root tree
109 # set root tree
110 tree = self.repository._repo[self._tree_id]
110 tree = self.repository._repo[self._tree_id]
111 if path == '':
111 if path == '':
112 self._paths[''] = tree.id
112 self._paths[''] = tree.id
113 return tree.id
113 return tree.id
114 splitted = path.split('/')
114 splitted = path.split('/')
115 dirs, name = splitted[:-1], splitted[-1]
115 dirs, name = splitted[:-1], splitted[-1]
116 curdir = ''
116 curdir = ''
117
117
118 # initially extract things from root dir
118 # initially extract things from root dir
119 for item, stat, id in tree.iteritems():
119 for item, stat, id in tree.iteritems():
120 if curdir:
120 if curdir:
121 name = '/'.join((curdir, item))
121 name = '/'.join((curdir, item))
122 else:
122 else:
123 name = item
123 name = item
124 self._paths[name] = id
124 self._paths[name] = id
125 self._stat_modes[name] = stat
125 self._stat_modes[name] = stat
126
126
127 for dir in dirs:
127 for dir in dirs:
128 if curdir:
128 if curdir:
129 curdir = '/'.join((curdir, dir))
129 curdir = '/'.join((curdir, dir))
130 else:
130 else:
131 curdir = dir
131 curdir = dir
132 dir_id = None
132 dir_id = None
133 for item, stat, id in tree.iteritems():
133 for item, stat, id in tree.iteritems():
134 if dir == item:
134 if dir == item:
135 dir_id = id
135 dir_id = id
136 if dir_id:
136 if dir_id:
137 # Update tree
137 # Update tree
138 tree = self.repository._repo[dir_id]
138 tree = self.repository._repo[dir_id]
139 if not isinstance(tree, objects.Tree):
139 if not isinstance(tree, objects.Tree):
140 raise ChangesetError('%s is not a directory' % curdir)
140 raise ChangesetError('%s is not a directory' % curdir)
141 else:
141 else:
142 raise ChangesetError('%s have not been found' % curdir)
142 raise ChangesetError('%s have not been found' % curdir)
143
143
144 # cache all items from the given traversed tree
144 # cache all items from the given traversed tree
145 for item, stat, id in tree.iteritems():
145 for item, stat, id in tree.iteritems():
146 if curdir:
146 if curdir:
147 name = '/'.join((curdir, item))
147 name = '/'.join((curdir, item))
148 else:
148 else:
149 name = item
149 name = item
150 self._paths[name] = id
150 self._paths[name] = id
151 self._stat_modes[name] = stat
151 self._stat_modes[name] = stat
152 if not path in self._paths:
152 if not path in self._paths:
153 raise NodeDoesNotExistError("There is no file nor directory "
153 raise NodeDoesNotExistError("There is no file nor directory "
154 "at the given path %r at revision %r"
154 "at the given path %r at revision %r"
155 % (path, self.short_id))
155 % (path, self.short_id))
156 return self._paths[path]
156 return self._paths[path]
157
157
158 def _get_kind(self, path):
158 def _get_kind(self, path):
159 obj = self.repository._repo[self._get_id_for_path(path)]
159 obj = self.repository._repo[self._get_id_for_path(path)]
160 if isinstance(obj, objects.Blob):
160 if isinstance(obj, objects.Blob):
161 return NodeKind.FILE
161 return NodeKind.FILE
162 elif isinstance(obj, objects.Tree):
162 elif isinstance(obj, objects.Tree):
163 return NodeKind.DIR
163 return NodeKind.DIR
164
164
165 def _get_filectx(self, path):
166 path = self._fix_path(path)
167 if self._get_kind(path) != NodeKind.FILE:
168 raise ChangesetError("File does not exist for revision %r at "
169 " %r" % (self.raw_id, path))
170 return path
171
165 def _get_file_nodes(self):
172 def _get_file_nodes(self):
166 return chain(*(t[2] for t in self.walk()))
173 return chain(*(t[2] for t in self.walk()))
167
174
168 @LazyProperty
175 @LazyProperty
169 def parents(self):
176 def parents(self):
170 """
177 """
171 Returns list of parents changesets.
178 Returns list of parents changesets.
172 """
179 """
173 return [self.repository.get_changeset(parent)
180 return [self.repository.get_changeset(parent)
174 for parent in self._commit.parents]
181 for parent in self._commit.parents]
175
182
176 def next(self, branch=None):
183 def next(self, branch=None):
177
184
178 if branch and self.branch != branch:
185 if branch and self.branch != branch:
179 raise VCSError('Branch option used on changeset not belonging '
186 raise VCSError('Branch option used on changeset not belonging '
180 'to that branch')
187 'to that branch')
181
188
182 def _next(changeset, branch):
189 def _next(changeset, branch):
183 try:
190 try:
184 next_ = changeset.revision + 1
191 next_ = changeset.revision + 1
185 next_rev = changeset.repository.revisions[next_]
192 next_rev = changeset.repository.revisions[next_]
186 except IndexError:
193 except IndexError:
187 raise ChangesetDoesNotExistError
194 raise ChangesetDoesNotExistError
188 cs = changeset.repository.get_changeset(next_rev)
195 cs = changeset.repository.get_changeset(next_rev)
189
196
190 if branch and branch != cs.branch:
197 if branch and branch != cs.branch:
191 return _next(cs, branch)
198 return _next(cs, branch)
192
199
193 return cs
200 return cs
194
201
195 return _next(self, branch)
202 return _next(self, branch)
196
203
197 def prev(self, branch=None):
204 def prev(self, branch=None):
198 if branch and self.branch != branch:
205 if branch and self.branch != branch:
199 raise VCSError('Branch option used on changeset not belonging '
206 raise VCSError('Branch option used on changeset not belonging '
200 'to that branch')
207 'to that branch')
201
208
202 def _prev(changeset, branch):
209 def _prev(changeset, branch):
203 try:
210 try:
204 prev_ = changeset.revision - 1
211 prev_ = changeset.revision - 1
205 if prev_ < 0:
212 if prev_ < 0:
206 raise IndexError
213 raise IndexError
207 prev_rev = changeset.repository.revisions[prev_]
214 prev_rev = changeset.repository.revisions[prev_]
208 except IndexError:
215 except IndexError:
209 raise ChangesetDoesNotExistError
216 raise ChangesetDoesNotExistError
210
217
211 cs = changeset.repository.get_changeset(prev_rev)
218 cs = changeset.repository.get_changeset(prev_rev)
212
219
213 if branch and branch != cs.branch:
220 if branch and branch != cs.branch:
214 return _prev(cs, branch)
221 return _prev(cs, branch)
215
222
216 return cs
223 return cs
217
224
218 return _prev(self, branch)
225 return _prev(self, branch)
219
226
220 def diff(self, ignore_whitespace=True, context=3):
227 def diff(self, ignore_whitespace=True, context=3):
221 rev1 = self.parents[0] if self.parents else self.repository.EMPTY_CHANGESET
228 rev1 = self.parents[0] if self.parents else self.repository.EMPTY_CHANGESET
222 rev2 = self
229 rev2 = self
223 return ''.join(self.repository.get_diff(rev1, rev2,
230 return ''.join(self.repository.get_diff(rev1, rev2,
224 ignore_whitespace=ignore_whitespace,
231 ignore_whitespace=ignore_whitespace,
225 context=context))
232 context=context))
226
233
227 def get_file_mode(self, path):
234 def get_file_mode(self, path):
228 """
235 """
229 Returns stat mode of the file at the given ``path``.
236 Returns stat mode of the file at the given ``path``.
230 """
237 """
231 # ensure path is traversed
238 # ensure path is traversed
232 self._get_id_for_path(path)
239 self._get_id_for_path(path)
233 return self._stat_modes[path]
240 return self._stat_modes[path]
234
241
235 def get_file_content(self, path):
242 def get_file_content(self, path):
236 """
243 """
237 Returns content of the file at given ``path``.
244 Returns content of the file at given ``path``.
238 """
245 """
239 id = self._get_id_for_path(path)
246 id = self._get_id_for_path(path)
240 blob = self.repository._repo[id]
247 blob = self.repository._repo[id]
241 return blob.as_pretty_string()
248 return blob.as_pretty_string()
242
249
243 def get_file_size(self, path):
250 def get_file_size(self, path):
244 """
251 """
245 Returns size of the file at given ``path``.
252 Returns size of the file at given ``path``.
246 """
253 """
247 id = self._get_id_for_path(path)
254 id = self._get_id_for_path(path)
248 blob = self.repository._repo[id]
255 blob = self.repository._repo[id]
249 return blob.raw_length()
256 return blob.raw_length()
250
257
251 def get_file_changeset(self, path):
258 def get_file_changeset(self, path):
252 """
259 """
253 Returns last commit of the file at the given ``path``.
260 Returns last commit of the file at the given ``path``.
254 """
261 """
255 node = self.get_node(path)
262 node = self.get_node(path)
256 return node.history[0]
263 return node.history[0]
257
264
258 def get_file_history(self, path):
265 def get_file_history(self, path):
259 """
266 """
260 Returns history of file as reversed list of ``Changeset`` objects for
267 Returns history of file as reversed list of ``Changeset`` objects for
261 which file at given ``path`` has been modified.
268 which file at given ``path`` has been modified.
262
269
263 TODO: This function now uses os underlying 'git' and 'grep' commands
270 TODO: This function now uses os underlying 'git' and 'grep' commands
264 which is generally not good. Should be replaced with algorithm
271 which is generally not good. Should be replaced with algorithm
265 iterating commits.
272 iterating commits.
266 """
273 """
274 self._get_filectx(path)
267 cmd = 'log --pretty="format: %%H" -s -p %s -- "%s"' % (
275 cmd = 'log --pretty="format: %%H" -s -p %s -- "%s"' % (
268 self.id, path
276 self.id, path
269 )
277 )
270 so, se = self.repository.run_git_command(cmd)
278 so, se = self.repository.run_git_command(cmd)
271 ids = re.findall(r'[0-9a-fA-F]{40}', so)
279 ids = re.findall(r'[0-9a-fA-F]{40}', so)
272 return [self.repository.get_changeset(id) for id in ids]
280 return [self.repository.get_changeset(id) for id in ids]
273
281
274 def get_file_annotate(self, path):
282 def get_file_annotate(self, path):
275 """
283 """
276 Returns a list of three element tuples with lineno,changeset and line
284 Returns a list of three element tuples with lineno,changeset and line
277
285
278 TODO: This function now uses os underlying 'git' command which is
286 TODO: This function now uses os underlying 'git' command which is
279 generally not good. Should be replaced with algorithm iterating
287 generally not good. Should be replaced with algorithm iterating
280 commits.
288 commits.
281 """
289 """
282 cmd = 'blame -l --root -r %s -- "%s"' % (self.id, path)
290 cmd = 'blame -l --root -r %s -- "%s"' % (self.id, path)
283 # -l ==> outputs long shas (and we need all 40 characters)
291 # -l ==> outputs long shas (and we need all 40 characters)
284 # --root ==> doesn't put '^' character for bounderies
292 # --root ==> doesn't put '^' character for bounderies
285 # -r sha ==> blames for the given revision
293 # -r sha ==> blames for the given revision
286 so, se = self.repository.run_git_command(cmd)
294 so, se = self.repository.run_git_command(cmd)
287
295
288 annotate = []
296 annotate = []
289 for i, blame_line in enumerate(so.split('\n')[:-1]):
297 for i, blame_line in enumerate(so.split('\n')[:-1]):
290 ln_no = i + 1
298 ln_no = i + 1
291 id, line = re.split(r' ', blame_line, 1)
299 id, line = re.split(r' ', blame_line, 1)
292 annotate.append((ln_no, self.repository.get_changeset(id), line))
300 annotate.append((ln_no, self.repository.get_changeset(id), line))
293 return annotate
301 return annotate
294
302
295 def fill_archive(self, stream=None, kind='tgz', prefix=None,
303 def fill_archive(self, stream=None, kind='tgz', prefix=None,
296 subrepos=False):
304 subrepos=False):
297 """
305 """
298 Fills up given stream.
306 Fills up given stream.
299
307
300 :param stream: file like object.
308 :param stream: file like object.
301 :param kind: one of following: ``zip``, ``tgz`` or ``tbz2``.
309 :param kind: one of following: ``zip``, ``tgz`` or ``tbz2``.
302 Default: ``tgz``.
310 Default: ``tgz``.
303 :param prefix: name of root directory in archive.
311 :param prefix: name of root directory in archive.
304 Default is repository name and changeset's raw_id joined with dash
312 Default is repository name and changeset's raw_id joined with dash
305 (``repo-tip.<KIND>``).
313 (``repo-tip.<KIND>``).
306 :param subrepos: include subrepos in this archive.
314 :param subrepos: include subrepos in this archive.
307
315
308 :raise ImproperArchiveTypeError: If given kind is wrong.
316 :raise ImproperArchiveTypeError: If given kind is wrong.
309 :raise VcsError: If given stream is None
317 :raise VcsError: If given stream is None
310
318
311 """
319 """
312 allowed_kinds = settings.ARCHIVE_SPECS.keys()
320 allowed_kinds = settings.ARCHIVE_SPECS.keys()
313 if kind not in allowed_kinds:
321 if kind not in allowed_kinds:
314 raise ImproperArchiveTypeError('Archive kind not supported use one'
322 raise ImproperArchiveTypeError('Archive kind not supported use one'
315 'of %s', allowed_kinds)
323 'of %s', allowed_kinds)
316
324
317 if prefix is None:
325 if prefix is None:
318 prefix = '%s-%s' % (self.repository.name, self.short_id)
326 prefix = '%s-%s' % (self.repository.name, self.short_id)
319 elif prefix.startswith('/'):
327 elif prefix.startswith('/'):
320 raise VCSError("Prefix cannot start with leading slash")
328 raise VCSError("Prefix cannot start with leading slash")
321 elif prefix.strip() == '':
329 elif prefix.strip() == '':
322 raise VCSError("Prefix cannot be empty")
330 raise VCSError("Prefix cannot be empty")
323
331
324 if kind == 'zip':
332 if kind == 'zip':
325 frmt = 'zip'
333 frmt = 'zip'
326 else:
334 else:
327 frmt = 'tar'
335 frmt = 'tar'
328 cmd = 'git archive --format=%s --prefix=%s/ %s' % (frmt, prefix,
336 cmd = 'git archive --format=%s --prefix=%s/ %s' % (frmt, prefix,
329 self.raw_id)
337 self.raw_id)
330 if kind == 'tgz':
338 if kind == 'tgz':
331 cmd += ' | gzip -9'
339 cmd += ' | gzip -9'
332 elif kind == 'tbz2':
340 elif kind == 'tbz2':
333 cmd += ' | bzip2 -9'
341 cmd += ' | bzip2 -9'
334
342
335 if stream is None:
343 if stream is None:
336 raise VCSError('You need to pass in a valid stream for filling'
344 raise VCSError('You need to pass in a valid stream for filling'
337 ' with archival data')
345 ' with archival data')
338 popen = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True,
346 popen = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True,
339 cwd=self.repository.path)
347 cwd=self.repository.path)
340
348
341 buffer_size = 1024 * 8
349 buffer_size = 1024 * 8
342 chunk = popen.stdout.read(buffer_size)
350 chunk = popen.stdout.read(buffer_size)
343 while chunk:
351 while chunk:
344 stream.write(chunk)
352 stream.write(chunk)
345 chunk = popen.stdout.read(buffer_size)
353 chunk = popen.stdout.read(buffer_size)
346 # Make sure all descriptors would be read
354 # Make sure all descriptors would be read
347 popen.communicate()
355 popen.communicate()
348
356
349 def get_nodes(self, path):
357 def get_nodes(self, path):
350 if self._get_kind(path) != NodeKind.DIR:
358 if self._get_kind(path) != NodeKind.DIR:
351 raise ChangesetError("Directory does not exist for revision %r at "
359 raise ChangesetError("Directory does not exist for revision %r at "
352 " %r" % (self.revision, path))
360 " %r" % (self.revision, path))
353 path = self._fix_path(path)
361 path = self._fix_path(path)
354 id = self._get_id_for_path(path)
362 id = self._get_id_for_path(path)
355 tree = self.repository._repo[id]
363 tree = self.repository._repo[id]
356 dirnodes = []
364 dirnodes = []
357 filenodes = []
365 filenodes = []
358 als = self.repository.alias
366 als = self.repository.alias
359 for name, stat, id in tree.iteritems():
367 for name, stat, id in tree.iteritems():
360 if objects.S_ISGITLINK(stat):
368 if objects.S_ISGITLINK(stat):
361 dirnodes.append(SubModuleNode(name, url=None, changeset=id,
369 dirnodes.append(SubModuleNode(name, url=None, changeset=id,
362 alias=als))
370 alias=als))
363 continue
371 continue
364
372
365 obj = self.repository._repo.get_object(id)
373 obj = self.repository._repo.get_object(id)
366 if path != '':
374 if path != '':
367 obj_path = '/'.join((path, name))
375 obj_path = '/'.join((path, name))
368 else:
376 else:
369 obj_path = name
377 obj_path = name
370 if obj_path not in self._stat_modes:
378 if obj_path not in self._stat_modes:
371 self._stat_modes[obj_path] = stat
379 self._stat_modes[obj_path] = stat
372 if isinstance(obj, objects.Tree):
380 if isinstance(obj, objects.Tree):
373 dirnodes.append(DirNode(obj_path, changeset=self))
381 dirnodes.append(DirNode(obj_path, changeset=self))
374 elif isinstance(obj, objects.Blob):
382 elif isinstance(obj, objects.Blob):
375 filenodes.append(FileNode(obj_path, changeset=self, mode=stat))
383 filenodes.append(FileNode(obj_path, changeset=self, mode=stat))
376 else:
384 else:
377 raise ChangesetError("Requested object should be Tree "
385 raise ChangesetError("Requested object should be Tree "
378 "or Blob, is %r" % type(obj))
386 "or Blob, is %r" % type(obj))
379 nodes = dirnodes + filenodes
387 nodes = dirnodes + filenodes
380 for node in nodes:
388 for node in nodes:
381 if not node.path in self.nodes:
389 if not node.path in self.nodes:
382 self.nodes[node.path] = node
390 self.nodes[node.path] = node
383 nodes.sort()
391 nodes.sort()
384 return nodes
392 return nodes
385
393
386 def get_node(self, path):
394 def get_node(self, path):
387 if isinstance(path, unicode):
395 if isinstance(path, unicode):
388 path = path.encode('utf-8')
396 path = path.encode('utf-8')
389 path = self._fix_path(path)
397 path = self._fix_path(path)
390 if not path in self.nodes:
398 if not path in self.nodes:
391 try:
399 try:
392 id_ = self._get_id_for_path(path)
400 id_ = self._get_id_for_path(path)
393 except ChangesetError:
401 except ChangesetError:
394 raise NodeDoesNotExistError("Cannot find one of parents' "
402 raise NodeDoesNotExistError("Cannot find one of parents' "
395 "directories for a given path: %s" % path)
403 "directories for a given path: %s" % path)
396
404
397 _GL = lambda m: m and objects.S_ISGITLINK(m)
405 _GL = lambda m: m and objects.S_ISGITLINK(m)
398 if _GL(self._stat_modes.get(path)):
406 if _GL(self._stat_modes.get(path)):
399 node = SubModuleNode(path, url=None, changeset=id_,
407 node = SubModuleNode(path, url=None, changeset=id_,
400 alias=self.repository.alias)
408 alias=self.repository.alias)
401 else:
409 else:
402 obj = self.repository._repo.get_object(id_)
410 obj = self.repository._repo.get_object(id_)
403
411
404 if isinstance(obj, objects.Tree):
412 if isinstance(obj, objects.Tree):
405 if path == '':
413 if path == '':
406 node = RootNode(changeset=self)
414 node = RootNode(changeset=self)
407 else:
415 else:
408 node = DirNode(path, changeset=self)
416 node = DirNode(path, changeset=self)
409 node._tree = obj
417 node._tree = obj
410 elif isinstance(obj, objects.Blob):
418 elif isinstance(obj, objects.Blob):
411 node = FileNode(path, changeset=self)
419 node = FileNode(path, changeset=self)
412 node._blob = obj
420 node._blob = obj
413 else:
421 else:
414 raise NodeDoesNotExistError("There is no file nor directory "
422 raise NodeDoesNotExistError("There is no file nor directory "
415 "at the given path %r at revision %r"
423 "at the given path %r at revision %r"
416 % (path, self.short_id))
424 % (path, self.short_id))
417 # cache node
425 # cache node
418 self.nodes[path] = node
426 self.nodes[path] = node
419 return self.nodes[path]
427 return self.nodes[path]
420
428
421 @LazyProperty
429 @LazyProperty
422 def affected_files(self):
430 def affected_files(self):
423 """
431 """
424 Get's a fast accessible file changes for given changeset
432 Get's a fast accessible file changes for given changeset
425 """
433 """
426 a, m, d = self._changes_cache
434 a, m, d = self._changes_cache
427 return list(a.union(m).union(d))
435 return list(a.union(m).union(d))
428
436
429 @LazyProperty
437 @LazyProperty
430 def _diff_name_status(self):
438 def _diff_name_status(self):
431 output = []
439 output = []
432 for parent in self.parents:
440 for parent in self.parents:
433 cmd = 'diff --name-status %s %s --encoding=utf8' % (parent.raw_id,
441 cmd = 'diff --name-status %s %s --encoding=utf8' % (parent.raw_id,
434 self.raw_id)
442 self.raw_id)
435 so, se = self.repository.run_git_command(cmd)
443 so, se = self.repository.run_git_command(cmd)
436 output.append(so.strip())
444 output.append(so.strip())
437 return '\n'.join(output)
445 return '\n'.join(output)
438
446
439 @LazyProperty
447 @LazyProperty
440 def _changes_cache(self):
448 def _changes_cache(self):
441 added = set()
449 added = set()
442 modified = set()
450 modified = set()
443 deleted = set()
451 deleted = set()
444 _r = self.repository._repo
452 _r = self.repository._repo
445
453
446 parents = self.parents
454 parents = self.parents
447 if not self.parents:
455 if not self.parents:
448 parents = [EmptyChangeset()]
456 parents = [EmptyChangeset()]
449 for parent in parents:
457 for parent in parents:
450 if isinstance(parent, EmptyChangeset):
458 if isinstance(parent, EmptyChangeset):
451 oid = None
459 oid = None
452 else:
460 else:
453 oid = _r[parent.raw_id].tree
461 oid = _r[parent.raw_id].tree
454 changes = _r.object_store.tree_changes(oid, _r[self.raw_id].tree)
462 changes = _r.object_store.tree_changes(oid, _r[self.raw_id].tree)
455 for (oldpath, newpath), (_, _), (_, _) in changes:
463 for (oldpath, newpath), (_, _), (_, _) in changes:
456 if newpath and oldpath:
464 if newpath and oldpath:
457 modified.add(newpath)
465 modified.add(newpath)
458 elif newpath and not oldpath:
466 elif newpath and not oldpath:
459 added.add(newpath)
467 added.add(newpath)
460 elif not newpath and oldpath:
468 elif not newpath and oldpath:
461 deleted.add(oldpath)
469 deleted.add(oldpath)
462 return added, modified, deleted
470 return added, modified, deleted
463
471
464 def _get_paths_for_status(self, status):
472 def _get_paths_for_status(self, status):
465 """
473 """
466 Returns sorted list of paths for given ``status``.
474 Returns sorted list of paths for given ``status``.
467
475
468 :param status: one of: *added*, *modified* or *deleted*
476 :param status: one of: *added*, *modified* or *deleted*
469 """
477 """
470 a, m, d = self._changes_cache
478 a, m, d = self._changes_cache
471 return sorted({
479 return sorted({
472 'added': list(a),
480 'added': list(a),
473 'modified': list(m),
481 'modified': list(m),
474 'deleted': list(d)}[status]
482 'deleted': list(d)}[status]
475 )
483 )
476
484
477 @LazyProperty
485 @LazyProperty
478 def added(self):
486 def added(self):
479 """
487 """
480 Returns list of added ``FileNode`` objects.
488 Returns list of added ``FileNode`` objects.
481 """
489 """
482 if not self.parents:
490 if not self.parents:
483 return list(self._get_file_nodes())
491 return list(self._get_file_nodes())
484 return AddedFileNodesGenerator([n for n in
492 return AddedFileNodesGenerator([n for n in
485 self._get_paths_for_status('added')], self)
493 self._get_paths_for_status('added')], self)
486
494
487 @LazyProperty
495 @LazyProperty
488 def changed(self):
496 def changed(self):
489 """
497 """
490 Returns list of modified ``FileNode`` objects.
498 Returns list of modified ``FileNode`` objects.
491 """
499 """
492 if not self.parents:
500 if not self.parents:
493 return []
501 return []
494 return ChangedFileNodesGenerator([n for n in
502 return ChangedFileNodesGenerator([n for n in
495 self._get_paths_for_status('modified')], self)
503 self._get_paths_for_status('modified')], self)
496
504
497 @LazyProperty
505 @LazyProperty
498 def removed(self):
506 def removed(self):
499 """
507 """
500 Returns list of removed ``FileNode`` objects.
508 Returns list of removed ``FileNode`` objects.
501 """
509 """
502 if not self.parents:
510 if not self.parents:
503 return []
511 return []
504 return RemovedFileNodesGenerator([n for n in
512 return RemovedFileNodesGenerator([n for n in
505 self._get_paths_for_status('deleted')], self)
513 self._get_paths_for_status('deleted')], self)
@@ -1,377 +1,377 b''
1 import os
1 import os
2 import posixpath
2 import posixpath
3
3
4 from rhodecode.lib.vcs.backends.base import BaseChangeset
4 from rhodecode.lib.vcs.backends.base import BaseChangeset
5 from rhodecode.lib.vcs.conf import settings
5 from rhodecode.lib.vcs.conf import settings
6 from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError, \
6 from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError, \
7 ChangesetError, ImproperArchiveTypeError, NodeDoesNotExistError, VCSError
7 ChangesetError, ImproperArchiveTypeError, NodeDoesNotExistError, VCSError
8 from rhodecode.lib.vcs.nodes import AddedFileNodesGenerator, \
8 from rhodecode.lib.vcs.nodes import AddedFileNodesGenerator, \
9 ChangedFileNodesGenerator, DirNode, FileNode, NodeKind, \
9 ChangedFileNodesGenerator, DirNode, FileNode, NodeKind, \
10 RemovedFileNodesGenerator, RootNode, SubModuleNode
10 RemovedFileNodesGenerator, RootNode, SubModuleNode
11
11
12 from rhodecode.lib.vcs.utils import safe_str, safe_unicode, date_fromtimestamp
12 from rhodecode.lib.vcs.utils import safe_str, safe_unicode, date_fromtimestamp
13 from rhodecode.lib.vcs.utils.lazy import LazyProperty
13 from rhodecode.lib.vcs.utils.lazy import LazyProperty
14 from rhodecode.lib.vcs.utils.paths import get_dirs_for_path
14 from rhodecode.lib.vcs.utils.paths import get_dirs_for_path
15 from rhodecode.lib.vcs.utils.hgcompat import archival, hex
15 from rhodecode.lib.vcs.utils.hgcompat import archival, hex
16
16
17
17
18 class MercurialChangeset(BaseChangeset):
18 class MercurialChangeset(BaseChangeset):
19 """
19 """
20 Represents state of the repository at the single revision.
20 Represents state of the repository at the single revision.
21 """
21 """
22
22
23 def __init__(self, repository, revision):
23 def __init__(self, repository, revision):
24 self.repository = repository
24 self.repository = repository
25 self.raw_id = revision
25 self.raw_id = revision
26 self._ctx = repository._repo[revision]
26 self._ctx = repository._repo[revision]
27 self.revision = self._ctx._rev
27 self.revision = self._ctx._rev
28 self.nodes = {}
28 self.nodes = {}
29
29
30 @LazyProperty
30 @LazyProperty
31 def tags(self):
31 def tags(self):
32 return map(safe_unicode, self._ctx.tags())
32 return map(safe_unicode, self._ctx.tags())
33
33
34 @LazyProperty
34 @LazyProperty
35 def branch(self):
35 def branch(self):
36 return safe_unicode(self._ctx.branch())
36 return safe_unicode(self._ctx.branch())
37
37
38 @LazyProperty
38 @LazyProperty
39 def bookmarks(self):
39 def bookmarks(self):
40 return map(safe_unicode, self._ctx.bookmarks())
40 return map(safe_unicode, self._ctx.bookmarks())
41
41
42 @LazyProperty
42 @LazyProperty
43 def message(self):
43 def message(self):
44 return safe_unicode(self._ctx.description())
44 return safe_unicode(self._ctx.description())
45
45
46 @LazyProperty
46 @LazyProperty
47 def commiter(self):
47 def commiter(self):
48 return safe_unicode(self.auhtor)
48 return safe_unicode(self.auhtor)
49
49
50 @LazyProperty
50 @LazyProperty
51 def author(self):
51 def author(self):
52 return safe_unicode(self._ctx.user())
52 return safe_unicode(self._ctx.user())
53
53
54 @LazyProperty
54 @LazyProperty
55 def date(self):
55 def date(self):
56 return date_fromtimestamp(*self._ctx.date())
56 return date_fromtimestamp(*self._ctx.date())
57
57
58 @LazyProperty
58 @LazyProperty
59 def _timestamp(self):
59 def _timestamp(self):
60 return self._ctx.date()[0]
60 return self._ctx.date()[0]
61
61
62 @LazyProperty
62 @LazyProperty
63 def status(self):
63 def status(self):
64 """
64 """
65 Returns modified, added, removed, deleted files for current changeset
65 Returns modified, added, removed, deleted files for current changeset
66 """
66 """
67 return self.repository._repo.status(self._ctx.p1().node(),
67 return self.repository._repo.status(self._ctx.p1().node(),
68 self._ctx.node())
68 self._ctx.node())
69
69
70 @LazyProperty
70 @LazyProperty
71 def _file_paths(self):
71 def _file_paths(self):
72 return list(self._ctx)
72 return list(self._ctx)
73
73
74 @LazyProperty
74 @LazyProperty
75 def _dir_paths(self):
75 def _dir_paths(self):
76 p = list(set(get_dirs_for_path(*self._file_paths)))
76 p = list(set(get_dirs_for_path(*self._file_paths)))
77 p.insert(0, '')
77 p.insert(0, '')
78 return p
78 return p
79
79
80 @LazyProperty
80 @LazyProperty
81 def _paths(self):
81 def _paths(self):
82 return self._dir_paths + self._file_paths
82 return self._dir_paths + self._file_paths
83
83
84 @LazyProperty
84 @LazyProperty
85 def id(self):
85 def id(self):
86 if self.last:
86 if self.last:
87 return u'tip'
87 return u'tip'
88 return self.short_id
88 return self.short_id
89
89
90 @LazyProperty
90 @LazyProperty
91 def short_id(self):
91 def short_id(self):
92 return self.raw_id[:12]
92 return self.raw_id[:12]
93
93
94 @LazyProperty
94 @LazyProperty
95 def parents(self):
95 def parents(self):
96 """
96 """
97 Returns list of parents changesets.
97 Returns list of parents changesets.
98 """
98 """
99 return [self.repository.get_changeset(parent.rev())
99 return [self.repository.get_changeset(parent.rev())
100 for parent in self._ctx.parents() if parent.rev() >= 0]
100 for parent in self._ctx.parents() if parent.rev() >= 0]
101
101
102 @LazyProperty
102 @LazyProperty
103 def children(self):
103 def children(self):
104 """
104 """
105 Returns list of children changesets.
105 Returns list of children changesets.
106 """
106 """
107 return [self.repository.get_changeset(child.rev())
107 return [self.repository.get_changeset(child.rev())
108 for child in self._ctx.children() if child.rev() >= 0]
108 for child in self._ctx.children() if child.rev() >= 0]
109
109
110 def next(self, branch=None):
110 def next(self, branch=None):
111
111
112 if branch and self.branch != branch:
112 if branch and self.branch != branch:
113 raise VCSError('Branch option used on changeset not belonging '
113 raise VCSError('Branch option used on changeset not belonging '
114 'to that branch')
114 'to that branch')
115
115
116 def _next(changeset, branch):
116 def _next(changeset, branch):
117 try:
117 try:
118 next_ = changeset.revision + 1
118 next_ = changeset.revision + 1
119 next_rev = changeset.repository.revisions[next_]
119 next_rev = changeset.repository.revisions[next_]
120 except IndexError:
120 except IndexError:
121 raise ChangesetDoesNotExistError
121 raise ChangesetDoesNotExistError
122 cs = changeset.repository.get_changeset(next_rev)
122 cs = changeset.repository.get_changeset(next_rev)
123
123
124 if branch and branch != cs.branch:
124 if branch and branch != cs.branch:
125 return _next(cs, branch)
125 return _next(cs, branch)
126
126
127 return cs
127 return cs
128
128
129 return _next(self, branch)
129 return _next(self, branch)
130
130
131 def prev(self, branch=None):
131 def prev(self, branch=None):
132 if branch and self.branch != branch:
132 if branch and self.branch != branch:
133 raise VCSError('Branch option used on changeset not belonging '
133 raise VCSError('Branch option used on changeset not belonging '
134 'to that branch')
134 'to that branch')
135
135
136 def _prev(changeset, branch):
136 def _prev(changeset, branch):
137 try:
137 try:
138 prev_ = changeset.revision - 1
138 prev_ = changeset.revision - 1
139 if prev_ < 0:
139 if prev_ < 0:
140 raise IndexError
140 raise IndexError
141 prev_rev = changeset.repository.revisions[prev_]
141 prev_rev = changeset.repository.revisions[prev_]
142 except IndexError:
142 except IndexError:
143 raise ChangesetDoesNotExistError
143 raise ChangesetDoesNotExistError
144
144
145 cs = changeset.repository.get_changeset(prev_rev)
145 cs = changeset.repository.get_changeset(prev_rev)
146
146
147 if branch and branch != cs.branch:
147 if branch and branch != cs.branch:
148 return _prev(cs, branch)
148 return _prev(cs, branch)
149
149
150 return cs
150 return cs
151
151
152 return _prev(self, branch)
152 return _prev(self, branch)
153
153
154 def diff(self, ignore_whitespace=True, context=3):
154 def diff(self, ignore_whitespace=True, context=3):
155 return ''.join(self._ctx.diff(git=True,
155 return ''.join(self._ctx.diff(git=True,
156 ignore_whitespace=ignore_whitespace,
156 ignore_whitespace=ignore_whitespace,
157 context=context))
157 context=context))
158
158
159 def _fix_path(self, path):
159 def _fix_path(self, path):
160 """
160 """
161 Paths are stored without trailing slash so we need to get rid off it if
161 Paths are stored without trailing slash so we need to get rid off it if
162 needed. Also mercurial keeps filenodes as str so we need to decode
162 needed. Also mercurial keeps filenodes as str so we need to decode
163 from unicode to str
163 from unicode to str
164 """
164 """
165 if path.endswith('/'):
165 if path.endswith('/'):
166 path = path.rstrip('/')
166 path = path.rstrip('/')
167
167
168 return safe_str(path)
168 return safe_str(path)
169
169
170 def _get_kind(self, path):
170 def _get_kind(self, path):
171 path = self._fix_path(path)
171 path = self._fix_path(path)
172 if path in self._file_paths:
172 if path in self._file_paths:
173 return NodeKind.FILE
173 return NodeKind.FILE
174 elif path in self._dir_paths:
174 elif path in self._dir_paths:
175 return NodeKind.DIR
175 return NodeKind.DIR
176 else:
176 else:
177 raise ChangesetError("Node does not exist at the given path %r"
177 raise ChangesetError("Node does not exist at the given path %r"
178 % (path))
178 % (path))
179
179
180 def _get_filectx(self, path):
180 def _get_filectx(self, path):
181 path = self._fix_path(path)
181 path = self._fix_path(path)
182 if self._get_kind(path) != NodeKind.FILE:
182 if self._get_kind(path) != NodeKind.FILE:
183 raise ChangesetError("File does not exist for revision %r at "
183 raise ChangesetError("File does not exist for revision %r at "
184 " %r" % (self.revision, path))
184 " %r" % (self.raw_id, path))
185 return self._ctx.filectx(path)
185 return self._ctx.filectx(path)
186
186
187 def _extract_submodules(self):
187 def _extract_submodules(self):
188 """
188 """
189 returns a dictionary with submodule information from substate file
189 returns a dictionary with submodule information from substate file
190 of hg repository
190 of hg repository
191 """
191 """
192 return self._ctx.substate
192 return self._ctx.substate
193
193
194 def get_file_mode(self, path):
194 def get_file_mode(self, path):
195 """
195 """
196 Returns stat mode of the file at the given ``path``.
196 Returns stat mode of the file at the given ``path``.
197 """
197 """
198 fctx = self._get_filectx(path)
198 fctx = self._get_filectx(path)
199 if 'x' in fctx.flags():
199 if 'x' in fctx.flags():
200 return 0100755
200 return 0100755
201 else:
201 else:
202 return 0100644
202 return 0100644
203
203
204 def get_file_content(self, path):
204 def get_file_content(self, path):
205 """
205 """
206 Returns content of the file at given ``path``.
206 Returns content of the file at given ``path``.
207 """
207 """
208 fctx = self._get_filectx(path)
208 fctx = self._get_filectx(path)
209 return fctx.data()
209 return fctx.data()
210
210
211 def get_file_size(self, path):
211 def get_file_size(self, path):
212 """
212 """
213 Returns size of the file at given ``path``.
213 Returns size of the file at given ``path``.
214 """
214 """
215 fctx = self._get_filectx(path)
215 fctx = self._get_filectx(path)
216 return fctx.size()
216 return fctx.size()
217
217
218 def get_file_changeset(self, path):
218 def get_file_changeset(self, path):
219 """
219 """
220 Returns last commit of the file at the given ``path``.
220 Returns last commit of the file at the given ``path``.
221 """
221 """
222 node = self.get_node(path)
222 node = self.get_node(path)
223 return node.history[0]
223 return node.history[0]
224
224
225 def get_file_history(self, path):
225 def get_file_history(self, path):
226 """
226 """
227 Returns history of file as reversed list of ``Changeset`` objects for
227 Returns history of file as reversed list of ``Changeset`` objects for
228 which file at given ``path`` has been modified.
228 which file at given ``path`` has been modified.
229 """
229 """
230 fctx = self._get_filectx(path)
230 fctx = self._get_filectx(path)
231 nodes = [fctx.filectx(x).node() for x in fctx.filelog()]
231 nodes = [fctx.filectx(x).node() for x in fctx.filelog()]
232 changesets = [self.repository.get_changeset(hex(node))
232 changesets = [self.repository.get_changeset(hex(node))
233 for node in reversed(nodes)]
233 for node in reversed(nodes)]
234 return changesets
234 return changesets
235
235
236 def get_file_annotate(self, path):
236 def get_file_annotate(self, path):
237 """
237 """
238 Returns a list of three element tuples with lineno,changeset and line
238 Returns a list of three element tuples with lineno,changeset and line
239 """
239 """
240 fctx = self._get_filectx(path)
240 fctx = self._get_filectx(path)
241 annotate = []
241 annotate = []
242 for i, annotate_data in enumerate(fctx.annotate()):
242 for i, annotate_data in enumerate(fctx.annotate()):
243 ln_no = i + 1
243 ln_no = i + 1
244 annotate.append((ln_no, self.repository\
244 annotate.append((ln_no, self.repository\
245 .get_changeset(hex(annotate_data[0].node())),
245 .get_changeset(hex(annotate_data[0].node())),
246 annotate_data[1],))
246 annotate_data[1],))
247
247
248 return annotate
248 return annotate
249
249
250 def fill_archive(self, stream=None, kind='tgz', prefix=None,
250 def fill_archive(self, stream=None, kind='tgz', prefix=None,
251 subrepos=False):
251 subrepos=False):
252 """
252 """
253 Fills up given stream.
253 Fills up given stream.
254
254
255 :param stream: file like object.
255 :param stream: file like object.
256 :param kind: one of following: ``zip``, ``tgz`` or ``tbz2``.
256 :param kind: one of following: ``zip``, ``tgz`` or ``tbz2``.
257 Default: ``tgz``.
257 Default: ``tgz``.
258 :param prefix: name of root directory in archive.
258 :param prefix: name of root directory in archive.
259 Default is repository name and changeset's raw_id joined with dash
259 Default is repository name and changeset's raw_id joined with dash
260 (``repo-tip.<KIND>``).
260 (``repo-tip.<KIND>``).
261 :param subrepos: include subrepos in this archive.
261 :param subrepos: include subrepos in this archive.
262
262
263 :raise ImproperArchiveTypeError: If given kind is wrong.
263 :raise ImproperArchiveTypeError: If given kind is wrong.
264 :raise VcsError: If given stream is None
264 :raise VcsError: If given stream is None
265 """
265 """
266
266
267 allowed_kinds = settings.ARCHIVE_SPECS.keys()
267 allowed_kinds = settings.ARCHIVE_SPECS.keys()
268 if kind not in allowed_kinds:
268 if kind not in allowed_kinds:
269 raise ImproperArchiveTypeError('Archive kind not supported use one'
269 raise ImproperArchiveTypeError('Archive kind not supported use one'
270 'of %s', allowed_kinds)
270 'of %s', allowed_kinds)
271
271
272 if stream is None:
272 if stream is None:
273 raise VCSError('You need to pass in a valid stream for filling'
273 raise VCSError('You need to pass in a valid stream for filling'
274 ' with archival data')
274 ' with archival data')
275
275
276 if prefix is None:
276 if prefix is None:
277 prefix = '%s-%s' % (self.repository.name, self.short_id)
277 prefix = '%s-%s' % (self.repository.name, self.short_id)
278 elif prefix.startswith('/'):
278 elif prefix.startswith('/'):
279 raise VCSError("Prefix cannot start with leading slash")
279 raise VCSError("Prefix cannot start with leading slash")
280 elif prefix.strip() == '':
280 elif prefix.strip() == '':
281 raise VCSError("Prefix cannot be empty")
281 raise VCSError("Prefix cannot be empty")
282
282
283 archival.archive(self.repository._repo, stream, self.raw_id,
283 archival.archive(self.repository._repo, stream, self.raw_id,
284 kind, prefix=prefix, subrepos=subrepos)
284 kind, prefix=prefix, subrepos=subrepos)
285
285
286 if stream.closed and hasattr(stream, 'name'):
286 if stream.closed and hasattr(stream, 'name'):
287 stream = open(stream.name, 'rb')
287 stream = open(stream.name, 'rb')
288 elif hasattr(stream, 'mode') and 'r' not in stream.mode:
288 elif hasattr(stream, 'mode') and 'r' not in stream.mode:
289 stream = open(stream.name, 'rb')
289 stream = open(stream.name, 'rb')
290 else:
290 else:
291 stream.seek(0)
291 stream.seek(0)
292
292
293 def get_nodes(self, path):
293 def get_nodes(self, path):
294 """
294 """
295 Returns combined ``DirNode`` and ``FileNode`` objects list representing
295 Returns combined ``DirNode`` and ``FileNode`` objects list representing
296 state of changeset at the given ``path``. If node at the given ``path``
296 state of changeset at the given ``path``. If node at the given ``path``
297 is not instance of ``DirNode``, ChangesetError would be raised.
297 is not instance of ``DirNode``, ChangesetError would be raised.
298 """
298 """
299
299
300 if self._get_kind(path) != NodeKind.DIR:
300 if self._get_kind(path) != NodeKind.DIR:
301 raise ChangesetError("Directory does not exist for revision %r at "
301 raise ChangesetError("Directory does not exist for revision %r at "
302 " %r" % (self.revision, path))
302 " %r" % (self.revision, path))
303 path = self._fix_path(path)
303 path = self._fix_path(path)
304
304
305 filenodes = [FileNode(f, changeset=self) for f in self._file_paths
305 filenodes = [FileNode(f, changeset=self) for f in self._file_paths
306 if os.path.dirname(f) == path]
306 if os.path.dirname(f) == path]
307 dirs = path == '' and '' or [d for d in self._dir_paths
307 dirs = path == '' and '' or [d for d in self._dir_paths
308 if d and posixpath.dirname(d) == path]
308 if d and posixpath.dirname(d) == path]
309 dirnodes = [DirNode(d, changeset=self) for d in dirs
309 dirnodes = [DirNode(d, changeset=self) for d in dirs
310 if os.path.dirname(d) == path]
310 if os.path.dirname(d) == path]
311
311
312 als = self.repository.alias
312 als = self.repository.alias
313 for k, vals in self._extract_submodules().iteritems():
313 for k, vals in self._extract_submodules().iteritems():
314 #vals = url,rev,type
314 #vals = url,rev,type
315 loc = vals[0]
315 loc = vals[0]
316 cs = vals[1]
316 cs = vals[1]
317 dirnodes.append(SubModuleNode(k, url=loc, changeset=cs,
317 dirnodes.append(SubModuleNode(k, url=loc, changeset=cs,
318 alias=als))
318 alias=als))
319 nodes = dirnodes + filenodes
319 nodes = dirnodes + filenodes
320 # cache nodes
320 # cache nodes
321 for node in nodes:
321 for node in nodes:
322 self.nodes[node.path] = node
322 self.nodes[node.path] = node
323 nodes.sort()
323 nodes.sort()
324
324
325 return nodes
325 return nodes
326
326
327 def get_node(self, path):
327 def get_node(self, path):
328 """
328 """
329 Returns ``Node`` object from the given ``path``. If there is no node at
329 Returns ``Node`` object from the given ``path``. If there is no node at
330 the given ``path``, ``ChangesetError`` would be raised.
330 the given ``path``, ``ChangesetError`` would be raised.
331 """
331 """
332
332
333 path = self._fix_path(path)
333 path = self._fix_path(path)
334
334
335 if not path in self.nodes:
335 if not path in self.nodes:
336 if path in self._file_paths:
336 if path in self._file_paths:
337 node = FileNode(path, changeset=self)
337 node = FileNode(path, changeset=self)
338 elif path in self._dir_paths or path in self._dir_paths:
338 elif path in self._dir_paths or path in self._dir_paths:
339 if path == '':
339 if path == '':
340 node = RootNode(changeset=self)
340 node = RootNode(changeset=self)
341 else:
341 else:
342 node = DirNode(path, changeset=self)
342 node = DirNode(path, changeset=self)
343 else:
343 else:
344 raise NodeDoesNotExistError("There is no file nor directory "
344 raise NodeDoesNotExistError("There is no file nor directory "
345 "at the given path: %r at revision %r"
345 "at the given path: %r at revision %r"
346 % (path, self.short_id))
346 % (path, self.short_id))
347 # cache node
347 # cache node
348 self.nodes[path] = node
348 self.nodes[path] = node
349 return self.nodes[path]
349 return self.nodes[path]
350
350
351 @LazyProperty
351 @LazyProperty
352 def affected_files(self):
352 def affected_files(self):
353 """
353 """
354 Get's a fast accessible file changes for given changeset
354 Get's a fast accessible file changes for given changeset
355 """
355 """
356 return self._ctx.files()
356 return self._ctx.files()
357
357
358 @property
358 @property
359 def added(self):
359 def added(self):
360 """
360 """
361 Returns list of added ``FileNode`` objects.
361 Returns list of added ``FileNode`` objects.
362 """
362 """
363 return AddedFileNodesGenerator([n for n in self.status[1]], self)
363 return AddedFileNodesGenerator([n for n in self.status[1]], self)
364
364
365 @property
365 @property
366 def changed(self):
366 def changed(self):
367 """
367 """
368 Returns list of modified ``FileNode`` objects.
368 Returns list of modified ``FileNode`` objects.
369 """
369 """
370 return ChangedFileNodesGenerator([n for n in self.status[0]], self)
370 return ChangedFileNodesGenerator([n for n in self.status[0]], self)
371
371
372 @property
372 @property
373 def removed(self):
373 def removed(self):
374 """
374 """
375 Returns list of removed ``FileNode`` objects.
375 Returns list of removed ``FileNode`` objects.
376 """
376 """
377 return RemovedFileNodesGenerator([n for n in self.status[2]], self)
377 return RemovedFileNodesGenerator([n for n in self.status[2]], self)
@@ -1,4760 +1,4759 b''
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
2 {
2 {
3 border: 0;
3 border: 0;
4 outline: 0;
4 outline: 0;
5 font-size: 100%;
5 font-size: 100%;
6 vertical-align: baseline;
6 vertical-align: baseline;
7 background: transparent;
7 background: transparent;
8 margin: 0;
8 margin: 0;
9 padding: 0;
9 padding: 0;
10 }
10 }
11
11
12 body {
12 body {
13 line-height: 1;
13 line-height: 1;
14 height: 100%;
14 height: 100%;
15 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
16 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
16 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
17 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
17 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
18 color: #000;
18 color: #000;
19 margin: 0;
19 margin: 0;
20 padding: 0;
20 padding: 0;
21 font-size: 12px;
21 font-size: 12px;
22 }
22 }
23
23
24 ol,ul {
24 ol,ul {
25 list-style: none;
25 list-style: none;
26 }
26 }
27
27
28 blockquote,q {
28 blockquote,q {
29 quotes: none;
29 quotes: none;
30 }
30 }
31
31
32 blockquote:before,blockquote:after,q:before,q:after {
32 blockquote:before,blockquote:after,q:before,q:after {
33 content: none;
33 content: none;
34 }
34 }
35
35
36 :focus {
36 :focus {
37 outline: 0;
37 outline: 0;
38 }
38 }
39
39
40 del {
40 del {
41 text-decoration: line-through;
41 text-decoration: line-through;
42 }
42 }
43
43
44 table {
44 table {
45 border-collapse: collapse;
45 border-collapse: collapse;
46 border-spacing: 0;
46 border-spacing: 0;
47 }
47 }
48
48
49 html {
49 html {
50 height: 100%;
50 height: 100%;
51 }
51 }
52
52
53 a {
53 a {
54 color: #003367;
54 color: #003367;
55 text-decoration: none;
55 text-decoration: none;
56 cursor: pointer;
56 cursor: pointer;
57 }
57 }
58
58
59 a:hover {
59 a:hover {
60 color: #316293;
60 color: #316293;
61 text-decoration: underline;
61 text-decoration: underline;
62 }
62 }
63
63
64 h1,h2,h3,h4,h5,h6,
64 h1,h2,h3,h4,h5,h6,
65 div.h1,div.h2,div.h3,div.h4,div.h5,div.h6 {
65 div.h1,div.h2,div.h3,div.h4,div.h5,div.h6 {
66 color: #292929;
66 color: #292929;
67 font-weight: 700;
67 font-weight: 700;
68 }
68 }
69
69
70 h1,div.h1 {
70 h1,div.h1 {
71 font-size: 22px;
71 font-size: 22px;
72 }
72 }
73
73
74 h2,div.h2 {
74 h2,div.h2 {
75 font-size: 20px;
75 font-size: 20px;
76 }
76 }
77
77
78 h3,div.h3 {
78 h3,div.h3 {
79 font-size: 18px;
79 font-size: 18px;
80 }
80 }
81
81
82 h4,div.h4 {
82 h4,div.h4 {
83 font-size: 16px;
83 font-size: 16px;
84 }
84 }
85
85
86 h5,div.h5 {
86 h5,div.h5 {
87 font-size: 14px;
87 font-size: 14px;
88 }
88 }
89
89
90 h6,div.h6 {
90 h6,div.h6 {
91 font-size: 11px;
91 font-size: 11px;
92 }
92 }
93
93
94 ul.circle {
94 ul.circle {
95 list-style-type: circle;
95 list-style-type: circle;
96 }
96 }
97
97
98 ul.disc {
98 ul.disc {
99 list-style-type: disc;
99 list-style-type: disc;
100 }
100 }
101
101
102 ul.square {
102 ul.square {
103 list-style-type: square;
103 list-style-type: square;
104 }
104 }
105
105
106 ol.lower-roman {
106 ol.lower-roman {
107 list-style-type: lower-roman;
107 list-style-type: lower-roman;
108 }
108 }
109
109
110 ol.upper-roman {
110 ol.upper-roman {
111 list-style-type: upper-roman;
111 list-style-type: upper-roman;
112 }
112 }
113
113
114 ol.lower-alpha {
114 ol.lower-alpha {
115 list-style-type: lower-alpha;
115 list-style-type: lower-alpha;
116 }
116 }
117
117
118 ol.upper-alpha {
118 ol.upper-alpha {
119 list-style-type: upper-alpha;
119 list-style-type: upper-alpha;
120 }
120 }
121
121
122 ol.decimal {
122 ol.decimal {
123 list-style-type: decimal;
123 list-style-type: decimal;
124 }
124 }
125
125
126 div.color {
126 div.color {
127 clear: both;
127 clear: both;
128 overflow: hidden;
128 overflow: hidden;
129 position: absolute;
129 position: absolute;
130 background: #FFF;
130 background: #FFF;
131 margin: 7px 0 0 60px;
131 margin: 7px 0 0 60px;
132 padding: 1px 1px 1px 0;
132 padding: 1px 1px 1px 0;
133 }
133 }
134
134
135 div.color a {
135 div.color a {
136 width: 15px;
136 width: 15px;
137 height: 15px;
137 height: 15px;
138 display: block;
138 display: block;
139 float: left;
139 float: left;
140 margin: 0 0 0 1px;
140 margin: 0 0 0 1px;
141 padding: 0;
141 padding: 0;
142 }
142 }
143
143
144 div.options {
144 div.options {
145 clear: both;
145 clear: both;
146 overflow: hidden;
146 overflow: hidden;
147 position: absolute;
147 position: absolute;
148 background: #FFF;
148 background: #FFF;
149 margin: 7px 0 0 162px;
149 margin: 7px 0 0 162px;
150 padding: 0;
150 padding: 0;
151 }
151 }
152
152
153 div.options a {
153 div.options a {
154 height: 1%;
154 height: 1%;
155 display: block;
155 display: block;
156 text-decoration: none;
156 text-decoration: none;
157 margin: 0;
157 margin: 0;
158 padding: 3px 8px;
158 padding: 3px 8px;
159 }
159 }
160
160
161 .top-left-rounded-corner {
161 .top-left-rounded-corner {
162 -webkit-border-top-left-radius: 8px;
162 -webkit-border-top-left-radius: 8px;
163 -khtml-border-radius-topleft: 8px;
163 -khtml-border-radius-topleft: 8px;
164 -moz-border-radius-topleft: 8px;
164 -moz-border-radius-topleft: 8px;
165 border-top-left-radius: 8px;
165 border-top-left-radius: 8px;
166 }
166 }
167
167
168 .top-right-rounded-corner {
168 .top-right-rounded-corner {
169 -webkit-border-top-right-radius: 8px;
169 -webkit-border-top-right-radius: 8px;
170 -khtml-border-radius-topright: 8px;
170 -khtml-border-radius-topright: 8px;
171 -moz-border-radius-topright: 8px;
171 -moz-border-radius-topright: 8px;
172 border-top-right-radius: 8px;
172 border-top-right-radius: 8px;
173 }
173 }
174
174
175 .bottom-left-rounded-corner {
175 .bottom-left-rounded-corner {
176 -webkit-border-bottom-left-radius: 8px;
176 -webkit-border-bottom-left-radius: 8px;
177 -khtml-border-radius-bottomleft: 8px;
177 -khtml-border-radius-bottomleft: 8px;
178 -moz-border-radius-bottomleft: 8px;
178 -moz-border-radius-bottomleft: 8px;
179 border-bottom-left-radius: 8px;
179 border-bottom-left-radius: 8px;
180 }
180 }
181
181
182 .bottom-right-rounded-corner {
182 .bottom-right-rounded-corner {
183 -webkit-border-bottom-right-radius: 8px;
183 -webkit-border-bottom-right-radius: 8px;
184 -khtml-border-radius-bottomright: 8px;
184 -khtml-border-radius-bottomright: 8px;
185 -moz-border-radius-bottomright: 8px;
185 -moz-border-radius-bottomright: 8px;
186 border-bottom-right-radius: 8px;
186 border-bottom-right-radius: 8px;
187 }
187 }
188
188
189 .top-left-rounded-corner-mid {
189 .top-left-rounded-corner-mid {
190 -webkit-border-top-left-radius: 4px;
190 -webkit-border-top-left-radius: 4px;
191 -khtml-border-radius-topleft: 4px;
191 -khtml-border-radius-topleft: 4px;
192 -moz-border-radius-topleft: 4px;
192 -moz-border-radius-topleft: 4px;
193 border-top-left-radius: 4px;
193 border-top-left-radius: 4px;
194 }
194 }
195
195
196 .top-right-rounded-corner-mid {
196 .top-right-rounded-corner-mid {
197 -webkit-border-top-right-radius: 4px;
197 -webkit-border-top-right-radius: 4px;
198 -khtml-border-radius-topright: 4px;
198 -khtml-border-radius-topright: 4px;
199 -moz-border-radius-topright: 4px;
199 -moz-border-radius-topright: 4px;
200 border-top-right-radius: 4px;
200 border-top-right-radius: 4px;
201 }
201 }
202
202
203 .bottom-left-rounded-corner-mid {
203 .bottom-left-rounded-corner-mid {
204 -webkit-border-bottom-left-radius: 4px;
204 -webkit-border-bottom-left-radius: 4px;
205 -khtml-border-radius-bottomleft: 4px;
205 -khtml-border-radius-bottomleft: 4px;
206 -moz-border-radius-bottomleft: 4px;
206 -moz-border-radius-bottomleft: 4px;
207 border-bottom-left-radius: 4px;
207 border-bottom-left-radius: 4px;
208 }
208 }
209
209
210 .bottom-right-rounded-corner-mid {
210 .bottom-right-rounded-corner-mid {
211 -webkit-border-bottom-right-radius: 4px;
211 -webkit-border-bottom-right-radius: 4px;
212 -khtml-border-radius-bottomright: 4px;
212 -khtml-border-radius-bottomright: 4px;
213 -moz-border-radius-bottomright: 4px;
213 -moz-border-radius-bottomright: 4px;
214 border-bottom-right-radius: 4px;
214 border-bottom-right-radius: 4px;
215 }
215 }
216
216
217 .help-block {
217 .help-block {
218 color: #999999;
218 color: #999999;
219 display: block;
219 display: block;
220 margin-bottom: 0;
220 margin-bottom: 0;
221 margin-top: 5px;
221 margin-top: 5px;
222 }
222 }
223
223
224 .empty_data{
224 .empty_data{
225 color:#B9B9B9;
225 color:#B9B9B9;
226 }
226 }
227
227
228 a.permalink{
228 a.permalink{
229 visibility: hidden;
229 visibility: hidden;
230 }
230 }
231
231
232 a.permalink:hover{
232 a.permalink:hover{
233 text-decoration: none;
233 text-decoration: none;
234 }
234 }
235
235
236 h1:hover > a.permalink,
236 h1:hover > a.permalink,
237 h2:hover > a.permalink,
237 h2:hover > a.permalink,
238 h3:hover > a.permalink,
238 h3:hover > a.permalink,
239 h4:hover > a.permalink,
239 h4:hover > a.permalink,
240 h5:hover > a.permalink,
240 h5:hover > a.permalink,
241 h6:hover > a.permalink,
241 h6:hover > a.permalink,
242 div:hover > a.permalink {
242 div:hover > a.permalink {
243 visibility: visible;
243 visibility: visible;
244 }
244 }
245
245
246 #header {
246 #header {
247 margin: 0;
247 margin: 0;
248 padding: 0 10px;
248 padding: 0 10px;
249 }
249 }
250
250
251 #header ul#logged-user {
251 #header ul#logged-user {
252 margin-bottom: 5px !important;
252 margin-bottom: 5px !important;
253 -webkit-border-radius: 0px 0px 8px 8px;
253 -webkit-border-radius: 0px 0px 8px 8px;
254 -khtml-border-radius: 0px 0px 8px 8px;
254 -khtml-border-radius: 0px 0px 8px 8px;
255 -moz-border-radius: 0px 0px 8px 8px;
255 -moz-border-radius: 0px 0px 8px 8px;
256 border-radius: 0px 0px 8px 8px;
256 border-radius: 0px 0px 8px 8px;
257 height: 37px;
257 height: 37px;
258 background-color: #003B76;
258 background-color: #003B76;
259 background-repeat: repeat-x;
259 background-repeat: repeat-x;
260 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
260 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
261 background-image: -moz-linear-gradient(top, #003b76, #00376e);
261 background-image: -moz-linear-gradient(top, #003b76, #00376e);
262 background-image: -ms-linear-gradient(top, #003b76, #00376e);
262 background-image: -ms-linear-gradient(top, #003b76, #00376e);
263 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
263 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
264 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
264 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
265 background-image: -o-linear-gradient(top, #003b76, #00376e);
265 background-image: -o-linear-gradient(top, #003b76, #00376e);
266 background-image: linear-gradient(top, #003b76, #00376e);
266 background-image: linear-gradient(top, #003b76, #00376e);
267 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
267 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
268 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
268 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
269 }
269 }
270
270
271 #header ul#logged-user li {
271 #header ul#logged-user li {
272 list-style: none;
272 list-style: none;
273 float: left;
273 float: left;
274 margin: 8px 0 0;
274 margin: 8px 0 0;
275 padding: 4px 12px;
275 padding: 4px 12px;
276 border-left: 1px solid #316293;
276 border-left: 1px solid #316293;
277 }
277 }
278
278
279 #header ul#logged-user li.first {
279 #header ul#logged-user li.first {
280 border-left: none;
280 border-left: none;
281 margin: 4px;
281 margin: 4px;
282 }
282 }
283
283
284 #header ul#logged-user li.first div.gravatar {
284 #header ul#logged-user li.first div.gravatar {
285 margin-top: -2px;
285 margin-top: -2px;
286 }
286 }
287
287
288 #header ul#logged-user li.first div.account {
288 #header ul#logged-user li.first div.account {
289 padding-top: 4px;
289 padding-top: 4px;
290 float: left;
290 float: left;
291 }
291 }
292
292
293 #header ul#logged-user li.last {
293 #header ul#logged-user li.last {
294 border-right: none;
294 border-right: none;
295 }
295 }
296
296
297 #header ul#logged-user li a {
297 #header ul#logged-user li a {
298 color: #fff;
298 color: #fff;
299 font-weight: 700;
299 font-weight: 700;
300 text-decoration: none;
300 text-decoration: none;
301 }
301 }
302
302
303 #header ul#logged-user li a:hover {
303 #header ul#logged-user li a:hover {
304 text-decoration: underline;
304 text-decoration: underline;
305 }
305 }
306
306
307 #header ul#logged-user li.highlight a {
307 #header ul#logged-user li.highlight a {
308 color: #fff;
308 color: #fff;
309 }
309 }
310
310
311 #header ul#logged-user li.highlight a:hover {
311 #header ul#logged-user li.highlight a:hover {
312 color: #FFF;
312 color: #FFF;
313 }
313 }
314
314
315 #header #header-inner {
315 #header #header-inner {
316 min-height: 44px;
316 min-height: 44px;
317 clear: both;
317 clear: both;
318 position: relative;
318 position: relative;
319 background-color: #003B76;
319 background-color: #003B76;
320 background-repeat: repeat-x;
320 background-repeat: repeat-x;
321 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
321 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
322 background-image: -moz-linear-gradient(top, #003b76, #00376e);
322 background-image: -moz-linear-gradient(top, #003b76, #00376e);
323 background-image: -ms-linear-gradient(top, #003b76, #00376e);
323 background-image: -ms-linear-gradient(top, #003b76, #00376e);
324 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),color-stop(100%, #00376e) );
324 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),color-stop(100%, #00376e) );
325 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
325 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
326 background-image: -o-linear-gradient(top, #003b76, #00376e);
326 background-image: -o-linear-gradient(top, #003b76, #00376e);
327 background-image: linear-gradient(top, #003b76, #00376e);
327 background-image: linear-gradient(top, #003b76, #00376e);
328 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
328 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
329 margin: 0;
329 margin: 0;
330 padding: 0;
330 padding: 0;
331 display: block;
331 display: block;
332 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
332 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
333 -webkit-border-radius: 4px 4px 4px 4px;
333 -webkit-border-radius: 4px 4px 4px 4px;
334 -khtml-border-radius: 4px 4px 4px 4px;
334 -khtml-border-radius: 4px 4px 4px 4px;
335 -moz-border-radius: 4px 4px 4px 4px;
335 -moz-border-radius: 4px 4px 4px 4px;
336 border-radius: 4px 4px 4px 4px;
336 border-radius: 4px 4px 4px 4px;
337 }
337 }
338 #header #header-inner.hover{
338 #header #header-inner.hover{
339 position: fixed !important;
339 position: fixed !important;
340 width: 100% !important;
340 width: 100% !important;
341 margin-left: -10px !important;
341 margin-left: -10px !important;
342 z-index: 10000;
342 z-index: 10000;
343 -webkit-border-radius: 0px 0px 0px 0px;
343 -webkit-border-radius: 0px 0px 0px 0px;
344 -khtml-border-radius: 0px 0px 0px 0px;
344 -khtml-border-radius: 0px 0px 0px 0px;
345 -moz-border-radius: 0px 0px 0px 0px;
345 -moz-border-radius: 0px 0px 0px 0px;
346 border-radius: 0px 0px 0px 0px;
346 border-radius: 0px 0px 0px 0px;
347 }
347 }
348
348
349 .ie7 #header #header-inner.hover,
349 .ie7 #header #header-inner.hover,
350 .ie8 #header #header-inner.hover,
350 .ie8 #header #header-inner.hover,
351 .ie9 #header #header-inner.hover
351 .ie9 #header #header-inner.hover
352 {
352 {
353 z-index: auto !important;
353 z-index: auto !important;
354 }
354 }
355
355
356 .header-pos-fix, .anchor{
356 .header-pos-fix, .anchor{
357 margin-top: -46px;
357 margin-top: -46px;
358 padding-top: 46px;
358 padding-top: 46px;
359 }
359 }
360
360
361 #header #header-inner #home a {
361 #header #header-inner #home a {
362 height: 40px;
362 height: 40px;
363 width: 46px;
363 width: 46px;
364 display: block;
364 display: block;
365 background: url("../images/button_home.png");
365 background: url("../images/button_home.png");
366 background-position: 0 0;
366 background-position: 0 0;
367 margin: 0;
367 margin: 0;
368 padding: 0;
368 padding: 0;
369 }
369 }
370
370
371 #header #header-inner #home a:hover {
371 #header #header-inner #home a:hover {
372 background-position: 0 -40px;
372 background-position: 0 -40px;
373 }
373 }
374
374
375 #header #header-inner #logo {
375 #header #header-inner #logo {
376 float: left;
376 float: left;
377 position: absolute;
377 position: absolute;
378 }
378 }
379
379
380 #header #header-inner #logo h1 {
380 #header #header-inner #logo h1 {
381 color: #FFF;
381 color: #FFF;
382 font-size: 20px;
382 font-size: 20px;
383 margin: 12px 0 0 13px;
383 margin: 12px 0 0 13px;
384 padding: 0;
384 padding: 0;
385 }
385 }
386
386
387 #header #header-inner #logo a {
387 #header #header-inner #logo a {
388 color: #fff;
388 color: #fff;
389 text-decoration: none;
389 text-decoration: none;
390 }
390 }
391
391
392 #header #header-inner #logo a:hover {
392 #header #header-inner #logo a:hover {
393 color: #bfe3ff;
393 color: #bfe3ff;
394 }
394 }
395
395
396 #header #header-inner #quick,#header #header-inner #quick ul {
396 #header #header-inner #quick,#header #header-inner #quick ul {
397 position: relative;
397 position: relative;
398 float: right;
398 float: right;
399 list-style-type: none;
399 list-style-type: none;
400 list-style-position: outside;
400 list-style-position: outside;
401 margin: 8px 8px 0 0;
401 margin: 8px 8px 0 0;
402 padding: 0;
402 padding: 0;
403 }
403 }
404
404
405 #header #header-inner #quick li {
405 #header #header-inner #quick li {
406 position: relative;
406 position: relative;
407 float: left;
407 float: left;
408 margin: 0 5px 0 0;
408 margin: 0 5px 0 0;
409 padding: 0;
409 padding: 0;
410 }
410 }
411
411
412 #header #header-inner #quick li a.menu_link {
412 #header #header-inner #quick li a.menu_link {
413 top: 0;
413 top: 0;
414 left: 0;
414 left: 0;
415 height: 1%;
415 height: 1%;
416 display: block;
416 display: block;
417 clear: both;
417 clear: both;
418 overflow: hidden;
418 overflow: hidden;
419 color: #FFF;
419 color: #FFF;
420 font-weight: 700;
420 font-weight: 700;
421 text-decoration: none;
421 text-decoration: none;
422 background: #369;
422 background: #369;
423 padding: 0;
423 padding: 0;
424 -webkit-border-radius: 4px 4px 4px 4px;
424 -webkit-border-radius: 4px 4px 4px 4px;
425 -khtml-border-radius: 4px 4px 4px 4px;
425 -khtml-border-radius: 4px 4px 4px 4px;
426 -moz-border-radius: 4px 4px 4px 4px;
426 -moz-border-radius: 4px 4px 4px 4px;
427 border-radius: 4px 4px 4px 4px;
427 border-radius: 4px 4px 4px 4px;
428 }
428 }
429
429
430 #header #header-inner #quick li span.short {
430 #header #header-inner #quick li span.short {
431 padding: 9px 6px 8px 6px;
431 padding: 9px 6px 8px 6px;
432 }
432 }
433
433
434 #header #header-inner #quick li span {
434 #header #header-inner #quick li span {
435 top: 0;
435 top: 0;
436 right: 0;
436 right: 0;
437 height: 1%;
437 height: 1%;
438 display: block;
438 display: block;
439 float: left;
439 float: left;
440 border-left: 1px solid #3f6f9f;
440 border-left: 1px solid #3f6f9f;
441 margin: 0;
441 margin: 0;
442 padding: 10px 12px 8px 10px;
442 padding: 10px 12px 8px 10px;
443 }
443 }
444
444
445 #header #header-inner #quick li span.normal {
445 #header #header-inner #quick li span.normal {
446 border: none;
446 border: none;
447 padding: 10px 12px 8px;
447 padding: 10px 12px 8px;
448 }
448 }
449
449
450 #header #header-inner #quick li span.icon {
450 #header #header-inner #quick li span.icon {
451 top: 0;
451 top: 0;
452 left: 0;
452 left: 0;
453 border-left: none;
453 border-left: none;
454 border-right: 1px solid #2e5c89;
454 border-right: 1px solid #2e5c89;
455 padding: 8px 6px 4px;
455 padding: 8px 6px 4px;
456 }
456 }
457
457
458 #header #header-inner #quick li span.icon_short {
458 #header #header-inner #quick li span.icon_short {
459 top: 0;
459 top: 0;
460 left: 0;
460 left: 0;
461 border-left: none;
461 border-left: none;
462 border-right: 1px solid #2e5c89;
462 border-right: 1px solid #2e5c89;
463 padding: 8px 6px 4px;
463 padding: 8px 6px 4px;
464 }
464 }
465
465
466 #header #header-inner #quick li span.icon img,#header #header-inner #quick li span.icon_short img
466 #header #header-inner #quick li span.icon img,#header #header-inner #quick li span.icon_short img
467 {
467 {
468 margin: 0px -2px 0px 0px;
468 margin: 0px -2px 0px 0px;
469 }
469 }
470
470
471 #header #header-inner #quick li a:hover {
471 #header #header-inner #quick li a:hover {
472 background: #4e4e4e no-repeat top left;
472 background: #4e4e4e no-repeat top left;
473 }
473 }
474
474
475 #header #header-inner #quick li a:hover span {
475 #header #header-inner #quick li a:hover span {
476 border-left: 1px solid #545454;
476 border-left: 1px solid #545454;
477 }
477 }
478
478
479 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short
479 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short
480 {
480 {
481 border-left: none;
481 border-left: none;
482 border-right: 1px solid #464646;
482 border-right: 1px solid #464646;
483 }
483 }
484
484
485 #header #header-inner #quick ul {
485 #header #header-inner #quick ul {
486 top: 29px;
486 top: 29px;
487 right: 0;
487 right: 0;
488 min-width: 200px;
488 min-width: 200px;
489 display: none;
489 display: none;
490 position: absolute;
490 position: absolute;
491 background: #FFF;
491 background: #FFF;
492 border: 1px solid #666;
492 border: 1px solid #666;
493 border-top: 1px solid #003367;
493 border-top: 1px solid #003367;
494 z-index: 100;
494 z-index: 100;
495 margin: 0px 0px 0px 0px;
495 margin: 0px 0px 0px 0px;
496 padding: 0;
496 padding: 0;
497 }
497 }
498
498
499 #header #header-inner #quick ul.repo_switcher {
499 #header #header-inner #quick ul.repo_switcher {
500 max-height: 275px;
500 max-height: 275px;
501 overflow-x: hidden;
501 overflow-x: hidden;
502 overflow-y: auto;
502 overflow-y: auto;
503 }
503 }
504
504
505 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
505 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
506 float: none;
506 float: none;
507 margin: 0;
507 margin: 0;
508 border-bottom: 2px solid #003367;
508 border-bottom: 2px solid #003367;
509 }
509 }
510
510
511 #header #header-inner #quick .repo_switcher_type {
511 #header #header-inner #quick .repo_switcher_type {
512 position: absolute;
512 position: absolute;
513 left: 0;
513 left: 0;
514 top: 9px;
514 top: 9px;
515 }
515 }
516
516
517 #header #header-inner #quick li ul li {
517 #header #header-inner #quick li ul li {
518 border-bottom: 1px solid #ddd;
518 border-bottom: 1px solid #ddd;
519 }
519 }
520
520
521 #header #header-inner #quick li ul li a {
521 #header #header-inner #quick li ul li a {
522 width: 182px;
522 width: 182px;
523 height: auto;
523 height: auto;
524 display: block;
524 display: block;
525 float: left;
525 float: left;
526 background: #FFF;
526 background: #FFF;
527 color: #003367;
527 color: #003367;
528 font-weight: 400;
528 font-weight: 400;
529 margin: 0;
529 margin: 0;
530 padding: 7px 9px;
530 padding: 7px 9px;
531 }
531 }
532
532
533 #header #header-inner #quick li ul li a:hover {
533 #header #header-inner #quick li ul li a:hover {
534 color: #000;
534 color: #000;
535 background: #FFF;
535 background: #FFF;
536 }
536 }
537
537
538 #header #header-inner #quick ul ul {
538 #header #header-inner #quick ul ul {
539 top: auto;
539 top: auto;
540 }
540 }
541
541
542 #header #header-inner #quick li ul ul {
542 #header #header-inner #quick li ul ul {
543 right: 200px;
543 right: 200px;
544 max-height: 275px;
544 max-height: 275px;
545 overflow: auto;
545 overflow: auto;
546 overflow-x: hidden;
546 overflow-x: hidden;
547 white-space: normal;
547 white-space: normal;
548 }
548 }
549
549
550 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover
550 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover
551 {
551 {
552 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
552 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
553 #FFF;
553 #FFF;
554 width: 167px;
554 width: 167px;
555 margin: 0;
555 margin: 0;
556 padding: 12px 9px 7px 24px;
556 padding: 12px 9px 7px 24px;
557 }
557 }
558
558
559 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover
559 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover
560 {
560 {
561 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
561 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
562 #FFF;
562 #FFF;
563 min-width: 167px;
563 min-width: 167px;
564 margin: 0;
564 margin: 0;
565 padding: 12px 9px 7px 24px;
565 padding: 12px 9px 7px 24px;
566 }
566 }
567
567
568 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover
568 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover
569 {
569 {
570 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
570 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
571 9px #FFF;
571 9px #FFF;
572 min-width: 167px;
572 min-width: 167px;
573 margin: 0;
573 margin: 0;
574 padding: 12px 9px 7px 24px;
574 padding: 12px 9px 7px 24px;
575 }
575 }
576
576
577 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover
577 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover
578 {
578 {
579 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
579 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
580 #FFF;
580 #FFF;
581 min-width: 167px;
581 min-width: 167px;
582 margin: 0 0 0 14px;
582 margin: 0 0 0 14px;
583 padding: 12px 9px 7px 24px;
583 padding: 12px 9px 7px 24px;
584 }
584 }
585
585
586 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover
586 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover
587 {
587 {
588 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
588 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
589 #FFF;
589 #FFF;
590 min-width: 167px;
590 min-width: 167px;
591 margin: 0 0 0 14px;
591 margin: 0 0 0 14px;
592 padding: 12px 9px 7px 24px;
592 padding: 12px 9px 7px 24px;
593 }
593 }
594
594
595 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
595 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
596 {
596 {
597 background: url("../images/icons/database_edit.png") no-repeat scroll
597 background: url("../images/icons/database_edit.png") no-repeat scroll
598 4px 9px #FFF;
598 4px 9px #FFF;
599 width: 167px;
599 width: 167px;
600 margin: 0;
600 margin: 0;
601 padding: 12px 9px 7px 24px;
601 padding: 12px 9px 7px 24px;
602 }
602 }
603
603
604 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover
604 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover
605 {
605 {
606 background: url("../images/icons/database_link.png") no-repeat scroll
606 background: url("../images/icons/database_link.png") no-repeat scroll
607 4px 9px #FFF;
607 4px 9px #FFF;
608 width: 167px;
608 width: 167px;
609 margin: 0;
609 margin: 0;
610 padding: 12px 9px 7px 24px;
610 padding: 12px 9px 7px 24px;
611 }
611 }
612
612
613 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
613 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
614 {
614 {
615 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
615 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
616 width: 167px;
616 width: 167px;
617 margin: 0;
617 margin: 0;
618 padding: 12px 9px 7px 24px;
618 padding: 12px 9px 7px 24px;
619 }
619 }
620
620
621 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover
621 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover
622 {
622 {
623 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
623 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
624 width: 167px;
624 width: 167px;
625 margin: 0;
625 margin: 0;
626 padding: 12px 9px 7px 24px;
626 padding: 12px 9px 7px 24px;
627 }
627 }
628
628
629 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
629 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
630 {
630 {
631 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
631 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
632 width: 167px;
632 width: 167px;
633 margin: 0;
633 margin: 0;
634 padding: 12px 9px 7px 24px;
634 padding: 12px 9px 7px 24px;
635 }
635 }
636
636
637 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
637 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
638 {
638 {
639 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
639 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
640 width: 167px;
640 width: 167px;
641 margin: 0;
641 margin: 0;
642 padding: 12px 9px 7px 24px;
642 padding: 12px 9px 7px 24px;
643 }
643 }
644
644
645 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover
645 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover
646 {
646 {
647 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
647 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
648 width: 167px;
648 width: 167px;
649 margin: 0;
649 margin: 0;
650 padding: 12px 9px 7px 24px;
650 padding: 12px 9px 7px 24px;
651 }
651 }
652
652
653 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover
653 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover
654 {
654 {
655 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
655 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
656 9px;
656 9px;
657 width: 167px;
657 width: 167px;
658 margin: 0;
658 margin: 0;
659 padding: 12px 9px 7px 24px;
659 padding: 12px 9px 7px 24px;
660 }
660 }
661
661
662 #header #header-inner #quick li ul li a.locking_add,#header #header-inner #quick li ul li a.locking_add:hover
662 #header #header-inner #quick li ul li a.locking_add,#header #header-inner #quick li ul li a.locking_add:hover
663 {
663 {
664 background: #FFF url("../images/icons/lock_add.png") no-repeat 4px
664 background: #FFF url("../images/icons/lock_add.png") no-repeat 4px
665 9px;
665 9px;
666 width: 167px;
666 width: 167px;
667 margin: 0;
667 margin: 0;
668 padding: 12px 9px 7px 24px;
668 padding: 12px 9px 7px 24px;
669 }
669 }
670
670
671 #header #header-inner #quick li ul li a.locking_del,#header #header-inner #quick li ul li a.locking_del:hover
671 #header #header-inner #quick li ul li a.locking_del,#header #header-inner #quick li ul li a.locking_del:hover
672 {
672 {
673 background: #FFF url("../images/icons/lock_delete.png") no-repeat 4px
673 background: #FFF url("../images/icons/lock_delete.png") no-repeat 4px
674 9px;
674 9px;
675 width: 167px;
675 width: 167px;
676 margin: 0;
676 margin: 0;
677 padding: 12px 9px 7px 24px;
677 padding: 12px 9px 7px 24px;
678 }
678 }
679
679
680 #header #header-inner #quick li ul li a.pull_request,#header #header-inner #quick li ul li a.pull_request:hover
680 #header #header-inner #quick li ul li a.pull_request,#header #header-inner #quick li ul li a.pull_request:hover
681 {
681 {
682 background: #FFF url("../images/icons/arrow_join.png") no-repeat 4px
682 background: #FFF url("../images/icons/arrow_join.png") no-repeat 4px
683 9px;
683 9px;
684 width: 167px;
684 width: 167px;
685 margin: 0;
685 margin: 0;
686 padding: 12px 9px 7px 24px;
686 padding: 12px 9px 7px 24px;
687 }
687 }
688
688
689 #header #header-inner #quick li ul li a.compare_request,#header #header-inner #quick li ul li a.compare_request:hover
689 #header #header-inner #quick li ul li a.compare_request,#header #header-inner #quick li ul li a.compare_request:hover
690 {
690 {
691 background: #FFF url("../images/icons/arrow_inout.png") no-repeat 4px
691 background: #FFF url("../images/icons/arrow_inout.png") no-repeat 4px
692 9px;
692 9px;
693 width: 167px;
693 width: 167px;
694 margin: 0;
694 margin: 0;
695 padding: 12px 9px 7px 24px;
695 padding: 12px 9px 7px 24px;
696 }
696 }
697
697
698 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover
698 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover
699 {
699 {
700 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
700 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
701 width: 167px;
701 width: 167px;
702 margin: 0;
702 margin: 0;
703 padding: 12px 9px 7px 24px;
703 padding: 12px 9px 7px 24px;
704 }
704 }
705
705
706 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover
706 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover
707 {
707 {
708 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
708 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
709 width: 167px;
709 width: 167px;
710 margin: 0;
710 margin: 0;
711 padding: 12px 9px 7px 24px;
711 padding: 12px 9px 7px 24px;
712 }
712 }
713
713
714 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover
714 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover
715 {
715 {
716 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
716 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
717 9px;
717 9px;
718 width: 167px;
718 width: 167px;
719 margin: 0;
719 margin: 0;
720 padding: 12px 9px 7px 24px;
720 padding: 12px 9px 7px 24px;
721 }
721 }
722
722
723 #header #header-inner #quick li ul li a.tags,
723 #header #header-inner #quick li ul li a.tags,
724 #header #header-inner #quick li ul li a.tags:hover{
724 #header #header-inner #quick li ul li a.tags:hover{
725 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
725 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
726 width: 167px;
726 width: 167px;
727 margin: 0;
727 margin: 0;
728 padding: 12px 9px 7px 24px;
728 padding: 12px 9px 7px 24px;
729 }
729 }
730
730
731 #header #header-inner #quick li ul li a.bookmarks,
731 #header #header-inner #quick li ul li a.bookmarks,
732 #header #header-inner #quick li ul li a.bookmarks:hover{
732 #header #header-inner #quick li ul li a.bookmarks:hover{
733 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
733 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
734 width: 167px;
734 width: 167px;
735 margin: 0;
735 margin: 0;
736 padding: 12px 9px 7px 24px;
736 padding: 12px 9px 7px 24px;
737 }
737 }
738
738
739 #header #header-inner #quick li ul li a.admin,
739 #header #header-inner #quick li ul li a.admin,
740 #header #header-inner #quick li ul li a.admin:hover{
740 #header #header-inner #quick li ul li a.admin:hover{
741 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
741 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
742 width: 167px;
742 width: 167px;
743 margin: 0;
743 margin: 0;
744 padding: 12px 9px 7px 24px;
744 padding: 12px 9px 7px 24px;
745 }
745 }
746
746
747 .groups_breadcrumbs a {
747 .groups_breadcrumbs a {
748 color: #fff;
748 color: #fff;
749 }
749 }
750
750
751 .groups_breadcrumbs a:hover {
751 .groups_breadcrumbs a:hover {
752 color: #bfe3ff;
752 color: #bfe3ff;
753 text-decoration: none;
753 text-decoration: none;
754 }
754 }
755
755
756 td.quick_repo_menu {
756 td.quick_repo_menu {
757 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
757 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
758 cursor: pointer;
758 cursor: pointer;
759 width: 8px;
759 width: 8px;
760 border: 1px solid transparent;
760 border: 1px solid transparent;
761 }
761 }
762
762
763 td.quick_repo_menu.active {
763 td.quick_repo_menu.active {
764 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
764 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
765 border: 1px solid #003367;
765 border: 1px solid #003367;
766 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
766 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
767 cursor: pointer;
767 cursor: pointer;
768 }
768 }
769
769
770 td.quick_repo_menu .menu_items {
770 td.quick_repo_menu .menu_items {
771 margin-top: 10px;
771 margin-top: 10px;
772 margin-left:-6px;
772 margin-left:-6px;
773 width: 150px;
773 width: 150px;
774 position: absolute;
774 position: absolute;
775 background-color: #FFF;
775 background-color: #FFF;
776 background: none repeat scroll 0 0 #FFFFFF;
776 background: none repeat scroll 0 0 #FFFFFF;
777 border-color: #003367 #666666 #666666;
777 border-color: #003367 #666666 #666666;
778 border-right: 1px solid #666666;
778 border-right: 1px solid #666666;
779 border-style: solid;
779 border-style: solid;
780 border-width: 1px;
780 border-width: 1px;
781 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
781 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
782 border-top-style: none;
782 border-top-style: none;
783 }
783 }
784
784
785 td.quick_repo_menu .menu_items li {
785 td.quick_repo_menu .menu_items li {
786 padding: 0 !important;
786 padding: 0 !important;
787 }
787 }
788
788
789 td.quick_repo_menu .menu_items a {
789 td.quick_repo_menu .menu_items a {
790 display: block;
790 display: block;
791 padding: 4px 12px 4px 8px;
791 padding: 4px 12px 4px 8px;
792 }
792 }
793
793
794 td.quick_repo_menu .menu_items a:hover {
794 td.quick_repo_menu .menu_items a:hover {
795 background-color: #EEE;
795 background-color: #EEE;
796 text-decoration: none;
796 text-decoration: none;
797 }
797 }
798
798
799 td.quick_repo_menu .menu_items .icon img {
799 td.quick_repo_menu .menu_items .icon img {
800 margin-bottom: -2px;
800 margin-bottom: -2px;
801 }
801 }
802
802
803 td.quick_repo_menu .menu_items.hidden {
803 td.quick_repo_menu .menu_items.hidden {
804 display: none;
804 display: none;
805 }
805 }
806
806
807 .yui-dt-first th {
807 .yui-dt-first th {
808 text-align: left;
808 text-align: left;
809 }
809 }
810
810
811 /*
811 /*
812 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
812 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
813 Code licensed under the BSD License:
813 Code licensed under the BSD License:
814 http://developer.yahoo.com/yui/license.html
814 http://developer.yahoo.com/yui/license.html
815 version: 2.9.0
815 version: 2.9.0
816 */
816 */
817 .yui-skin-sam .yui-dt-mask {
817 .yui-skin-sam .yui-dt-mask {
818 position: absolute;
818 position: absolute;
819 z-index: 9500;
819 z-index: 9500;
820 }
820 }
821 .yui-dt-tmp {
821 .yui-dt-tmp {
822 position: absolute;
822 position: absolute;
823 left: -9000px;
823 left: -9000px;
824 }
824 }
825 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
825 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
826 .yui-dt-scrollable .yui-dt-hd {
826 .yui-dt-scrollable .yui-dt-hd {
827 overflow: hidden;
827 overflow: hidden;
828 position: relative;
828 position: relative;
829 }
829 }
830 .yui-dt-scrollable .yui-dt-bd thead tr,
830 .yui-dt-scrollable .yui-dt-bd thead tr,
831 .yui-dt-scrollable .yui-dt-bd thead th {
831 .yui-dt-scrollable .yui-dt-bd thead th {
832 position: absolute;
832 position: absolute;
833 left: -1500px;
833 left: -1500px;
834 }
834 }
835 .yui-dt-scrollable tbody { -moz-outline: 0 }
835 .yui-dt-scrollable tbody { -moz-outline: 0 }
836 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
836 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
837 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
837 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
838 .yui-dt-coltarget {
838 .yui-dt-coltarget {
839 position: absolute;
839 position: absolute;
840 z-index: 999;
840 z-index: 999;
841 }
841 }
842 .yui-dt-hd { zoom: 1 }
842 .yui-dt-hd { zoom: 1 }
843 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
843 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
844 .yui-dt-resizer {
844 .yui-dt-resizer {
845 position: absolute;
845 position: absolute;
846 right: 0;
846 right: 0;
847 bottom: 0;
847 bottom: 0;
848 height: 100%;
848 height: 100%;
849 cursor: e-resize;
849 cursor: e-resize;
850 cursor: col-resize;
850 cursor: col-resize;
851 background-color: #CCC;
851 background-color: #CCC;
852 opacity: 0;
852 opacity: 0;
853 filter: alpha(opacity=0);
853 filter: alpha(opacity=0);
854 }
854 }
855 .yui-dt-resizerproxy {
855 .yui-dt-resizerproxy {
856 visibility: hidden;
856 visibility: hidden;
857 position: absolute;
857 position: absolute;
858 z-index: 9000;
858 z-index: 9000;
859 background-color: #CCC;
859 background-color: #CCC;
860 opacity: 0;
860 opacity: 0;
861 filter: alpha(opacity=0);
861 filter: alpha(opacity=0);
862 }
862 }
863 th.yui-dt-hidden .yui-dt-liner,
863 th.yui-dt-hidden .yui-dt-liner,
864 td.yui-dt-hidden .yui-dt-liner,
864 td.yui-dt-hidden .yui-dt-liner,
865 th.yui-dt-hidden .yui-dt-resizer { display: none }
865 th.yui-dt-hidden .yui-dt-resizer { display: none }
866 .yui-dt-editor,
866 .yui-dt-editor,
867 .yui-dt-editor-shim {
867 .yui-dt-editor-shim {
868 position: absolute;
868 position: absolute;
869 z-index: 9000;
869 z-index: 9000;
870 }
870 }
871 .yui-skin-sam .yui-dt table {
871 .yui-skin-sam .yui-dt table {
872 margin: 0;
872 margin: 0;
873 padding: 0;
873 padding: 0;
874 font-family: arial;
874 font-family: arial;
875 font-size: inherit;
875 font-size: inherit;
876 border-collapse: separate;
876 border-collapse: separate;
877 *border-collapse: collapse;
877 *border-collapse: collapse;
878 border-spacing: 0;
878 border-spacing: 0;
879 border: 1px solid #7f7f7f;
879 border: 1px solid #7f7f7f;
880 }
880 }
881 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
881 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
882 .yui-skin-sam .yui-dt caption {
882 .yui-skin-sam .yui-dt caption {
883 color: #000;
883 color: #000;
884 font-size: 85%;
884 font-size: 85%;
885 font-weight: normal;
885 font-weight: normal;
886 font-style: italic;
886 font-style: italic;
887 line-height: 1;
887 line-height: 1;
888 padding: 1em 0;
888 padding: 1em 0;
889 text-align: center;
889 text-align: center;
890 }
890 }
891 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
891 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
892 .yui-skin-sam .yui-dt th,
892 .yui-skin-sam .yui-dt th,
893 .yui-skin-sam .yui-dt th a {
893 .yui-skin-sam .yui-dt th a {
894 font-weight: normal;
894 font-weight: normal;
895 text-decoration: none;
895 text-decoration: none;
896 color: #000;
896 color: #000;
897 vertical-align: bottom;
897 vertical-align: bottom;
898 }
898 }
899 .yui-skin-sam .yui-dt th {
899 .yui-skin-sam .yui-dt th {
900 margin: 0;
900 margin: 0;
901 padding: 0;
901 padding: 0;
902 border: 0;
902 border: 0;
903 border-right: 1px solid #cbcbcb;
903 border-right: 1px solid #cbcbcb;
904 }
904 }
905 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
905 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
906 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
906 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
907 .yui-skin-sam .yui-dt-liner {
907 .yui-skin-sam .yui-dt-liner {
908 margin: 0;
908 margin: 0;
909 padding: 0;
909 padding: 0;
910 }
910 }
911 .yui-skin-sam .yui-dt-coltarget {
911 .yui-skin-sam .yui-dt-coltarget {
912 width: 5px;
912 width: 5px;
913 background-color: red;
913 background-color: red;
914 }
914 }
915 .yui-skin-sam .yui-dt td {
915 .yui-skin-sam .yui-dt td {
916 margin: 0;
916 margin: 0;
917 padding: 0;
917 padding: 0;
918 border: 0;
918 border: 0;
919 border-right: 1px solid #cbcbcb;
919 border-right: 1px solid #cbcbcb;
920 text-align: left;
920 text-align: left;
921 }
921 }
922 .yui-skin-sam .yui-dt-list td { border-right: 0 }
922 .yui-skin-sam .yui-dt-list td { border-right: 0 }
923 .yui-skin-sam .yui-dt-resizer { width: 6px }
923 .yui-skin-sam .yui-dt-resizer { width: 6px }
924 .yui-skin-sam .yui-dt-mask {
924 .yui-skin-sam .yui-dt-mask {
925 background-color: #000;
925 background-color: #000;
926 opacity: .25;
926 opacity: .25;
927 filter: alpha(opacity=25);
927 filter: alpha(opacity=25);
928 }
928 }
929 .yui-skin-sam .yui-dt-message { background-color: #FFF }
929 .yui-skin-sam .yui-dt-message { background-color: #FFF }
930 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
930 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
931 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
931 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
932 border-left: 1px solid #7f7f7f;
932 border-left: 1px solid #7f7f7f;
933 border-top: 1px solid #7f7f7f;
933 border-top: 1px solid #7f7f7f;
934 border-right: 1px solid #7f7f7f;
934 border-right: 1px solid #7f7f7f;
935 }
935 }
936 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
936 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
937 border-left: 1px solid #7f7f7f;
937 border-left: 1px solid #7f7f7f;
938 border-bottom: 1px solid #7f7f7f;
938 border-bottom: 1px solid #7f7f7f;
939 border-right: 1px solid #7f7f7f;
939 border-right: 1px solid #7f7f7f;
940 background-color: #FFF;
940 background-color: #FFF;
941 }
941 }
942 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
942 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
943 .yui-skin-sam th.yui-dt-asc,
943 .yui-skin-sam th.yui-dt-asc,
944 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
944 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
945 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
945 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
946 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
946 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
947 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
947 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
948 tbody .yui-dt-editable { cursor: pointer }
948 tbody .yui-dt-editable { cursor: pointer }
949 .yui-dt-editor {
949 .yui-dt-editor {
950 text-align: left;
950 text-align: left;
951 background-color: #f2f2f2;
951 background-color: #f2f2f2;
952 border: 1px solid #808080;
952 border: 1px solid #808080;
953 padding: 6px;
953 padding: 6px;
954 }
954 }
955 .yui-dt-editor label {
955 .yui-dt-editor label {
956 padding-left: 4px;
956 padding-left: 4px;
957 padding-right: 6px;
957 padding-right: 6px;
958 }
958 }
959 .yui-dt-editor .yui-dt-button {
959 .yui-dt-editor .yui-dt-button {
960 padding-top: 6px;
960 padding-top: 6px;
961 text-align: right;
961 text-align: right;
962 }
962 }
963 .yui-dt-editor .yui-dt-button button {
963 .yui-dt-editor .yui-dt-button button {
964 background: url(../images/sprite.png) repeat-x 0 0;
964 background: url(../images/sprite.png) repeat-x 0 0;
965 border: 1px solid #999;
965 border: 1px solid #999;
966 width: 4em;
966 width: 4em;
967 height: 1.8em;
967 height: 1.8em;
968 margin-left: 6px;
968 margin-left: 6px;
969 }
969 }
970 .yui-dt-editor .yui-dt-button button.yui-dt-default {
970 .yui-dt-editor .yui-dt-button button.yui-dt-default {
971 background: url(../images/sprite.png) repeat-x 0 -1400px;
971 background: url(../images/sprite.png) repeat-x 0 -1400px;
972 background-color: #5584e0;
972 background-color: #5584e0;
973 border: 1px solid #304369;
973 border: 1px solid #304369;
974 color: #FFF;
974 color: #FFF;
975 }
975 }
976 .yui-dt-editor .yui-dt-button button:hover {
976 .yui-dt-editor .yui-dt-button button:hover {
977 background: url(../images/sprite.png) repeat-x 0 -1300px;
977 background: url(../images/sprite.png) repeat-x 0 -1300px;
978 color: #000;
978 color: #000;
979 }
979 }
980 .yui-dt-editor .yui-dt-button button:active {
980 .yui-dt-editor .yui-dt-button button:active {
981 background: url(../images/sprite.png) repeat-x 0 -1700px;
981 background: url(../images/sprite.png) repeat-x 0 -1700px;
982 color: #000;
982 color: #000;
983 }
983 }
984 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
984 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
985 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
985 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
986 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
986 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
987 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
987 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
988 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
988 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
989 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
989 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
990 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
990 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
991 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
991 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
992 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
992 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
993 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
993 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
994 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
994 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
995 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
995 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
996 .yui-skin-sam th.yui-dt-highlighted,
996 .yui-skin-sam th.yui-dt-highlighted,
997 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
997 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
998 .yui-skin-sam tr.yui-dt-highlighted,
998 .yui-skin-sam tr.yui-dt-highlighted,
999 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
999 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
1000 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
1000 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
1001 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
1001 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
1002 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
1002 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
1003 cursor: pointer;
1003 cursor: pointer;
1004 background-color: #b2d2ff;
1004 background-color: #b2d2ff;
1005 }
1005 }
1006 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
1006 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
1007 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
1007 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
1008 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
1008 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
1009 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
1009 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
1010 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
1010 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
1011 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
1011 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
1012 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
1012 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
1013 cursor: pointer;
1013 cursor: pointer;
1014 background-color: #b2d2ff;
1014 background-color: #b2d2ff;
1015 }
1015 }
1016 .yui-skin-sam th.yui-dt-selected,
1016 .yui-skin-sam th.yui-dt-selected,
1017 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
1017 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
1018 .yui-skin-sam tr.yui-dt-selected td,
1018 .yui-skin-sam tr.yui-dt-selected td,
1019 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
1019 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
1020 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
1020 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
1021 background-color: #426fd9;
1021 background-color: #426fd9;
1022 color: #FFF;
1022 color: #FFF;
1023 }
1023 }
1024 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
1024 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
1025 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
1025 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
1026 background-color: #446cd7;
1026 background-color: #446cd7;
1027 color: #FFF;
1027 color: #FFF;
1028 }
1028 }
1029 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
1029 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
1030 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
1030 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
1031 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
1031 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
1032 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
1032 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
1033 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
1033 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
1034 background-color: #426fd9;
1034 background-color: #426fd9;
1035 color: #FFF;
1035 color: #FFF;
1036 }
1036 }
1037 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
1037 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
1038 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
1038 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
1039 background-color: #446cd7;
1039 background-color: #446cd7;
1040 color: #FFF;
1040 color: #FFF;
1041 }
1041 }
1042 .yui-skin-sam .yui-dt-paginator {
1042 .yui-skin-sam .yui-dt-paginator {
1043 display: block;
1043 display: block;
1044 margin: 6px 0;
1044 margin: 6px 0;
1045 white-space: nowrap;
1045 white-space: nowrap;
1046 }
1046 }
1047 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
1047 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
1048 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
1048 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
1049 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
1049 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
1050 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
1050 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
1051 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
1051 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
1052 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
1052 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
1053 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
1053 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
1054 .yui-skin-sam a.yui-dt-page {
1054 .yui-skin-sam a.yui-dt-page {
1055 border: 1px solid #cbcbcb;
1055 border: 1px solid #cbcbcb;
1056 padding: 2px 6px;
1056 padding: 2px 6px;
1057 text-decoration: none;
1057 text-decoration: none;
1058 background-color: #fff;
1058 background-color: #fff;
1059 }
1059 }
1060 .yui-skin-sam .yui-dt-selected {
1060 .yui-skin-sam .yui-dt-selected {
1061 border: 1px solid #fff;
1061 border: 1px solid #fff;
1062 background-color: #fff;
1062 background-color: #fff;
1063 }
1063 }
1064
1064
1065 #content #left {
1065 #content #left {
1066 left: 0;
1066 left: 0;
1067 width: 280px;
1067 width: 280px;
1068 position: absolute;
1068 position: absolute;
1069 }
1069 }
1070
1070
1071 #content #right {
1071 #content #right {
1072 margin: 0 60px 10px 290px;
1072 margin: 0 60px 10px 290px;
1073 }
1073 }
1074
1074
1075 #content div.box {
1075 #content div.box {
1076 clear: both;
1076 clear: both;
1077 overflow: hidden;
1077 overflow: hidden;
1078 background: #fff;
1078 background: #fff;
1079 margin: 0 0 10px;
1079 margin: 0 0 10px;
1080 padding: 0 0 10px;
1080 padding: 0 0 10px;
1081 -webkit-border-radius: 4px 4px 4px 4px;
1081 -webkit-border-radius: 4px 4px 4px 4px;
1082 -khtml-border-radius: 4px 4px 4px 4px;
1082 -khtml-border-radius: 4px 4px 4px 4px;
1083 -moz-border-radius: 4px 4px 4px 4px;
1083 -moz-border-radius: 4px 4px 4px 4px;
1084 border-radius: 4px 4px 4px 4px;
1084 border-radius: 4px 4px 4px 4px;
1085 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1085 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1086 }
1086 }
1087
1087
1088 #content div.box-left {
1088 #content div.box-left {
1089 width: 49%;
1089 width: 49%;
1090 clear: none;
1090 clear: none;
1091 float: left;
1091 float: left;
1092 margin: 0 0 10px;
1092 margin: 0 0 10px;
1093 }
1093 }
1094
1094
1095 #content div.box-right {
1095 #content div.box-right {
1096 width: 49%;
1096 width: 49%;
1097 clear: none;
1097 clear: none;
1098 float: right;
1098 float: right;
1099 margin: 0 0 10px;
1099 margin: 0 0 10px;
1100 }
1100 }
1101
1101
1102 #content div.box div.title {
1102 #content div.box div.title {
1103 clear: both;
1103 clear: both;
1104 overflow: hidden;
1104 overflow: hidden;
1105 background-color: #003B76;
1105 background-color: #003B76;
1106 background-repeat: repeat-x;
1106 background-repeat: repeat-x;
1107 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1107 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1108 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1108 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1109 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1109 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1110 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1110 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1111 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1111 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1112 background-image: -o-linear-gradient(top, #003b76, #00376e);
1112 background-image: -o-linear-gradient(top, #003b76, #00376e);
1113 background-image: linear-gradient(top, #003b76, #00376e);
1113 background-image: linear-gradient(top, #003b76, #00376e);
1114 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1114 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1115 margin: 0 0 20px;
1115 margin: 0 0 20px;
1116 padding: 0;
1116 padding: 0;
1117 }
1117 }
1118
1118
1119 #content div.box div.title h5 {
1119 #content div.box div.title h5 {
1120 float: left;
1120 float: left;
1121 border: none;
1121 border: none;
1122 color: #fff;
1122 color: #fff;
1123 text-transform: uppercase;
1123 text-transform: uppercase;
1124 margin: 0;
1124 margin: 0;
1125 padding: 11px 0 11px 10px;
1125 padding: 11px 0 11px 10px;
1126 }
1126 }
1127
1127
1128 #content div.box div.title .link-white{
1128 #content div.box div.title .link-white{
1129 color: #FFFFFF;
1129 color: #FFFFFF;
1130 }
1130 }
1131
1131
1132 #content div.box div.title .link-white.current{
1132 #content div.box div.title .link-white.current{
1133 color: #BFE3FF;
1133 color: #BFE3FF;
1134 }
1134 }
1135
1135
1136 #content div.box div.title ul.links li {
1136 #content div.box div.title ul.links li {
1137 list-style: none;
1137 list-style: none;
1138 float: left;
1138 float: left;
1139 margin: 0;
1139 margin: 0;
1140 padding: 0;
1140 padding: 0;
1141 }
1141 }
1142
1142
1143 #content div.box div.title ul.links li a {
1143 #content div.box div.title ul.links li a {
1144 border-left: 1px solid #316293;
1144 border-left: 1px solid #316293;
1145 color: #FFFFFF;
1145 color: #FFFFFF;
1146 display: block;
1146 display: block;
1147 float: left;
1147 float: left;
1148 font-size: 13px;
1148 font-size: 13px;
1149 font-weight: 700;
1149 font-weight: 700;
1150 height: 1%;
1150 height: 1%;
1151 margin: 0;
1151 margin: 0;
1152 padding: 11px 22px 12px;
1152 padding: 11px 22px 12px;
1153 text-decoration: none;
1153 text-decoration: none;
1154 }
1154 }
1155
1155
1156 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6,
1156 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6,
1157 #content div.box div.h1,#content div.box div.h2,#content div.box div.h3,#content div.box div.h4,#content div.box div.h5,#content div.box div.h6
1157 #content div.box div.h1,#content div.box div.h2,#content div.box div.h3,#content div.box div.h4,#content div.box div.h5,#content div.box div.h6
1158
1158
1159 {
1159 {
1160 clear: both;
1160 clear: both;
1161 overflow: hidden;
1161 overflow: hidden;
1162 border-bottom: 1px solid #DDD;
1162 border-bottom: 1px solid #DDD;
1163 margin: 10px 20px;
1163 margin: 10px 20px;
1164 padding: 0 0 15px;
1164 padding: 0 0 15px;
1165 }
1165 }
1166
1166
1167 #content div.box p {
1167 #content div.box p {
1168 color: #5f5f5f;
1168 color: #5f5f5f;
1169 font-size: 12px;
1169 font-size: 12px;
1170 line-height: 150%;
1170 line-height: 150%;
1171 margin: 0 24px 10px;
1171 margin: 0 24px 10px;
1172 padding: 0;
1172 padding: 0;
1173 }
1173 }
1174
1174
1175 #content div.box blockquote {
1175 #content div.box blockquote {
1176 border-left: 4px solid #DDD;
1176 border-left: 4px solid #DDD;
1177 color: #5f5f5f;
1177 color: #5f5f5f;
1178 font-size: 11px;
1178 font-size: 11px;
1179 line-height: 150%;
1179 line-height: 150%;
1180 margin: 0 34px;
1180 margin: 0 34px;
1181 padding: 0 0 0 14px;
1181 padding: 0 0 0 14px;
1182 }
1182 }
1183
1183
1184 #content div.box blockquote p {
1184 #content div.box blockquote p {
1185 margin: 10px 0;
1185 margin: 10px 0;
1186 padding: 0;
1186 padding: 0;
1187 }
1187 }
1188
1188
1189 #content div.box dl {
1189 #content div.box dl {
1190 margin: 10px 0px;
1190 margin: 10px 0px;
1191 }
1191 }
1192
1192
1193 #content div.box dt {
1193 #content div.box dt {
1194 font-size: 12px;
1194 font-size: 12px;
1195 margin: 0;
1195 margin: 0;
1196 }
1196 }
1197
1197
1198 #content div.box dd {
1198 #content div.box dd {
1199 font-size: 12px;
1199 font-size: 12px;
1200 margin: 0;
1200 margin: 0;
1201 padding: 8px 0 8px 15px;
1201 padding: 8px 0 8px 15px;
1202 }
1202 }
1203
1203
1204 #content div.box li {
1204 #content div.box li {
1205 font-size: 12px;
1205 font-size: 12px;
1206 padding: 4px 0;
1206 padding: 4px 0;
1207 }
1207 }
1208
1208
1209 #content div.box ul.disc,#content div.box ul.circle {
1209 #content div.box ul.disc,#content div.box ul.circle {
1210 margin: 10px 24px 10px 38px;
1210 margin: 10px 24px 10px 38px;
1211 }
1211 }
1212
1212
1213 #content div.box ul.square {
1213 #content div.box ul.square {
1214 margin: 10px 24px 10px 40px;
1214 margin: 10px 24px 10px 40px;
1215 }
1215 }
1216
1216
1217 #content div.box img.left {
1217 #content div.box img.left {
1218 border: none;
1218 border: none;
1219 float: left;
1219 float: left;
1220 margin: 10px 10px 10px 0;
1220 margin: 10px 10px 10px 0;
1221 }
1221 }
1222
1222
1223 #content div.box img.right {
1223 #content div.box img.right {
1224 border: none;
1224 border: none;
1225 float: right;
1225 float: right;
1226 margin: 10px 0 10px 10px;
1226 margin: 10px 0 10px 10px;
1227 }
1227 }
1228
1228
1229 #content div.box div.messages {
1229 #content div.box div.messages {
1230 clear: both;
1230 clear: both;
1231 overflow: hidden;
1231 overflow: hidden;
1232 margin: 0 20px;
1232 margin: 0 20px;
1233 padding: 0;
1233 padding: 0;
1234 }
1234 }
1235
1235
1236 #content div.box div.message {
1236 #content div.box div.message {
1237 clear: both;
1237 clear: both;
1238 overflow: hidden;
1238 overflow: hidden;
1239 margin: 0;
1239 margin: 0;
1240 padding: 5px 0;
1240 padding: 5px 0;
1241 white-space: pre-wrap;
1241 white-space: pre-wrap;
1242 }
1242 }
1243 #content div.box div.expand {
1243 #content div.box div.expand {
1244 width: 110%;
1244 width: 110%;
1245 height:14px;
1245 height:14px;
1246 font-size:10px;
1246 font-size:10px;
1247 text-align:center;
1247 text-align:center;
1248 cursor: pointer;
1248 cursor: pointer;
1249 color:#666;
1249 color:#666;
1250
1250
1251 background:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,rgba(64,96,128,0.1)));
1251 background:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,rgba(64,96,128,0.1)));
1252 background:-webkit-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1252 background:-webkit-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1253 background:-moz-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1253 background:-moz-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1254 background:-o-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1254 background:-o-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1255 background:-ms-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1255 background:-ms-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1256 background:linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1256 background:linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1257
1257
1258 display: none;
1258 display: none;
1259 }
1259 }
1260 #content div.box div.expand .expandtext {
1260 #content div.box div.expand .expandtext {
1261 background-color: #ffffff;
1261 background-color: #ffffff;
1262 padding: 2px;
1262 padding: 2px;
1263 border-radius: 2px;
1263 border-radius: 2px;
1264 }
1264 }
1265
1265
1266 #content div.box div.message a {
1266 #content div.box div.message a {
1267 font-weight: 400 !important;
1267 font-weight: 400 !important;
1268 }
1268 }
1269
1269
1270 #content div.box div.message div.image {
1270 #content div.box div.message div.image {
1271 float: left;
1271 float: left;
1272 margin: 9px 0 0 5px;
1272 margin: 9px 0 0 5px;
1273 padding: 6px;
1273 padding: 6px;
1274 }
1274 }
1275
1275
1276 #content div.box div.message div.image img {
1276 #content div.box div.message div.image img {
1277 vertical-align: middle;
1277 vertical-align: middle;
1278 margin: 0;
1278 margin: 0;
1279 }
1279 }
1280
1280
1281 #content div.box div.message div.text {
1281 #content div.box div.message div.text {
1282 float: left;
1282 float: left;
1283 margin: 0;
1283 margin: 0;
1284 padding: 9px 6px;
1284 padding: 9px 6px;
1285 }
1285 }
1286
1286
1287 #content div.box div.message div.dismiss a {
1287 #content div.box div.message div.dismiss a {
1288 height: 16px;
1288 height: 16px;
1289 width: 16px;
1289 width: 16px;
1290 display: block;
1290 display: block;
1291 background: url("../images/icons/cross.png") no-repeat;
1291 background: url("../images/icons/cross.png") no-repeat;
1292 margin: 15px 14px 0 0;
1292 margin: 15px 14px 0 0;
1293 padding: 0;
1293 padding: 0;
1294 }
1294 }
1295
1295
1296 #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
1296 #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
1297 {
1297 {
1298 border: none;
1298 border: none;
1299 margin: 0;
1299 margin: 0;
1300 padding: 0;
1300 padding: 0;
1301 }
1301 }
1302
1302
1303 #content div.box div.message div.text span {
1303 #content div.box div.message div.text span {
1304 height: 1%;
1304 height: 1%;
1305 display: block;
1305 display: block;
1306 margin: 0;
1306 margin: 0;
1307 padding: 5px 0 0;
1307 padding: 5px 0 0;
1308 }
1308 }
1309
1309
1310 #content div.box div.message-error {
1310 #content div.box div.message-error {
1311 height: 1%;
1311 height: 1%;
1312 clear: both;
1312 clear: both;
1313 overflow: hidden;
1313 overflow: hidden;
1314 background: #FBE3E4;
1314 background: #FBE3E4;
1315 border: 1px solid #FBC2C4;
1315 border: 1px solid #FBC2C4;
1316 color: #860006;
1316 color: #860006;
1317 }
1317 }
1318
1318
1319 #content div.box div.message-error h6 {
1319 #content div.box div.message-error h6 {
1320 color: #860006;
1320 color: #860006;
1321 }
1321 }
1322
1322
1323 #content div.box div.message-warning {
1323 #content div.box div.message-warning {
1324 height: 1%;
1324 height: 1%;
1325 clear: both;
1325 clear: both;
1326 overflow: hidden;
1326 overflow: hidden;
1327 background: #FFF6BF;
1327 background: #FFF6BF;
1328 border: 1px solid #FFD324;
1328 border: 1px solid #FFD324;
1329 color: #5f5200;
1329 color: #5f5200;
1330 }
1330 }
1331
1331
1332 #content div.box div.message-warning h6 {
1332 #content div.box div.message-warning h6 {
1333 color: #5f5200;
1333 color: #5f5200;
1334 }
1334 }
1335
1335
1336 #content div.box div.message-notice {
1336 #content div.box div.message-notice {
1337 height: 1%;
1337 height: 1%;
1338 clear: both;
1338 clear: both;
1339 overflow: hidden;
1339 overflow: hidden;
1340 background: #8FBDE0;
1340 background: #8FBDE0;
1341 border: 1px solid #6BACDE;
1341 border: 1px solid #6BACDE;
1342 color: #003863;
1342 color: #003863;
1343 }
1343 }
1344
1344
1345 #content div.box div.message-notice h6 {
1345 #content div.box div.message-notice h6 {
1346 color: #003863;
1346 color: #003863;
1347 }
1347 }
1348
1348
1349 #content div.box div.message-success {
1349 #content div.box div.message-success {
1350 height: 1%;
1350 height: 1%;
1351 clear: both;
1351 clear: both;
1352 overflow: hidden;
1352 overflow: hidden;
1353 background: #E6EFC2;
1353 background: #E6EFC2;
1354 border: 1px solid #C6D880;
1354 border: 1px solid #C6D880;
1355 color: #4e6100;
1355 color: #4e6100;
1356 }
1356 }
1357
1357
1358 #content div.box div.message-success h6 {
1358 #content div.box div.message-success h6 {
1359 color: #4e6100;
1359 color: #4e6100;
1360 }
1360 }
1361
1361
1362 #content div.box div.form div.fields div.field {
1362 #content div.box div.form div.fields div.field {
1363 height: 1%;
1363 height: 1%;
1364 border-bottom: 1px solid #DDD;
1364 border-bottom: 1px solid #DDD;
1365 clear: both;
1365 clear: both;
1366 margin: 0;
1366 margin: 0;
1367 padding: 10px 0;
1367 padding: 10px 0;
1368 }
1368 }
1369
1369
1370 #content div.box div.form div.fields div.field-first {
1370 #content div.box div.form div.fields div.field-first {
1371 padding: 0 0 10px;
1371 padding: 0 0 10px;
1372 }
1372 }
1373
1373
1374 #content div.box div.form div.fields div.field-noborder {
1374 #content div.box div.form div.fields div.field-noborder {
1375 border-bottom: 0 !important;
1375 border-bottom: 0 !important;
1376 }
1376 }
1377
1377
1378 #content div.box div.form div.fields div.field span.error-message {
1378 #content div.box div.form div.fields div.field span.error-message {
1379 height: 1%;
1379 height: 1%;
1380 display: inline-block;
1380 display: inline-block;
1381 color: red;
1381 color: red;
1382 margin: 8px 0 0 4px;
1382 margin: 8px 0 0 4px;
1383 padding: 0;
1383 padding: 0;
1384 }
1384 }
1385
1385
1386 #content div.box div.form div.fields div.field span.success {
1386 #content div.box div.form div.fields div.field span.success {
1387 height: 1%;
1387 height: 1%;
1388 display: block;
1388 display: block;
1389 color: #316309;
1389 color: #316309;
1390 margin: 8px 0 0;
1390 margin: 8px 0 0;
1391 padding: 0;
1391 padding: 0;
1392 }
1392 }
1393
1393
1394 #content div.box div.form div.fields div.field div.label {
1394 #content div.box div.form div.fields div.field div.label {
1395 left: 70px;
1395 left: 70px;
1396 width: 155px;
1396 width: 155px;
1397 position: absolute;
1397 position: absolute;
1398 margin: 0;
1398 margin: 0;
1399 padding: 5px 0 0 0px;
1399 padding: 5px 0 0 0px;
1400 }
1400 }
1401
1401
1402 #content div.box div.form div.fields div.field div.label-summary {
1402 #content div.box div.form div.fields div.field div.label-summary {
1403 left: 30px;
1403 left: 30px;
1404 width: 155px;
1404 width: 155px;
1405 position: absolute;
1405 position: absolute;
1406 margin: 0;
1406 margin: 0;
1407 padding: 0px 0 0 0px;
1407 padding: 0px 0 0 0px;
1408 }
1408 }
1409
1409
1410 #content div.box-left div.form div.fields div.field div.label,
1410 #content div.box-left div.form div.fields div.field div.label,
1411 #content div.box-right div.form div.fields div.field div.label,
1411 #content div.box-right div.form div.fields div.field div.label,
1412 #content div.box-left div.form div.fields div.field div.label,
1412 #content div.box-left div.form div.fields div.field div.label,
1413 #content div.box-left div.form div.fields div.field div.label-summary,
1413 #content div.box-left div.form div.fields div.field div.label-summary,
1414 #content div.box-right div.form div.fields div.field div.label-summary,
1414 #content div.box-right div.form div.fields div.field div.label-summary,
1415 #content div.box-left div.form div.fields div.field div.label-summary
1415 #content div.box-left div.form div.fields div.field div.label-summary
1416 {
1416 {
1417 clear: both;
1417 clear: both;
1418 overflow: hidden;
1418 overflow: hidden;
1419 left: 0;
1419 left: 0;
1420 width: auto;
1420 width: auto;
1421 position: relative;
1421 position: relative;
1422 margin: 0;
1422 margin: 0;
1423 padding: 0 0 8px;
1423 padding: 0 0 8px;
1424 }
1424 }
1425
1425
1426 #content div.box div.form div.fields div.field div.label-select {
1426 #content div.box div.form div.fields div.field div.label-select {
1427 padding: 5px 0 0 5px;
1427 padding: 5px 0 0 5px;
1428 }
1428 }
1429
1429
1430 #content div.box-left div.form div.fields div.field div.label-select,
1430 #content div.box-left div.form div.fields div.field div.label-select,
1431 #content div.box-right div.form div.fields div.field div.label-select
1431 #content div.box-right div.form div.fields div.field div.label-select
1432 {
1432 {
1433 padding: 0 0 8px;
1433 padding: 0 0 8px;
1434 }
1434 }
1435
1435
1436 #content div.box-left div.form div.fields div.field div.label-textarea,
1436 #content div.box-left div.form div.fields div.field div.label-textarea,
1437 #content div.box-right div.form div.fields div.field div.label-textarea
1437 #content div.box-right div.form div.fields div.field div.label-textarea
1438 {
1438 {
1439 padding: 0 0 8px !important;
1439 padding: 0 0 8px !important;
1440 }
1440 }
1441
1441
1442 #content div.box div.form div.fields div.field div.label label,div.label label
1442 #content div.box div.form div.fields div.field div.label label,div.label label
1443 {
1443 {
1444 color: #393939;
1444 color: #393939;
1445 font-weight: 700;
1445 font-weight: 700;
1446 }
1446 }
1447 #content div.box div.form div.fields div.field div.label label,div.label-summary label
1447 #content div.box div.form div.fields div.field div.label label,div.label-summary label
1448 {
1448 {
1449 color: #393939;
1449 color: #393939;
1450 font-weight: 700;
1450 font-weight: 700;
1451 }
1451 }
1452 #content div.box div.form div.fields div.field div.input {
1452 #content div.box div.form div.fields div.field div.input {
1453 margin: 0 0 0 200px;
1453 margin: 0 0 0 200px;
1454 }
1454 }
1455
1455
1456 #content div.box div.form div.fields div.field div.input.summary {
1456 #content div.box div.form div.fields div.field div.input.summary {
1457 margin: 0 0 0 110px;
1457 margin: 0 0 0 110px;
1458 }
1458 }
1459 #content div.box div.form div.fields div.field div.input.summary-short {
1459 #content div.box div.form div.fields div.field div.input.summary-short {
1460 margin: 0 0 0 110px;
1460 margin: 0 0 0 110px;
1461 }
1461 }
1462 #content div.box div.form div.fields div.field div.file {
1462 #content div.box div.form div.fields div.field div.file {
1463 margin: 0 0 0 200px;
1463 margin: 0 0 0 200px;
1464 }
1464 }
1465
1465
1466 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input
1466 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input
1467 {
1467 {
1468 margin: 0 0 0 0px;
1468 margin: 0 0 0 0px;
1469 }
1469 }
1470
1470
1471 #content div.box div.form div.fields div.field div.input input,
1471 #content div.box div.form div.fields div.field div.input input,
1472 .reviewer_ac input {
1472 .reviewer_ac input {
1473 background: #FFF;
1473 background: #FFF;
1474 border-top: 1px solid #b3b3b3;
1474 border-top: 1px solid #b3b3b3;
1475 border-left: 1px solid #b3b3b3;
1475 border-left: 1px solid #b3b3b3;
1476 border-right: 1px solid #eaeaea;
1476 border-right: 1px solid #eaeaea;
1477 border-bottom: 1px solid #eaeaea;
1477 border-bottom: 1px solid #eaeaea;
1478 color: #000;
1478 color: #000;
1479 font-size: 11px;
1479 font-size: 11px;
1480 margin: 0;
1480 margin: 0;
1481 padding: 7px 7px 6px;
1481 padding: 7px 7px 6px;
1482 }
1482 }
1483
1483
1484 #content div.box div.form div.fields div.field div.input input#clone_url,
1484 #content div.box div.form div.fields div.field div.input input#clone_url,
1485 #content div.box div.form div.fields div.field div.input input#clone_url_id
1485 #content div.box div.form div.fields div.field div.input input#clone_url_id
1486 {
1486 {
1487 font-size: 16px;
1487 font-size: 16px;
1488 padding: 2px;
1488 padding: 2px;
1489 }
1489 }
1490
1490
1491 #content div.box div.form div.fields div.field div.file input {
1491 #content div.box div.form div.fields div.field div.file input {
1492 background: none repeat scroll 0 0 #FFFFFF;
1492 background: none repeat scroll 0 0 #FFFFFF;
1493 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1493 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1494 border-style: solid;
1494 border-style: solid;
1495 border-width: 1px;
1495 border-width: 1px;
1496 color: #000000;
1496 color: #000000;
1497 font-size: 11px;
1497 font-size: 11px;
1498 margin: 0;
1498 margin: 0;
1499 padding: 7px 7px 6px;
1499 padding: 7px 7px 6px;
1500 }
1500 }
1501
1501
1502 input.disabled {
1502 input.disabled {
1503 background-color: #F5F5F5 !important;
1503 background-color: #F5F5F5 !important;
1504 }
1504 }
1505 #content div.box div.form div.fields div.field div.input input.small {
1505 #content div.box div.form div.fields div.field div.input input.small {
1506 width: 30%;
1506 width: 30%;
1507 }
1507 }
1508
1508
1509 #content div.box div.form div.fields div.field div.input input.medium {
1509 #content div.box div.form div.fields div.field div.input input.medium {
1510 width: 55%;
1510 width: 55%;
1511 }
1511 }
1512
1512
1513 #content div.box div.form div.fields div.field div.input input.large {
1513 #content div.box div.form div.fields div.field div.input input.large {
1514 width: 85%;
1514 width: 85%;
1515 }
1515 }
1516
1516
1517 #content div.box div.form div.fields div.field div.input input.date {
1517 #content div.box div.form div.fields div.field div.input input.date {
1518 width: 177px;
1518 width: 177px;
1519 }
1519 }
1520
1520
1521 #content div.box div.form div.fields div.field div.input input.button {
1521 #content div.box div.form div.fields div.field div.input input.button {
1522 background: #D4D0C8;
1522 background: #D4D0C8;
1523 border-top: 1px solid #FFF;
1523 border-top: 1px solid #FFF;
1524 border-left: 1px solid #FFF;
1524 border-left: 1px solid #FFF;
1525 border-right: 1px solid #404040;
1525 border-right: 1px solid #404040;
1526 border-bottom: 1px solid #404040;
1526 border-bottom: 1px solid #404040;
1527 color: #000;
1527 color: #000;
1528 margin: 0;
1528 margin: 0;
1529 padding: 4px 8px;
1529 padding: 4px 8px;
1530 }
1530 }
1531
1531
1532 #content div.box div.form div.fields div.field div.textarea {
1532 #content div.box div.form div.fields div.field div.textarea {
1533 border-top: 1px solid #b3b3b3;
1533 border-top: 1px solid #b3b3b3;
1534 border-left: 1px solid #b3b3b3;
1534 border-left: 1px solid #b3b3b3;
1535 border-right: 1px solid #eaeaea;
1535 border-right: 1px solid #eaeaea;
1536 border-bottom: 1px solid #eaeaea;
1536 border-bottom: 1px solid #eaeaea;
1537 margin: 0 0 0 200px;
1537 margin: 0 0 0 200px;
1538 padding: 10px;
1538 padding: 10px;
1539 }
1539 }
1540
1540
1541 #content div.box div.form div.fields div.field div.textarea-editor {
1541 #content div.box div.form div.fields div.field div.textarea-editor {
1542 border: 1px solid #ddd;
1542 border: 1px solid #ddd;
1543 padding: 0;
1543 padding: 0;
1544 }
1544 }
1545
1545
1546 #content div.box div.form div.fields div.field div.textarea textarea {
1546 #content div.box div.form div.fields div.field div.textarea textarea {
1547 width: 100%;
1547 width: 100%;
1548 height: 220px;
1548 height: 220px;
1549 overflow: hidden;
1549 overflow: hidden;
1550 background: #FFF;
1550 background: #FFF;
1551 color: #000;
1551 color: #000;
1552 font-size: 11px;
1552 font-size: 11px;
1553 outline: none;
1553 outline: none;
1554 border-width: 0;
1554 border-width: 0;
1555 margin: 0;
1555 margin: 0;
1556 padding: 0;
1556 padding: 0;
1557 }
1557 }
1558
1558
1559 #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
1559 #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
1560 {
1560 {
1561 width: 100%;
1561 width: 100%;
1562 height: 100px;
1562 height: 100px;
1563 }
1563 }
1564
1564
1565 #content div.box div.form div.fields div.field div.textarea table {
1565 #content div.box div.form div.fields div.field div.textarea table {
1566 width: 100%;
1566 width: 100%;
1567 border: none;
1567 border: none;
1568 margin: 0;
1568 margin: 0;
1569 padding: 0;
1569 padding: 0;
1570 }
1570 }
1571
1571
1572 #content div.box div.form div.fields div.field div.textarea table td {
1572 #content div.box div.form div.fields div.field div.textarea table td {
1573 background: #DDD;
1573 background: #DDD;
1574 border: none;
1574 border: none;
1575 padding: 0;
1575 padding: 0;
1576 }
1576 }
1577
1577
1578 #content div.box div.form div.fields div.field div.textarea table td table
1578 #content div.box div.form div.fields div.field div.textarea table td table
1579 {
1579 {
1580 width: auto;
1580 width: auto;
1581 border: none;
1581 border: none;
1582 margin: 0;
1582 margin: 0;
1583 padding: 0;
1583 padding: 0;
1584 }
1584 }
1585
1585
1586 #content div.box div.form div.fields div.field div.textarea table td table td
1586 #content div.box div.form div.fields div.field div.textarea table td table td
1587 {
1587 {
1588 font-size: 11px;
1588 font-size: 11px;
1589 padding: 5px 5px 5px 0;
1589 padding: 5px 5px 5px 0;
1590 }
1590 }
1591
1591
1592 #content div.box div.form div.fields div.field input[type=text]:focus,
1592 #content div.box div.form div.fields div.field input[type=text]:focus,
1593 #content div.box div.form div.fields div.field input[type=password]:focus,
1593 #content div.box div.form div.fields div.field input[type=password]:focus,
1594 #content div.box div.form div.fields div.field input[type=file]:focus,
1594 #content div.box div.form div.fields div.field input[type=file]:focus,
1595 #content div.box div.form div.fields div.field textarea:focus,
1595 #content div.box div.form div.fields div.field textarea:focus,
1596 #content div.box div.form div.fields div.field select:focus,
1596 #content div.box div.form div.fields div.field select:focus,
1597 .reviewer_ac input:focus
1597 .reviewer_ac input:focus
1598 {
1598 {
1599 background: #f6f6f6;
1599 background: #f6f6f6;
1600 border-color: #666;
1600 border-color: #666;
1601 }
1601 }
1602
1602
1603 .reviewer_ac {
1603 .reviewer_ac {
1604 padding:10px
1604 padding:10px
1605 }
1605 }
1606
1606
1607 div.form div.fields div.field div.button {
1607 div.form div.fields div.field div.button {
1608 margin: 0;
1608 margin: 0;
1609 padding: 0 0 0 8px;
1609 padding: 0 0 0 8px;
1610 }
1610 }
1611 #content div.box table.noborder {
1611 #content div.box table.noborder {
1612 border: 1px solid transparent;
1612 border: 1px solid transparent;
1613 }
1613 }
1614
1614
1615 #content div.box table {
1615 #content div.box table {
1616 width: 100%;
1616 width: 100%;
1617 border-collapse: separate;
1617 border-collapse: separate;
1618 margin: 0;
1618 margin: 0;
1619 padding: 0;
1619 padding: 0;
1620 border: 1px solid #eee;
1620 border: 1px solid #eee;
1621 -webkit-border-radius: 4px;
1621 -webkit-border-radius: 4px;
1622 -moz-border-radius: 4px;
1622 -moz-border-radius: 4px;
1623 border-radius: 4px;
1623 border-radius: 4px;
1624 }
1624 }
1625
1625
1626 #content div.box table th {
1626 #content div.box table th {
1627 background: #eee;
1627 background: #eee;
1628 border-bottom: 1px solid #ddd;
1628 border-bottom: 1px solid #ddd;
1629 padding: 5px 0px 5px 5px;
1629 padding: 5px 0px 5px 5px;
1630 text-align: left;
1630 text-align: left;
1631 }
1631 }
1632
1632
1633 #content div.box table th.left {
1633 #content div.box table th.left {
1634 text-align: left;
1634 text-align: left;
1635 }
1635 }
1636
1636
1637 #content div.box table th.right {
1637 #content div.box table th.right {
1638 text-align: right;
1638 text-align: right;
1639 }
1639 }
1640
1640
1641 #content div.box table th.center {
1641 #content div.box table th.center {
1642 text-align: center;
1642 text-align: center;
1643 }
1643 }
1644
1644
1645 #content div.box table th.selected {
1645 #content div.box table th.selected {
1646 vertical-align: middle;
1646 vertical-align: middle;
1647 padding: 0;
1647 padding: 0;
1648 }
1648 }
1649
1649
1650 #content div.box table td {
1650 #content div.box table td {
1651 background: #fff;
1651 background: #fff;
1652 border-bottom: 1px solid #cdcdcd;
1652 border-bottom: 1px solid #cdcdcd;
1653 vertical-align: middle;
1653 vertical-align: middle;
1654 padding: 5px;
1654 padding: 5px;
1655 }
1655 }
1656
1656
1657 #content div.box table tr.selected td {
1657 #content div.box table tr.selected td {
1658 background: #FFC;
1658 background: #FFC;
1659 }
1659 }
1660
1660
1661 #content div.box table td.selected {
1661 #content div.box table td.selected {
1662 width: 3%;
1662 width: 3%;
1663 text-align: center;
1663 text-align: center;
1664 vertical-align: middle;
1664 vertical-align: middle;
1665 padding: 0;
1665 padding: 0;
1666 }
1666 }
1667
1667
1668 #content div.box table td.action {
1668 #content div.box table td.action {
1669 width: 45%;
1669 width: 45%;
1670 text-align: left;
1670 text-align: left;
1671 }
1671 }
1672
1672
1673 #content div.box table td.date {
1673 #content div.box table td.date {
1674 width: 33%;
1674 width: 33%;
1675 text-align: center;
1675 text-align: center;
1676 }
1676 }
1677
1677
1678 #content div.box div.action {
1678 #content div.box div.action {
1679 float: right;
1679 float: right;
1680 background: #FFF;
1680 background: #FFF;
1681 text-align: right;
1681 text-align: right;
1682 margin: 10px 0 0;
1682 margin: 10px 0 0;
1683 padding: 0;
1683 padding: 0;
1684 }
1684 }
1685
1685
1686 #content div.box div.action select {
1686 #content div.box div.action select {
1687 font-size: 11px;
1687 font-size: 11px;
1688 margin: 0;
1688 margin: 0;
1689 }
1689 }
1690
1690
1691 #content div.box div.action .ui-selectmenu {
1691 #content div.box div.action .ui-selectmenu {
1692 margin: 0;
1692 margin: 0;
1693 padding: 0;
1693 padding: 0;
1694 }
1694 }
1695
1695
1696 #content div.box div.pagination {
1696 #content div.box div.pagination {
1697 height: 1%;
1697 height: 1%;
1698 clear: both;
1698 clear: both;
1699 overflow: hidden;
1699 overflow: hidden;
1700 margin: 10px 0 0;
1700 margin: 10px 0 0;
1701 padding: 0;
1701 padding: 0;
1702 }
1702 }
1703
1703
1704 #content div.box div.pagination ul.pager {
1704 #content div.box div.pagination ul.pager {
1705 float: right;
1705 float: right;
1706 text-align: right;
1706 text-align: right;
1707 margin: 0;
1707 margin: 0;
1708 padding: 0;
1708 padding: 0;
1709 }
1709 }
1710
1710
1711 #content div.box div.pagination ul.pager li {
1711 #content div.box div.pagination ul.pager li {
1712 height: 1%;
1712 height: 1%;
1713 float: left;
1713 float: left;
1714 list-style: none;
1714 list-style: none;
1715 background: #ebebeb url("../images/pager.png") repeat-x;
1715 background: #ebebeb url("../images/pager.png") repeat-x;
1716 border-top: 1px solid #dedede;
1716 border-top: 1px solid #dedede;
1717 border-left: 1px solid #cfcfcf;
1717 border-left: 1px solid #cfcfcf;
1718 border-right: 1px solid #c4c4c4;
1718 border-right: 1px solid #c4c4c4;
1719 border-bottom: 1px solid #c4c4c4;
1719 border-bottom: 1px solid #c4c4c4;
1720 color: #4A4A4A;
1720 color: #4A4A4A;
1721 font-weight: 700;
1721 font-weight: 700;
1722 margin: 0 0 0 4px;
1722 margin: 0 0 0 4px;
1723 padding: 0;
1723 padding: 0;
1724 }
1724 }
1725
1725
1726 #content div.box div.pagination ul.pager li.separator {
1726 #content div.box div.pagination ul.pager li.separator {
1727 padding: 6px;
1727 padding: 6px;
1728 }
1728 }
1729
1729
1730 #content div.box div.pagination ul.pager li.current {
1730 #content div.box div.pagination ul.pager li.current {
1731 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1731 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1732 border-top: 1px solid #ccc;
1732 border-top: 1px solid #ccc;
1733 border-left: 1px solid #bebebe;
1733 border-left: 1px solid #bebebe;
1734 border-right: 1px solid #b1b1b1;
1734 border-right: 1px solid #b1b1b1;
1735 border-bottom: 1px solid #afafaf;
1735 border-bottom: 1px solid #afafaf;
1736 color: #515151;
1736 color: #515151;
1737 padding: 6px;
1737 padding: 6px;
1738 }
1738 }
1739
1739
1740 #content div.box div.pagination ul.pager li a {
1740 #content div.box div.pagination ul.pager li a {
1741 height: 1%;
1741 height: 1%;
1742 display: block;
1742 display: block;
1743 float: left;
1743 float: left;
1744 color: #515151;
1744 color: #515151;
1745 text-decoration: none;
1745 text-decoration: none;
1746 margin: 0;
1746 margin: 0;
1747 padding: 6px;
1747 padding: 6px;
1748 }
1748 }
1749
1749
1750 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active
1750 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active
1751 {
1751 {
1752 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1752 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1753 border-top: 1px solid #ccc;
1753 border-top: 1px solid #ccc;
1754 border-left: 1px solid #bebebe;
1754 border-left: 1px solid #bebebe;
1755 border-right: 1px solid #b1b1b1;
1755 border-right: 1px solid #b1b1b1;
1756 border-bottom: 1px solid #afafaf;
1756 border-bottom: 1px solid #afafaf;
1757 margin: -1px;
1757 margin: -1px;
1758 }
1758 }
1759
1759
1760 #content div.box div.pagination-wh {
1760 #content div.box div.pagination-wh {
1761 height: 1%;
1761 height: 1%;
1762 clear: both;
1762 clear: both;
1763 overflow: hidden;
1763 overflow: hidden;
1764 text-align: right;
1764 text-align: right;
1765 margin: 10px 0 0;
1765 margin: 10px 0 0;
1766 padding: 0;
1766 padding: 0;
1767 }
1767 }
1768
1768
1769 #content div.box div.pagination-right {
1769 #content div.box div.pagination-right {
1770 float: right;
1770 float: right;
1771 }
1771 }
1772
1772
1773 #content div.box div.pagination-wh a,
1773 #content div.box div.pagination-wh a,
1774 #content div.box div.pagination-wh span.pager_dotdot,
1774 #content div.box div.pagination-wh span.pager_dotdot,
1775 #content div.box div.pagination-wh span.yui-pg-previous,
1775 #content div.box div.pagination-wh span.yui-pg-previous,
1776 #content div.box div.pagination-wh span.yui-pg-last,
1776 #content div.box div.pagination-wh span.yui-pg-last,
1777 #content div.box div.pagination-wh span.yui-pg-next,
1777 #content div.box div.pagination-wh span.yui-pg-next,
1778 #content div.box div.pagination-wh span.yui-pg-first
1778 #content div.box div.pagination-wh span.yui-pg-first
1779 {
1779 {
1780 height: 1%;
1780 height: 1%;
1781 float: left;
1781 float: left;
1782 background: #ebebeb url("../images/pager.png") repeat-x;
1782 background: #ebebeb url("../images/pager.png") repeat-x;
1783 border-top: 1px solid #dedede;
1783 border-top: 1px solid #dedede;
1784 border-left: 1px solid #cfcfcf;
1784 border-left: 1px solid #cfcfcf;
1785 border-right: 1px solid #c4c4c4;
1785 border-right: 1px solid #c4c4c4;
1786 border-bottom: 1px solid #c4c4c4;
1786 border-bottom: 1px solid #c4c4c4;
1787 color: #4A4A4A;
1787 color: #4A4A4A;
1788 font-weight: 700;
1788 font-weight: 700;
1789 margin: 0 0 0 4px;
1789 margin: 0 0 0 4px;
1790 padding: 6px;
1790 padding: 6px;
1791 }
1791 }
1792
1792
1793 #content div.box div.pagination-wh span.pager_curpage {
1793 #content div.box div.pagination-wh span.pager_curpage {
1794 height: 1%;
1794 height: 1%;
1795 float: left;
1795 float: left;
1796 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1796 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1797 border-top: 1px solid #ccc;
1797 border-top: 1px solid #ccc;
1798 border-left: 1px solid #bebebe;
1798 border-left: 1px solid #bebebe;
1799 border-right: 1px solid #b1b1b1;
1799 border-right: 1px solid #b1b1b1;
1800 border-bottom: 1px solid #afafaf;
1800 border-bottom: 1px solid #afafaf;
1801 color: #515151;
1801 color: #515151;
1802 font-weight: 700;
1802 font-weight: 700;
1803 margin: 0 0 0 4px;
1803 margin: 0 0 0 4px;
1804 padding: 6px;
1804 padding: 6px;
1805 }
1805 }
1806
1806
1807 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active
1807 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active
1808 {
1808 {
1809 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1809 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1810 border-top: 1px solid #ccc;
1810 border-top: 1px solid #ccc;
1811 border-left: 1px solid #bebebe;
1811 border-left: 1px solid #bebebe;
1812 border-right: 1px solid #b1b1b1;
1812 border-right: 1px solid #b1b1b1;
1813 border-bottom: 1px solid #afafaf;
1813 border-bottom: 1px solid #afafaf;
1814 text-decoration: none;
1814 text-decoration: none;
1815 }
1815 }
1816
1816
1817 #content div.box div.traffic div.legend {
1817 #content div.box div.traffic div.legend {
1818 clear: both;
1818 clear: both;
1819 overflow: hidden;
1819 overflow: hidden;
1820 border-bottom: 1px solid #ddd;
1820 border-bottom: 1px solid #ddd;
1821 margin: 0 0 10px;
1821 margin: 0 0 10px;
1822 padding: 0 0 10px;
1822 padding: 0 0 10px;
1823 }
1823 }
1824
1824
1825 #content div.box div.traffic div.legend h6 {
1825 #content div.box div.traffic div.legend h6 {
1826 float: left;
1826 float: left;
1827 border: none;
1827 border: none;
1828 margin: 0;
1828 margin: 0;
1829 padding: 0;
1829 padding: 0;
1830 }
1830 }
1831
1831
1832 #content div.box div.traffic div.legend li {
1832 #content div.box div.traffic div.legend li {
1833 list-style: none;
1833 list-style: none;
1834 float: left;
1834 float: left;
1835 font-size: 11px;
1835 font-size: 11px;
1836 margin: 0;
1836 margin: 0;
1837 padding: 0 8px 0 4px;
1837 padding: 0 8px 0 4px;
1838 }
1838 }
1839
1839
1840 #content div.box div.traffic div.legend li.visits {
1840 #content div.box div.traffic div.legend li.visits {
1841 border-left: 12px solid #edc240;
1841 border-left: 12px solid #edc240;
1842 }
1842 }
1843
1843
1844 #content div.box div.traffic div.legend li.pageviews {
1844 #content div.box div.traffic div.legend li.pageviews {
1845 border-left: 12px solid #afd8f8;
1845 border-left: 12px solid #afd8f8;
1846 }
1846 }
1847
1847
1848 #content div.box div.traffic table {
1848 #content div.box div.traffic table {
1849 width: auto;
1849 width: auto;
1850 }
1850 }
1851
1851
1852 #content div.box div.traffic table td {
1852 #content div.box div.traffic table td {
1853 background: transparent;
1853 background: transparent;
1854 border: none;
1854 border: none;
1855 padding: 2px 3px 3px;
1855 padding: 2px 3px 3px;
1856 }
1856 }
1857
1857
1858 #content div.box div.traffic table td.legendLabel {
1858 #content div.box div.traffic table td.legendLabel {
1859 padding: 0 3px 2px;
1859 padding: 0 3px 2px;
1860 }
1860 }
1861
1861
1862 #summary {
1862 #summary {
1863
1863
1864 }
1864 }
1865
1865
1866 #summary .metatag {
1866 #summary .metatag {
1867 display: inline-block;
1867 display: inline-block;
1868 padding: 3px 5px;
1868 padding: 3px 5px;
1869 margin-bottom: 3px;
1869 margin-bottom: 3px;
1870 margin-right: 1px;
1870 margin-right: 1px;
1871 border-radius: 5px;
1871 border-radius: 5px;
1872 }
1872 }
1873
1873
1874 #content div.box #summary p {
1874 #content div.box #summary p {
1875 margin-bottom: -5px;
1875 margin-bottom: -5px;
1876 width: 600px;
1876 width: 600px;
1877 white-space: pre-wrap;
1877 white-space: pre-wrap;
1878 }
1878 }
1879
1879
1880 #content div.box #summary p:last-child {
1880 #content div.box #summary p:last-child {
1881 margin-bottom: 9px;
1881 margin-bottom: 9px;
1882 }
1882 }
1883
1883
1884 #content div.box #summary p:first-of-type {
1884 #content div.box #summary p:first-of-type {
1885 margin-top: 9px;
1885 margin-top: 9px;
1886 }
1886 }
1887
1887
1888 .metatag {
1888 .metatag {
1889 display: inline-block;
1889 display: inline-block;
1890 margin-right: 1px;
1890 margin-right: 1px;
1891 -webkit-border-radius: 4px 4px 4px 4px;
1891 -webkit-border-radius: 4px 4px 4px 4px;
1892 -khtml-border-radius: 4px 4px 4px 4px;
1892 -khtml-border-radius: 4px 4px 4px 4px;
1893 -moz-border-radius: 4px 4px 4px 4px;
1893 -moz-border-radius: 4px 4px 4px 4px;
1894 border-radius: 4px 4px 4px 4px;
1894 border-radius: 4px 4px 4px 4px;
1895
1895
1896 border: solid 1px #9CF;
1896 border: solid 1px #9CF;
1897 padding: 2px 3px 2px 3px !important;
1897 padding: 2px 3px 2px 3px !important;
1898 background-color: #DEF;
1898 background-color: #DEF;
1899 }
1899 }
1900
1900
1901 .metatag[tag="dead"] {
1901 .metatag[tag="dead"] {
1902 background-color: #E44;
1902 background-color: #E44;
1903 }
1903 }
1904
1904
1905 .metatag[tag="stale"] {
1905 .metatag[tag="stale"] {
1906 background-color: #EA4;
1906 background-color: #EA4;
1907 }
1907 }
1908
1908
1909 .metatag[tag="featured"] {
1909 .metatag[tag="featured"] {
1910 background-color: #AEA;
1910 background-color: #AEA;
1911 }
1911 }
1912
1912
1913 .metatag[tag="requires"] {
1913 .metatag[tag="requires"] {
1914 background-color: #9CF;
1914 background-color: #9CF;
1915 }
1915 }
1916
1916
1917 .metatag[tag="recommends"] {
1917 .metatag[tag="recommends"] {
1918 background-color: #BDF;
1918 background-color: #BDF;
1919 }
1919 }
1920
1920
1921 .metatag[tag="lang"] {
1921 .metatag[tag="lang"] {
1922 background-color: #FAF474;
1922 background-color: #FAF474;
1923 }
1923 }
1924
1924
1925 .metatag[tag="license"] {
1925 .metatag[tag="license"] {
1926 border: solid 1px #9CF;
1926 border: solid 1px #9CF;
1927 background-color: #DEF;
1927 background-color: #DEF;
1928 target-new: tab !important;
1928 target-new: tab !important;
1929 }
1929 }
1930 .metatag[tag="see"] {
1930 .metatag[tag="see"] {
1931 border: solid 1px #CBD;
1931 border: solid 1px #CBD;
1932 background-color: #EDF;
1932 background-color: #EDF;
1933 }
1933 }
1934
1934
1935 a.metatag[tag="license"]:hover {
1935 a.metatag[tag="license"]:hover {
1936 background-color: #003367;
1936 background-color: #003367;
1937 color: #FFF;
1937 color: #FFF;
1938 text-decoration: none;
1938 text-decoration: none;
1939 }
1939 }
1940
1940
1941 #summary .desc {
1941 #summary .desc {
1942 white-space: pre;
1942 white-space: pre;
1943 width: 100%;
1943 width: 100%;
1944 }
1944 }
1945
1945
1946 #summary .repo_name {
1946 #summary .repo_name {
1947 font-size: 1.6em;
1947 font-size: 1.6em;
1948 font-weight: bold;
1948 font-weight: bold;
1949 vertical-align: baseline;
1949 vertical-align: baseline;
1950 clear: right
1950 clear: right
1951 }
1951 }
1952
1952
1953 #footer {
1953 #footer {
1954 clear: both;
1954 clear: both;
1955 overflow: hidden;
1955 overflow: hidden;
1956 text-align: right;
1956 text-align: right;
1957 margin: 0;
1957 margin: 0;
1958 padding: 0 10px 4px;
1958 padding: 0 10px 4px;
1959 margin: -10px 0 0;
1959 margin: -10px 0 0;
1960 }
1960 }
1961
1961
1962 #footer div#footer-inner {
1962 #footer div#footer-inner {
1963 background-color: #003B76;
1963 background-color: #003B76;
1964 background-repeat : repeat-x;
1964 background-repeat : repeat-x;
1965 background-image : -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1965 background-image : -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1966 background-image : -moz-linear-gradient(top, #003b76, #00376e);
1966 background-image : -moz-linear-gradient(top, #003b76, #00376e);
1967 background-image : -ms-linear-gradient( top, #003b76, #00376e);
1967 background-image : -ms-linear-gradient( top, #003b76, #00376e);
1968 background-image : -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1968 background-image : -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1969 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1969 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
1970 background-image : -o-linear-gradient( top, #003b76, #00376e));
1970 background-image : -o-linear-gradient( top, #003b76, #00376e));
1971 background-image : linear-gradient( top, #003b76, #00376e);
1971 background-image : linear-gradient( top, #003b76, #00376e);
1972 filter :progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1972 filter :progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1973 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1973 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1974 -webkit-border-radius: 4px 4px 4px 4px;
1974 -webkit-border-radius: 4px 4px 4px 4px;
1975 -khtml-border-radius: 4px 4px 4px 4px;
1975 -khtml-border-radius: 4px 4px 4px 4px;
1976 -moz-border-radius: 4px 4px 4px 4px;
1976 -moz-border-radius: 4px 4px 4px 4px;
1977 border-radius: 4px 4px 4px 4px;
1977 border-radius: 4px 4px 4px 4px;
1978 }
1978 }
1979
1979
1980 #footer div#footer-inner p {
1980 #footer div#footer-inner p {
1981 padding: 15px 25px 15px 0;
1981 padding: 15px 25px 15px 0;
1982 color: #FFF;
1982 color: #FFF;
1983 font-weight: 700;
1983 font-weight: 700;
1984 }
1984 }
1985
1985
1986 #footer div#footer-inner .footer-link {
1986 #footer div#footer-inner .footer-link {
1987 float: left;
1987 float: left;
1988 padding-left: 10px;
1988 padding-left: 10px;
1989 }
1989 }
1990
1990
1991 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a
1991 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a
1992 {
1992 {
1993 color: #FFF;
1993 color: #FFF;
1994 }
1994 }
1995
1995
1996 #login div.title {
1996 #login div.title {
1997 width: 420px;
1997 width: 420px;
1998 clear: both;
1998 clear: both;
1999 overflow: hidden;
1999 overflow: hidden;
2000 position: relative;
2000 position: relative;
2001 background-color: #003B76;
2001 background-color: #003B76;
2002 background-repeat : repeat-x;
2002 background-repeat : repeat-x;
2003 background-image : -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
2003 background-image : -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
2004 background-image : -moz-linear-gradient( top, #003b76, #00376e);
2004 background-image : -moz-linear-gradient( top, #003b76, #00376e);
2005 background-image : -ms-linear-gradient( top, #003b76, #00376e);
2005 background-image : -ms-linear-gradient( top, #003b76, #00376e);
2006 background-image : -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
2006 background-image : -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
2007 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
2007 background-image : -webkit-linear-gradient( top, #003b76, #00376e));
2008 background-image : -o-linear-gradient( top, #003b76, #00376e));
2008 background-image : -o-linear-gradient( top, #003b76, #00376e));
2009 background-image : linear-gradient( top, #003b76, #00376e);
2009 background-image : linear-gradient( top, #003b76, #00376e);
2010 filter : progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
2010 filter : progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
2011 margin: 0 auto;
2011 margin: 0 auto;
2012 padding: 0;
2012 padding: 0;
2013 }
2013 }
2014
2014
2015 #login div.inner {
2015 #login div.inner {
2016 width: 380px;
2016 width: 380px;
2017 background: #FFF url("../images/login.png") no-repeat top left;
2017 background: #FFF url("../images/login.png") no-repeat top left;
2018 border-top: none;
2018 border-top: none;
2019 border-bottom: none;
2019 border-bottom: none;
2020 margin: 0 auto;
2020 margin: 0 auto;
2021 padding: 20px;
2021 padding: 20px;
2022 }
2022 }
2023
2023
2024 #login div.form div.fields div.field div.label {
2024 #login div.form div.fields div.field div.label {
2025 width: 173px;
2025 width: 173px;
2026 float: left;
2026 float: left;
2027 text-align: right;
2027 text-align: right;
2028 margin: 2px 10px 0 0;
2028 margin: 2px 10px 0 0;
2029 padding: 5px 0 0 5px;
2029 padding: 5px 0 0 5px;
2030 }
2030 }
2031
2031
2032 #login div.form div.fields div.field div.input input {
2032 #login div.form div.fields div.field div.input input {
2033 width: 176px;
2033 width: 176px;
2034 background: #FFF;
2034 background: #FFF;
2035 border-top: 1px solid #b3b3b3;
2035 border-top: 1px solid #b3b3b3;
2036 border-left: 1px solid #b3b3b3;
2036 border-left: 1px solid #b3b3b3;
2037 border-right: 1px solid #eaeaea;
2037 border-right: 1px solid #eaeaea;
2038 border-bottom: 1px solid #eaeaea;
2038 border-bottom: 1px solid #eaeaea;
2039 color: #000;
2039 color: #000;
2040 font-size: 11px;
2040 font-size: 11px;
2041 margin: 0;
2041 margin: 0;
2042 padding: 7px 7px 6px;
2042 padding: 7px 7px 6px;
2043 }
2043 }
2044
2044
2045 #login div.form div.fields div.buttons {
2045 #login div.form div.fields div.buttons {
2046 clear: both;
2046 clear: both;
2047 overflow: hidden;
2047 overflow: hidden;
2048 border-top: 1px solid #DDD;
2048 border-top: 1px solid #DDD;
2049 text-align: right;
2049 text-align: right;
2050 margin: 0;
2050 margin: 0;
2051 padding: 10px 0 0;
2051 padding: 10px 0 0;
2052 }
2052 }
2053
2053
2054 #login div.form div.links {
2054 #login div.form div.links {
2055 clear: both;
2055 clear: both;
2056 overflow: hidden;
2056 overflow: hidden;
2057 margin: 10px 0 0;
2057 margin: 10px 0 0;
2058 padding: 0 0 2px;
2058 padding: 0 0 2px;
2059 }
2059 }
2060
2060
2061 .user-menu{
2061 .user-menu{
2062 margin: 0px !important;
2062 margin: 0px !important;
2063 float: left;
2063 float: left;
2064 }
2064 }
2065
2065
2066 .user-menu .container{
2066 .user-menu .container{
2067 padding:0px 4px 0px 4px;
2067 padding:0px 4px 0px 4px;
2068 margin: 0px 0px 0px 0px;
2068 margin: 0px 0px 0px 0px;
2069 }
2069 }
2070
2070
2071 .user-menu .gravatar{
2071 .user-menu .gravatar{
2072 margin: 0px 0px 0px 0px;
2072 margin: 0px 0px 0px 0px;
2073 cursor: pointer;
2073 cursor: pointer;
2074 }
2074 }
2075 .user-menu .gravatar.enabled{
2075 .user-menu .gravatar.enabled{
2076 background-color: #FDF784 !important;
2076 background-color: #FDF784 !important;
2077 }
2077 }
2078 .user-menu .gravatar:hover{
2078 .user-menu .gravatar:hover{
2079 background-color: #FDF784 !important;
2079 background-color: #FDF784 !important;
2080 }
2080 }
2081 #quick_login{
2081 #quick_login{
2082 min-height: 80px;
2082 min-height: 80px;
2083 margin: 37px 0 0 -251px;
2083 margin: 37px 0 0 -251px;
2084 padding: 4px;
2084 padding: 4px;
2085 position: absolute;
2085 position: absolute;
2086 width: 278px;
2086 width: 278px;
2087 background-color: #003B76;
2087 background-color: #003B76;
2088 background-repeat: repeat-x;
2088 background-repeat: repeat-x;
2089 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2089 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2090 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2090 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2091 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2091 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2092 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2092 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2093 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2093 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2094 background-image: -o-linear-gradient(top, #003b76, #00376e);
2094 background-image: -o-linear-gradient(top, #003b76, #00376e);
2095 background-image: linear-gradient(top, #003b76, #00376e);
2095 background-image: linear-gradient(top, #003b76, #00376e);
2096 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
2096 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
2097
2097
2098 z-index: 999;
2098 z-index: 999;
2099 -webkit-border-radius: 0px 0px 4px 4px;
2099 -webkit-border-radius: 0px 0px 4px 4px;
2100 -khtml-border-radius: 0px 0px 4px 4px;
2100 -khtml-border-radius: 0px 0px 4px 4px;
2101 -moz-border-radius: 0px 0px 4px 4px;
2101 -moz-border-radius: 0px 0px 4px 4px;
2102 border-radius: 0px 0px 4px 4px;
2102 border-radius: 0px 0px 4px 4px;
2103 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2103 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2104 }
2104 }
2105 #quick_login h4{
2105 #quick_login h4{
2106 color: #fff;
2106 color: #fff;
2107 padding: 5px 0px 5px 14px;
2107 padding: 5px 0px 5px 14px;
2108 }
2108 }
2109
2109
2110 #quick_login .password_forgoten {
2110 #quick_login .password_forgoten {
2111 padding-right: 10px;
2111 padding-right: 10px;
2112 padding-top: 0px;
2112 padding-top: 0px;
2113 text-align: left;
2113 text-align: left;
2114 }
2114 }
2115
2115
2116 #quick_login .password_forgoten a {
2116 #quick_login .password_forgoten a {
2117 font-size: 10px;
2117 font-size: 10px;
2118 color: #fff;
2118 color: #fff;
2119 }
2119 }
2120
2120
2121 #quick_login .register {
2121 #quick_login .register {
2122 padding-right: 10px;
2122 padding-right: 10px;
2123 padding-top: 5px;
2123 padding-top: 5px;
2124 text-align: left;
2124 text-align: left;
2125 }
2125 }
2126
2126
2127 #quick_login .register a {
2127 #quick_login .register a {
2128 font-size: 10px;
2128 font-size: 10px;
2129 color: #fff;
2129 color: #fff;
2130 }
2130 }
2131
2131
2132 #quick_login .submit {
2132 #quick_login .submit {
2133 margin: -20px 0 0 0px;
2133 margin: -20px 0 0 0px;
2134 position: absolute;
2134 position: absolute;
2135 right: 15px;
2135 right: 15px;
2136 }
2136 }
2137
2137
2138 #quick_login .links_left{
2138 #quick_login .links_left{
2139 float: left;
2139 float: left;
2140 }
2140 }
2141 #quick_login .links_right{
2141 #quick_login .links_right{
2142 float: right;
2142 float: right;
2143 }
2143 }
2144 #quick_login .full_name{
2144 #quick_login .full_name{
2145 color: #FFFFFF;
2145 color: #FFFFFF;
2146 font-weight: bold;
2146 font-weight: bold;
2147 padding: 3px;
2147 padding: 3px;
2148 }
2148 }
2149 #quick_login .big_gravatar{
2149 #quick_login .big_gravatar{
2150 padding:4px 0px 0px 6px;
2150 padding:4px 0px 0px 6px;
2151 }
2151 }
2152 #quick_login .inbox{
2152 #quick_login .inbox{
2153 padding:4px 0px 0px 6px;
2153 padding:4px 0px 0px 6px;
2154 color: #FFFFFF;
2154 color: #FFFFFF;
2155 font-weight: bold;
2155 font-weight: bold;
2156 }
2156 }
2157 #quick_login .inbox a{
2157 #quick_login .inbox a{
2158 color: #FFFFFF;
2158 color: #FFFFFF;
2159 }
2159 }
2160 #quick_login .email,#quick_login .email a{
2160 #quick_login .email,#quick_login .email a{
2161 color: #FFFFFF;
2161 color: #FFFFFF;
2162 padding: 3px;
2162 padding: 3px;
2163
2163
2164 }
2164 }
2165 #quick_login .links .logout{
2165 #quick_login .links .logout{
2166
2166
2167 }
2167 }
2168
2168
2169 #quick_login div.form div.fields {
2169 #quick_login div.form div.fields {
2170 padding-top: 2px;
2170 padding-top: 2px;
2171 padding-left: 10px;
2171 padding-left: 10px;
2172 }
2172 }
2173
2173
2174 #quick_login div.form div.fields div.field {
2174 #quick_login div.form div.fields div.field {
2175 padding: 5px;
2175 padding: 5px;
2176 }
2176 }
2177
2177
2178 #quick_login div.form div.fields div.field div.label label {
2178 #quick_login div.form div.fields div.field div.label label {
2179 color: #fff;
2179 color: #fff;
2180 padding-bottom: 3px;
2180 padding-bottom: 3px;
2181 }
2181 }
2182
2182
2183 #quick_login div.form div.fields div.field div.input input {
2183 #quick_login div.form div.fields div.field div.input input {
2184 width: 236px;
2184 width: 236px;
2185 background: #FFF;
2185 background: #FFF;
2186 border-top: 1px solid #b3b3b3;
2186 border-top: 1px solid #b3b3b3;
2187 border-left: 1px solid #b3b3b3;
2187 border-left: 1px solid #b3b3b3;
2188 border-right: 1px solid #eaeaea;
2188 border-right: 1px solid #eaeaea;
2189 border-bottom: 1px solid #eaeaea;
2189 border-bottom: 1px solid #eaeaea;
2190 color: #000;
2190 color: #000;
2191 font-size: 11px;
2191 font-size: 11px;
2192 margin: 0;
2192 margin: 0;
2193 padding: 5px 7px 4px;
2193 padding: 5px 7px 4px;
2194 }
2194 }
2195
2195
2196 #quick_login div.form div.fields div.buttons {
2196 #quick_login div.form div.fields div.buttons {
2197 clear: both;
2197 clear: both;
2198 overflow: hidden;
2198 overflow: hidden;
2199 text-align: right;
2199 text-align: right;
2200 margin: 0;
2200 margin: 0;
2201 padding: 5px 14px 0px 5px;
2201 padding: 5px 14px 0px 5px;
2202 }
2202 }
2203
2203
2204 #quick_login div.form div.links {
2204 #quick_login div.form div.links {
2205 clear: both;
2205 clear: both;
2206 overflow: hidden;
2206 overflow: hidden;
2207 margin: 10px 0 0;
2207 margin: 10px 0 0;
2208 padding: 0 0 2px;
2208 padding: 0 0 2px;
2209 }
2209 }
2210
2210
2211 #quick_login ol.links{
2211 #quick_login ol.links{
2212 display: block;
2212 display: block;
2213 font-weight: bold;
2213 font-weight: bold;
2214 list-style: none outside none;
2214 list-style: none outside none;
2215 text-align: right;
2215 text-align: right;
2216 }
2216 }
2217 #quick_login ol.links li{
2217 #quick_login ol.links li{
2218 line-height: 27px;
2218 line-height: 27px;
2219 margin: 0;
2219 margin: 0;
2220 padding: 0;
2220 padding: 0;
2221 color: #fff;
2221 color: #fff;
2222 display: block;
2222 display: block;
2223 float:none !important;
2223 float:none !important;
2224 }
2224 }
2225
2225
2226 #quick_login ol.links li a{
2226 #quick_login ol.links li a{
2227 color: #fff;
2227 color: #fff;
2228 display: block;
2228 display: block;
2229 padding: 2px;
2229 padding: 2px;
2230 }
2230 }
2231 #quick_login ol.links li a:HOVER{
2231 #quick_login ol.links li a:HOVER{
2232 background-color: inherit !important;
2232 background-color: inherit !important;
2233 }
2233 }
2234
2234
2235 #register div.title {
2235 #register div.title {
2236 clear: both;
2236 clear: both;
2237 overflow: hidden;
2237 overflow: hidden;
2238 position: relative;
2238 position: relative;
2239 background-color: #003B76;
2239 background-color: #003B76;
2240 background-repeat: repeat-x;
2240 background-repeat: repeat-x;
2241 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2241 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2242 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2242 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2243 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2243 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2244 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2244 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2245 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2245 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2246 background-image: -o-linear-gradient(top, #003b76, #00376e);
2246 background-image: -o-linear-gradient(top, #003b76, #00376e);
2247 background-image: linear-gradient(top, #003b76, #00376e);
2247 background-image: linear-gradient(top, #003b76, #00376e);
2248 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
2248 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
2249 endColorstr='#00376e', GradientType=0 );
2249 endColorstr='#00376e', GradientType=0 );
2250 margin: 0 auto;
2250 margin: 0 auto;
2251 padding: 0;
2251 padding: 0;
2252 }
2252 }
2253
2253
2254 #register div.inner {
2254 #register div.inner {
2255 background: #FFF;
2255 background: #FFF;
2256 border-top: none;
2256 border-top: none;
2257 border-bottom: none;
2257 border-bottom: none;
2258 margin: 0 auto;
2258 margin: 0 auto;
2259 padding: 20px;
2259 padding: 20px;
2260 }
2260 }
2261
2261
2262 #register div.form div.fields div.field div.label {
2262 #register div.form div.fields div.field div.label {
2263 width: 135px;
2263 width: 135px;
2264 float: left;
2264 float: left;
2265 text-align: right;
2265 text-align: right;
2266 margin: 2px 10px 0 0;
2266 margin: 2px 10px 0 0;
2267 padding: 5px 0 0 5px;
2267 padding: 5px 0 0 5px;
2268 }
2268 }
2269
2269
2270 #register div.form div.fields div.field div.input input {
2270 #register div.form div.fields div.field div.input input {
2271 width: 300px;
2271 width: 300px;
2272 background: #FFF;
2272 background: #FFF;
2273 border-top: 1px solid #b3b3b3;
2273 border-top: 1px solid #b3b3b3;
2274 border-left: 1px solid #b3b3b3;
2274 border-left: 1px solid #b3b3b3;
2275 border-right: 1px solid #eaeaea;
2275 border-right: 1px solid #eaeaea;
2276 border-bottom: 1px solid #eaeaea;
2276 border-bottom: 1px solid #eaeaea;
2277 color: #000;
2277 color: #000;
2278 font-size: 11px;
2278 font-size: 11px;
2279 margin: 0;
2279 margin: 0;
2280 padding: 7px 7px 6px;
2280 padding: 7px 7px 6px;
2281 }
2281 }
2282
2282
2283 #register div.form div.fields div.buttons {
2283 #register div.form div.fields div.buttons {
2284 clear: both;
2284 clear: both;
2285 overflow: hidden;
2285 overflow: hidden;
2286 border-top: 1px solid #DDD;
2286 border-top: 1px solid #DDD;
2287 text-align: left;
2287 text-align: left;
2288 margin: 0;
2288 margin: 0;
2289 padding: 10px 0 0 150px;
2289 padding: 10px 0 0 150px;
2290 }
2290 }
2291
2291
2292 #register div.form div.activation_msg {
2292 #register div.form div.activation_msg {
2293 padding-top: 4px;
2293 padding-top: 4px;
2294 padding-bottom: 4px;
2294 padding-bottom: 4px;
2295 }
2295 }
2296
2296
2297 #journal .journal_day {
2297 #journal .journal_day {
2298 font-size: 20px;
2298 font-size: 20px;
2299 padding: 10px 0px;
2299 padding: 10px 0px;
2300 border-bottom: 2px solid #DDD;
2300 border-bottom: 2px solid #DDD;
2301 margin-left: 10px;
2301 margin-left: 10px;
2302 margin-right: 10px;
2302 margin-right: 10px;
2303 }
2303 }
2304
2304
2305 #journal .journal_container {
2305 #journal .journal_container {
2306 padding: 5px;
2306 padding: 5px;
2307 clear: both;
2307 clear: both;
2308 margin: 0px 5px 0px 10px;
2308 margin: 0px 5px 0px 10px;
2309 }
2309 }
2310
2310
2311 #journal .journal_action_container {
2311 #journal .journal_action_container {
2312 padding-left: 38px;
2312 padding-left: 38px;
2313 }
2313 }
2314
2314
2315 #journal .journal_user {
2315 #journal .journal_user {
2316 color: #747474;
2316 color: #747474;
2317 font-size: 14px;
2317 font-size: 14px;
2318 font-weight: bold;
2318 font-weight: bold;
2319 height: 30px;
2319 height: 30px;
2320 }
2320 }
2321
2321
2322 #journal .journal_icon {
2322 #journal .journal_icon {
2323 clear: both;
2323 clear: both;
2324 float: left;
2324 float: left;
2325 padding-right: 4px;
2325 padding-right: 4px;
2326 padding-top: 3px;
2326 padding-top: 3px;
2327 }
2327 }
2328
2328
2329 #journal .journal_action {
2329 #journal .journal_action {
2330 padding-top: 4px;
2330 padding-top: 4px;
2331 min-height: 2px;
2331 min-height: 2px;
2332 float: left
2332 float: left
2333 }
2333 }
2334
2334
2335 #journal .journal_action_params {
2335 #journal .journal_action_params {
2336 clear: left;
2336 clear: left;
2337 padding-left: 22px;
2337 padding-left: 22px;
2338 }
2338 }
2339
2339
2340 #journal .journal_repo {
2340 #journal .journal_repo {
2341 float: left;
2341 float: left;
2342 margin-left: 6px;
2342 margin-left: 6px;
2343 padding-top: 3px;
2343 padding-top: 3px;
2344 }
2344 }
2345
2345
2346 #journal .date {
2346 #journal .date {
2347 clear: both;
2347 clear: both;
2348 color: #777777;
2348 color: #777777;
2349 font-size: 11px;
2349 font-size: 11px;
2350 padding-left: 22px;
2350 padding-left: 22px;
2351 }
2351 }
2352
2352
2353 #journal .journal_repo .journal_repo_name {
2353 #journal .journal_repo .journal_repo_name {
2354 font-weight: bold;
2354 font-weight: bold;
2355 font-size: 1.1em;
2355 font-size: 1.1em;
2356 }
2356 }
2357
2357
2358 #journal .compare_view {
2358 #journal .compare_view {
2359 padding: 5px 0px 5px 0px;
2359 padding: 5px 0px 5px 0px;
2360 width: 95px;
2360 width: 95px;
2361 }
2361 }
2362
2362
2363 .journal_highlight {
2363 .journal_highlight {
2364 font-weight: bold;
2364 font-weight: bold;
2365 padding: 0 2px;
2365 padding: 0 2px;
2366 vertical-align: bottom;
2366 vertical-align: bottom;
2367 }
2367 }
2368
2368
2369 .trending_language_tbl,.trending_language_tbl td {
2369 .trending_language_tbl,.trending_language_tbl td {
2370 border: 0 !important;
2370 border: 0 !important;
2371 margin: 0 !important;
2371 margin: 0 !important;
2372 padding: 0 !important;
2372 padding: 0 !important;
2373 }
2373 }
2374
2374
2375 .trending_language_tbl,.trending_language_tbl tr {
2375 .trending_language_tbl,.trending_language_tbl tr {
2376 border-spacing: 1px;
2376 border-spacing: 1px;
2377 }
2377 }
2378
2378
2379 .trending_language {
2379 .trending_language {
2380 background-color: #003367;
2380 background-color: #003367;
2381 color: #FFF;
2381 color: #FFF;
2382 display: block;
2382 display: block;
2383 min-width: 20px;
2383 min-width: 20px;
2384 text-decoration: none;
2384 text-decoration: none;
2385 height: 12px;
2385 height: 12px;
2386 margin-bottom: 0px;
2386 margin-bottom: 0px;
2387 margin-left: 5px;
2387 margin-left: 5px;
2388 white-space: pre;
2388 white-space: pre;
2389 padding: 3px;
2389 padding: 3px;
2390 }
2390 }
2391
2391
2392 h3.files_location {
2392 h3.files_location {
2393 font-size: 1.8em;
2393 font-size: 1.8em;
2394 font-weight: 700;
2394 font-weight: 700;
2395 border-bottom: none !important;
2395 border-bottom: none !important;
2396 margin: 10px 0 !important;
2396 margin: 10px 0 !important;
2397 }
2397 }
2398
2398
2399 #files_data dl dt {
2399 #files_data dl dt {
2400 float: left;
2400 float: left;
2401 width: 60px;
2401 width: 60px;
2402 margin: 0 !important;
2402 margin: 0 !important;
2403 padding: 5px;
2403 padding: 5px;
2404 }
2404 }
2405
2405
2406 #files_data dl dd {
2406 #files_data dl dd {
2407 margin: 0 !important;
2407 margin: 0 !important;
2408 padding: 5px !important;
2408 padding: 5px !important;
2409 }
2409 }
2410
2410
2411 .file_history{
2411 .file_history{
2412 padding-top:10px;
2412 padding-top:10px;
2413 font-size:16px;
2413 font-size:16px;
2414 }
2414 }
2415 .file_author{
2415 .file_author{
2416 float: left;
2416 float: left;
2417 }
2417 }
2418
2418
2419 .file_author .item{
2419 .file_author .item{
2420 float:left;
2420 float:left;
2421 padding:5px;
2421 padding:5px;
2422 color: #888;
2422 color: #888;
2423 }
2423 }
2424
2424
2425 .tablerow0 {
2425 .tablerow0 {
2426 background-color: #F8F8F8;
2426 background-color: #F8F8F8;
2427 }
2427 }
2428
2428
2429 .tablerow1 {
2429 .tablerow1 {
2430 background-color: #FFFFFF;
2430 background-color: #FFFFFF;
2431 }
2431 }
2432
2432
2433 .changeset_id {
2433 .changeset_id {
2434 font-family: monospace;
2434 font-family: monospace;
2435 color: #666666;
2435 color: #666666;
2436 }
2436 }
2437
2437
2438 .changeset_hash {
2438 .changeset_hash {
2439 color: #000000;
2439 color: #000000;
2440 }
2440 }
2441
2441
2442 #changeset_content {
2442 #changeset_content {
2443 border-left: 1px solid #CCC;
2443 border-left: 1px solid #CCC;
2444 border-right: 1px solid #CCC;
2444 border-right: 1px solid #CCC;
2445 border-bottom: 1px solid #CCC;
2445 border-bottom: 1px solid #CCC;
2446 padding: 5px;
2446 padding: 5px;
2447 }
2447 }
2448
2448
2449 #changeset_compare_view_content {
2449 #changeset_compare_view_content {
2450 border: 1px solid #CCC;
2450 border: 1px solid #CCC;
2451 padding: 5px;
2451 padding: 5px;
2452 }
2452 }
2453
2453
2454 #changeset_content .container {
2454 #changeset_content .container {
2455 min-height: 100px;
2455 min-height: 100px;
2456 font-size: 1.2em;
2456 font-size: 1.2em;
2457 overflow: hidden;
2457 overflow: hidden;
2458 }
2458 }
2459
2459
2460 #changeset_compare_view_content .compare_view_commits {
2460 #changeset_compare_view_content .compare_view_commits {
2461 width: auto !important;
2461 width: auto !important;
2462 }
2462 }
2463
2463
2464 #changeset_compare_view_content .compare_view_commits td {
2464 #changeset_compare_view_content .compare_view_commits td {
2465 padding: 0px 0px 0px 12px !important;
2465 padding: 0px 0px 0px 12px !important;
2466 }
2466 }
2467
2467
2468 #changeset_content .container .right {
2468 #changeset_content .container .right {
2469 float: right;
2469 float: right;
2470 width: 20%;
2470 width: 20%;
2471 text-align: right;
2471 text-align: right;
2472 }
2472 }
2473
2473
2474 #changeset_content .container .left .message {
2474 #changeset_content .container .left .message {
2475 white-space: pre-wrap;
2475 white-space: pre-wrap;
2476 }
2476 }
2477 #changeset_content .container .left .message a:hover {
2477 #changeset_content .container .left .message a:hover {
2478 text-decoration: none;
2478 text-decoration: none;
2479 }
2479 }
2480 .cs_files .cur_cs {
2480 .cs_files .cur_cs {
2481 margin: 10px 2px;
2481 margin: 10px 2px;
2482 font-weight: bold;
2482 font-weight: bold;
2483 }
2483 }
2484
2484
2485 .cs_files .node {
2485 .cs_files .node {
2486 float: left;
2486 float: left;
2487 }
2487 }
2488
2488
2489 .cs_files .changes {
2489 .cs_files .changes {
2490 float: right;
2490 float: right;
2491 color:#003367;
2491 color:#003367;
2492
2492
2493 }
2493 }
2494
2494
2495 .cs_files .changes .added {
2495 .cs_files .changes .added {
2496 background-color: #BBFFBB;
2496 background-color: #BBFFBB;
2497 float: left;
2497 float: left;
2498 text-align: center;
2498 text-align: center;
2499 font-size: 9px;
2499 font-size: 9px;
2500 padding: 2px 0px 2px 0px;
2500 padding: 2px 0px 2px 0px;
2501 }
2501 }
2502
2502
2503 .cs_files .changes .deleted {
2503 .cs_files .changes .deleted {
2504 background-color: #FF8888;
2504 background-color: #FF8888;
2505 float: left;
2505 float: left;
2506 text-align: center;
2506 text-align: center;
2507 font-size: 9px;
2507 font-size: 9px;
2508 padding: 2px 0px 2px 0px;
2508 padding: 2px 0px 2px 0px;
2509 }
2509 }
2510 /*new binary*/
2510 /*new binary*/
2511 .cs_files .changes .bin1 {
2511 .cs_files .changes .bin1 {
2512 background-color: #BBFFBB;
2512 background-color: #BBFFBB;
2513 float: left;
2513 float: left;
2514 text-align: center;
2514 text-align: center;
2515 font-size: 9px;
2515 font-size: 9px;
2516 padding: 2px 0px 2px 0px;
2516 padding: 2px 0px 2px 0px;
2517 }
2517 }
2518
2518
2519 /*deleted binary*/
2519 /*deleted binary*/
2520 .cs_files .changes .bin2 {
2520 .cs_files .changes .bin2 {
2521 background-color: #FF8888;
2521 background-color: #FF8888;
2522 float: left;
2522 float: left;
2523 text-align: center;
2523 text-align: center;
2524 font-size: 9px;
2524 font-size: 9px;
2525 padding: 2px 0px 2px 0px;
2525 padding: 2px 0px 2px 0px;
2526 }
2526 }
2527
2527
2528 /*mod binary*/
2528 /*mod binary*/
2529 .cs_files .changes .bin3 {
2529 .cs_files .changes .bin3 {
2530 background-color: #DDDDDD;
2530 background-color: #DDDDDD;
2531 float: left;
2531 float: left;
2532 text-align: center;
2532 text-align: center;
2533 font-size: 9px;
2533 font-size: 9px;
2534 padding: 2px 0px 2px 0px;
2534 padding: 2px 0px 2px 0px;
2535 }
2535 }
2536
2536
2537 /*rename file*/
2537 /*rename file*/
2538 .cs_files .changes .bin4 {
2538 .cs_files .changes .bin4 {
2539 background-color: #6D99FF;
2539 background-color: #6D99FF;
2540 float: left;
2540 float: left;
2541 text-align: center;
2541 text-align: center;
2542 font-size: 9px;
2542 font-size: 9px;
2543 padding: 2px 0px 2px 0px;
2543 padding: 2px 0px 2px 0px;
2544 }
2544 }
2545
2545
2546
2546
2547 .cs_files .cs_added,.cs_files .cs_A {
2547 .cs_files .cs_added,.cs_files .cs_A {
2548 background: url("../images/icons/page_white_add.png") no-repeat scroll
2548 background: url("../images/icons/page_white_add.png") no-repeat scroll
2549 3px;
2549 3px;
2550 height: 16px;
2550 height: 16px;
2551 padding-left: 20px;
2551 padding-left: 20px;
2552 margin-top: 7px;
2552 margin-top: 7px;
2553 text-align: left;
2553 text-align: left;
2554 }
2554 }
2555
2555
2556 .cs_files .cs_changed,.cs_files .cs_M {
2556 .cs_files .cs_changed,.cs_files .cs_M {
2557 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2557 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2558 3px;
2558 3px;
2559 height: 16px;
2559 height: 16px;
2560 padding-left: 20px;
2560 padding-left: 20px;
2561 margin-top: 7px;
2561 margin-top: 7px;
2562 text-align: left;
2562 text-align: left;
2563 }
2563 }
2564
2564
2565 .cs_files .cs_removed,.cs_files .cs_D {
2565 .cs_files .cs_removed,.cs_files .cs_D {
2566 background: url("../images/icons/page_white_delete.png") no-repeat
2566 background: url("../images/icons/page_white_delete.png") no-repeat
2567 scroll 3px;
2567 scroll 3px;
2568 height: 16px;
2568 height: 16px;
2569 padding-left: 20px;
2569 padding-left: 20px;
2570 margin-top: 7px;
2570 margin-top: 7px;
2571 text-align: left;
2571 text-align: left;
2572 }
2572 }
2573
2573
2574 #graph {
2574 #graph {
2575 overflow: hidden;
2575 overflow: hidden;
2576 }
2576 }
2577
2577
2578 #graph_nodes {
2578 #graph_nodes {
2579 float: left;
2579 float: left;
2580 margin-right: 0px;
2580 margin-right: 0px;
2581 margin-top: 0px;
2581 margin-top: 0px;
2582 }
2582 }
2583
2583
2584 #graph_content {
2584 #graph_content {
2585 width: 80%;
2585 width: 80%;
2586 float: left;
2586 float: left;
2587 }
2587 }
2588
2588
2589 #graph_content .container_header {
2589 #graph_content .container_header {
2590 border-bottom: 1px solid #DDD;
2590 border-bottom: 1px solid #DDD;
2591 padding: 10px;
2591 padding: 10px;
2592 height: 25px;
2592 height: 25px;
2593 }
2593 }
2594
2594
2595 #graph_content #rev_range_container {
2595 #graph_content #rev_range_container {
2596 float: left;
2596 float: left;
2597 margin: 0px 0px 0px 3px;
2597 margin: 0px 0px 0px 3px;
2598 }
2598 }
2599
2599
2600 #graph_content #rev_range_clear {
2600 #graph_content #rev_range_clear {
2601 float: left;
2601 float: left;
2602 margin: 0px 0px 0px 3px;
2602 margin: 0px 0px 0px 3px;
2603 }
2603 }
2604
2604
2605 #graph_content .container {
2605 #graph_content .container {
2606 border-bottom: 1px solid #DDD;
2606 border-bottom: 1px solid #DDD;
2607 height: 56px;
2607 height: 56px;
2608 overflow: hidden;
2608 overflow: hidden;
2609 }
2609 }
2610
2610
2611 #graph_content .container .right {
2611 #graph_content .container .right {
2612 float: right;
2612 float: right;
2613 width: 23%;
2613 width: 23%;
2614 text-align: right;
2614 text-align: right;
2615 }
2615 }
2616
2616
2617 #graph_content .container .left {
2617 #graph_content .container .left {
2618 float: left;
2618 float: left;
2619 width: 25%;
2619 width: 25%;
2620 padding-left: 5px;
2620 padding-left: 5px;
2621 }
2621 }
2622
2622
2623 #graph_content .container .mid {
2623 #graph_content .container .mid {
2624 float: left;
2624 float: left;
2625 width: 49%;
2625 width: 49%;
2626 }
2626 }
2627
2627
2628
2628
2629 #graph_content .container .left .date {
2629 #graph_content .container .left .date {
2630 color: #666;
2630 color: #666;
2631 padding-left: 22px;
2631 padding-left: 22px;
2632 font-size: 10px;
2632 font-size: 10px;
2633 }
2633 }
2634
2634
2635 #graph_content .container .left .author {
2635 #graph_content .container .left .author {
2636 height: 22px;
2636 height: 22px;
2637 }
2637 }
2638
2638
2639 #graph_content .container .left .author .user {
2639 #graph_content .container .left .author .user {
2640 color: #444444;
2640 color: #444444;
2641 float: left;
2641 float: left;
2642 margin-left: -4px;
2642 margin-left: -4px;
2643 margin-top: 4px;
2643 margin-top: 4px;
2644 }
2644 }
2645
2645
2646 #graph_content .container .mid .message {
2646 #graph_content .container .mid .message {
2647 white-space: pre-wrap;
2647 white-space: pre-wrap;
2648 }
2648 }
2649
2649
2650 #graph_content .container .mid .message a:hover{
2650 #graph_content .container .mid .message a:hover{
2651 text-decoration: none;
2651 text-decoration: none;
2652 }
2652 }
2653 #content #graph_content .message .revision-link,
2653
2654 #changeset_content .container .message .revision-link
2654 .revision-link
2655 {
2655 {
2656 color:#3F6F9F;
2656 color:#3F6F9F;
2657 font-weight: bold !important;
2657 font-weight: bold !important;
2658 }
2658 }
2659
2659
2660 #content #graph_content .message .issue-tracker-link,
2660 .issue-tracker-link{
2661 #changeset_content .container .message .issue-tracker-link{
2662 color:#3F6F9F;
2661 color:#3F6F9F;
2663 font-weight: bold !important;
2662 font-weight: bold !important;
2664 }
2663 }
2665
2664
2666 .changeset-status-container{
2665 .changeset-status-container{
2667 padding-right: 5px;
2666 padding-right: 5px;
2668 margin-top:1px;
2667 margin-top:1px;
2669 float:right;
2668 float:right;
2670 height:14px;
2669 height:14px;
2671 }
2670 }
2672 .code-header .changeset-status-container{
2671 .code-header .changeset-status-container{
2673 float:left;
2672 float:left;
2674 padding:2px 0px 0px 2px;
2673 padding:2px 0px 0px 2px;
2675 }
2674 }
2676 .changeset-status-container .changeset-status-lbl{
2675 .changeset-status-container .changeset-status-lbl{
2677 color: rgb(136, 136, 136);
2676 color: rgb(136, 136, 136);
2678 float: left;
2677 float: left;
2679 padding: 3px 4px 0px 0px
2678 padding: 3px 4px 0px 0px
2680 }
2679 }
2681 .code-header .changeset-status-container .changeset-status-lbl{
2680 .code-header .changeset-status-container .changeset-status-lbl{
2682 float: left;
2681 float: left;
2683 padding: 0px 4px 0px 0px;
2682 padding: 0px 4px 0px 0px;
2684 }
2683 }
2685 .changeset-status-container .changeset-status-ico{
2684 .changeset-status-container .changeset-status-ico{
2686 float: left;
2685 float: left;
2687 }
2686 }
2688 .code-header .changeset-status-container .changeset-status-ico, .container .changeset-status-ico{
2687 .code-header .changeset-status-container .changeset-status-ico, .container .changeset-status-ico{
2689 float: left;
2688 float: left;
2690 }
2689 }
2691 .right .comments-container{
2690 .right .comments-container{
2692 padding-right: 5px;
2691 padding-right: 5px;
2693 margin-top:1px;
2692 margin-top:1px;
2694 float:right;
2693 float:right;
2695 height:14px;
2694 height:14px;
2696 }
2695 }
2697
2696
2698 .right .comments-cnt{
2697 .right .comments-cnt{
2699 float: left;
2698 float: left;
2700 color: rgb(136, 136, 136);
2699 color: rgb(136, 136, 136);
2701 padding-right: 2px;
2700 padding-right: 2px;
2702 }
2701 }
2703
2702
2704 .right .changes{
2703 .right .changes{
2705 clear: both;
2704 clear: both;
2706 }
2705 }
2707
2706
2708 .right .changes .changed_total {
2707 .right .changes .changed_total {
2709 display: block;
2708 display: block;
2710 float: right;
2709 float: right;
2711 text-align: center;
2710 text-align: center;
2712 min-width: 45px;
2711 min-width: 45px;
2713 cursor: pointer;
2712 cursor: pointer;
2714 color: #444444;
2713 color: #444444;
2715 background: #FEA;
2714 background: #FEA;
2716 -webkit-border-radius: 0px 0px 0px 6px;
2715 -webkit-border-radius: 0px 0px 0px 6px;
2717 -moz-border-radius: 0px 0px 0px 6px;
2716 -moz-border-radius: 0px 0px 0px 6px;
2718 border-radius: 0px 0px 0px 6px;
2717 border-radius: 0px 0px 0px 6px;
2719 padding: 1px;
2718 padding: 1px;
2720 }
2719 }
2721
2720
2722 .right .changes .added,.changed,.removed {
2721 .right .changes .added,.changed,.removed {
2723 display: block;
2722 display: block;
2724 padding: 1px;
2723 padding: 1px;
2725 color: #444444;
2724 color: #444444;
2726 float: right;
2725 float: right;
2727 text-align: center;
2726 text-align: center;
2728 min-width: 15px;
2727 min-width: 15px;
2729 }
2728 }
2730
2729
2731 .right .changes .added {
2730 .right .changes .added {
2732 background: #CFC;
2731 background: #CFC;
2733 }
2732 }
2734
2733
2735 .right .changes .changed {
2734 .right .changes .changed {
2736 background: #FEA;
2735 background: #FEA;
2737 }
2736 }
2738
2737
2739 .right .changes .removed {
2738 .right .changes .removed {
2740 background: #FAA;
2739 background: #FAA;
2741 }
2740 }
2742
2741
2743 .right .merge {
2742 .right .merge {
2744 padding: 1px 3px 1px 3px;
2743 padding: 1px 3px 1px 3px;
2745 background-color: #fca062;
2744 background-color: #fca062;
2746 font-size: 10px;
2745 font-size: 10px;
2747 font-weight: bold;
2746 font-weight: bold;
2748 color: #ffffff;
2747 color: #ffffff;
2749 text-transform: uppercase;
2748 text-transform: uppercase;
2750 white-space: nowrap;
2749 white-space: nowrap;
2751 -webkit-border-radius: 3px;
2750 -webkit-border-radius: 3px;
2752 -moz-border-radius: 3px;
2751 -moz-border-radius: 3px;
2753 border-radius: 3px;
2752 border-radius: 3px;
2754 margin-right: 2px;
2753 margin-right: 2px;
2755 }
2754 }
2756
2755
2757 .right .parent {
2756 .right .parent {
2758 color: #666666;
2757 color: #666666;
2759 clear:both;
2758 clear:both;
2760 }
2759 }
2761 .right .logtags{
2760 .right .logtags{
2762 padding: 2px 2px 2px 2px;
2761 padding: 2px 2px 2px 2px;
2763 }
2762 }
2764 .right .logtags .branchtag,.right .logtags .tagtag,.right .logtags .booktag{
2763 .right .logtags .branchtag,.right .logtags .tagtag,.right .logtags .booktag{
2765 margin: 0px 2px;
2764 margin: 0px 2px;
2766 }
2765 }
2767
2766
2768 .right .logtags .branchtag,.logtags .branchtag {
2767 .right .logtags .branchtag,.logtags .branchtag {
2769 padding: 1px 3px 1px 3px;
2768 padding: 1px 3px 1px 3px;
2770 background-color: #bfbfbf;
2769 background-color: #bfbfbf;
2771 font-size: 10px;
2770 font-size: 10px;
2772 font-weight: bold;
2771 font-weight: bold;
2773 color: #ffffff;
2772 color: #ffffff;
2774 text-transform: uppercase;
2773 text-transform: uppercase;
2775 white-space: nowrap;
2774 white-space: nowrap;
2776 -webkit-border-radius: 3px;
2775 -webkit-border-radius: 3px;
2777 -moz-border-radius: 3px;
2776 -moz-border-radius: 3px;
2778 border-radius: 3px;
2777 border-radius: 3px;
2779 }
2778 }
2780 .right .logtags .branchtag a:hover,.logtags .branchtag a{
2779 .right .logtags .branchtag a:hover,.logtags .branchtag a{
2781 color: #ffffff;
2780 color: #ffffff;
2782 }
2781 }
2783 .right .logtags .branchtag a:hover,.logtags .branchtag a:hover{
2782 .right .logtags .branchtag a:hover,.logtags .branchtag a:hover{
2784 text-decoration: none;
2783 text-decoration: none;
2785 color: #ffffff;
2784 color: #ffffff;
2786 }
2785 }
2787 .right .logtags .tagtag,.logtags .tagtag {
2786 .right .logtags .tagtag,.logtags .tagtag {
2788 padding: 1px 3px 1px 3px;
2787 padding: 1px 3px 1px 3px;
2789 background-color: #62cffc;
2788 background-color: #62cffc;
2790 font-size: 10px;
2789 font-size: 10px;
2791 font-weight: bold;
2790 font-weight: bold;
2792 color: #ffffff;
2791 color: #ffffff;
2793 text-transform: uppercase;
2792 text-transform: uppercase;
2794 white-space: nowrap;
2793 white-space: nowrap;
2795 -webkit-border-radius: 3px;
2794 -webkit-border-radius: 3px;
2796 -moz-border-radius: 3px;
2795 -moz-border-radius: 3px;
2797 border-radius: 3px;
2796 border-radius: 3px;
2798 }
2797 }
2799 .right .logtags .tagtag a:hover,.logtags .tagtag a{
2798 .right .logtags .tagtag a:hover,.logtags .tagtag a{
2800 color: #ffffff;
2799 color: #ffffff;
2801 }
2800 }
2802 .right .logtags .tagtag a:hover,.logtags .tagtag a:hover{
2801 .right .logtags .tagtag a:hover,.logtags .tagtag a:hover{
2803 text-decoration: none;
2802 text-decoration: none;
2804 color: #ffffff;
2803 color: #ffffff;
2805 }
2804 }
2806 .right .logbooks .bookbook,.logbooks .bookbook,.right .logtags .bookbook,.logtags .bookbook {
2805 .right .logbooks .bookbook,.logbooks .bookbook,.right .logtags .bookbook,.logtags .bookbook {
2807 padding: 1px 3px 1px 3px;
2806 padding: 1px 3px 1px 3px;
2808 background-color: #46A546;
2807 background-color: #46A546;
2809 font-size: 10px;
2808 font-size: 10px;
2810 font-weight: bold;
2809 font-weight: bold;
2811 color: #ffffff;
2810 color: #ffffff;
2812 text-transform: uppercase;
2811 text-transform: uppercase;
2813 white-space: nowrap;
2812 white-space: nowrap;
2814 -webkit-border-radius: 3px;
2813 -webkit-border-radius: 3px;
2815 -moz-border-radius: 3px;
2814 -moz-border-radius: 3px;
2816 border-radius: 3px;
2815 border-radius: 3px;
2817 }
2816 }
2818 .right .logbooks .bookbook,.logbooks .bookbook a,.right .logtags .bookbook,.logtags .bookbook a{
2817 .right .logbooks .bookbook,.logbooks .bookbook a,.right .logtags .bookbook,.logtags .bookbook a{
2819 color: #ffffff;
2818 color: #ffffff;
2820 }
2819 }
2821 .right .logbooks .bookbook,.logbooks .bookbook a:hover,.right .logtags .bookbook,.logtags .bookbook a:hover{
2820 .right .logbooks .bookbook,.logbooks .bookbook a:hover,.right .logtags .bookbook,.logtags .bookbook a:hover{
2822 text-decoration: none;
2821 text-decoration: none;
2823 color: #ffffff;
2822 color: #ffffff;
2824 }
2823 }
2825 div.browserblock {
2824 div.browserblock {
2826 overflow: hidden;
2825 overflow: hidden;
2827 border: 1px solid #ccc;
2826 border: 1px solid #ccc;
2828 background: #f8f8f8;
2827 background: #f8f8f8;
2829 font-size: 100%;
2828 font-size: 100%;
2830 line-height: 125%;
2829 line-height: 125%;
2831 padding: 0;
2830 padding: 0;
2832 -webkit-border-radius: 6px 6px 0px 0px;
2831 -webkit-border-radius: 6px 6px 0px 0px;
2833 -moz-border-radius: 6px 6px 0px 0px;
2832 -moz-border-radius: 6px 6px 0px 0px;
2834 border-radius: 6px 6px 0px 0px;
2833 border-radius: 6px 6px 0px 0px;
2835 }
2834 }
2836
2835
2837 div.browserblock .browser-header {
2836 div.browserblock .browser-header {
2838 background: #FFF;
2837 background: #FFF;
2839 padding: 10px 0px 15px 0px;
2838 padding: 10px 0px 15px 0px;
2840 width: 100%;
2839 width: 100%;
2841 }
2840 }
2842
2841
2843 div.browserblock .browser-nav {
2842 div.browserblock .browser-nav {
2844 float: left
2843 float: left
2845 }
2844 }
2846
2845
2847 div.browserblock .browser-branch {
2846 div.browserblock .browser-branch {
2848 float: left;
2847 float: left;
2849 }
2848 }
2850
2849
2851 div.browserblock .browser-branch label {
2850 div.browserblock .browser-branch label {
2852 color: #4A4A4A;
2851 color: #4A4A4A;
2853 vertical-align: text-top;
2852 vertical-align: text-top;
2854 }
2853 }
2855
2854
2856 div.browserblock .browser-header span {
2855 div.browserblock .browser-header span {
2857 margin-left: 5px;
2856 margin-left: 5px;
2858 font-weight: 700;
2857 font-weight: 700;
2859 }
2858 }
2860
2859
2861 div.browserblock .browser-search {
2860 div.browserblock .browser-search {
2862 clear: both;
2861 clear: both;
2863 padding: 8px 8px 0px 5px;
2862 padding: 8px 8px 0px 5px;
2864 height: 20px;
2863 height: 20px;
2865 }
2864 }
2866
2865
2867 div.browserblock #node_filter_box {
2866 div.browserblock #node_filter_box {
2868
2867
2869 }
2868 }
2870
2869
2871 div.browserblock .search_activate {
2870 div.browserblock .search_activate {
2872 float: left
2871 float: left
2873 }
2872 }
2874
2873
2875 div.browserblock .add_node {
2874 div.browserblock .add_node {
2876 float: left;
2875 float: left;
2877 padding-left: 5px;
2876 padding-left: 5px;
2878 }
2877 }
2879
2878
2880 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover
2879 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover
2881 {
2880 {
2882 text-decoration: none !important;
2881 text-decoration: none !important;
2883 }
2882 }
2884
2883
2885 div.browserblock .browser-body {
2884 div.browserblock .browser-body {
2886 background: #EEE;
2885 background: #EEE;
2887 border-top: 1px solid #CCC;
2886 border-top: 1px solid #CCC;
2888 }
2887 }
2889
2888
2890 table.code-browser {
2889 table.code-browser {
2891 border-collapse: collapse;
2890 border-collapse: collapse;
2892 width: 100%;
2891 width: 100%;
2893 }
2892 }
2894
2893
2895 table.code-browser tr {
2894 table.code-browser tr {
2896 margin: 3px;
2895 margin: 3px;
2897 }
2896 }
2898
2897
2899 table.code-browser thead th {
2898 table.code-browser thead th {
2900 background-color: #EEE;
2899 background-color: #EEE;
2901 height: 20px;
2900 height: 20px;
2902 font-size: 1.1em;
2901 font-size: 1.1em;
2903 font-weight: 700;
2902 font-weight: 700;
2904 text-align: left;
2903 text-align: left;
2905 padding-left: 10px;
2904 padding-left: 10px;
2906 }
2905 }
2907
2906
2908 table.code-browser tbody td {
2907 table.code-browser tbody td {
2909 padding-left: 10px;
2908 padding-left: 10px;
2910 height: 20px;
2909 height: 20px;
2911 }
2910 }
2912
2911
2913 table.code-browser .browser-file {
2912 table.code-browser .browser-file {
2914 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2913 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2915 height: 16px;
2914 height: 16px;
2916 padding-left: 20px;
2915 padding-left: 20px;
2917 text-align: left;
2916 text-align: left;
2918 }
2917 }
2919 .diffblock .changeset_header {
2918 .diffblock .changeset_header {
2920 height: 16px;
2919 height: 16px;
2921 }
2920 }
2922 .diffblock .changeset_file {
2921 .diffblock .changeset_file {
2923 background: url("../images/icons/file.png") no-repeat scroll 3px;
2922 background: url("../images/icons/file.png") no-repeat scroll 3px;
2924 text-align: left;
2923 text-align: left;
2925 float: left;
2924 float: left;
2926 padding: 2px 0px 2px 22px;
2925 padding: 2px 0px 2px 22px;
2927 }
2926 }
2928 .diffblock .diff-menu-wrapper{
2927 .diffblock .diff-menu-wrapper{
2929 float: left;
2928 float: left;
2930 }
2929 }
2931
2930
2932 .diffblock .diff-menu{
2931 .diffblock .diff-menu{
2933 position: absolute;
2932 position: absolute;
2934 background: none repeat scroll 0 0 #FFFFFF;
2933 background: none repeat scroll 0 0 #FFFFFF;
2935 border-color: #003367 #666666 #666666;
2934 border-color: #003367 #666666 #666666;
2936 border-right: 1px solid #666666;
2935 border-right: 1px solid #666666;
2937 border-style: solid solid solid;
2936 border-style: solid solid solid;
2938 border-width: 1px;
2937 border-width: 1px;
2939 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2938 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2940 margin-top:5px;
2939 margin-top:5px;
2941 margin-left:1px;
2940 margin-left:1px;
2942
2941
2943 }
2942 }
2944 .diffblock .diff-actions {
2943 .diffblock .diff-actions {
2945 padding: 2px 0px 0px 2px;
2944 padding: 2px 0px 0px 2px;
2946 float: left;
2945 float: left;
2947 }
2946 }
2948 .diffblock .diff-menu ul li {
2947 .diffblock .diff-menu ul li {
2949 padding: 0px 0px 0px 0px !important;
2948 padding: 0px 0px 0px 0px !important;
2950 }
2949 }
2951 .diffblock .diff-menu ul li a{
2950 .diffblock .diff-menu ul li a{
2952 display: block;
2951 display: block;
2953 padding: 3px 8px 3px 8px !important;
2952 padding: 3px 8px 3px 8px !important;
2954 }
2953 }
2955 .diffblock .diff-menu ul li a:hover{
2954 .diffblock .diff-menu ul li a:hover{
2956 text-decoration: none;
2955 text-decoration: none;
2957 background-color: #EEEEEE;
2956 background-color: #EEEEEE;
2958 }
2957 }
2959 table.code-browser .browser-dir {
2958 table.code-browser .browser-dir {
2960 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2959 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2961 height: 16px;
2960 height: 16px;
2962 padding-left: 20px;
2961 padding-left: 20px;
2963 text-align: left;
2962 text-align: left;
2964 }
2963 }
2965
2964
2966 table.code-browser .submodule-dir {
2965 table.code-browser .submodule-dir {
2967 background: url("../images/icons/disconnect.png") no-repeat scroll 3px;
2966 background: url("../images/icons/disconnect.png") no-repeat scroll 3px;
2968 height: 16px;
2967 height: 16px;
2969 padding-left: 20px;
2968 padding-left: 20px;
2970 text-align: left;
2969 text-align: left;
2971 }
2970 }
2972
2971
2973
2972
2974 .box .search {
2973 .box .search {
2975 clear: both;
2974 clear: both;
2976 overflow: hidden;
2975 overflow: hidden;
2977 margin: 0;
2976 margin: 0;
2978 padding: 0 20px 10px;
2977 padding: 0 20px 10px;
2979 }
2978 }
2980
2979
2981 .box .search div.search_path {
2980 .box .search div.search_path {
2982 background: none repeat scroll 0 0 #EEE;
2981 background: none repeat scroll 0 0 #EEE;
2983 border: 1px solid #CCC;
2982 border: 1px solid #CCC;
2984 color: blue;
2983 color: blue;
2985 margin-bottom: 10px;
2984 margin-bottom: 10px;
2986 padding: 10px 0;
2985 padding: 10px 0;
2987 }
2986 }
2988
2987
2989 .box .search div.search_path div.link {
2988 .box .search div.search_path div.link {
2990 font-weight: 700;
2989 font-weight: 700;
2991 margin-left: 25px;
2990 margin-left: 25px;
2992 }
2991 }
2993
2992
2994 .box .search div.search_path div.link a {
2993 .box .search div.search_path div.link a {
2995 color: #003367;
2994 color: #003367;
2996 cursor: pointer;
2995 cursor: pointer;
2997 text-decoration: none;
2996 text-decoration: none;
2998 }
2997 }
2999
2998
3000 #path_unlock {
2999 #path_unlock {
3001 color: red;
3000 color: red;
3002 font-size: 1.2em;
3001 font-size: 1.2em;
3003 padding-left: 4px;
3002 padding-left: 4px;
3004 }
3003 }
3005
3004
3006 .info_box span {
3005 .info_box span {
3007 margin-left: 3px;
3006 margin-left: 3px;
3008 margin-right: 3px;
3007 margin-right: 3px;
3009 }
3008 }
3010
3009
3011 .info_box .rev {
3010 .info_box .rev {
3012 color: #003367;
3011 color: #003367;
3013 font-size: 1.6em;
3012 font-size: 1.6em;
3014 font-weight: bold;
3013 font-weight: bold;
3015 vertical-align: sub;
3014 vertical-align: sub;
3016 }
3015 }
3017
3016
3018 .info_box input#at_rev,.info_box input#size {
3017 .info_box input#at_rev,.info_box input#size {
3019 background: #FFF;
3018 background: #FFF;
3020 border-top: 1px solid #b3b3b3;
3019 border-top: 1px solid #b3b3b3;
3021 border-left: 1px solid #b3b3b3;
3020 border-left: 1px solid #b3b3b3;
3022 border-right: 1px solid #eaeaea;
3021 border-right: 1px solid #eaeaea;
3023 border-bottom: 1px solid #eaeaea;
3022 border-bottom: 1px solid #eaeaea;
3024 color: #000;
3023 color: #000;
3025 font-size: 12px;
3024 font-size: 12px;
3026 margin: 0;
3025 margin: 0;
3027 padding: 1px 5px 1px;
3026 padding: 1px 5px 1px;
3028 }
3027 }
3029
3028
3030 .info_box input#view {
3029 .info_box input#view {
3031 text-align: center;
3030 text-align: center;
3032 padding: 4px 3px 2px 2px;
3031 padding: 4px 3px 2px 2px;
3033 }
3032 }
3034
3033
3035 .yui-overlay,.yui-panel-container {
3034 .yui-overlay,.yui-panel-container {
3036 visibility: hidden;
3035 visibility: hidden;
3037 position: absolute;
3036 position: absolute;
3038 z-index: 2;
3037 z-index: 2;
3039 }
3038 }
3040
3039
3041 #tip-box {
3040 #tip-box {
3042 position: absolute;
3041 position: absolute;
3043
3042
3044 background-color: #FFF;
3043 background-color: #FFF;
3045 border: 2px solid #003367;
3044 border: 2px solid #003367;
3046 font: 100% sans-serif;
3045 font: 100% sans-serif;
3047 width: auto;
3046 width: auto;
3048 opacity: 1px;
3047 opacity: 1px;
3049 padding: 8px;
3048 padding: 8px;
3050
3049
3051 white-space: pre-wrap;
3050 white-space: pre-wrap;
3052 -webkit-border-radius: 8px 8px 8px 8px;
3051 -webkit-border-radius: 8px 8px 8px 8px;
3053 -khtml-border-radius: 8px 8px 8px 8px;
3052 -khtml-border-radius: 8px 8px 8px 8px;
3054 -moz-border-radius: 8px 8px 8px 8px;
3053 -moz-border-radius: 8px 8px 8px 8px;
3055 border-radius: 8px 8px 8px 8px;
3054 border-radius: 8px 8px 8px 8px;
3056 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3055 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3057 -moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3056 -moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3058 -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3057 -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3059 }
3058 }
3060
3059
3061 .mentions-container{
3060 .mentions-container{
3062 width: 90% !important;
3061 width: 90% !important;
3063 }
3062 }
3064 .mentions-container .yui-ac-content{
3063 .mentions-container .yui-ac-content{
3065 width: 100% !important;
3064 width: 100% !important;
3066 }
3065 }
3067
3066
3068 .ac {
3067 .ac {
3069 vertical-align: top;
3068 vertical-align: top;
3070 }
3069 }
3071
3070
3072 .ac .yui-ac {
3071 .ac .yui-ac {
3073 position: inherit;
3072 position: inherit;
3074 font-size: 100%;
3073 font-size: 100%;
3075 }
3074 }
3076
3075
3077 .ac .perm_ac {
3076 .ac .perm_ac {
3078 width: 20em;
3077 width: 20em;
3079 }
3078 }
3080
3079
3081 .ac .yui-ac-input {
3080 .ac .yui-ac-input {
3082 width: 100%;
3081 width: 100%;
3083 }
3082 }
3084
3083
3085 .ac .yui-ac-container {
3084 .ac .yui-ac-container {
3086 position: absolute;
3085 position: absolute;
3087 top: 1.6em;
3086 top: 1.6em;
3088 width: auto;
3087 width: auto;
3089 }
3088 }
3090
3089
3091 .ac .yui-ac-content {
3090 .ac .yui-ac-content {
3092 position: absolute;
3091 position: absolute;
3093 border: 1px solid gray;
3092 border: 1px solid gray;
3094 background: #fff;
3093 background: #fff;
3095 z-index: 9050;
3094 z-index: 9050;
3096
3095
3097 }
3096 }
3098
3097
3099 .ac .yui-ac-shadow {
3098 .ac .yui-ac-shadow {
3100 position: absolute;
3099 position: absolute;
3101 width: 100%;
3100 width: 100%;
3102 background: #000;
3101 background: #000;
3103 -moz-opacity: 0.1px;
3102 -moz-opacity: 0.1px;
3104 opacity: .10;
3103 opacity: .10;
3105 filter: alpha(opacity = 10);
3104 filter: alpha(opacity = 10);
3106 z-index: 9049;
3105 z-index: 9049;
3107 margin: .3em;
3106 margin: .3em;
3108 }
3107 }
3109
3108
3110 .ac .yui-ac-content ul {
3109 .ac .yui-ac-content ul {
3111 width: 100%;
3110 width: 100%;
3112 margin: 0;
3111 margin: 0;
3113 padding: 0;
3112 padding: 0;
3114 z-index: 9050;
3113 z-index: 9050;
3115 }
3114 }
3116
3115
3117 .ac .yui-ac-content li {
3116 .ac .yui-ac-content li {
3118 cursor: default;
3117 cursor: default;
3119 white-space: nowrap;
3118 white-space: nowrap;
3120 margin: 0;
3119 margin: 0;
3121 padding: 2px 5px;
3120 padding: 2px 5px;
3122 height: 18px;
3121 height: 18px;
3123 z-index: 9050;
3122 z-index: 9050;
3124 display: block;
3123 display: block;
3125 width: auto !important;
3124 width: auto !important;
3126 }
3125 }
3127
3126
3128 .ac .yui-ac-content li .ac-container-wrap{
3127 .ac .yui-ac-content li .ac-container-wrap{
3129 width: auto;
3128 width: auto;
3130 }
3129 }
3131
3130
3132 .ac .yui-ac-content li.yui-ac-prehighlight {
3131 .ac .yui-ac-content li.yui-ac-prehighlight {
3133 background: #B3D4FF;
3132 background: #B3D4FF;
3134 z-index: 9050;
3133 z-index: 9050;
3135 }
3134 }
3136
3135
3137 .ac .yui-ac-content li.yui-ac-highlight {
3136 .ac .yui-ac-content li.yui-ac-highlight {
3138 background: #556CB5;
3137 background: #556CB5;
3139 color: #FFF;
3138 color: #FFF;
3140 z-index: 9050;
3139 z-index: 9050;
3141 }
3140 }
3142 .ac .yui-ac-bd{
3141 .ac .yui-ac-bd{
3143 z-index: 9050;
3142 z-index: 9050;
3144 }
3143 }
3145
3144
3146 .follow {
3145 .follow {
3147 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3146 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3148 height: 16px;
3147 height: 16px;
3149 width: 20px;
3148 width: 20px;
3150 cursor: pointer;
3149 cursor: pointer;
3151 display: block;
3150 display: block;
3152 float: right;
3151 float: right;
3153 margin-top: 2px;
3152 margin-top: 2px;
3154 }
3153 }
3155
3154
3156 .following {
3155 .following {
3157 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3156 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3158 height: 16px;
3157 height: 16px;
3159 width: 20px;
3158 width: 20px;
3160 cursor: pointer;
3159 cursor: pointer;
3161 display: block;
3160 display: block;
3162 float: right;
3161 float: right;
3163 margin-top: 2px;
3162 margin-top: 2px;
3164 }
3163 }
3165
3164
3166 .locking_locked{
3165 .locking_locked{
3167 background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px;
3166 background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px;
3168 height: 16px;
3167 height: 16px;
3169 width: 20px;
3168 width: 20px;
3170 cursor: pointer;
3169 cursor: pointer;
3171 display: block;
3170 display: block;
3172 float: right;
3171 float: right;
3173 margin-top: 2px;
3172 margin-top: 2px;
3174 }
3173 }
3175
3174
3176 .locking_unlocked{
3175 .locking_unlocked{
3177 background: #FFF url("../images/icons/accept.png") no-repeat scroll 3px;
3176 background: #FFF url("../images/icons/accept.png") no-repeat scroll 3px;
3178 height: 16px;
3177 height: 16px;
3179 width: 20px;
3178 width: 20px;
3180 cursor: pointer;
3179 cursor: pointer;
3181 display: block;
3180 display: block;
3182 float: right;
3181 float: right;
3183 margin-top: 2px;
3182 margin-top: 2px;
3184 }
3183 }
3185
3184
3186 .currently_following {
3185 .currently_following {
3187 padding-left: 10px;
3186 padding-left: 10px;
3188 padding-bottom: 5px;
3187 padding-bottom: 5px;
3189 }
3188 }
3190
3189
3191 .add_icon {
3190 .add_icon {
3192 background: url("../images/icons/add.png") no-repeat scroll 3px;
3191 background: url("../images/icons/add.png") no-repeat scroll 3px;
3193 padding-left: 20px;
3192 padding-left: 20px;
3194 padding-top: 0px;
3193 padding-top: 0px;
3195 text-align: left;
3194 text-align: left;
3196 }
3195 }
3197
3196
3198 .accept_icon {
3197 .accept_icon {
3199 background: url("../images/icons/accept.png") no-repeat scroll 3px;
3198 background: url("../images/icons/accept.png") no-repeat scroll 3px;
3200 padding-left: 20px;
3199 padding-left: 20px;
3201 padding-top: 0px;
3200 padding-top: 0px;
3202 text-align: left;
3201 text-align: left;
3203 }
3202 }
3204
3203
3205 .edit_icon {
3204 .edit_icon {
3206 background: url("../images/icons/folder_edit.png") no-repeat scroll 3px;
3205 background: url("../images/icons/folder_edit.png") no-repeat scroll 3px;
3207 padding-left: 20px;
3206 padding-left: 20px;
3208 padding-top: 0px;
3207 padding-top: 0px;
3209 text-align: left;
3208 text-align: left;
3210 }
3209 }
3211
3210
3212 .delete_icon {
3211 .delete_icon {
3213 background: url("../images/icons/delete.png") no-repeat scroll 3px;
3212 background: url("../images/icons/delete.png") no-repeat scroll 3px;
3214 padding-left: 20px;
3213 padding-left: 20px;
3215 padding-top: 0px;
3214 padding-top: 0px;
3216 text-align: left;
3215 text-align: left;
3217 }
3216 }
3218
3217
3219 .refresh_icon {
3218 .refresh_icon {
3220 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
3219 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
3221 3px;
3220 3px;
3222 padding-left: 20px;
3221 padding-left: 20px;
3223 padding-top: 0px;
3222 padding-top: 0px;
3224 text-align: left;
3223 text-align: left;
3225 }
3224 }
3226
3225
3227 .pull_icon {
3226 .pull_icon {
3228 background: url("../images/icons/connect.png") no-repeat scroll 3px;
3227 background: url("../images/icons/connect.png") no-repeat scroll 3px;
3229 padding-left: 20px;
3228 padding-left: 20px;
3230 padding-top: 0px;
3229 padding-top: 0px;
3231 text-align: left;
3230 text-align: left;
3232 }
3231 }
3233
3232
3234 .rss_icon {
3233 .rss_icon {
3235 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3234 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3236 padding-left: 20px;
3235 padding-left: 20px;
3237 padding-top: 4px;
3236 padding-top: 4px;
3238 text-align: left;
3237 text-align: left;
3239 font-size: 8px
3238 font-size: 8px
3240 }
3239 }
3241
3240
3242 .atom_icon {
3241 .atom_icon {
3243 background: url("../images/icons/atom.png") no-repeat scroll 3px;
3242 background: url("../images/icons/atom.png") no-repeat scroll 3px;
3244 padding-left: 20px;
3243 padding-left: 20px;
3245 padding-top: 4px;
3244 padding-top: 4px;
3246 text-align: left;
3245 text-align: left;
3247 font-size: 8px
3246 font-size: 8px
3248 }
3247 }
3249
3248
3250 .archive_icon {
3249 .archive_icon {
3251 background: url("../images/icons/compress.png") no-repeat scroll 3px;
3250 background: url("../images/icons/compress.png") no-repeat scroll 3px;
3252 padding-left: 20px;
3251 padding-left: 20px;
3253 text-align: left;
3252 text-align: left;
3254 padding-top: 1px;
3253 padding-top: 1px;
3255 }
3254 }
3256
3255
3257 .start_following_icon {
3256 .start_following_icon {
3258 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3257 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3259 padding-left: 20px;
3258 padding-left: 20px;
3260 text-align: left;
3259 text-align: left;
3261 padding-top: 0px;
3260 padding-top: 0px;
3262 }
3261 }
3263
3262
3264 .stop_following_icon {
3263 .stop_following_icon {
3265 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3264 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3266 padding-left: 20px;
3265 padding-left: 20px;
3267 text-align: left;
3266 text-align: left;
3268 padding-top: 0px;
3267 padding-top: 0px;
3269 }
3268 }
3270
3269
3271 .action_button {
3270 .action_button {
3272 border: 0;
3271 border: 0;
3273 display: inline;
3272 display: inline;
3274 }
3273 }
3275
3274
3276 .action_button:hover {
3275 .action_button:hover {
3277 border: 0;
3276 border: 0;
3278 text-decoration: underline;
3277 text-decoration: underline;
3279 cursor: pointer;
3278 cursor: pointer;
3280 }
3279 }
3281
3280
3282 #switch_repos {
3281 #switch_repos {
3283 position: absolute;
3282 position: absolute;
3284 height: 25px;
3283 height: 25px;
3285 z-index: 1;
3284 z-index: 1;
3286 }
3285 }
3287
3286
3288 #switch_repos select {
3287 #switch_repos select {
3289 min-width: 150px;
3288 min-width: 150px;
3290 max-height: 250px;
3289 max-height: 250px;
3291 z-index: 1;
3290 z-index: 1;
3292 }
3291 }
3293
3292
3294 .breadcrumbs {
3293 .breadcrumbs {
3295 border: medium none;
3294 border: medium none;
3296 color: #FFF;
3295 color: #FFF;
3297 float: left;
3296 float: left;
3298 text-transform: uppercase;
3297 text-transform: uppercase;
3299 font-weight: 700;
3298 font-weight: 700;
3300 font-size: 14px;
3299 font-size: 14px;
3301 margin: 0;
3300 margin: 0;
3302 padding: 11px 0 11px 10px;
3301 padding: 11px 0 11px 10px;
3303 }
3302 }
3304
3303
3305 .breadcrumbs .hash {
3304 .breadcrumbs .hash {
3306 text-transform: none;
3305 text-transform: none;
3307 color: #fff;
3306 color: #fff;
3308 }
3307 }
3309
3308
3310 .breadcrumbs a {
3309 .breadcrumbs a {
3311 color: #FFF;
3310 color: #FFF;
3312 }
3311 }
3313
3312
3314 .flash_msg {
3313 .flash_msg {
3315
3314
3316 }
3315 }
3317
3316
3318 .flash_msg ul {
3317 .flash_msg ul {
3319
3318
3320 }
3319 }
3321
3320
3322 .error_red {
3321 .error_red {
3323 color:red;
3322 color:red;
3324 }
3323 }
3325
3324
3326 .error_msg {
3325 .error_msg {
3327 background-color: #c43c35;
3326 background-color: #c43c35;
3328 background-repeat: repeat-x;
3327 background-repeat: repeat-x;
3329 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35) );
3328 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35) );
3330 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3329 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3331 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3330 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3332 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35) );
3331 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35) );
3333 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3332 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3334 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3333 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3335 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3334 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3336 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35', GradientType=0 );
3335 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35', GradientType=0 );
3337 border-color: #c43c35 #c43c35 #882a25;
3336 border-color: #c43c35 #c43c35 #882a25;
3338 }
3337 }
3339
3338
3340 .warning_msg {
3339 .warning_msg {
3341 color: #404040 !important;
3340 color: #404040 !important;
3342 background-color: #eedc94;
3341 background-color: #eedc94;
3343 background-repeat: repeat-x;
3342 background-repeat: repeat-x;
3344 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94) );
3343 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94) );
3345 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
3344 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
3346 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
3345 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
3347 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94) );
3346 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94) );
3348 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
3347 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
3349 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
3348 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
3350 background-image: linear-gradient(top, #fceec1, #eedc94);
3349 background-image: linear-gradient(top, #fceec1, #eedc94);
3351 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0 );
3350 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0 );
3352 border-color: #eedc94 #eedc94 #e4c652;
3351 border-color: #eedc94 #eedc94 #e4c652;
3353 }
3352 }
3354
3353
3355 .success_msg {
3354 .success_msg {
3356 background-color: #57a957;
3355 background-color: #57a957;
3357 background-repeat: repeat-x !important;
3356 background-repeat: repeat-x !important;
3358 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957) );
3357 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957) );
3359 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3358 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3360 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3359 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3361 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957) );
3360 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957) );
3362 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3361 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3363 background-image: -o-linear-gradient(top, #62c462, #57a957);
3362 background-image: -o-linear-gradient(top, #62c462, #57a957);
3364 background-image: linear-gradient(top, #62c462, #57a957);
3363 background-image: linear-gradient(top, #62c462, #57a957);
3365 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0 );
3364 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0 );
3366 border-color: #57a957 #57a957 #3d773d;
3365 border-color: #57a957 #57a957 #3d773d;
3367 }
3366 }
3368
3367
3369 .notice_msg {
3368 .notice_msg {
3370 background-color: #339bb9;
3369 background-color: #339bb9;
3371 background-repeat: repeat-x;
3370 background-repeat: repeat-x;
3372 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9) );
3371 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9) );
3373 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3372 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3374 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3373 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3375 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9) );
3374 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9) );
3376 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3375 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3377 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3376 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3378 background-image: linear-gradient(top, #5bc0de, #339bb9);
3377 background-image: linear-gradient(top, #5bc0de, #339bb9);
3379 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0 );
3378 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0 );
3380 border-color: #339bb9 #339bb9 #22697d;
3379 border-color: #339bb9 #339bb9 #22697d;
3381 }
3380 }
3382
3381
3383 .success_msg,.error_msg,.notice_msg,.warning_msg {
3382 .success_msg,.error_msg,.notice_msg,.warning_msg {
3384 font-size: 12px;
3383 font-size: 12px;
3385 font-weight: 700;
3384 font-weight: 700;
3386 min-height: 14px;
3385 min-height: 14px;
3387 line-height: 14px;
3386 line-height: 14px;
3388 margin-bottom: 10px;
3387 margin-bottom: 10px;
3389 margin-top: 0;
3388 margin-top: 0;
3390 display: block;
3389 display: block;
3391 overflow: auto;
3390 overflow: auto;
3392 padding: 6px 10px 6px 10px;
3391 padding: 6px 10px 6px 10px;
3393 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3392 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3394 position: relative;
3393 position: relative;
3395 color: #FFF;
3394 color: #FFF;
3396 border-width: 1px;
3395 border-width: 1px;
3397 border-style: solid;
3396 border-style: solid;
3398 -webkit-border-radius: 4px;
3397 -webkit-border-radius: 4px;
3399 -moz-border-radius: 4px;
3398 -moz-border-radius: 4px;
3400 border-radius: 4px;
3399 border-radius: 4px;
3401 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3400 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3402 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3401 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3403 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3402 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3404 }
3403 }
3405
3404
3406 #msg_close {
3405 #msg_close {
3407 background: transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
3406 background: transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
3408 cursor: pointer;
3407 cursor: pointer;
3409 height: 16px;
3408 height: 16px;
3410 position: absolute;
3409 position: absolute;
3411 right: 5px;
3410 right: 5px;
3412 top: 5px;
3411 top: 5px;
3413 width: 16px;
3412 width: 16px;
3414 }
3413 }
3415 div#legend_data{
3414 div#legend_data{
3416 padding-left:10px;
3415 padding-left:10px;
3417 }
3416 }
3418 div#legend_container table{
3417 div#legend_container table{
3419 border: none !important;
3418 border: none !important;
3420 }
3419 }
3421 div#legend_container table,div#legend_choices table {
3420 div#legend_container table,div#legend_choices table {
3422 width: auto !important;
3421 width: auto !important;
3423 }
3422 }
3424
3423
3425 table#permissions_manage {
3424 table#permissions_manage {
3426 width: 0 !important;
3425 width: 0 !important;
3427 }
3426 }
3428
3427
3429 table#permissions_manage span.private_repo_msg {
3428 table#permissions_manage span.private_repo_msg {
3430 font-size: 0.8em;
3429 font-size: 0.8em;
3431 opacity: 0.6px;
3430 opacity: 0.6px;
3432 }
3431 }
3433
3432
3434 table#permissions_manage td.private_repo_msg {
3433 table#permissions_manage td.private_repo_msg {
3435 font-size: 0.8em;
3434 font-size: 0.8em;
3436 }
3435 }
3437
3436
3438 table#permissions_manage tr#add_perm_input td {
3437 table#permissions_manage tr#add_perm_input td {
3439 vertical-align: middle;
3438 vertical-align: middle;
3440 }
3439 }
3441
3440
3442 div.gravatar {
3441 div.gravatar {
3443 background-color: #FFF;
3442 background-color: #FFF;
3444 float: left;
3443 float: left;
3445 margin-right: 0.7em;
3444 margin-right: 0.7em;
3446 padding: 1px 1px 1px 1px;
3445 padding: 1px 1px 1px 1px;
3447 line-height:0;
3446 line-height:0;
3448 -webkit-border-radius: 3px;
3447 -webkit-border-radius: 3px;
3449 -khtml-border-radius: 3px;
3448 -khtml-border-radius: 3px;
3450 -moz-border-radius: 3px;
3449 -moz-border-radius: 3px;
3451 border-radius: 3px;
3450 border-radius: 3px;
3452 }
3451 }
3453
3452
3454 div.gravatar img {
3453 div.gravatar img {
3455 -webkit-border-radius: 2px;
3454 -webkit-border-radius: 2px;
3456 -khtml-border-radius: 2px;
3455 -khtml-border-radius: 2px;
3457 -moz-border-radius: 2px;
3456 -moz-border-radius: 2px;
3458 border-radius: 2px;
3457 border-radius: 2px;
3459 }
3458 }
3460
3459
3461 #header,#content,#footer {
3460 #header,#content,#footer {
3462 min-width: 978px;
3461 min-width: 978px;
3463 }
3462 }
3464
3463
3465 #content {
3464 #content {
3466 clear: both;
3465 clear: both;
3467 overflow: hidden;
3466 overflow: hidden;
3468 padding: 54px 10px 14px 10px;
3467 padding: 54px 10px 14px 10px;
3469 }
3468 }
3470
3469
3471 #content div.box div.title div.search {
3470 #content div.box div.title div.search {
3472
3471
3473 border-left: 1px solid #316293;
3472 border-left: 1px solid #316293;
3474 }
3473 }
3475
3474
3476 #content div.box div.title div.search div.input input {
3475 #content div.box div.title div.search div.input input {
3477 border: 1px solid #316293;
3476 border: 1px solid #316293;
3478 }
3477 }
3479
3478
3480 .ui-btn{
3479 .ui-btn{
3481 color: #515151;
3480 color: #515151;
3482 background-color: #DADADA;
3481 background-color: #DADADA;
3483 background-repeat: repeat-x;
3482 background-repeat: repeat-x;
3484 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3483 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3485 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3484 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3486 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3485 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3487 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3486 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3488 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3487 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3489 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3488 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3490 background-image: linear-gradient(top, #F4F4F4, #DADADA);
3489 background-image: linear-gradient(top, #F4F4F4, #DADADA);
3491 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3490 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3492
3491
3493 border-top: 1px solid #DDD;
3492 border-top: 1px solid #DDD;
3494 border-left: 1px solid #c6c6c6;
3493 border-left: 1px solid #c6c6c6;
3495 border-right: 1px solid #DDD;
3494 border-right: 1px solid #DDD;
3496 border-bottom: 1px solid #c6c6c6;
3495 border-bottom: 1px solid #c6c6c6;
3497 color: #515151;
3496 color: #515151;
3498 outline: none;
3497 outline: none;
3499 margin: 0px 3px 3px 0px;
3498 margin: 0px 3px 3px 0px;
3500 -webkit-border-radius: 4px 4px 4px 4px !important;
3499 -webkit-border-radius: 4px 4px 4px 4px !important;
3501 -khtml-border-radius: 4px 4px 4px 4px !important;
3500 -khtml-border-radius: 4px 4px 4px 4px !important;
3502 -moz-border-radius: 4px 4px 4px 4px !important;
3501 -moz-border-radius: 4px 4px 4px 4px !important;
3503 border-radius: 4px 4px 4px 4px !important;
3502 border-radius: 4px 4px 4px 4px !important;
3504 cursor: pointer !important;
3503 cursor: pointer !important;
3505 padding: 3px 3px 3px 3px;
3504 padding: 3px 3px 3px 3px;
3506 background-position: 0 -15px;
3505 background-position: 0 -15px;
3507
3506
3508 }
3507 }
3509 .ui-btn.xsmall{
3508 .ui-btn.xsmall{
3510 padding: 1px 2px 1px 1px;
3509 padding: 1px 2px 1px 1px;
3511 }
3510 }
3512
3511
3513 .ui-btn.large{
3512 .ui-btn.large{
3514 padding: 6px 12px;
3513 padding: 6px 12px;
3515 }
3514 }
3516
3515
3517 .ui-btn.clone{
3516 .ui-btn.clone{
3518 padding: 5px 2px 6px 1px;
3517 padding: 5px 2px 6px 1px;
3519 margin: 0px -4px 3px 0px;
3518 margin: 0px -4px 3px 0px;
3520 -webkit-border-radius: 4px 0px 0px 4px !important;
3519 -webkit-border-radius: 4px 0px 0px 4px !important;
3521 -khtml-border-radius: 4px 0px 0px 4px !important;
3520 -khtml-border-radius: 4px 0px 0px 4px !important;
3522 -moz-border-radius: 4px 0px 0px 4px !important;
3521 -moz-border-radius: 4px 0px 0px 4px !important;
3523 border-radius: 4px 0px 0px 4px !important;
3522 border-radius: 4px 0px 0px 4px !important;
3524 width: 100px;
3523 width: 100px;
3525 text-align: center;
3524 text-align: center;
3526 float: left;
3525 float: left;
3527 position: absolute;
3526 position: absolute;
3528 }
3527 }
3529 .ui-btn:focus {
3528 .ui-btn:focus {
3530 outline: none;
3529 outline: none;
3531 }
3530 }
3532 .ui-btn:hover{
3531 .ui-btn:hover{
3533 background-position: 0 0px;
3532 background-position: 0 0px;
3534 text-decoration: none;
3533 text-decoration: none;
3535 color: #515151;
3534 color: #515151;
3536 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3535 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3537 }
3536 }
3538
3537
3539 .ui-btn.red{
3538 .ui-btn.red{
3540 color:#fff;
3539 color:#fff;
3541 background-color: #c43c35;
3540 background-color: #c43c35;
3542 background-repeat: repeat-x;
3541 background-repeat: repeat-x;
3543 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3542 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3544 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3543 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3545 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3544 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3546 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3545 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3547 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3546 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3548 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3547 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3549 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3548 background-image: linear-gradient(top, #ee5f5b, #c43c35);
3550 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3549 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3551 border-color: #c43c35 #c43c35 #882a25;
3550 border-color: #c43c35 #c43c35 #882a25;
3552 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3551 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3553 }
3552 }
3554
3553
3555
3554
3556 .ui-btn.blue{
3555 .ui-btn.blue{
3557 color:#fff;
3556 color:#fff;
3558 background-color: #339bb9;
3557 background-color: #339bb9;
3559 background-repeat: repeat-x;
3558 background-repeat: repeat-x;
3560 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3559 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3561 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3560 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3562 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3561 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3563 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3562 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3564 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3563 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3565 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3564 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3566 background-image: linear-gradient(top, #5bc0de, #339bb9);
3565 background-image: linear-gradient(top, #5bc0de, #339bb9);
3567 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3566 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3568 border-color: #339bb9 #339bb9 #22697d;
3567 border-color: #339bb9 #339bb9 #22697d;
3569 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3568 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3570 }
3569 }
3571
3570
3572 .ui-btn.green{
3571 .ui-btn.green{
3573 background-color: #57a957;
3572 background-color: #57a957;
3574 background-repeat: repeat-x;
3573 background-repeat: repeat-x;
3575 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3574 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3576 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3575 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3577 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3576 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3578 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3577 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3579 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3578 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3580 background-image: -o-linear-gradient(top, #62c462, #57a957);
3579 background-image: -o-linear-gradient(top, #62c462, #57a957);
3581 background-image: linear-gradient(top, #62c462, #57a957);
3580 background-image: linear-gradient(top, #62c462, #57a957);
3582 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3581 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3583 border-color: #57a957 #57a957 #3d773d;
3582 border-color: #57a957 #57a957 #3d773d;
3584 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3583 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3585 }
3584 }
3586
3585
3587 .ui-btn.active{
3586 .ui-btn.active{
3588 font-weight: bold;
3587 font-weight: bold;
3589 }
3588 }
3590
3589
3591 ins,div.options a:hover {
3590 ins,div.options a:hover {
3592 text-decoration: none;
3591 text-decoration: none;
3593 }
3592 }
3594
3593
3595 img,
3594 img,
3596 #header #header-inner #quick li a:hover span.normal,
3595 #header #header-inner #quick li a:hover span.normal,
3597 #header #header-inner #quick li ul li.last,
3596 #header #header-inner #quick li ul li.last,
3598 #content div.box div.form div.fields div.field div.textarea table td table td a,
3597 #content div.box div.form div.fields div.field div.textarea table td table td a,
3599 #clone_url,
3598 #clone_url,
3600 #clone_url_id
3599 #clone_url_id
3601 {
3600 {
3602 border: none;
3601 border: none;
3603 }
3602 }
3604
3603
3605 img.icon,.right .merge img {
3604 img.icon,.right .merge img {
3606 vertical-align: bottom;
3605 vertical-align: bottom;
3607 }
3606 }
3608
3607
3609 #header ul#logged-user,#content div.box div.title ul.links,
3608 #header ul#logged-user,#content div.box div.title ul.links,
3610 #content div.box div.message div.dismiss,
3609 #content div.box div.message div.dismiss,
3611 #content div.box div.traffic div.legend ul
3610 #content div.box div.traffic div.legend ul
3612 {
3611 {
3613 float: right;
3612 float: right;
3614 margin: 0;
3613 margin: 0;
3615 padding: 0;
3614 padding: 0;
3616 }
3615 }
3617
3616
3618 #header #header-inner #home,#header #header-inner #logo,
3617 #header #header-inner #home,#header #header-inner #logo,
3619 #content div.box ul.left,#content div.box ol.left,
3618 #content div.box ul.left,#content div.box ol.left,
3620 #content div.box div.pagination-left,div#commit_history,
3619 #content div.box div.pagination-left,div#commit_history,
3621 div#legend_data,div#legend_container,div#legend_choices
3620 div#legend_data,div#legend_container,div#legend_choices
3622 {
3621 {
3623 float: left;
3622 float: left;
3624 }
3623 }
3625
3624
3626 #header #header-inner #quick li:hover ul ul,
3625 #header #header-inner #quick li:hover ul ul,
3627 #header #header-inner #quick li:hover ul ul ul,
3626 #header #header-inner #quick li:hover ul ul ul,
3628 #header #header-inner #quick li:hover ul ul ul ul,
3627 #header #header-inner #quick li:hover ul ul ul ul,
3629 #content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow
3628 #content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow
3630 {
3629 {
3631 display: none;
3630 display: none;
3632 }
3631 }
3633
3632
3634 #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
3633 #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
3635 {
3634 {
3636 display: block;
3635 display: block;
3637 }
3636 }
3638
3637
3639 #content div.graph {
3638 #content div.graph {
3640 padding: 0 10px 10px;
3639 padding: 0 10px 10px;
3641 }
3640 }
3642
3641
3643 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a
3642 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a
3644 {
3643 {
3645 color: #bfe3ff;
3644 color: #bfe3ff;
3646 }
3645 }
3647
3646
3648 #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
3647 #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
3649 {
3648 {
3650 margin: 10px 24px 10px 44px;
3649 margin: 10px 24px 10px 44px;
3651 }
3650 }
3652
3651
3653 #content div.box div.form,#content div.box div.table,#content div.box div.traffic
3652 #content div.box div.form,#content div.box div.table,#content div.box div.traffic
3654 {
3653 {
3655 clear: both;
3654 clear: both;
3656 overflow: hidden;
3655 overflow: hidden;
3657 margin: 0;
3656 margin: 0;
3658 padding: 0 20px 10px;
3657 padding: 0 20px 10px;
3659 }
3658 }
3660
3659
3661 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields
3660 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields
3662 {
3661 {
3663 clear: both;
3662 clear: both;
3664 overflow: hidden;
3663 overflow: hidden;
3665 margin: 0;
3664 margin: 0;
3666 padding: 0;
3665 padding: 0;
3667 }
3666 }
3668
3667
3669 #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
3668 #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
3670 {
3669 {
3671 height: 1%;
3670 height: 1%;
3672 display: block;
3671 display: block;
3673 color: #363636;
3672 color: #363636;
3674 margin: 0;
3673 margin: 0;
3675 padding: 2px 0 0;
3674 padding: 2px 0 0;
3676 }
3675 }
3677
3676
3678 #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
3677 #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
3679 {
3678 {
3680 background: #FBE3E4;
3679 background: #FBE3E4;
3681 border-top: 1px solid #e1b2b3;
3680 border-top: 1px solid #e1b2b3;
3682 border-left: 1px solid #e1b2b3;
3681 border-left: 1px solid #e1b2b3;
3683 border-right: 1px solid #FBC2C4;
3682 border-right: 1px solid #FBC2C4;
3684 border-bottom: 1px solid #FBC2C4;
3683 border-bottom: 1px solid #FBC2C4;
3685 }
3684 }
3686
3685
3687 #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
3686 #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
3688 {
3687 {
3689 background: #E6EFC2;
3688 background: #E6EFC2;
3690 border-top: 1px solid #cebb98;
3689 border-top: 1px solid #cebb98;
3691 border-left: 1px solid #cebb98;
3690 border-left: 1px solid #cebb98;
3692 border-right: 1px solid #c6d880;
3691 border-right: 1px solid #c6d880;
3693 border-bottom: 1px solid #c6d880;
3692 border-bottom: 1px solid #c6d880;
3694 }
3693 }
3695
3694
3696 #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
3695 #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
3697 {
3696 {
3698 margin: 0;
3697 margin: 0;
3699 }
3698 }
3700
3699
3701 #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
3700 #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
3702 {
3701 {
3703 margin: 0 0 0 0px !important;
3702 margin: 0 0 0 0px !important;
3704 padding: 0;
3703 padding: 0;
3705 }
3704 }
3706
3705
3707 #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
3706 #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
3708 {
3707 {
3709 margin: 0 0 0 200px;
3708 margin: 0 0 0 200px;
3710 padding: 0;
3709 padding: 0;
3711 }
3710 }
3712
3711
3713 #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
3712 #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
3714 {
3713 {
3715 color: #000;
3714 color: #000;
3716 text-decoration: none;
3715 text-decoration: none;
3717 }
3716 }
3718
3717
3719 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus
3718 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus
3720 {
3719 {
3721 border: 1px solid #666;
3720 border: 1px solid #666;
3722 }
3721 }
3723
3722
3724 #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
3723 #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
3725 {
3724 {
3726 clear: both;
3725 clear: both;
3727 overflow: hidden;
3726 overflow: hidden;
3728 margin: 0;
3727 margin: 0;
3729 padding: 8px 0 2px;
3728 padding: 8px 0 2px;
3730 }
3729 }
3731
3730
3732 #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
3731 #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
3733 {
3732 {
3734 float: left;
3733 float: left;
3735 margin: 0;
3734 margin: 0;
3736 }
3735 }
3737
3736
3738 #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
3737 #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
3739 {
3738 {
3740 height: 1%;
3739 height: 1%;
3741 display: block;
3740 display: block;
3742 float: left;
3741 float: left;
3743 margin: 2px 0 0 4px;
3742 margin: 2px 0 0 4px;
3744 }
3743 }
3745
3744
3746 div.form div.fields div.field div.button input,
3745 div.form div.fields div.field div.button input,
3747 #content div.box div.form div.fields div.buttons input
3746 #content div.box div.form div.fields div.buttons input
3748 div.form div.fields div.buttons input,
3747 div.form div.fields div.buttons input,
3749 #content div.box div.action div.button input {
3748 #content div.box div.action div.button input {
3750 /*color: #000;*/
3749 /*color: #000;*/
3751 font-size: 11px;
3750 font-size: 11px;
3752 font-weight: 700;
3751 font-weight: 700;
3753 margin: 0;
3752 margin: 0;
3754 }
3753 }
3755
3754
3756 input.ui-button {
3755 input.ui-button {
3757 background: #e5e3e3 url("../images/button.png") repeat-x;
3756 background: #e5e3e3 url("../images/button.png") repeat-x;
3758 border-top: 1px solid #DDD;
3757 border-top: 1px solid #DDD;
3759 border-left: 1px solid #c6c6c6;
3758 border-left: 1px solid #c6c6c6;
3760 border-right: 1px solid #DDD;
3759 border-right: 1px solid #DDD;
3761 border-bottom: 1px solid #c6c6c6;
3760 border-bottom: 1px solid #c6c6c6;
3762 color: #515151 !important;
3761 color: #515151 !important;
3763 outline: none;
3762 outline: none;
3764 margin: 0;
3763 margin: 0;
3765 padding: 6px 12px;
3764 padding: 6px 12px;
3766 -webkit-border-radius: 4px 4px 4px 4px;
3765 -webkit-border-radius: 4px 4px 4px 4px;
3767 -khtml-border-radius: 4px 4px 4px 4px;
3766 -khtml-border-radius: 4px 4px 4px 4px;
3768 -moz-border-radius: 4px 4px 4px 4px;
3767 -moz-border-radius: 4px 4px 4px 4px;
3769 border-radius: 4px 4px 4px 4px;
3768 border-radius: 4px 4px 4px 4px;
3770 box-shadow: 0 1px 0 #ececec;
3769 box-shadow: 0 1px 0 #ececec;
3771 cursor: pointer;
3770 cursor: pointer;
3772 }
3771 }
3773
3772
3774 input.ui-button:hover {
3773 input.ui-button:hover {
3775 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3774 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3776 border-top: 1px solid #ccc;
3775 border-top: 1px solid #ccc;
3777 border-left: 1px solid #bebebe;
3776 border-left: 1px solid #bebebe;
3778 border-right: 1px solid #b1b1b1;
3777 border-right: 1px solid #b1b1b1;
3779 border-bottom: 1px solid #afafaf;
3778 border-bottom: 1px solid #afafaf;
3780 }
3779 }
3781
3780
3782 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight
3781 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight
3783 {
3782 {
3784 display: inline;
3783 display: inline;
3785 }
3784 }
3786
3785
3787 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons
3786 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons
3788 {
3787 {
3789 margin: 10px 0 0 200px;
3788 margin: 10px 0 0 200px;
3790 padding: 0;
3789 padding: 0;
3791 }
3790 }
3792
3791
3793 #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
3792 #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
3794 {
3793 {
3795 margin: 10px 0 0;
3794 margin: 10px 0 0;
3796 }
3795 }
3797
3796
3798 #content div.box table td.user,#content div.box table td.address {
3797 #content div.box table td.user,#content div.box table td.address {
3799 width: 10%;
3798 width: 10%;
3800 text-align: center;
3799 text-align: center;
3801 }
3800 }
3802
3801
3803 #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
3802 #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
3804 {
3803 {
3805 text-align: right;
3804 text-align: right;
3806 margin: 6px 0 0;
3805 margin: 6px 0 0;
3807 padding: 0;
3806 padding: 0;
3808 }
3807 }
3809
3808
3810 #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
3809 #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
3811 {
3810 {
3812 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3811 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3813 border-top: 1px solid #ccc;
3812 border-top: 1px solid #ccc;
3814 border-left: 1px solid #bebebe;
3813 border-left: 1px solid #bebebe;
3815 border-right: 1px solid #b1b1b1;
3814 border-right: 1px solid #b1b1b1;
3816 border-bottom: 1px solid #afafaf;
3815 border-bottom: 1px solid #afafaf;
3817 color: #515151;
3816 color: #515151;
3818 margin: 0;
3817 margin: 0;
3819 padding: 6px 12px;
3818 padding: 6px 12px;
3820 }
3819 }
3821
3820
3822 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results
3821 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results
3823 {
3822 {
3824 text-align: left;
3823 text-align: left;
3825 float: left;
3824 float: left;
3826 margin: 0;
3825 margin: 0;
3827 padding: 0;
3826 padding: 0;
3828 }
3827 }
3829
3828
3830 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span
3829 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span
3831 {
3830 {
3832 height: 1%;
3831 height: 1%;
3833 display: block;
3832 display: block;
3834 float: left;
3833 float: left;
3835 background: #ebebeb url("../images/pager.png") repeat-x;
3834 background: #ebebeb url("../images/pager.png") repeat-x;
3836 border-top: 1px solid #dedede;
3835 border-top: 1px solid #dedede;
3837 border-left: 1px solid #cfcfcf;
3836 border-left: 1px solid #cfcfcf;
3838 border-right: 1px solid #c4c4c4;
3837 border-right: 1px solid #c4c4c4;
3839 border-bottom: 1px solid #c4c4c4;
3838 border-bottom: 1px solid #c4c4c4;
3840 color: #4A4A4A;
3839 color: #4A4A4A;
3841 font-weight: 700;
3840 font-weight: 700;
3842 margin: 0;
3841 margin: 0;
3843 padding: 6px 8px;
3842 padding: 6px 8px;
3844 }
3843 }
3845
3844
3846 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled
3845 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled
3847 {
3846 {
3848 color: #B4B4B4;
3847 color: #B4B4B4;
3849 padding: 6px;
3848 padding: 6px;
3850 }
3849 }
3851
3850
3852 #login,#register {
3851 #login,#register {
3853 width: 520px;
3852 width: 520px;
3854 margin: 10% auto 0;
3853 margin: 10% auto 0;
3855 padding: 0;
3854 padding: 0;
3856 }
3855 }
3857
3856
3858 #login div.color,#register div.color {
3857 #login div.color,#register div.color {
3859 clear: both;
3858 clear: both;
3860 overflow: hidden;
3859 overflow: hidden;
3861 background: #FFF;
3860 background: #FFF;
3862 margin: 10px auto 0;
3861 margin: 10px auto 0;
3863 padding: 3px 3px 3px 0;
3862 padding: 3px 3px 3px 0;
3864 }
3863 }
3865
3864
3866 #login div.color a,#register div.color a {
3865 #login div.color a,#register div.color a {
3867 width: 20px;
3866 width: 20px;
3868 height: 20px;
3867 height: 20px;
3869 display: block;
3868 display: block;
3870 float: left;
3869 float: left;
3871 margin: 0 0 0 3px;
3870 margin: 0 0 0 3px;
3872 padding: 0;
3871 padding: 0;
3873 }
3872 }
3874
3873
3875 #login div.title h5,#register div.title h5 {
3874 #login div.title h5,#register div.title h5 {
3876 color: #fff;
3875 color: #fff;
3877 margin: 10px;
3876 margin: 10px;
3878 padding: 0;
3877 padding: 0;
3879 }
3878 }
3880
3879
3881 #login div.form div.fields div.field,#register div.form div.fields div.field
3880 #login div.form div.fields div.field,#register div.form div.fields div.field
3882 {
3881 {
3883 clear: both;
3882 clear: both;
3884 overflow: hidden;
3883 overflow: hidden;
3885 margin: 0;
3884 margin: 0;
3886 padding: 0 0 10px;
3885 padding: 0 0 10px;
3887 }
3886 }
3888
3887
3889 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message
3888 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message
3890 {
3889 {
3891 height: 1%;
3890 height: 1%;
3892 display: block;
3891 display: block;
3893 color: red;
3892 color: red;
3894 margin: 8px 0 0;
3893 margin: 8px 0 0;
3895 padding: 0;
3894 padding: 0;
3896 max-width: 320px;
3895 max-width: 320px;
3897 }
3896 }
3898
3897
3899 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label
3898 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label
3900 {
3899 {
3901 color: #000;
3900 color: #000;
3902 font-weight: 700;
3901 font-weight: 700;
3903 }
3902 }
3904
3903
3905 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input
3904 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input
3906 {
3905 {
3907 float: left;
3906 float: left;
3908 margin: 0;
3907 margin: 0;
3909 padding: 0;
3908 padding: 0;
3910 }
3909 }
3911
3910
3912 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox
3911 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox
3913 {
3912 {
3914 margin: 0 0 0 184px;
3913 margin: 0 0 0 184px;
3915 padding: 0;
3914 padding: 0;
3916 }
3915 }
3917
3916
3918 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label
3917 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label
3919 {
3918 {
3920 color: #565656;
3919 color: #565656;
3921 font-weight: 700;
3920 font-weight: 700;
3922 }
3921 }
3923
3922
3924 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input
3923 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input
3925 {
3924 {
3926 color: #000;
3925 color: #000;
3927 font-size: 1em;
3926 font-size: 1em;
3928 font-weight: 700;
3927 font-weight: 700;
3929 margin: 0;
3928 margin: 0;
3930 }
3929 }
3931
3930
3932 #changeset_content .container .wrapper,#graph_content .container .wrapper
3931 #changeset_content .container .wrapper,#graph_content .container .wrapper
3933 {
3932 {
3934 width: 600px;
3933 width: 600px;
3935 }
3934 }
3936
3935
3937 #changeset_content .container .left {
3936 #changeset_content .container .left {
3938 float: left;
3937 float: left;
3939 width: 75%;
3938 width: 75%;
3940 padding-left: 5px;
3939 padding-left: 5px;
3941 }
3940 }
3942
3941
3943 #changeset_content .container .left .date,.ac .match {
3942 #changeset_content .container .left .date,.ac .match {
3944 font-weight: 700;
3943 font-weight: 700;
3945 padding-top: 5px;
3944 padding-top: 5px;
3946 padding-bottom: 5px;
3945 padding-bottom: 5px;
3947 }
3946 }
3948
3947
3949 div#legend_container table td,div#legend_choices table td {
3948 div#legend_container table td,div#legend_choices table td {
3950 border: none !important;
3949 border: none !important;
3951 height: 20px !important;
3950 height: 20px !important;
3952 padding: 0 !important;
3951 padding: 0 !important;
3953 }
3952 }
3954
3953
3955 .q_filter_box {
3954 .q_filter_box {
3956 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3955 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3957 -webkit-border-radius: 4px;
3956 -webkit-border-radius: 4px;
3958 -moz-border-radius: 4px;
3957 -moz-border-radius: 4px;
3959 border-radius: 4px;
3958 border-radius: 4px;
3960 border: 0 none;
3959 border: 0 none;
3961 color: #AAAAAA;
3960 color: #AAAAAA;
3962 margin-bottom: -4px;
3961 margin-bottom: -4px;
3963 margin-top: -4px;
3962 margin-top: -4px;
3964 padding-left: 3px;
3963 padding-left: 3px;
3965 }
3964 }
3966
3965
3967 #node_filter {
3966 #node_filter {
3968 border: 0px solid #545454;
3967 border: 0px solid #545454;
3969 color: #AAAAAA;
3968 color: #AAAAAA;
3970 padding-left: 3px;
3969 padding-left: 3px;
3971 }
3970 }
3972
3971
3973
3972
3974 .group_members_wrap{
3973 .group_members_wrap{
3975 min-height: 85px;
3974 min-height: 85px;
3976 padding-left: 20px;
3975 padding-left: 20px;
3977 }
3976 }
3978
3977
3979 .group_members .group_member{
3978 .group_members .group_member{
3980 height: 30px;
3979 height: 30px;
3981 padding:0px 0px 0px 0px;
3980 padding:0px 0px 0px 0px;
3982 }
3981 }
3983
3982
3984 .reviewers_member{
3983 .reviewers_member{
3985 height: 15px;
3984 height: 15px;
3986 padding:0px 0px 0px 10px;
3985 padding:0px 0px 0px 10px;
3987 }
3986 }
3988
3987
3989 .emails_wrap{
3988 .emails_wrap{
3990 padding: 0px 20px;
3989 padding: 0px 20px;
3991 }
3990 }
3992
3991
3993 .emails_wrap .email_entry{
3992 .emails_wrap .email_entry{
3994 height: 30px;
3993 height: 30px;
3995 padding:0px 0px 0px 10px;
3994 padding:0px 0px 0px 10px;
3996 }
3995 }
3997 .emails_wrap .email_entry .email{
3996 .emails_wrap .email_entry .email{
3998 float: left
3997 float: left
3999 }
3998 }
4000 .emails_wrap .email_entry .email_action{
3999 .emails_wrap .email_entry .email_action{
4001 float: left
4000 float: left
4002 }
4001 }
4003
4002
4004 /*README STYLE*/
4003 /*README STYLE*/
4005
4004
4006 div.readme {
4005 div.readme {
4007 padding:0px;
4006 padding:0px;
4008 }
4007 }
4009
4008
4010 div.readme h2 {
4009 div.readme h2 {
4011 font-weight: normal;
4010 font-weight: normal;
4012 }
4011 }
4013
4012
4014 div.readme .readme_box {
4013 div.readme .readme_box {
4015 background-color: #fafafa;
4014 background-color: #fafafa;
4016 }
4015 }
4017
4016
4018 div.readme .readme_box {
4017 div.readme .readme_box {
4019 clear:both;
4018 clear:both;
4020 overflow:hidden;
4019 overflow:hidden;
4021 margin:0;
4020 margin:0;
4022 padding:0 20px 10px;
4021 padding:0 20px 10px;
4023 }
4022 }
4024
4023
4025 div.readme .readme_box h1, div.readme .readme_box h2, div.readme .readme_box h3, div.readme .readme_box h4, div.readme .readme_box h5, div.readme .readme_box h6 {
4024 div.readme .readme_box h1, div.readme .readme_box h2, div.readme .readme_box h3, div.readme .readme_box h4, div.readme .readme_box h5, div.readme .readme_box h6 {
4026 border-bottom: 0 !important;
4025 border-bottom: 0 !important;
4027 margin: 0 !important;
4026 margin: 0 !important;
4028 padding: 0 !important;
4027 padding: 0 !important;
4029 line-height: 1.5em !important;
4028 line-height: 1.5em !important;
4030 }
4029 }
4031
4030
4032
4031
4033 div.readme .readme_box h1:first-child {
4032 div.readme .readme_box h1:first-child {
4034 padding-top: .25em !important;
4033 padding-top: .25em !important;
4035 }
4034 }
4036
4035
4037 div.readme .readme_box h2, div.readme .readme_box h3 {
4036 div.readme .readme_box h2, div.readme .readme_box h3 {
4038 margin: 1em 0 !important;
4037 margin: 1em 0 !important;
4039 }
4038 }
4040
4039
4041 div.readme .readme_box h2 {
4040 div.readme .readme_box h2 {
4042 margin-top: 1.5em !important;
4041 margin-top: 1.5em !important;
4043 border-top: 4px solid #e0e0e0 !important;
4042 border-top: 4px solid #e0e0e0 !important;
4044 padding-top: .5em !important;
4043 padding-top: .5em !important;
4045 }
4044 }
4046
4045
4047 div.readme .readme_box p {
4046 div.readme .readme_box p {
4048 color: black !important;
4047 color: black !important;
4049 margin: 1em 0 !important;
4048 margin: 1em 0 !important;
4050 line-height: 1.5em !important;
4049 line-height: 1.5em !important;
4051 }
4050 }
4052
4051
4053 div.readme .readme_box ul {
4052 div.readme .readme_box ul {
4054 list-style: disc !important;
4053 list-style: disc !important;
4055 margin: 1em 0 1em 2em !important;
4054 margin: 1em 0 1em 2em !important;
4056 }
4055 }
4057
4056
4058 div.readme .readme_box ol {
4057 div.readme .readme_box ol {
4059 list-style: decimal;
4058 list-style: decimal;
4060 margin: 1em 0 1em 2em !important;
4059 margin: 1em 0 1em 2em !important;
4061 }
4060 }
4062
4061
4063 div.readme .readme_box pre, code {
4062 div.readme .readme_box pre, code {
4064 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4063 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4065 }
4064 }
4066
4065
4067 div.readme .readme_box code {
4066 div.readme .readme_box code {
4068 font-size: 12px !important;
4067 font-size: 12px !important;
4069 background-color: ghostWhite !important;
4068 background-color: ghostWhite !important;
4070 color: #444 !important;
4069 color: #444 !important;
4071 padding: 0 .2em !important;
4070 padding: 0 .2em !important;
4072 border: 1px solid #dedede !important;
4071 border: 1px solid #dedede !important;
4073 }
4072 }
4074
4073
4075 div.readme .readme_box pre code {
4074 div.readme .readme_box pre code {
4076 padding: 0 !important;
4075 padding: 0 !important;
4077 font-size: 12px !important;
4076 font-size: 12px !important;
4078 background-color: #eee !important;
4077 background-color: #eee !important;
4079 border: none !important;
4078 border: none !important;
4080 }
4079 }
4081
4080
4082 div.readme .readme_box pre {
4081 div.readme .readme_box pre {
4083 margin: 1em 0;
4082 margin: 1em 0;
4084 font-size: 12px;
4083 font-size: 12px;
4085 background-color: #eee;
4084 background-color: #eee;
4086 border: 1px solid #ddd;
4085 border: 1px solid #ddd;
4087 padding: 5px;
4086 padding: 5px;
4088 color: #444;
4087 color: #444;
4089 overflow: auto;
4088 overflow: auto;
4090 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4089 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4091 -webkit-border-radius: 3px;
4090 -webkit-border-radius: 3px;
4092 -moz-border-radius: 3px;
4091 -moz-border-radius: 3px;
4093 border-radius: 3px;
4092 border-radius: 3px;
4094 }
4093 }
4095
4094
4096 div.readme .readme_box table {
4095 div.readme .readme_box table {
4097 display: table;
4096 display: table;
4098 border-collapse: separate;
4097 border-collapse: separate;
4099 border-spacing: 2px;
4098 border-spacing: 2px;
4100 border-color: gray;
4099 border-color: gray;
4101 width: auto !important;
4100 width: auto !important;
4102 }
4101 }
4103
4102
4104
4103
4105 /** RST STYLE **/
4104 /** RST STYLE **/
4106
4105
4107
4106
4108 div.rst-block {
4107 div.rst-block {
4109 padding:0px;
4108 padding:0px;
4110 }
4109 }
4111
4110
4112 div.rst-block h2 {
4111 div.rst-block h2 {
4113 font-weight: normal;
4112 font-weight: normal;
4114 }
4113 }
4115
4114
4116 div.rst-block {
4115 div.rst-block {
4117 background-color: #fafafa;
4116 background-color: #fafafa;
4118 }
4117 }
4119
4118
4120 div.rst-block {
4119 div.rst-block {
4121 clear:both;
4120 clear:both;
4122 overflow:hidden;
4121 overflow:hidden;
4123 margin:0;
4122 margin:0;
4124 padding:0 20px 10px;
4123 padding:0 20px 10px;
4125 }
4124 }
4126
4125
4127 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
4126 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
4128 border-bottom: 0 !important;
4127 border-bottom: 0 !important;
4129 margin: 0 !important;
4128 margin: 0 !important;
4130 padding: 0 !important;
4129 padding: 0 !important;
4131 line-height: 1.5em !important;
4130 line-height: 1.5em !important;
4132 }
4131 }
4133
4132
4134
4133
4135 div.rst-block h1:first-child {
4134 div.rst-block h1:first-child {
4136 padding-top: .25em !important;
4135 padding-top: .25em !important;
4137 }
4136 }
4138
4137
4139 div.rst-block h2, div.rst-block h3 {
4138 div.rst-block h2, div.rst-block h3 {
4140 margin: 1em 0 !important;
4139 margin: 1em 0 !important;
4141 }
4140 }
4142
4141
4143 div.rst-block h2 {
4142 div.rst-block h2 {
4144 margin-top: 1.5em !important;
4143 margin-top: 1.5em !important;
4145 border-top: 4px solid #e0e0e0 !important;
4144 border-top: 4px solid #e0e0e0 !important;
4146 padding-top: .5em !important;
4145 padding-top: .5em !important;
4147 }
4146 }
4148
4147
4149 div.rst-block p {
4148 div.rst-block p {
4150 color: black !important;
4149 color: black !important;
4151 margin: 1em 0 !important;
4150 margin: 1em 0 !important;
4152 line-height: 1.5em !important;
4151 line-height: 1.5em !important;
4153 }
4152 }
4154
4153
4155 div.rst-block ul {
4154 div.rst-block ul {
4156 list-style: disc !important;
4155 list-style: disc !important;
4157 margin: 1em 0 1em 2em !important;
4156 margin: 1em 0 1em 2em !important;
4158 }
4157 }
4159
4158
4160 div.rst-block ol {
4159 div.rst-block ol {
4161 list-style: decimal;
4160 list-style: decimal;
4162 margin: 1em 0 1em 2em !important;
4161 margin: 1em 0 1em 2em !important;
4163 }
4162 }
4164
4163
4165 div.rst-block pre, code {
4164 div.rst-block pre, code {
4166 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4165 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4167 }
4166 }
4168
4167
4169 div.rst-block code {
4168 div.rst-block code {
4170 font-size: 12px !important;
4169 font-size: 12px !important;
4171 background-color: ghostWhite !important;
4170 background-color: ghostWhite !important;
4172 color: #444 !important;
4171 color: #444 !important;
4173 padding: 0 .2em !important;
4172 padding: 0 .2em !important;
4174 border: 1px solid #dedede !important;
4173 border: 1px solid #dedede !important;
4175 }
4174 }
4176
4175
4177 div.rst-block pre code {
4176 div.rst-block pre code {
4178 padding: 0 !important;
4177 padding: 0 !important;
4179 font-size: 12px !important;
4178 font-size: 12px !important;
4180 background-color: #eee !important;
4179 background-color: #eee !important;
4181 border: none !important;
4180 border: none !important;
4182 }
4181 }
4183
4182
4184 div.rst-block pre {
4183 div.rst-block pre {
4185 margin: 1em 0;
4184 margin: 1em 0;
4186 font-size: 12px;
4185 font-size: 12px;
4187 background-color: #eee;
4186 background-color: #eee;
4188 border: 1px solid #ddd;
4187 border: 1px solid #ddd;
4189 padding: 5px;
4188 padding: 5px;
4190 color: #444;
4189 color: #444;
4191 overflow: auto;
4190 overflow: auto;
4192 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4191 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4193 -webkit-border-radius: 3px;
4192 -webkit-border-radius: 3px;
4194 -moz-border-radius: 3px;
4193 -moz-border-radius: 3px;
4195 border-radius: 3px;
4194 border-radius: 3px;
4196 }
4195 }
4197
4196
4198
4197
4199 /** comment main **/
4198 /** comment main **/
4200 .comments {
4199 .comments {
4201 padding:10px 20px;
4200 padding:10px 20px;
4202 }
4201 }
4203
4202
4204 .comments .comment {
4203 .comments .comment {
4205 border: 1px solid #ddd;
4204 border: 1px solid #ddd;
4206 margin-top: 10px;
4205 margin-top: 10px;
4207 -webkit-border-radius: 4px;
4206 -webkit-border-radius: 4px;
4208 -moz-border-radius: 4px;
4207 -moz-border-radius: 4px;
4209 border-radius: 4px;
4208 border-radius: 4px;
4210 }
4209 }
4211
4210
4212 .comments .comment .meta {
4211 .comments .comment .meta {
4213 background: #f8f8f8;
4212 background: #f8f8f8;
4214 padding: 4px;
4213 padding: 4px;
4215 border-bottom: 1px solid #ddd;
4214 border-bottom: 1px solid #ddd;
4216 height: 18px;
4215 height: 18px;
4217 }
4216 }
4218
4217
4219 .comments .comment .meta img {
4218 .comments .comment .meta img {
4220 vertical-align: middle;
4219 vertical-align: middle;
4221 }
4220 }
4222
4221
4223 .comments .comment .meta .user {
4222 .comments .comment .meta .user {
4224 font-weight: bold;
4223 font-weight: bold;
4225 float: left;
4224 float: left;
4226 padding: 4px 2px 2px 2px;
4225 padding: 4px 2px 2px 2px;
4227 }
4226 }
4228
4227
4229 .comments .comment .meta .date {
4228 .comments .comment .meta .date {
4230 float: left;
4229 float: left;
4231 padding:4px 4px 0px 4px;
4230 padding:4px 4px 0px 4px;
4232 }
4231 }
4233
4232
4234 .comments .comment .text {
4233 .comments .comment .text {
4235 background-color: #FAFAFA;
4234 background-color: #FAFAFA;
4236 }
4235 }
4237 .comment .text div.rst-block p {
4236 .comment .text div.rst-block p {
4238 margin: 0.5em 0px !important;
4237 margin: 0.5em 0px !important;
4239 }
4238 }
4240
4239
4241 .comments .comments-number{
4240 .comments .comments-number{
4242 padding:0px 0px 10px 0px;
4241 padding:0px 0px 10px 0px;
4243 font-weight: bold;
4242 font-weight: bold;
4244 color: #666;
4243 color: #666;
4245 font-size: 16px;
4244 font-size: 16px;
4246 }
4245 }
4247
4246
4248 /** comment form **/
4247 /** comment form **/
4249
4248
4250 .status-block{
4249 .status-block{
4251 height:80px;
4250 height:80px;
4252 clear:both
4251 clear:both
4253 }
4252 }
4254
4253
4255 .comment-form .clearfix{
4254 .comment-form .clearfix{
4256 background: #EEE;
4255 background: #EEE;
4257 -webkit-border-radius: 4px;
4256 -webkit-border-radius: 4px;
4258 -moz-border-radius: 4px;
4257 -moz-border-radius: 4px;
4259 border-radius: 4px;
4258 border-radius: 4px;
4260 padding: 10px;
4259 padding: 10px;
4261 }
4260 }
4262
4261
4263 div.comment-form {
4262 div.comment-form {
4264 margin-top: 20px;
4263 margin-top: 20px;
4265 }
4264 }
4266
4265
4267 .comment-form strong {
4266 .comment-form strong {
4268 display: block;
4267 display: block;
4269 margin-bottom: 15px;
4268 margin-bottom: 15px;
4270 }
4269 }
4271
4270
4272 .comment-form textarea {
4271 .comment-form textarea {
4273 width: 100%;
4272 width: 100%;
4274 height: 100px;
4273 height: 100px;
4275 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4274 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4276 }
4275 }
4277
4276
4278 form.comment-form {
4277 form.comment-form {
4279 margin-top: 10px;
4278 margin-top: 10px;
4280 margin-left: 10px;
4279 margin-left: 10px;
4281 }
4280 }
4282
4281
4283 .comment-form-submit {
4282 .comment-form-submit {
4284 margin-top: 5px;
4283 margin-top: 5px;
4285 margin-left: 525px;
4284 margin-left: 525px;
4286 }
4285 }
4287
4286
4288 .file-comments {
4287 .file-comments {
4289 display: none;
4288 display: none;
4290 }
4289 }
4291
4290
4292 .comment-form .comment {
4291 .comment-form .comment {
4293 margin-left: 10px;
4292 margin-left: 10px;
4294 }
4293 }
4295
4294
4296 .comment-form .comment-help{
4295 .comment-form .comment-help{
4297 padding: 0px 0px 5px 0px;
4296 padding: 0px 0px 5px 0px;
4298 color: #666;
4297 color: #666;
4299 }
4298 }
4300
4299
4301 .comment-form .comment-button{
4300 .comment-form .comment-button{
4302 padding-top:5px;
4301 padding-top:5px;
4303 }
4302 }
4304
4303
4305 .add-another-button {
4304 .add-another-button {
4306 margin-left: 10px;
4305 margin-left: 10px;
4307 margin-top: 10px;
4306 margin-top: 10px;
4308 margin-bottom: 10px;
4307 margin-bottom: 10px;
4309 }
4308 }
4310
4309
4311 .comment .buttons {
4310 .comment .buttons {
4312 float: right;
4311 float: right;
4313 padding:2px 2px 0px 0px;
4312 padding:2px 2px 0px 0px;
4314 }
4313 }
4315
4314
4316
4315
4317 .show-inline-comments{
4316 .show-inline-comments{
4318 position: relative;
4317 position: relative;
4319 top:1px
4318 top:1px
4320 }
4319 }
4321
4320
4322 /** comment inline form **/
4321 /** comment inline form **/
4323 .comment-inline-form .overlay{
4322 .comment-inline-form .overlay{
4324 display: none;
4323 display: none;
4325 }
4324 }
4326 .comment-inline-form .overlay.submitting{
4325 .comment-inline-form .overlay.submitting{
4327 display:block;
4326 display:block;
4328 background: none repeat scroll 0 0 white;
4327 background: none repeat scroll 0 0 white;
4329 font-size: 16px;
4328 font-size: 16px;
4330 opacity: 0.5;
4329 opacity: 0.5;
4331 position: absolute;
4330 position: absolute;
4332 text-align: center;
4331 text-align: center;
4333 vertical-align: top;
4332 vertical-align: top;
4334
4333
4335 }
4334 }
4336 .comment-inline-form .overlay.submitting .overlay-text{
4335 .comment-inline-form .overlay.submitting .overlay-text{
4337 width:100%;
4336 width:100%;
4338 margin-top:5%;
4337 margin-top:5%;
4339 }
4338 }
4340
4339
4341 .comment-inline-form .clearfix{
4340 .comment-inline-form .clearfix{
4342 background: #EEE;
4341 background: #EEE;
4343 -webkit-border-radius: 4px;
4342 -webkit-border-radius: 4px;
4344 -moz-border-radius: 4px;
4343 -moz-border-radius: 4px;
4345 border-radius: 4px;
4344 border-radius: 4px;
4346 padding: 5px;
4345 padding: 5px;
4347 }
4346 }
4348
4347
4349 div.comment-inline-form {
4348 div.comment-inline-form {
4350 padding:4px 0px 6px 0px;
4349 padding:4px 0px 6px 0px;
4351 }
4350 }
4352
4351
4353
4352
4354 tr.hl-comment{
4353 tr.hl-comment{
4355 /*
4354 /*
4356 background-color: #FFFFCC !important;
4355 background-color: #FFFFCC !important;
4357 */
4356 */
4358 }
4357 }
4359
4358
4360 /*
4359 /*
4361 tr.hl-comment pre {
4360 tr.hl-comment pre {
4362 border-top: 2px solid #FFEE33;
4361 border-top: 2px solid #FFEE33;
4363 border-left: 2px solid #FFEE33;
4362 border-left: 2px solid #FFEE33;
4364 border-right: 2px solid #FFEE33;
4363 border-right: 2px solid #FFEE33;
4365 }
4364 }
4366 */
4365 */
4367
4366
4368 .comment-inline-form strong {
4367 .comment-inline-form strong {
4369 display: block;
4368 display: block;
4370 margin-bottom: 15px;
4369 margin-bottom: 15px;
4371 }
4370 }
4372
4371
4373 .comment-inline-form textarea {
4372 .comment-inline-form textarea {
4374 width: 100%;
4373 width: 100%;
4375 height: 100px;
4374 height: 100px;
4376 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4375 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4377 }
4376 }
4378
4377
4379 form.comment-inline-form {
4378 form.comment-inline-form {
4380 margin-top: 10px;
4379 margin-top: 10px;
4381 margin-left: 10px;
4380 margin-left: 10px;
4382 }
4381 }
4383
4382
4384 .comment-inline-form-submit {
4383 .comment-inline-form-submit {
4385 margin-top: 5px;
4384 margin-top: 5px;
4386 margin-left: 525px;
4385 margin-left: 525px;
4387 }
4386 }
4388
4387
4389 .file-comments {
4388 .file-comments {
4390 display: none;
4389 display: none;
4391 }
4390 }
4392
4391
4393 .comment-inline-form .comment {
4392 .comment-inline-form .comment {
4394 margin-left: 10px;
4393 margin-left: 10px;
4395 }
4394 }
4396
4395
4397 .comment-inline-form .comment-help{
4396 .comment-inline-form .comment-help{
4398 padding: 0px 0px 2px 0px;
4397 padding: 0px 0px 2px 0px;
4399 color: #666666;
4398 color: #666666;
4400 font-size: 10px;
4399 font-size: 10px;
4401 }
4400 }
4402
4401
4403 .comment-inline-form .comment-button{
4402 .comment-inline-form .comment-button{
4404 padding-top:5px;
4403 padding-top:5px;
4405 }
4404 }
4406
4405
4407 /** comment inline **/
4406 /** comment inline **/
4408 .inline-comments {
4407 .inline-comments {
4409 padding:10px 20px;
4408 padding:10px 20px;
4410 }
4409 }
4411
4410
4412 .inline-comments div.rst-block {
4411 .inline-comments div.rst-block {
4413 clear:both;
4412 clear:both;
4414 overflow:hidden;
4413 overflow:hidden;
4415 margin:0;
4414 margin:0;
4416 padding:0 20px 0px;
4415 padding:0 20px 0px;
4417 }
4416 }
4418 .inline-comments .comment {
4417 .inline-comments .comment {
4419 border: 1px solid #ddd;
4418 border: 1px solid #ddd;
4420 -webkit-border-radius: 4px;
4419 -webkit-border-radius: 4px;
4421 -moz-border-radius: 4px;
4420 -moz-border-radius: 4px;
4422 border-radius: 4px;
4421 border-radius: 4px;
4423 margin: 3px 3px 5px 5px;
4422 margin: 3px 3px 5px 5px;
4424 background-color: #FAFAFA;
4423 background-color: #FAFAFA;
4425 }
4424 }
4426 .inline-comments .add-comment {
4425 .inline-comments .add-comment {
4427 padding: 2px 4px 8px 5px;
4426 padding: 2px 4px 8px 5px;
4428 }
4427 }
4429
4428
4430 .inline-comments .comment-wrapp{
4429 .inline-comments .comment-wrapp{
4431 padding:1px;
4430 padding:1px;
4432 }
4431 }
4433 .inline-comments .comment .meta {
4432 .inline-comments .comment .meta {
4434 background: #f8f8f8;
4433 background: #f8f8f8;
4435 padding: 4px;
4434 padding: 4px;
4436 border-bottom: 1px solid #ddd;
4435 border-bottom: 1px solid #ddd;
4437 height: 20px;
4436 height: 20px;
4438 }
4437 }
4439
4438
4440 .inline-comments .comment .meta img {
4439 .inline-comments .comment .meta img {
4441 vertical-align: middle;
4440 vertical-align: middle;
4442 }
4441 }
4443
4442
4444 .inline-comments .comment .meta .user {
4443 .inline-comments .comment .meta .user {
4445 font-weight: bold;
4444 font-weight: bold;
4446 float:left;
4445 float:left;
4447 padding: 3px;
4446 padding: 3px;
4448 }
4447 }
4449
4448
4450 .inline-comments .comment .meta .date {
4449 .inline-comments .comment .meta .date {
4451 float:left;
4450 float:left;
4452 padding: 3px;
4451 padding: 3px;
4453 }
4452 }
4454
4453
4455 .inline-comments .comment .text {
4454 .inline-comments .comment .text {
4456 background-color: #FAFAFA;
4455 background-color: #FAFAFA;
4457 }
4456 }
4458
4457
4459 .inline-comments .comments-number{
4458 .inline-comments .comments-number{
4460 padding:0px 0px 10px 0px;
4459 padding:0px 0px 10px 0px;
4461 font-weight: bold;
4460 font-weight: bold;
4462 color: #666;
4461 color: #666;
4463 font-size: 16px;
4462 font-size: 16px;
4464 }
4463 }
4465 .inline-comments-button .add-comment{
4464 .inline-comments-button .add-comment{
4466 margin:2px 0px 8px 5px !important
4465 margin:2px 0px 8px 5px !important
4467 }
4466 }
4468
4467
4469
4468
4470 .notification-paginator{
4469 .notification-paginator{
4471 padding: 0px 0px 4px 16px;
4470 padding: 0px 0px 4px 16px;
4472 float: left;
4471 float: left;
4473 }
4472 }
4474
4473
4475 .notifications{
4474 .notifications{
4476 border-radius: 4px 4px 4px 4px;
4475 border-radius: 4px 4px 4px 4px;
4477 -webkit-border-radius: 4px;
4476 -webkit-border-radius: 4px;
4478 -moz-border-radius: 4px;
4477 -moz-border-radius: 4px;
4479 float: right;
4478 float: right;
4480 margin: 20px 0px 0px 0px;
4479 margin: 20px 0px 0px 0px;
4481 position: absolute;
4480 position: absolute;
4482 text-align: center;
4481 text-align: center;
4483 width: 26px;
4482 width: 26px;
4484 z-index: 1000;
4483 z-index: 1000;
4485 }
4484 }
4486 .notifications a{
4485 .notifications a{
4487 color:#888 !important;
4486 color:#888 !important;
4488 display: block;
4487 display: block;
4489 font-size: 10px;
4488 font-size: 10px;
4490 background-color: #DEDEDE !important;
4489 background-color: #DEDEDE !important;
4491 border-radius: 2px !important;
4490 border-radius: 2px !important;
4492 -webkit-border-radius: 2px !important;
4491 -webkit-border-radius: 2px !important;
4493 -moz-border-radius: 2px !important;
4492 -moz-border-radius: 2px !important;
4494 }
4493 }
4495 .notifications a:hover{
4494 .notifications a:hover{
4496 text-decoration: none !important;
4495 text-decoration: none !important;
4497 background-color: #EEEFFF !important;
4496 background-color: #EEEFFF !important;
4498 }
4497 }
4499 .notification-header{
4498 .notification-header{
4500 padding-top:6px;
4499 padding-top:6px;
4501 }
4500 }
4502 .notification-header .desc{
4501 .notification-header .desc{
4503 font-size: 16px;
4502 font-size: 16px;
4504 height: 24px;
4503 height: 24px;
4505 float: left
4504 float: left
4506 }
4505 }
4507 .notification-list .container.unread{
4506 .notification-list .container.unread{
4508 background: none repeat scroll 0 0 rgba(255, 255, 180, 0.6);
4507 background: none repeat scroll 0 0 rgba(255, 255, 180, 0.6);
4509 }
4508 }
4510 .notification-header .gravatar{
4509 .notification-header .gravatar{
4511 background: none repeat scroll 0 0 transparent;
4510 background: none repeat scroll 0 0 transparent;
4512 padding: 0px 0px 0px 8px;
4511 padding: 0px 0px 0px 8px;
4513 }
4512 }
4514 .notification-list .container .notification-header .desc{
4513 .notification-list .container .notification-header .desc{
4515 font-weight: bold;
4514 font-weight: bold;
4516 font-size: 17px;
4515 font-size: 17px;
4517 }
4516 }
4518 .notification-table{
4517 .notification-table{
4519 border: 1px solid #ccc;
4518 border: 1px solid #ccc;
4520 -webkit-border-radius: 6px 6px 6px 6px;
4519 -webkit-border-radius: 6px 6px 6px 6px;
4521 -moz-border-radius: 6px 6px 6px 6px;
4520 -moz-border-radius: 6px 6px 6px 6px;
4522 border-radius: 6px 6px 6px 6px;
4521 border-radius: 6px 6px 6px 6px;
4523 clear: both;
4522 clear: both;
4524 margin: 0px 20px 0px 20px;
4523 margin: 0px 20px 0px 20px;
4525 }
4524 }
4526 .notification-header .delete-notifications{
4525 .notification-header .delete-notifications{
4527 float: right;
4526 float: right;
4528 padding-top: 8px;
4527 padding-top: 8px;
4529 cursor: pointer;
4528 cursor: pointer;
4530 }
4529 }
4531 .notification-header .read-notifications{
4530 .notification-header .read-notifications{
4532 float: right;
4531 float: right;
4533 padding-top: 8px;
4532 padding-top: 8px;
4534 cursor: pointer;
4533 cursor: pointer;
4535 }
4534 }
4536 .notification-subject{
4535 .notification-subject{
4537 clear:both;
4536 clear:both;
4538 border-bottom: 1px solid #eee;
4537 border-bottom: 1px solid #eee;
4539 padding:5px 0px 5px 38px;
4538 padding:5px 0px 5px 38px;
4540 }
4539 }
4541
4540
4542 .notification-body{
4541 .notification-body{
4543 clear:both;
4542 clear:both;
4544 margin: 34px 2px 2px 8px
4543 margin: 34px 2px 2px 8px
4545 }
4544 }
4546
4545
4547 /****
4546 /****
4548 PULL REQUESTS
4547 PULL REQUESTS
4549 *****/
4548 *****/
4550 .pullrequests_section_head {
4549 .pullrequests_section_head {
4551 padding:10px 10px 10px 0px;
4550 padding:10px 10px 10px 0px;
4552 font-size:16px;
4551 font-size:16px;
4553 font-weight: bold;
4552 font-weight: bold;
4554 }
4553 }
4555
4554
4556 /****
4555 /****
4557 PERMS
4556 PERMS
4558 *****/
4557 *****/
4559 #perms .perms_section_head {
4558 #perms .perms_section_head {
4560 padding:10px 10px 10px 0px;
4559 padding:10px 10px 10px 0px;
4561 font-size:16px;
4560 font-size:16px;
4562 font-weight: bold;
4561 font-weight: bold;
4563 }
4562 }
4564
4563
4565 #perms .perm_tag{
4564 #perms .perm_tag{
4566 padding: 1px 3px 1px 3px;
4565 padding: 1px 3px 1px 3px;
4567 font-size: 10px;
4566 font-size: 10px;
4568 font-weight: bold;
4567 font-weight: bold;
4569 text-transform: uppercase;
4568 text-transform: uppercase;
4570 white-space: nowrap;
4569 white-space: nowrap;
4571 -webkit-border-radius: 3px;
4570 -webkit-border-radius: 3px;
4572 -moz-border-radius: 3px;
4571 -moz-border-radius: 3px;
4573 border-radius: 3px;
4572 border-radius: 3px;
4574 }
4573 }
4575
4574
4576 #perms .perm_tag.admin{
4575 #perms .perm_tag.admin{
4577 background-color: #B94A48;
4576 background-color: #B94A48;
4578 color: #ffffff;
4577 color: #ffffff;
4579 }
4578 }
4580
4579
4581 #perms .perm_tag.write{
4580 #perms .perm_tag.write{
4582 background-color: #B94A48;
4581 background-color: #B94A48;
4583 color: #ffffff;
4582 color: #ffffff;
4584 }
4583 }
4585
4584
4586 #perms .perm_tag.read{
4585 #perms .perm_tag.read{
4587 background-color: #468847;
4586 background-color: #468847;
4588 color: #ffffff;
4587 color: #ffffff;
4589 }
4588 }
4590
4589
4591 #perms .perm_tag.none{
4590 #perms .perm_tag.none{
4592 background-color: #bfbfbf;
4591 background-color: #bfbfbf;
4593 color: #ffffff;
4592 color: #ffffff;
4594 }
4593 }
4595
4594
4596 .perm-gravatar{
4595 .perm-gravatar{
4597 vertical-align:middle;
4596 vertical-align:middle;
4598 padding:2px;
4597 padding:2px;
4599 }
4598 }
4600 .perm-gravatar-ac{
4599 .perm-gravatar-ac{
4601 vertical-align:middle;
4600 vertical-align:middle;
4602 padding:2px;
4601 padding:2px;
4603 width: 14px;
4602 width: 14px;
4604 height: 14px;
4603 height: 14px;
4605 }
4604 }
4606
4605
4607 /*****************************************************************************
4606 /*****************************************************************************
4608 DIFFS CSS
4607 DIFFS CSS
4609 ******************************************************************************/
4608 ******************************************************************************/
4610
4609
4611 div.diffblock {
4610 div.diffblock {
4612 overflow: auto;
4611 overflow: auto;
4613 padding: 0px;
4612 padding: 0px;
4614 border: 1px solid #ccc;
4613 border: 1px solid #ccc;
4615 background: #f8f8f8;
4614 background: #f8f8f8;
4616 font-size: 100%;
4615 font-size: 100%;
4617 line-height: 100%;
4616 line-height: 100%;
4618 /* new */
4617 /* new */
4619 line-height: 125%;
4618 line-height: 125%;
4620 -webkit-border-radius: 6px 6px 0px 0px;
4619 -webkit-border-radius: 6px 6px 0px 0px;
4621 -moz-border-radius: 6px 6px 0px 0px;
4620 -moz-border-radius: 6px 6px 0px 0px;
4622 border-radius: 6px 6px 0px 0px;
4621 border-radius: 6px 6px 0px 0px;
4623 }
4622 }
4624 div.diffblock.margined{
4623 div.diffblock.margined{
4625 margin: 0px 20px 0px 20px;
4624 margin: 0px 20px 0px 20px;
4626 }
4625 }
4627 div.diffblock .code-header{
4626 div.diffblock .code-header{
4628 border-bottom: 1px solid #CCCCCC;
4627 border-bottom: 1px solid #CCCCCC;
4629 background: #EEEEEE;
4628 background: #EEEEEE;
4630 padding:10px 0 10px 0;
4629 padding:10px 0 10px 0;
4631 height: 14px;
4630 height: 14px;
4632 }
4631 }
4633 div.diffblock .code-header.cv{
4632 div.diffblock .code-header.cv{
4634 height: 34px;
4633 height: 34px;
4635 }
4634 }
4636 div.diffblock .code-header-title{
4635 div.diffblock .code-header-title{
4637 padding: 0px 0px 10px 5px !important;
4636 padding: 0px 0px 10px 5px !important;
4638 margin: 0 !important;
4637 margin: 0 !important;
4639 }
4638 }
4640 div.diffblock .code-header .hash{
4639 div.diffblock .code-header .hash{
4641 float: left;
4640 float: left;
4642 padding: 2px 0 0 2px;
4641 padding: 2px 0 0 2px;
4643 }
4642 }
4644 div.diffblock .code-header .date{
4643 div.diffblock .code-header .date{
4645 float:left;
4644 float:left;
4646 text-transform: uppercase;
4645 text-transform: uppercase;
4647 padding: 2px 0px 0px 2px;
4646 padding: 2px 0px 0px 2px;
4648 }
4647 }
4649 div.diffblock .code-header div{
4648 div.diffblock .code-header div{
4650 margin-left:4px;
4649 margin-left:4px;
4651 font-weight: bold;
4650 font-weight: bold;
4652 font-size: 14px;
4651 font-size: 14px;
4653 }
4652 }
4654 div.diffblock .code-body{
4653 div.diffblock .code-body{
4655 background: #FFFFFF;
4654 background: #FFFFFF;
4656 }
4655 }
4657 div.diffblock pre.raw{
4656 div.diffblock pre.raw{
4658 background: #FFFFFF;
4657 background: #FFFFFF;
4659 color:#000000;
4658 color:#000000;
4660 }
4659 }
4661 table.code-difftable{
4660 table.code-difftable{
4662 border-collapse: collapse;
4661 border-collapse: collapse;
4663 width: 99%;
4662 width: 99%;
4664 }
4663 }
4665 table.code-difftable td {
4664 table.code-difftable td {
4666 padding: 0 !important;
4665 padding: 0 !important;
4667 background: none !important;
4666 background: none !important;
4668 border:0 !important;
4667 border:0 !important;
4669 vertical-align: none !important;
4668 vertical-align: none !important;
4670 }
4669 }
4671 table.code-difftable .context{
4670 table.code-difftable .context{
4672 background:none repeat scroll 0 0 #DDE7EF;
4671 background:none repeat scroll 0 0 #DDE7EF;
4673 }
4672 }
4674 table.code-difftable .add{
4673 table.code-difftable .add{
4675 background:none repeat scroll 0 0 #DDFFDD;
4674 background:none repeat scroll 0 0 #DDFFDD;
4676 }
4675 }
4677 table.code-difftable .add ins{
4676 table.code-difftable .add ins{
4678 background:none repeat scroll 0 0 #AAFFAA;
4677 background:none repeat scroll 0 0 #AAFFAA;
4679 text-decoration:none;
4678 text-decoration:none;
4680 }
4679 }
4681 table.code-difftable .del{
4680 table.code-difftable .del{
4682 background:none repeat scroll 0 0 #FFDDDD;
4681 background:none repeat scroll 0 0 #FFDDDD;
4683 }
4682 }
4684 table.code-difftable .del del{
4683 table.code-difftable .del del{
4685 background:none repeat scroll 0 0 #FFAAAA;
4684 background:none repeat scroll 0 0 #FFAAAA;
4686 text-decoration:none;
4685 text-decoration:none;
4687 }
4686 }
4688
4687
4689 /** LINE NUMBERS **/
4688 /** LINE NUMBERS **/
4690 table.code-difftable .lineno{
4689 table.code-difftable .lineno{
4691
4690
4692 padding-left:2px;
4691 padding-left:2px;
4693 padding-right:2px;
4692 padding-right:2px;
4694 text-align:right;
4693 text-align:right;
4695 width:32px;
4694 width:32px;
4696 -moz-user-select:none;
4695 -moz-user-select:none;
4697 -webkit-user-select: none;
4696 -webkit-user-select: none;
4698 border-right: 1px solid #CCC !important;
4697 border-right: 1px solid #CCC !important;
4699 border-left: 0px solid #CCC !important;
4698 border-left: 0px solid #CCC !important;
4700 border-top: 0px solid #CCC !important;
4699 border-top: 0px solid #CCC !important;
4701 border-bottom: none !important;
4700 border-bottom: none !important;
4702 vertical-align: middle !important;
4701 vertical-align: middle !important;
4703
4702
4704 }
4703 }
4705 table.code-difftable .lineno.new {
4704 table.code-difftable .lineno.new {
4706 }
4705 }
4707 table.code-difftable .lineno.old {
4706 table.code-difftable .lineno.old {
4708 }
4707 }
4709 table.code-difftable .lineno a{
4708 table.code-difftable .lineno a{
4710 color:#747474 !important;
4709 color:#747474 !important;
4711 font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4710 font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4712 letter-spacing:-1px;
4711 letter-spacing:-1px;
4713 text-align:right;
4712 text-align:right;
4714 padding-right: 2px;
4713 padding-right: 2px;
4715 cursor: pointer;
4714 cursor: pointer;
4716 display: block;
4715 display: block;
4717 width: 32px;
4716 width: 32px;
4718 }
4717 }
4719
4718
4720 table.code-difftable .lineno-inline{
4719 table.code-difftable .lineno-inline{
4721 background:none repeat scroll 0 0 #FFF !important;
4720 background:none repeat scroll 0 0 #FFF !important;
4722 padding-left:2px;
4721 padding-left:2px;
4723 padding-right:2px;
4722 padding-right:2px;
4724 text-align:right;
4723 text-align:right;
4725 width:30px;
4724 width:30px;
4726 -moz-user-select:none;
4725 -moz-user-select:none;
4727 -webkit-user-select: none;
4726 -webkit-user-select: none;
4728 }
4727 }
4729
4728
4730 /** CODE **/
4729 /** CODE **/
4731 table.code-difftable .code {
4730 table.code-difftable .code {
4732 display: block;
4731 display: block;
4733 width: 100%;
4732 width: 100%;
4734 }
4733 }
4735 table.code-difftable .code td{
4734 table.code-difftable .code td{
4736 margin:0;
4735 margin:0;
4737 padding:0;
4736 padding:0;
4738 }
4737 }
4739 table.code-difftable .code pre{
4738 table.code-difftable .code pre{
4740 margin:0;
4739 margin:0;
4741 padding:0;
4740 padding:0;
4742 height: 17px;
4741 height: 17px;
4743 line-height: 17px;
4742 line-height: 17px;
4744 }
4743 }
4745
4744
4746
4745
4747 .diffblock.margined.comm .line .code:hover{
4746 .diffblock.margined.comm .line .code:hover{
4748 background-color:#FFFFCC !important;
4747 background-color:#FFFFCC !important;
4749 cursor: pointer !important;
4748 cursor: pointer !important;
4750 background-image:url("../images/icons/comment_add.png") !important;
4749 background-image:url("../images/icons/comment_add.png") !important;
4751 background-repeat:no-repeat !important;
4750 background-repeat:no-repeat !important;
4752 background-position: right !important;
4751 background-position: right !important;
4753 background-position: 0% 50% !important;
4752 background-position: 0% 50% !important;
4754 }
4753 }
4755 .diffblock.margined.comm .line .code.no-comment:hover{
4754 .diffblock.margined.comm .line .code.no-comment:hover{
4756 background-image: none !important;
4755 background-image: none !important;
4757 cursor: auto !important;
4756 cursor: auto !important;
4758 background-color: inherit !important;
4757 background-color: inherit !important;
4759
4758
4760 }
4759 }
@@ -1,25 +1,26 b''
1 <dl>
1 <dl>
2 <dt class="file_history">${_('History')}</dt>
2 <dt class="file_history">${_('History')}</dt>
3 <dd>
3 <dd>
4 <div>
4 <div>
5 <div style="float:left">
5 <div style="float:left">
6 ${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')}
6 ${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')}
7 ${h.hidden('diff2',c.file_changeset.raw_id)}
7 ${h.hidden('diff2',c.file_changeset.raw_id)}
8 ${h.select('diff1',c.file_changeset.raw_id,c.file_history)}
8 ${h.select('diff1',c.file_changeset.raw_id,c.file_history)}
9 ${h.submit('diff',_('diff to revision'),class_="ui-btn")}
9 ${h.submit('diff',_('diff to revision'),class_="ui-btn")}
10 ${h.submit('show_rev',_('show at revision'),class_="ui-btn")}
10 ${h.submit('show_rev',_('show at revision'),class_="ui-btn")}
11 ${h.link_to(_('show full history'),h.url('shortlog_file_home',repo_name=c.repo_name, revision=c.file_changeset.raw_id, f_path=c.f_path),class_="ui-btn")}
11 ${h.hidden('annotate', c.annotate)}
12 ${h.hidden('annotate', c.annotate)}
12 ${h.end_form()}
13 ${h.end_form()}
13 </div>
14 </div>
14 <div class="file_author">
15 <div class="file_author">
15 <div class="item">${h.literal(ungettext(u'%s author',u'%s authors',len(c.authors)) % ('<b>%s</b>' % len(c.authors))) }</div>
16 <div class="item">${h.literal(ungettext(u'%s author',u'%s authors',len(c.authors)) % ('<b>%s</b>' % len(c.authors))) }</div>
16 %for email, user in c.authors:
17 %for email, user in c.authors:
17 <div class="contributor tooltip" style="float:left" title="${h.tooltip(user)}">
18 <div class="contributor tooltip" style="float:left" title="${h.tooltip(user)}">
18 <div class="gravatar" style="margin:1px"><img alt="gravatar" src="${h.gravatar_url(email, 20)}"/> </div>
19 <div class="gravatar" style="margin:1px"><img alt="gravatar" src="${h.gravatar_url(email, 20)}"/> </div>
19 </div>
20 </div>
20 %endfor
21 %endfor
21 </div>
22 </div>
22 </div>
23 </div>
23 <div style="clear:both"></div>
24 <div style="clear:both"></div>
24 </dd>
25 </dd>
25 </dl>
26 </dl>
@@ -1,33 +1,39 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
2 <%inherit file="/base/base.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('%s Shortlog') % c.repo_name} - ${c.rhodecode_name}
5 ${_('%s Shortlog') % c.repo_name} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7
7
8
8
9 <%def name="breadcrumbs_links()">
9 <%def name="breadcrumbs_links()">
10 ${h.link_to(_(u'Home'),h.url('/'))}
10 ${h.link_to(_(u'Home'),h.url('/'))}
11 &raquo;
11 &raquo;
12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
12 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
13 &raquo;
13 &raquo;
14 ${_('shortlog')}
14 %if c.file_history:
15 ${h.link_to(_('shortlog'),h.url('shortlog_home',repo_name=c.repo_name))}
16 &raquo;
17 ${c.file_history}
18 %else:
19 ${_('shortlog')}
20 %endif
15 </%def>
21 </%def>
16
22
17 <%def name="page_nav()">
23 <%def name="page_nav()">
18 ${self.menu('shortlog')}
24 ${self.menu('shortlog')}
19 </%def>
25 </%def>
20 <%def name="main()">
26 <%def name="main()">
21 <div class="box">
27 <div class="box">
22 <!-- box / title -->
28 <!-- box / title -->
23 <div class="title">
29 <div class="title">
24 ${self.breadcrumbs()}
30 ${self.breadcrumbs()}
25 </div>
31 </div>
26 <!-- end box / title -->
32 <!-- end box / title -->
27 <div class="table">
33 <div class="table">
28 <div id="shortlog_data">
34 <div id="shortlog_data">
29 ${c.shortlog_data}
35 ${c.shortlog_data}
30 </div>
36 </div>
31 </div>
37 </div>
32 </div>
38 </div>
33 </%def>
39 </%def>
@@ -1,103 +1,101 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 %if c.repo_changesets:
2 %if c.repo_changesets:
3 <table class="table_disp">
3 <table class="table_disp">
4 <tr>
4 <tr>
5 <th class="left">${_('revision')}</th>
5 <th class="left">${_('revision')}</th>
6 <th class="left">${_('commit message')}</th>
6 <th class="left">${_('commit message')}</th>
7 <th class="left">${_('age')}</th>
7 <th class="left">${_('age')}</th>
8 <th class="left">${_('author')}</th>
8 <th class="left">${_('author')}</th>
9 <th class="left">${_('branch')}</th>
9 <th class="left">${_('branch')}</th>
10 <th class="left">${_('tags')}</th>
10 <th class="left">${_('tags')}</th>
11 </tr>
11 </tr>
12 %for cnt,cs in enumerate(c.repo_changesets):
12 %for cnt,cs in enumerate(c.repo_changesets):
13 <tr class="parity${cnt%2}">
13 <tr class="parity${cnt%2}">
14 <td>
14 <td>
15 <div>
15 <div>
16 <div class="changeset-status-container">
16 <div class="changeset-status-container">
17 %if c.statuses.get(cs.raw_id):
17 %if c.statuses.get(cs.raw_id):
18 <div class="changeset-status-ico">
18 <div class="changeset-status-ico">
19 %if c.statuses.get(cs.raw_id)[2]:
19 %if c.statuses.get(cs.raw_id)[2]:
20 <a class="tooltip" title="${_('Click to open associated pull request')}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
20 <a class="tooltip" title="${_('Click to open associated pull request')}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
21 <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
21 <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
22 </a>
22 </a>
23 %else:
23 %else:
24 <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
24 <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
25 %endif
25 %endif
26 </div>
26 </div>
27 %endif
27 %endif
28 </div>
28 </div>
29 <pre><a href="${h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id)}">r${cs.revision}:${h.short_id(cs.raw_id)}</a></pre>
29 <pre><a href="${h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id)}">r${cs.revision}:${h.short_id(cs.raw_id)}</a></pre>
30 </div>
30 </div>
31 </td>
31 </td>
32 <td>
32 <td>
33 ${h.link_to(h.truncate(cs.message,50) or _('No commit message'),
33 ${h.urlify_commit(h.truncate(cs.message,50),c.repo_name, h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
34 h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id),
35 title=cs.message)}
36 </td>
34 </td>
37 <td><span class="tooltip" title="${h.tooltip(h.fmt_date(cs.date))}">
35 <td><span class="tooltip" title="${h.tooltip(h.fmt_date(cs.date))}">
38 ${h.age(cs.date)}</span>
36 ${h.age(cs.date)}</span>
39 </td>
37 </td>
40 <td title="${cs.author}">${h.person(cs.author)}</td>
38 <td title="${cs.author}">${h.person(cs.author)}</td>
41 <td>
39 <td>
42 <span class="logtags">
40 <span class="logtags">
43 %if cs.branch:
41 %if cs.branch:
44 <span class="branchtag">
42 <span class="branchtag">
45 ${cs.branch}
43 ${cs.branch}
46 </span>
44 </span>
47 %endif
45 %endif
48 </span>
46 </span>
49 </td>
47 </td>
50 <td>
48 <td>
51 <span class="logtags">
49 <span class="logtags">
52 %for tag in cs.tags:
50 %for tag in cs.tags:
53 <span class="tagtag">${tag}</span>
51 <span class="tagtag">${tag}</span>
54 %endfor
52 %endfor
55 </span>
53 </span>
56 </td>
54 </td>
57 </tr>
55 </tr>
58 %endfor
56 %endfor
59
57
60 </table>
58 </table>
61
59
62 <script type="text/javascript">
60 <script type="text/javascript">
63 YUE.onDOMReady(function(){
61 YUE.onDOMReady(function(){
64 YUE.delegate("shortlog_data","click",function(e, matchedEl, container){
62 YUE.delegate("shortlog_data","click",function(e, matchedEl, container){
65 ypjax(e.target.href,"shortlog_data",function(){tooltip_activate();});
63 ypjax(e.target.href,"shortlog_data",function(){tooltip_activate();});
66 YUE.preventDefault(e);
64 YUE.preventDefault(e);
67 },'.pager_link');
65 },'.pager_link');
68 });
66 });
69 </script>
67 </script>
70
68
71 <div class="pagination-wh pagination-left">
69 <div class="pagination-wh pagination-left">
72 ${c.repo_changesets.pager('$link_previous ~2~ $link_next')}
70 ${c.repo_changesets.pager('$link_previous ~2~ $link_next')}
73 </div>
71 </div>
74 %else:
72 %else:
75
73
76 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
74 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
77 <h4>${_('Add or upload files directly via RhodeCode')}</h4>
75 <h4>${_('Add or upload files directly via RhodeCode')}</h4>
78 <div style="margin: 20px 30px;">
76 <div style="margin: 20px 30px;">
79 <div id="add_node_id" class="add_node">
77 <div id="add_node_id" class="add_node">
80 <a class="ui-btn" href="${h.url('files_add_home',repo_name=c.repo_name,revision=0,f_path='')}">${_('add new file')}</a>
78 <a class="ui-btn" href="${h.url('files_add_home',repo_name=c.repo_name,revision=0,f_path='')}">${_('add new file')}</a>
81 </div>
79 </div>
82 </div>
80 </div>
83 %endif
81 %endif
84
82
85
83
86 <h4>${_('Push new repo')}</h4>
84 <h4>${_('Push new repo')}</h4>
87 <pre>
85 <pre>
88 ${c.rhodecode_repo.alias} clone ${c.clone_repo_url}
86 ${c.rhodecode_repo.alias} clone ${c.clone_repo_url}
89 ${c.rhodecode_repo.alias} add README # add first file
87 ${c.rhodecode_repo.alias} add README # add first file
90 ${c.rhodecode_repo.alias} commit -m "Initial" # commit with message
88 ${c.rhodecode_repo.alias} commit -m "Initial" # commit with message
91 ${c.rhodecode_repo.alias} push ${'origin master' if h.is_git(c.rhodecode_repo) else ''} # push changes back
89 ${c.rhodecode_repo.alias} push ${'origin master' if h.is_git(c.rhodecode_repo) else ''} # push changes back
92 </pre>
90 </pre>
93
91
94 <h4>${_('Existing repository?')}</h4>
92 <h4>${_('Existing repository?')}</h4>
95 <pre>
93 <pre>
96 %if h.is_git(c.rhodecode_repo):
94 %if h.is_git(c.rhodecode_repo):
97 git remote add origin ${c.clone_repo_url}
95 git remote add origin ${c.clone_repo_url}
98 git push -u origin master
96 git push -u origin master
99 %else:
97 %else:
100 hg push ${c.clone_repo_url}
98 hg push ${c.clone_repo_url}
101 %endif
99 %endif
102 </pre>
100 </pre>
103 %endif
101 %endif
@@ -1,8 +1,65 b''
1 from rhodecode.tests import *
1 from rhodecode.tests import *
2
2
3
3 class TestShortlogController(TestController):
4 class TestShortlogController(TestController):
4
5
5 def test_index(self):
6 def test_index_hg(self):
7 self.log_user()
8 response = self.app.get(url(controller='shortlog', action='index',
9 repo_name=HG_REPO))
10 # Test response...
11
12 def test_index_git(self):
13 self.log_user()
14 response = self.app.get(url(controller='shortlog', action='index',
15 repo_name=GIT_REPO))
16 # Test response...
17
18 def test_index_hg_with_filenode(self):
19 self.log_user()
20 response = self.app.get(url(controller='shortlog', action='index',
21 revision='tip', f_path='/vcs/exceptions.py',
22 repo_name=HG_REPO))
23 #history commits messages
24 response.mustcontain('Added exceptions module, this time for real')
25 response.mustcontain('Added not implemented hg backend test case')
26 response.mustcontain('Added BaseChangeset class')
27 # Test response...
28
29 def test_index_git_with_filenode(self):
6 self.log_user()
30 self.log_user()
7 response = self.app.get(url(controller='shortlog', action='index',repo_name=HG_REPO))
31 response = self.app.get(url(controller='shortlog', action='index',
8 # Test response...
32 revision='tip', f_path='/vcs/exceptions.py',
33 repo_name=GIT_REPO))
34 #history commits messages
35 response.mustcontain('Added exceptions module, this time for real')
36 response.mustcontain('Added not implemented hg backend test case')
37 response.mustcontain('Added BaseChangeset class')
38
39 def test_index_hg_with_filenode_that_is_dirnode(self):
40 self.log_user()
41 response = self.app.get(url(controller='shortlog', action='index',
42 revision='tip', f_path='/tests',
43 repo_name=HG_REPO))
44 self.assertEqual(response.status, '302 Found')
45
46 def test_index_git_with_filenode_that_is_dirnode(self):
47 self.log_user()
48 response = self.app.get(url(controller='shortlog', action='index',
49 revision='tip', f_path='/tests',
50 repo_name=GIT_REPO))
51 self.assertEqual(response.status, '302 Found')
52
53 def test_index_hg_with_filenode_not_existing(self):
54 self.log_user()
55 response = self.app.get(url(controller='shortlog', action='index',
56 revision='tip', f_path='/wrong_path',
57 repo_name=HG_REPO))
58 self.assertEqual(response.status, '302 Found')
59
60 def test_index_git_with_filenode_not_existing(self):
61 self.log_user()
62 response = self.app.get(url(controller='shortlog', action='index',
63 revision='tip', f_path='/wrong_path',
64 repo_name=GIT_REPO))
65 self.assertEqual(response.status, '302 Found')
General Comments 0
You need to be logged in to leave comments. Login now