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