##// 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 Routes configuration
2 Routes configuration
3
3
4 The more specific and detailed routes should be defined first so they
4 The more specific and detailed routes should be defined first so they
5 may take precedent over the more generic routes. For more information
5 may take precedent over the more generic routes. For more information
6 refer to the routes manual at http://routes.groovie.org/docs/
6 refer to the routes manual at http://routes.groovie.org/docs/
7 """
7 """
8 from __future__ import with_statement
8 from __future__ import with_statement
9 from routes import Mapper
9 from routes import Mapper
10
10
11 # prefix for non repository related links needs to be prefixed with `/`
11 # prefix for non repository related links needs to be prefixed with `/`
12 ADMIN_PREFIX = '/_admin'
12 ADMIN_PREFIX = '/_admin'
13
13
14
14
15 def make_map(config):
15 def make_map(config):
16 """Create, configure and return the routes Mapper"""
16 """Create, configure and return the routes Mapper"""
17 rmap = Mapper(directory=config['pylons.paths']['controllers'],
17 rmap = Mapper(directory=config['pylons.paths']['controllers'],
18 always_scan=config['debug'])
18 always_scan=config['debug'])
19 rmap.minimization = False
19 rmap.minimization = False
20 rmap.explicit = False
20 rmap.explicit = False
21
21
22 from rhodecode.lib.utils import is_valid_repo
22 from rhodecode.lib.utils import is_valid_repo
23 from rhodecode.lib.utils import is_valid_repos_group
23 from rhodecode.lib.utils import is_valid_repos_group
24
24
25 def check_repo(environ, match_dict):
25 def check_repo(environ, match_dict):
26 """
26 """
27 check for valid repository for proper 404 handling
27 check for valid repository for proper 404 handling
28
28
29 :param environ:
29 :param environ:
30 :param match_dict:
30 :param match_dict:
31 """
31 """
32 from rhodecode.model.db import Repository
32 from rhodecode.model.db import Repository
33 repo_name = match_dict.get('repo_name')
33 repo_name = match_dict.get('repo_name')
34
34
35 if match_dict.get('f_path'):
35 if match_dict.get('f_path'):
36 #fix for multiple initial slashes that causes errors
36 #fix for multiple initial slashes that causes errors
37 match_dict['f_path'] = match_dict['f_path'].lstrip('/')
37 match_dict['f_path'] = match_dict['f_path'].lstrip('/')
38
38
39 try:
39 try:
40 by_id = repo_name.split('_')
40 by_id = repo_name.split('_')
41 if len(by_id) == 2 and by_id[1].isdigit() and by_id[0] == '':
41 if len(by_id) == 2 and by_id[1].isdigit() and by_id[0] == '':
42 repo_name = Repository.get(by_id[1]).repo_name
42 repo_name = Repository.get(by_id[1]).repo_name
43 match_dict['repo_name'] = repo_name
43 match_dict['repo_name'] = repo_name
44 except Exception:
44 except Exception:
45 pass
45 pass
46
46
47 return is_valid_repo(repo_name, config['base_path'])
47 return is_valid_repo(repo_name, config['base_path'])
48
48
49 def check_group(environ, match_dict):
49 def check_group(environ, match_dict):
50 """
50 """
51 check for valid repository group for proper 404 handling
51 check for valid repository group for proper 404 handling
52
52
53 :param environ:
53 :param environ:
54 :param match_dict:
54 :param match_dict:
55 """
55 """
56 repos_group_name = match_dict.get('group_name')
56 repos_group_name = match_dict.get('group_name')
57 return is_valid_repos_group(repos_group_name, config['base_path'])
57 return is_valid_repos_group(repos_group_name, config['base_path'])
58
58
59 def check_group_skip_path(environ, match_dict):
59 def check_group_skip_path(environ, match_dict):
60 """
60 """
61 check for valid repository group for proper 404 handling, but skips
61 check for valid repository group for proper 404 handling, but skips
62 verification of existing path
62 verification of existing path
63
63
64 :param environ:
64 :param environ:
65 :param match_dict:
65 :param match_dict:
66 """
66 """
67 repos_group_name = match_dict.get('group_name')
67 repos_group_name = match_dict.get('group_name')
68 return is_valid_repos_group(repos_group_name, config['base_path'],
68 return is_valid_repos_group(repos_group_name, config['base_path'],
69 skip_path_check=True)
69 skip_path_check=True)
70
70
71 def check_user_group(environ, match_dict):
71 def check_user_group(environ, match_dict):
72 """
72 """
73 check for valid user group for proper 404 handling
73 check for valid user group for proper 404 handling
74
74
75 :param environ:
75 :param environ:
76 :param match_dict:
76 :param match_dict:
77 """
77 """
78 return True
78 return True
79
79
80 def check_int(environ, match_dict):
80 def check_int(environ, match_dict):
81 return match_dict.get('id').isdigit()
81 return match_dict.get('id').isdigit()
82
82
83 # The ErrorController route (handles 404/500 error pages); it should
83 # The ErrorController route (handles 404/500 error pages); it should
84 # likely stay at the top, ensuring it can always be resolved
84 # likely stay at the top, ensuring it can always be resolved
85 rmap.connect('/error/{action}', controller='error')
85 rmap.connect('/error/{action}', controller='error')
86 rmap.connect('/error/{action}/{id}', controller='error')
86 rmap.connect('/error/{action}/{id}', controller='error')
87
87
88 #==========================================================================
88 #==========================================================================
89 # CUSTOM ROUTES HERE
89 # CUSTOM ROUTES HERE
90 #==========================================================================
90 #==========================================================================
91
91
92 #MAIN PAGE
92 #MAIN PAGE
93 rmap.connect('home', '/', controller='home', action='index')
93 rmap.connect('home', '/', controller='home', action='index')
94 rmap.connect('repo_switcher', '/repos', controller='home',
94 rmap.connect('repo_switcher', '/repos', controller='home',
95 action='repo_switcher')
95 action='repo_switcher')
96 rmap.connect('branch_tag_switcher', '/branches-tags/{repo_name:.*?}',
96 rmap.connect('branch_tag_switcher', '/branches-tags/{repo_name:.*?}',
97 controller='home', action='branch_tag_switcher')
97 controller='home', action='branch_tag_switcher')
98 rmap.connect('bugtracker',
98 rmap.connect('bugtracker',
99 "http://bitbucket.org/marcinkuzminski/rhodecode/issues",
99 "http://bitbucket.org/marcinkuzminski/rhodecode/issues",
100 _static=True)
100 _static=True)
101 rmap.connect('rst_help',
101 rmap.connect('rst_help',
102 "http://docutils.sourceforge.net/docs/user/rst/quickref.html",
102 "http://docutils.sourceforge.net/docs/user/rst/quickref.html",
103 _static=True)
103 _static=True)
104 rmap.connect('rhodecode_official', "http://rhodecode.org", _static=True)
104 rmap.connect('rhodecode_official', "http://rhodecode.org", _static=True)
105
105
106 #ADMIN REPOSITORY REST ROUTES
106 #ADMIN REPOSITORY REST ROUTES
107 with rmap.submapper(path_prefix=ADMIN_PREFIX,
107 with rmap.submapper(path_prefix=ADMIN_PREFIX,
108 controller='admin/repos') as m:
108 controller='admin/repos') as m:
109 m.connect("repos", "/repos",
109 m.connect("repos", "/repos",
110 action="create", conditions=dict(method=["POST"]))
110 action="create", conditions=dict(method=["POST"]))
111 m.connect("repos", "/repos",
111 m.connect("repos", "/repos",
112 action="index", conditions=dict(method=["GET"]))
112 action="index", conditions=dict(method=["GET"]))
113 m.connect("formatted_repos", "/repos.{format}",
113 m.connect("formatted_repos", "/repos.{format}",
114 action="index",
114 action="index",
115 conditions=dict(method=["GET"]))
115 conditions=dict(method=["GET"]))
116 m.connect("new_repo", "/create_repository",
116 m.connect("new_repo", "/create_repository",
117 action="create_repository", conditions=dict(method=["GET"]))
117 action="create_repository", conditions=dict(method=["GET"]))
118 m.connect("/repos/{repo_name:.*?}",
118 m.connect("/repos/{repo_name:.*?}",
119 action="update", conditions=dict(method=["PUT"],
119 action="update", conditions=dict(method=["PUT"],
120 function=check_repo))
120 function=check_repo))
121 m.connect("/repos/{repo_name:.*?}",
121 m.connect("/repos/{repo_name:.*?}",
122 action="delete", conditions=dict(method=["DELETE"],
122 action="delete", conditions=dict(method=["DELETE"],
123 function=check_repo))
123 function=check_repo))
124 m.connect("formatted_edit_repo", "/repos/{repo_name:.*?}.{format}/edit",
124 m.connect("formatted_edit_repo", "/repos/{repo_name:.*?}.{format}/edit",
125 action="edit", conditions=dict(method=["GET"],
125 action="edit", conditions=dict(method=["GET"],
126 function=check_repo))
126 function=check_repo))
127 m.connect("repo", "/repos/{repo_name:.*?}",
127 m.connect("repo", "/repos/{repo_name:.*?}",
128 action="show", conditions=dict(method=["GET"],
128 action="show", conditions=dict(method=["GET"],
129 function=check_repo))
129 function=check_repo))
130 m.connect("formatted_repo", "/repos/{repo_name:.*?}.{format}",
130 m.connect("formatted_repo", "/repos/{repo_name:.*?}.{format}",
131 action="show", conditions=dict(method=["GET"],
131 action="show", conditions=dict(method=["GET"],
132 function=check_repo))
132 function=check_repo))
133 #add repo perm member
133 #add repo perm member
134 m.connect('set_repo_perm_member',
134 m.connect('set_repo_perm_member',
135 "/repos/{repo_name:.*?}/grant_perm",
135 "/repos/{repo_name:.*?}/grant_perm",
136 action="set_repo_perm_member",
136 action="set_repo_perm_member",
137 conditions=dict(method=["POST"], function=check_repo))
137 conditions=dict(method=["POST"], function=check_repo))
138
138
139 #ajax delete repo perm user
139 #ajax delete repo perm user
140 m.connect('delete_repo_perm_member',
140 m.connect('delete_repo_perm_member',
141 "/repos/{repo_name:.*?}/revoke_perm",
141 "/repos/{repo_name:.*?}/revoke_perm",
142 action="delete_repo_perm_member",
142 action="delete_repo_perm_member",
143 conditions=dict(method=["DELETE"], function=check_repo))
143 conditions=dict(method=["DELETE"], function=check_repo))
144
144
145 #settings actions
145 #settings actions
146 m.connect('repo_stats', "/repos_stats/{repo_name:.*?}",
146 m.connect('repo_stats', "/repos_stats/{repo_name:.*?}",
147 action="repo_stats", conditions=dict(method=["DELETE"],
147 action="repo_stats", conditions=dict(method=["DELETE"],
148 function=check_repo))
148 function=check_repo))
149 m.connect('repo_cache', "/repos_cache/{repo_name:.*?}",
149 m.connect('repo_cache', "/repos_cache/{repo_name:.*?}",
150 action="repo_cache", conditions=dict(method=["DELETE"],
150 action="repo_cache", conditions=dict(method=["DELETE"],
151 function=check_repo))
151 function=check_repo))
152 m.connect('repo_public_journal', "/repos_public_journal/{repo_name:.*?}",
152 m.connect('repo_public_journal', "/repos_public_journal/{repo_name:.*?}",
153 action="repo_public_journal", conditions=dict(method=["PUT"],
153 action="repo_public_journal", conditions=dict(method=["PUT"],
154 function=check_repo))
154 function=check_repo))
155 m.connect('repo_pull', "/repo_pull/{repo_name:.*?}",
155 m.connect('repo_pull', "/repo_pull/{repo_name:.*?}",
156 action="repo_pull", conditions=dict(method=["PUT"],
156 action="repo_pull", conditions=dict(method=["PUT"],
157 function=check_repo))
157 function=check_repo))
158 m.connect('repo_as_fork', "/repo_as_fork/{repo_name:.*?}",
158 m.connect('repo_as_fork', "/repo_as_fork/{repo_name:.*?}",
159 action="repo_as_fork", conditions=dict(method=["PUT"],
159 action="repo_as_fork", conditions=dict(method=["PUT"],
160 function=check_repo))
160 function=check_repo))
161 m.connect('repo_locking', "/repo_locking/{repo_name:.*?}",
161 m.connect('repo_locking', "/repo_locking/{repo_name:.*?}",
162 action="repo_locking", conditions=dict(method=["PUT"],
162 action="repo_locking", conditions=dict(method=["PUT"],
163 function=check_repo))
163 function=check_repo))
164 m.connect('toggle_locking', "/locking_toggle/{repo_name:.*?}",
164 m.connect('toggle_locking', "/locking_toggle/{repo_name:.*?}",
165 action="toggle_locking", conditions=dict(method=["GET"],
165 action="toggle_locking", conditions=dict(method=["GET"],
166 function=check_repo))
166 function=check_repo))
167
167
168 #repo fields
168 #repo fields
169 m.connect('create_repo_fields', "/repo_fields/{repo_name:.*?}/new",
169 m.connect('create_repo_fields', "/repo_fields/{repo_name:.*?}/new",
170 action="create_repo_field", conditions=dict(method=["PUT"],
170 action="create_repo_field", conditions=dict(method=["PUT"],
171 function=check_repo))
171 function=check_repo))
172
172
173 m.connect('delete_repo_fields', "/repo_fields/{repo_name:.*?}/{field_id}",
173 m.connect('delete_repo_fields', "/repo_fields/{repo_name:.*?}/{field_id}",
174 action="delete_repo_field", conditions=dict(method=["DELETE"],
174 action="delete_repo_field", conditions=dict(method=["DELETE"],
175 function=check_repo))
175 function=check_repo))
176
176
177 with rmap.submapper(path_prefix=ADMIN_PREFIX,
177 with rmap.submapper(path_prefix=ADMIN_PREFIX,
178 controller='admin/repos_groups') as m:
178 controller='admin/repos_groups') as m:
179 m.connect("repos_groups", "/repos_groups",
179 m.connect("repos_groups", "/repos_groups",
180 action="create", conditions=dict(method=["POST"]))
180 action="create", conditions=dict(method=["POST"]))
181 m.connect("repos_groups", "/repos_groups",
181 m.connect("repos_groups", "/repos_groups",
182 action="index", conditions=dict(method=["GET"]))
182 action="index", conditions=dict(method=["GET"]))
183 m.connect("formatted_repos_groups", "/repos_groups.{format}",
183 m.connect("formatted_repos_groups", "/repos_groups.{format}",
184 action="index", conditions=dict(method=["GET"]))
184 action="index", conditions=dict(method=["GET"]))
185 m.connect("new_repos_group", "/repos_groups/new",
185 m.connect("new_repos_group", "/repos_groups/new",
186 action="new", conditions=dict(method=["GET"]))
186 action="new", conditions=dict(method=["GET"]))
187 m.connect("formatted_new_repos_group", "/repos_groups/new.{format}",
187 m.connect("formatted_new_repos_group", "/repos_groups/new.{format}",
188 action="new", conditions=dict(method=["GET"]))
188 action="new", conditions=dict(method=["GET"]))
189 m.connect("update_repos_group", "/repos_groups/{group_name:.*?}",
189 m.connect("update_repos_group", "/repos_groups/{group_name:.*?}",
190 action="update", conditions=dict(method=["PUT"],
190 action="update", conditions=dict(method=["PUT"],
191 function=check_group))
191 function=check_group))
192 #add repo group perm member
192 #add repo group perm member
193 m.connect('set_repo_group_perm_member',
193 m.connect('set_repo_group_perm_member',
194 "/repos_groups/{group_name:.*?}/grant_perm",
194 "/repos_groups/{group_name:.*?}/grant_perm",
195 action="set_repo_group_perm_member",
195 action="set_repo_group_perm_member",
196 conditions=dict(method=["POST"], function=check_group))
196 conditions=dict(method=["POST"], function=check_group))
197
197
198 #ajax delete repo group perm
198 #ajax delete repo group perm
199 m.connect('delete_repo_group_perm_member',
199 m.connect('delete_repo_group_perm_member',
200 "/repos_groups/{group_name:.*?}/revoke_perm",
200 "/repos_groups/{group_name:.*?}/revoke_perm",
201 action="delete_repo_group_perm_member",
201 action="delete_repo_group_perm_member",
202 conditions=dict(method=["DELETE"], function=check_group))
202 conditions=dict(method=["DELETE"], function=check_group))
203
203
204 m.connect("delete_repos_group", "/repos_groups/{group_name:.*?}",
204 m.connect("delete_repos_group", "/repos_groups/{group_name:.*?}",
205 action="delete", conditions=dict(method=["DELETE"],
205 action="delete", conditions=dict(method=["DELETE"],
206 function=check_group_skip_path))
206 function=check_group_skip_path))
207 m.connect("edit_repos_group", "/repos_groups/{group_name:.*?}/edit",
207 m.connect("edit_repos_group", "/repos_groups/{group_name:.*?}/edit",
208 action="edit", conditions=dict(method=["GET"],
208 action="edit", conditions=dict(method=["GET"],
209 function=check_group))
209 function=check_group))
210 m.connect("formatted_edit_repos_group",
210 m.connect("formatted_edit_repos_group",
211 "/repos_groups/{group_name:.*?}.{format}/edit",
211 "/repos_groups/{group_name:.*?}.{format}/edit",
212 action="edit", conditions=dict(method=["GET"],
212 action="edit", conditions=dict(method=["GET"],
213 function=check_group))
213 function=check_group))
214 m.connect("repos_group", "/repos_groups/{group_name:.*?}",
214 m.connect("repos_group", "/repos_groups/{group_name:.*?}",
215 action="show", conditions=dict(method=["GET"],
215 action="show", conditions=dict(method=["GET"],
216 function=check_group))
216 function=check_group))
217 m.connect("formatted_repos_group", "/repos_groups/{group_name:.*?}.{format}",
217 m.connect("formatted_repos_group", "/repos_groups/{group_name:.*?}.{format}",
218 action="show", conditions=dict(method=["GET"],
218 action="show", conditions=dict(method=["GET"],
219 function=check_group))
219 function=check_group))
220
220
221 #ADMIN USER REST ROUTES
221 #ADMIN USER REST ROUTES
222 with rmap.submapper(path_prefix=ADMIN_PREFIX,
222 with rmap.submapper(path_prefix=ADMIN_PREFIX,
223 controller='admin/users') as m:
223 controller='admin/users') as m:
224 m.connect("users", "/users",
224 m.connect("users", "/users",
225 action="create", conditions=dict(method=["POST"]))
225 action="create", conditions=dict(method=["POST"]))
226 m.connect("users", "/users",
226 m.connect("users", "/users",
227 action="index", conditions=dict(method=["GET"]))
227 action="index", conditions=dict(method=["GET"]))
228 m.connect("formatted_users", "/users.{format}",
228 m.connect("formatted_users", "/users.{format}",
229 action="index", conditions=dict(method=["GET"]))
229 action="index", conditions=dict(method=["GET"]))
230 m.connect("new_user", "/users/new",
230 m.connect("new_user", "/users/new",
231 action="new", conditions=dict(method=["GET"]))
231 action="new", conditions=dict(method=["GET"]))
232 m.connect("formatted_new_user", "/users/new.{format}",
232 m.connect("formatted_new_user", "/users/new.{format}",
233 action="new", conditions=dict(method=["GET"]))
233 action="new", conditions=dict(method=["GET"]))
234 m.connect("update_user", "/users/{id}",
234 m.connect("update_user", "/users/{id}",
235 action="update", conditions=dict(method=["PUT"]))
235 action="update", conditions=dict(method=["PUT"]))
236 m.connect("delete_user", "/users/{id}",
236 m.connect("delete_user", "/users/{id}",
237 action="delete", conditions=dict(method=["DELETE"]))
237 action="delete", conditions=dict(method=["DELETE"]))
238 m.connect("edit_user", "/users/{id}/edit",
238 m.connect("edit_user", "/users/{id}/edit",
239 action="edit", conditions=dict(method=["GET"]))
239 action="edit", conditions=dict(method=["GET"]))
240 m.connect("formatted_edit_user",
240 m.connect("formatted_edit_user",
241 "/users/{id}.{format}/edit",
241 "/users/{id}.{format}/edit",
242 action="edit", conditions=dict(method=["GET"]))
242 action="edit", conditions=dict(method=["GET"]))
243 m.connect("user", "/users/{id}",
243 m.connect("user", "/users/{id}",
244 action="show", conditions=dict(method=["GET"]))
244 action="show", conditions=dict(method=["GET"]))
245 m.connect("formatted_user", "/users/{id}.{format}",
245 m.connect("formatted_user", "/users/{id}.{format}",
246 action="show", conditions=dict(method=["GET"]))
246 action="show", conditions=dict(method=["GET"]))
247
247
248 #EXTRAS USER ROUTES
248 #EXTRAS USER ROUTES
249 m.connect("user_perm", "/users_perm/{id}",
249 m.connect("user_perm", "/users_perm/{id}",
250 action="update_perm", conditions=dict(method=["PUT"]))
250 action="update_perm", conditions=dict(method=["PUT"]))
251 m.connect("user_emails", "/users_emails/{id}",
251 m.connect("user_emails", "/users_emails/{id}",
252 action="add_email", conditions=dict(method=["PUT"]))
252 action="add_email", conditions=dict(method=["PUT"]))
253 m.connect("user_emails_delete", "/users_emails/{id}",
253 m.connect("user_emails_delete", "/users_emails/{id}",
254 action="delete_email", conditions=dict(method=["DELETE"]))
254 action="delete_email", conditions=dict(method=["DELETE"]))
255 m.connect("user_ips", "/users_ips/{id}",
255 m.connect("user_ips", "/users_ips/{id}",
256 action="add_ip", conditions=dict(method=["PUT"]))
256 action="add_ip", conditions=dict(method=["PUT"]))
257 m.connect("user_ips_delete", "/users_ips/{id}",
257 m.connect("user_ips_delete", "/users_ips/{id}",
258 action="delete_ip", conditions=dict(method=["DELETE"]))
258 action="delete_ip", conditions=dict(method=["DELETE"]))
259
259
260 #ADMIN USER GROUPS REST ROUTES
260 #ADMIN USER GROUPS REST ROUTES
261 with rmap.submapper(path_prefix=ADMIN_PREFIX,
261 with rmap.submapper(path_prefix=ADMIN_PREFIX,
262 controller='admin/users_groups') as m:
262 controller='admin/users_groups') as m:
263 m.connect("users_groups", "/users_groups",
263 m.connect("users_groups", "/users_groups",
264 action="create", conditions=dict(method=["POST"]))
264 action="create", conditions=dict(method=["POST"]))
265 m.connect("users_groups", "/users_groups",
265 m.connect("users_groups", "/users_groups",
266 action="index", conditions=dict(method=["GET"]))
266 action="index", conditions=dict(method=["GET"]))
267 m.connect("formatted_users_groups", "/users_groups.{format}",
267 m.connect("formatted_users_groups", "/users_groups.{format}",
268 action="index", conditions=dict(method=["GET"]))
268 action="index", conditions=dict(method=["GET"]))
269 m.connect("new_users_group", "/users_groups/new",
269 m.connect("new_users_group", "/users_groups/new",
270 action="new", conditions=dict(method=["GET"]))
270 action="new", conditions=dict(method=["GET"]))
271 m.connect("formatted_new_users_group", "/users_groups/new.{format}",
271 m.connect("formatted_new_users_group", "/users_groups/new.{format}",
272 action="new", conditions=dict(method=["GET"]))
272 action="new", conditions=dict(method=["GET"]))
273 m.connect("update_users_group", "/users_groups/{id}",
273 m.connect("update_users_group", "/users_groups/{id}",
274 action="update", conditions=dict(method=["PUT"]))
274 action="update", conditions=dict(method=["PUT"]))
275 m.connect("delete_users_group", "/users_groups/{id}",
275 m.connect("delete_users_group", "/users_groups/{id}",
276 action="delete", conditions=dict(method=["DELETE"]))
276 action="delete", conditions=dict(method=["DELETE"]))
277 m.connect("edit_users_group", "/users_groups/{id}/edit",
277 m.connect("edit_users_group", "/users_groups/{id}/edit",
278 action="edit", conditions=dict(method=["GET"]),
278 action="edit", conditions=dict(method=["GET"]),
279 function=check_user_group)
279 function=check_user_group)
280 m.connect("formatted_edit_users_group",
280 m.connect("formatted_edit_users_group",
281 "/users_groups/{id}.{format}/edit",
281 "/users_groups/{id}.{format}/edit",
282 action="edit", conditions=dict(method=["GET"]))
282 action="edit", conditions=dict(method=["GET"]))
283 m.connect("users_group", "/users_groups/{id}",
283 m.connect("users_group", "/users_groups/{id}",
284 action="show", conditions=dict(method=["GET"]))
284 action="show", conditions=dict(method=["GET"]))
285 m.connect("formatted_users_group", "/users_groups/{id}.{format}",
285 m.connect("formatted_users_group", "/users_groups/{id}.{format}",
286 action="show", conditions=dict(method=["GET"]))
286 action="show", conditions=dict(method=["GET"]))
287
287
288 #EXTRAS USER ROUTES
288 #EXTRAS USER ROUTES
289 # update
289 # update
290 m.connect("users_group_perm", "/users_groups/{id}/update_global_perm",
290 m.connect("users_group_perm", "/users_groups/{id}/update_global_perm",
291 action="update_perm", conditions=dict(method=["PUT"]))
291 action="update_perm", conditions=dict(method=["PUT"]))
292
292
293 #add user group perm member
293 #add user group perm member
294 m.connect('set_user_group_perm_member', "/users_groups/{id}/grant_perm",
294 m.connect('set_user_group_perm_member', "/users_groups/{id}/grant_perm",
295 action="set_user_group_perm_member",
295 action="set_user_group_perm_member",
296 conditions=dict(method=["POST"]))
296 conditions=dict(method=["POST"]))
297
297
298 #ajax delete user group perm
298 #ajax delete user group perm
299 m.connect('delete_user_group_perm_member', "/users_groups/{id}/revoke_perm",
299 m.connect('delete_user_group_perm_member', "/users_groups/{id}/revoke_perm",
300 action="delete_user_group_perm_member",
300 action="delete_user_group_perm_member",
301 conditions=dict(method=["DELETE"]))
301 conditions=dict(method=["DELETE"]))
302
302
303 #ADMIN GROUP REST ROUTES
303 #ADMIN GROUP REST ROUTES
304 rmap.resource('group', 'groups',
304 rmap.resource('group', 'groups',
305 controller='admin/groups', path_prefix=ADMIN_PREFIX)
305 controller='admin/groups', path_prefix=ADMIN_PREFIX)
306
306
307 #ADMIN PERMISSIONS REST ROUTES
307 #ADMIN PERMISSIONS REST ROUTES
308 rmap.resource('permission', 'permissions',
308 rmap.resource('permission', 'permissions',
309 controller='admin/permissions', path_prefix=ADMIN_PREFIX)
309 controller='admin/permissions', path_prefix=ADMIN_PREFIX)
310
310
311 #ADMIN DEFAULTS REST ROUTES
311 #ADMIN DEFAULTS REST ROUTES
312 rmap.resource('default', 'defaults',
312 rmap.resource('default', 'defaults',
313 controller='admin/defaults', path_prefix=ADMIN_PREFIX)
313 controller='admin/defaults', path_prefix=ADMIN_PREFIX)
314
314
315 ##ADMIN LDAP SETTINGS
315 ##ADMIN LDAP SETTINGS
316 rmap.connect('ldap_settings', '%s/ldap' % ADMIN_PREFIX,
316 rmap.connect('ldap_settings', '%s/ldap' % ADMIN_PREFIX,
317 controller='admin/ldap_settings', action='ldap_settings',
317 controller='admin/ldap_settings', action='ldap_settings',
318 conditions=dict(method=["POST"]))
318 conditions=dict(method=["POST"]))
319
319
320 rmap.connect('ldap_home', '%s/ldap' % ADMIN_PREFIX,
320 rmap.connect('ldap_home', '%s/ldap' % ADMIN_PREFIX,
321 controller='admin/ldap_settings')
321 controller='admin/ldap_settings')
322
322
323 #ADMIN SETTINGS REST ROUTES
323 #ADMIN SETTINGS REST ROUTES
324 with rmap.submapper(path_prefix=ADMIN_PREFIX,
324 with rmap.submapper(path_prefix=ADMIN_PREFIX,
325 controller='admin/settings') as m:
325 controller='admin/settings') as m:
326 m.connect("admin_settings", "/settings",
326 m.connect("admin_settings", "/settings",
327 action="create", conditions=dict(method=["POST"]))
327 action="create", conditions=dict(method=["POST"]))
328 m.connect("admin_settings", "/settings",
328 m.connect("admin_settings", "/settings",
329 action="index", conditions=dict(method=["GET"]))
329 action="index", conditions=dict(method=["GET"]))
330 m.connect("formatted_admin_settings", "/settings.{format}",
330 m.connect("formatted_admin_settings", "/settings.{format}",
331 action="index", conditions=dict(method=["GET"]))
331 action="index", conditions=dict(method=["GET"]))
332 m.connect("admin_new_setting", "/settings/new",
332 m.connect("admin_new_setting", "/settings/new",
333 action="new", conditions=dict(method=["GET"]))
333 action="new", conditions=dict(method=["GET"]))
334 m.connect("formatted_admin_new_setting", "/settings/new.{format}",
334 m.connect("formatted_admin_new_setting", "/settings/new.{format}",
335 action="new", conditions=dict(method=["GET"]))
335 action="new", conditions=dict(method=["GET"]))
336 m.connect("/settings/{setting_id}",
336 m.connect("/settings/{setting_id}",
337 action="update", conditions=dict(method=["PUT"]))
337 action="update", conditions=dict(method=["PUT"]))
338 m.connect("/settings/{setting_id}",
338 m.connect("/settings/{setting_id}",
339 action="delete", conditions=dict(method=["DELETE"]))
339 action="delete", conditions=dict(method=["DELETE"]))
340 m.connect("admin_edit_setting", "/settings/{setting_id}/edit",
340 m.connect("admin_edit_setting", "/settings/{setting_id}/edit",
341 action="edit", conditions=dict(method=["GET"]))
341 action="edit", conditions=dict(method=["GET"]))
342 m.connect("formatted_admin_edit_setting",
342 m.connect("formatted_admin_edit_setting",
343 "/settings/{setting_id}.{format}/edit",
343 "/settings/{setting_id}.{format}/edit",
344 action="edit", conditions=dict(method=["GET"]))
344 action="edit", conditions=dict(method=["GET"]))
345 m.connect("admin_setting", "/settings/{setting_id}",
345 m.connect("admin_setting", "/settings/{setting_id}",
346 action="show", conditions=dict(method=["GET"]))
346 action="show", conditions=dict(method=["GET"]))
347 m.connect("formatted_admin_setting", "/settings/{setting_id}.{format}",
347 m.connect("formatted_admin_setting", "/settings/{setting_id}.{format}",
348 action="show", conditions=dict(method=["GET"]))
348 action="show", conditions=dict(method=["GET"]))
349 m.connect("admin_settings_my_account", "/my_account",
349 m.connect("admin_settings_my_account", "/my_account",
350 action="my_account", conditions=dict(method=["GET"]))
350 action="my_account", conditions=dict(method=["GET"]))
351 m.connect("admin_settings_my_account_update", "/my_account_update",
351 m.connect("admin_settings_my_account_update", "/my_account_update",
352 action="my_account_update", conditions=dict(method=["PUT"]))
352 action="my_account_update", conditions=dict(method=["PUT"]))
353 m.connect("admin_settings_my_repos", "/my_account/repos",
353 m.connect("admin_settings_my_repos", "/my_account/repos",
354 action="my_account_my_repos", conditions=dict(method=["GET"]))
354 action="my_account_my_repos", conditions=dict(method=["GET"]))
355 m.connect("admin_settings_my_pullrequests", "/my_account/pull_requests",
355 m.connect("admin_settings_my_pullrequests", "/my_account/pull_requests",
356 action="my_account_my_pullrequests", conditions=dict(method=["GET"]))
356 action="my_account_my_pullrequests", conditions=dict(method=["GET"]))
357
357
358 #NOTIFICATION REST ROUTES
358 #NOTIFICATION REST ROUTES
359 with rmap.submapper(path_prefix=ADMIN_PREFIX,
359 with rmap.submapper(path_prefix=ADMIN_PREFIX,
360 controller='admin/notifications') as m:
360 controller='admin/notifications') as m:
361 m.connect("notifications", "/notifications",
361 m.connect("notifications", "/notifications",
362 action="create", conditions=dict(method=["POST"]))
362 action="create", conditions=dict(method=["POST"]))
363 m.connect("notifications", "/notifications",
363 m.connect("notifications", "/notifications",
364 action="index", conditions=dict(method=["GET"]))
364 action="index", conditions=dict(method=["GET"]))
365 m.connect("notifications_mark_all_read", "/notifications/mark_all_read",
365 m.connect("notifications_mark_all_read", "/notifications/mark_all_read",
366 action="mark_all_read", conditions=dict(method=["GET"]))
366 action="mark_all_read", conditions=dict(method=["GET"]))
367 m.connect("formatted_notifications", "/notifications.{format}",
367 m.connect("formatted_notifications", "/notifications.{format}",
368 action="index", conditions=dict(method=["GET"]))
368 action="index", conditions=dict(method=["GET"]))
369 m.connect("new_notification", "/notifications/new",
369 m.connect("new_notification", "/notifications/new",
370 action="new", conditions=dict(method=["GET"]))
370 action="new", conditions=dict(method=["GET"]))
371 m.connect("formatted_new_notification", "/notifications/new.{format}",
371 m.connect("formatted_new_notification", "/notifications/new.{format}",
372 action="new", conditions=dict(method=["GET"]))
372 action="new", conditions=dict(method=["GET"]))
373 m.connect("/notification/{notification_id}",
373 m.connect("/notification/{notification_id}",
374 action="update", conditions=dict(method=["PUT"]))
374 action="update", conditions=dict(method=["PUT"]))
375 m.connect("/notification/{notification_id}",
375 m.connect("/notification/{notification_id}",
376 action="delete", conditions=dict(method=["DELETE"]))
376 action="delete", conditions=dict(method=["DELETE"]))
377 m.connect("edit_notification", "/notification/{notification_id}/edit",
377 m.connect("edit_notification", "/notification/{notification_id}/edit",
378 action="edit", conditions=dict(method=["GET"]))
378 action="edit", conditions=dict(method=["GET"]))
379 m.connect("formatted_edit_notification",
379 m.connect("formatted_edit_notification",
380 "/notification/{notification_id}.{format}/edit",
380 "/notification/{notification_id}.{format}/edit",
381 action="edit", conditions=dict(method=["GET"]))
381 action="edit", conditions=dict(method=["GET"]))
382 m.connect("notification", "/notification/{notification_id}",
382 m.connect("notification", "/notification/{notification_id}",
383 action="show", conditions=dict(method=["GET"]))
383 action="show", conditions=dict(method=["GET"]))
384 m.connect("formatted_notification", "/notifications/{notification_id}.{format}",
384 m.connect("formatted_notification", "/notifications/{notification_id}.{format}",
385 action="show", conditions=dict(method=["GET"]))
385 action="show", conditions=dict(method=["GET"]))
386
386
387 #ADMIN MAIN PAGES
387 #ADMIN MAIN PAGES
388 with rmap.submapper(path_prefix=ADMIN_PREFIX,
388 with rmap.submapper(path_prefix=ADMIN_PREFIX,
389 controller='admin/admin') as m:
389 controller='admin/admin') as m:
390 m.connect('admin_home', '', action='index')
390 m.connect('admin_home', '', action='index')
391 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
391 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
392 action='add_repo')
392 action='add_repo')
393
393
394 #==========================================================================
394 #==========================================================================
395 # API V2
395 # API V2
396 #==========================================================================
396 #==========================================================================
397 with rmap.submapper(path_prefix=ADMIN_PREFIX,
397 with rmap.submapper(path_prefix=ADMIN_PREFIX,
398 controller='api/api') as m:
398 controller='api/api') as m:
399 m.connect('api', '/api')
399 m.connect('api', '/api')
400
400
401 #USER JOURNAL
401 #USER JOURNAL
402 rmap.connect('journal', '%s/journal' % ADMIN_PREFIX,
402 rmap.connect('journal', '%s/journal' % ADMIN_PREFIX,
403 controller='journal', action='index')
403 controller='journal', action='index')
404 rmap.connect('journal_rss', '%s/journal/rss' % ADMIN_PREFIX,
404 rmap.connect('journal_rss', '%s/journal/rss' % ADMIN_PREFIX,
405 controller='journal', action='journal_rss')
405 controller='journal', action='journal_rss')
406 rmap.connect('journal_atom', '%s/journal/atom' % ADMIN_PREFIX,
406 rmap.connect('journal_atom', '%s/journal/atom' % ADMIN_PREFIX,
407 controller='journal', action='journal_atom')
407 controller='journal', action='journal_atom')
408
408
409 rmap.connect('public_journal', '%s/public_journal' % ADMIN_PREFIX,
409 rmap.connect('public_journal', '%s/public_journal' % ADMIN_PREFIX,
410 controller='journal', action="public_journal")
410 controller='journal', action="public_journal")
411
411
412 rmap.connect('public_journal_rss', '%s/public_journal/rss' % ADMIN_PREFIX,
412 rmap.connect('public_journal_rss', '%s/public_journal/rss' % ADMIN_PREFIX,
413 controller='journal', action="public_journal_rss")
413 controller='journal', action="public_journal_rss")
414
414
415 rmap.connect('public_journal_rss_old', '%s/public_journal_rss' % ADMIN_PREFIX,
415 rmap.connect('public_journal_rss_old', '%s/public_journal_rss' % ADMIN_PREFIX,
416 controller='journal', action="public_journal_rss")
416 controller='journal', action="public_journal_rss")
417
417
418 rmap.connect('public_journal_atom',
418 rmap.connect('public_journal_atom',
419 '%s/public_journal/atom' % ADMIN_PREFIX, controller='journal',
419 '%s/public_journal/atom' % ADMIN_PREFIX, controller='journal',
420 action="public_journal_atom")
420 action="public_journal_atom")
421
421
422 rmap.connect('public_journal_atom_old',
422 rmap.connect('public_journal_atom_old',
423 '%s/public_journal_atom' % ADMIN_PREFIX, controller='journal',
423 '%s/public_journal_atom' % ADMIN_PREFIX, controller='journal',
424 action="public_journal_atom")
424 action="public_journal_atom")
425
425
426 rmap.connect('toggle_following', '%s/toggle_following' % ADMIN_PREFIX,
426 rmap.connect('toggle_following', '%s/toggle_following' % ADMIN_PREFIX,
427 controller='journal', action='toggle_following',
427 controller='journal', action='toggle_following',
428 conditions=dict(method=["POST"]))
428 conditions=dict(method=["POST"]))
429
429
430 #SEARCH
430 #SEARCH
431 rmap.connect('search', '%s/search' % ADMIN_PREFIX, controller='search',)
431 rmap.connect('search', '%s/search' % ADMIN_PREFIX, controller='search',)
432 rmap.connect('search_repo_admin', '%s/search/{repo_name:.*}' % ADMIN_PREFIX,
432 rmap.connect('search_repo_admin', '%s/search/{repo_name:.*}' % ADMIN_PREFIX,
433 controller='search',
433 controller='search',
434 conditions=dict(function=check_repo))
434 conditions=dict(function=check_repo))
435 rmap.connect('search_repo', '/{repo_name:.*?}/search',
435 rmap.connect('search_repo', '/{repo_name:.*?}/search',
436 controller='search',
436 controller='search',
437 conditions=dict(function=check_repo),
437 conditions=dict(function=check_repo),
438 )
438 )
439
439
440 #LOGIN/LOGOUT/REGISTER/SIGN IN
440 #LOGIN/LOGOUT/REGISTER/SIGN IN
441 rmap.connect('login_home', '%s/login' % ADMIN_PREFIX, controller='login')
441 rmap.connect('login_home', '%s/login' % ADMIN_PREFIX, controller='login')
442 rmap.connect('logout_home', '%s/logout' % ADMIN_PREFIX, controller='login',
442 rmap.connect('logout_home', '%s/logout' % ADMIN_PREFIX, controller='login',
443 action='logout')
443 action='logout')
444
444
445 rmap.connect('register', '%s/register' % ADMIN_PREFIX, controller='login',
445 rmap.connect('register', '%s/register' % ADMIN_PREFIX, controller='login',
446 action='register')
446 action='register')
447
447
448 rmap.connect('reset_password', '%s/password_reset' % ADMIN_PREFIX,
448 rmap.connect('reset_password', '%s/password_reset' % ADMIN_PREFIX,
449 controller='login', action='password_reset')
449 controller='login', action='password_reset')
450
450
451 rmap.connect('reset_password_confirmation',
451 rmap.connect('reset_password_confirmation',
452 '%s/password_reset_confirmation' % ADMIN_PREFIX,
452 '%s/password_reset_confirmation' % ADMIN_PREFIX,
453 controller='login', action='password_reset_confirmation')
453 controller='login', action='password_reset_confirmation')
454
454
455 #FEEDS
455 #FEEDS
456 rmap.connect('rss_feed_home', '/{repo_name:.*?}/feed/rss',
456 rmap.connect('rss_feed_home', '/{repo_name:.*?}/feed/rss',
457 controller='feed', action='rss',
457 controller='feed', action='rss',
458 conditions=dict(function=check_repo))
458 conditions=dict(function=check_repo))
459
459
460 rmap.connect('atom_feed_home', '/{repo_name:.*?}/feed/atom',
460 rmap.connect('atom_feed_home', '/{repo_name:.*?}/feed/atom',
461 controller='feed', action='atom',
461 controller='feed', action='atom',
462 conditions=dict(function=check_repo))
462 conditions=dict(function=check_repo))
463
463
464 #==========================================================================
464 #==========================================================================
465 # REPOSITORY ROUTES
465 # REPOSITORY ROUTES
466 #==========================================================================
466 #==========================================================================
467 rmap.connect('summary_home', '/{repo_name:.*?}',
467 rmap.connect('summary_home', '/{repo_name:.*?}',
468 controller='summary',
468 controller='summary',
469 conditions=dict(function=check_repo))
469 conditions=dict(function=check_repo))
470
470
471 rmap.connect('repo_size', '/{repo_name:.*?}/repo_size',
471 rmap.connect('repo_size', '/{repo_name:.*?}/repo_size',
472 controller='summary', action='repo_size',
472 controller='summary', action='repo_size',
473 conditions=dict(function=check_repo))
473 conditions=dict(function=check_repo))
474
474
475 rmap.connect('repos_group_home', '/{group_name:.*}',
475 rmap.connect('repos_group_home', '/{group_name:.*}',
476 controller='admin/repos_groups', action="show_by_name",
476 controller='admin/repos_groups', action="show_by_name",
477 conditions=dict(function=check_group))
477 conditions=dict(function=check_group))
478
478
479 rmap.connect('changeset_home', '/{repo_name:.*?}/changeset/{revision}',
479 rmap.connect('changeset_home', '/{repo_name:.*?}/changeset/{revision}',
480 controller='changeset', revision='tip',
480 controller='changeset', revision='tip',
481 conditions=dict(function=check_repo))
481 conditions=dict(function=check_repo))
482
482
483 # no longer user, but kept for routes to work
483 # no longer user, but kept for routes to work
484 rmap.connect("_edit_repo", "/{repo_name:.*?}/edit",
484 rmap.connect("_edit_repo", "/{repo_name:.*?}/edit",
485 controller='admin/repos', action="edit",
485 controller='admin/repos', action="edit",
486 conditions=dict(method=["GET"], function=check_repo)
486 conditions=dict(method=["GET"], function=check_repo)
487 )
487 )
488
488
489 rmap.connect("edit_repo", "/{repo_name:.*?}/settings",
489 rmap.connect("edit_repo", "/{repo_name:.*?}/settings",
490 controller='admin/repos', action="edit",
490 controller='admin/repos', action="edit",
491 conditions=dict(method=["GET"], function=check_repo)
491 conditions=dict(method=["GET"], function=check_repo)
492 )
492 )
493
493
494 #still working url for backward compat.
494 #still working url for backward compat.
495 rmap.connect('raw_changeset_home_depraced',
495 rmap.connect('raw_changeset_home_depraced',
496 '/{repo_name:.*?}/raw-changeset/{revision}',
496 '/{repo_name:.*?}/raw-changeset/{revision}',
497 controller='changeset', action='changeset_raw',
497 controller='changeset', action='changeset_raw',
498 revision='tip', conditions=dict(function=check_repo))
498 revision='tip', conditions=dict(function=check_repo))
499
499
500 ## new URLs
500 ## new URLs
501 rmap.connect('changeset_raw_home',
501 rmap.connect('changeset_raw_home',
502 '/{repo_name:.*?}/changeset-diff/{revision}',
502 '/{repo_name:.*?}/changeset-diff/{revision}',
503 controller='changeset', action='changeset_raw',
503 controller='changeset', action='changeset_raw',
504 revision='tip', conditions=dict(function=check_repo))
504 revision='tip', conditions=dict(function=check_repo))
505
505
506 rmap.connect('changeset_patch_home',
506 rmap.connect('changeset_patch_home',
507 '/{repo_name:.*?}/changeset-patch/{revision}',
507 '/{repo_name:.*?}/changeset-patch/{revision}',
508 controller='changeset', action='changeset_patch',
508 controller='changeset', action='changeset_patch',
509 revision='tip', conditions=dict(function=check_repo))
509 revision='tip', conditions=dict(function=check_repo))
510
510
511 rmap.connect('changeset_download_home',
511 rmap.connect('changeset_download_home',
512 '/{repo_name:.*?}/changeset-download/{revision}',
512 '/{repo_name:.*?}/changeset-download/{revision}',
513 controller='changeset', action='changeset_download',
513 controller='changeset', action='changeset_download',
514 revision='tip', conditions=dict(function=check_repo))
514 revision='tip', conditions=dict(function=check_repo))
515
515
516 rmap.connect('changeset_comment',
516 rmap.connect('changeset_comment',
517 '/{repo_name:.*?}/changeset/{revision}/comment',
517 '/{repo_name:.*?}/changeset/{revision}/comment',
518 controller='changeset', revision='tip', action='comment',
518 controller='changeset', revision='tip', action='comment',
519 conditions=dict(function=check_repo))
519 conditions=dict(function=check_repo))
520
520
521 rmap.connect('changeset_comment_preview',
521 rmap.connect('changeset_comment_preview',
522 '/{repo_name:.*?}/changeset/comment/preview',
522 '/{repo_name:.*?}/changeset/comment/preview',
523 controller='changeset', action='preview_comment',
523 controller='changeset', action='preview_comment',
524 conditions=dict(function=check_repo, method=["POST"]))
524 conditions=dict(function=check_repo, method=["POST"]))
525
525
526 rmap.connect('changeset_comment_delete',
526 rmap.connect('changeset_comment_delete',
527 '/{repo_name:.*?}/changeset/comment/{comment_id}/delete',
527 '/{repo_name:.*?}/changeset/comment/{comment_id}/delete',
528 controller='changeset', action='delete_comment',
528 controller='changeset', action='delete_comment',
529 conditions=dict(function=check_repo, method=["DELETE"]))
529 conditions=dict(function=check_repo, method=["DELETE"]))
530
530
531 rmap.connect('changeset_info', '/changeset_info/{repo_name:.*?}/{revision}',
531 rmap.connect('changeset_info', '/changeset_info/{repo_name:.*?}/{revision}',
532 controller='changeset', action='changeset_info')
532 controller='changeset', action='changeset_info')
533
533
534 rmap.connect('compare_url',
534 rmap.connect('compare_url',
535 '/{repo_name:.*?}/compare/{org_ref_type}@{org_ref:.*?}...{other_ref_type}@{other_ref:.*?}',
535 '/{repo_name:.*?}/compare/{org_ref_type}@{org_ref:.*?}...{other_ref_type}@{other_ref:.*?}',
536 controller='compare', action='index',
536 controller='compare', action='index',
537 conditions=dict(function=check_repo),
537 conditions=dict(function=check_repo),
538 requirements=dict(
538 requirements=dict(
539 org_ref_type='(branch|book|tag|rev|__other_ref_type__)',
539 org_ref_type='(branch|book|tag|rev|__other_ref_type__)',
540 other_ref_type='(branch|book|tag|rev|__org_ref_type__)')
540 other_ref_type='(branch|book|tag|rev|__org_ref_type__)')
541 )
541 )
542
542
543 rmap.connect('pullrequest_home',
543 rmap.connect('pullrequest_home',
544 '/{repo_name:.*?}/pull-request/new', controller='pullrequests',
544 '/{repo_name:.*?}/pull-request/new', controller='pullrequests',
545 action='index', conditions=dict(function=check_repo,
545 action='index', conditions=dict(function=check_repo,
546 method=["GET"]))
546 method=["GET"]))
547
547
548 rmap.connect('pullrequest',
548 rmap.connect('pullrequest',
549 '/{repo_name:.*?}/pull-request/new', controller='pullrequests',
549 '/{repo_name:.*?}/pull-request/new', controller='pullrequests',
550 action='create', conditions=dict(function=check_repo,
550 action='create', conditions=dict(function=check_repo,
551 method=["POST"]))
551 method=["POST"]))
552
552
553 rmap.connect('pullrequest_show',
553 rmap.connect('pullrequest_show',
554 '/{repo_name:.*?}/pull-request/{pull_request_id}',
554 '/{repo_name:.*?}/pull-request/{pull_request_id}',
555 controller='pullrequests',
555 controller='pullrequests',
556 action='show', conditions=dict(function=check_repo,
556 action='show', conditions=dict(function=check_repo,
557 method=["GET"]))
557 method=["GET"]))
558 rmap.connect('pullrequest_update',
558 rmap.connect('pullrequest_update',
559 '/{repo_name:.*?}/pull-request/{pull_request_id}',
559 '/{repo_name:.*?}/pull-request/{pull_request_id}',
560 controller='pullrequests',
560 controller='pullrequests',
561 action='update', conditions=dict(function=check_repo,
561 action='update', conditions=dict(function=check_repo,
562 method=["PUT"]))
562 method=["PUT"]))
563 rmap.connect('pullrequest_delete',
563 rmap.connect('pullrequest_delete',
564 '/{repo_name:.*?}/pull-request/{pull_request_id}',
564 '/{repo_name:.*?}/pull-request/{pull_request_id}',
565 controller='pullrequests',
565 controller='pullrequests',
566 action='delete', conditions=dict(function=check_repo,
566 action='delete', conditions=dict(function=check_repo,
567 method=["DELETE"]))
567 method=["DELETE"]))
568
568
569 rmap.connect('pullrequest_show_all',
569 rmap.connect('pullrequest_show_all',
570 '/{repo_name:.*?}/pull-request',
570 '/{repo_name:.*?}/pull-request',
571 controller='pullrequests',
571 controller='pullrequests',
572 action='show_all', conditions=dict(function=check_repo,
572 action='show_all', conditions=dict(function=check_repo,
573 method=["GET"]))
573 method=["GET"]))
574
574
575 rmap.connect('pullrequest_comment',
575 rmap.connect('pullrequest_comment',
576 '/{repo_name:.*?}/pull-request-comment/{pull_request_id}',
576 '/{repo_name:.*?}/pull-request-comment/{pull_request_id}',
577 controller='pullrequests',
577 controller='pullrequests',
578 action='comment', conditions=dict(function=check_repo,
578 action='comment', conditions=dict(function=check_repo,
579 method=["POST"]))
579 method=["POST"]))
580
580
581 rmap.connect('pullrequest_comment_delete',
581 rmap.connect('pullrequest_comment_delete',
582 '/{repo_name:.*?}/pull-request-comment/{comment_id}/delete',
582 '/{repo_name:.*?}/pull-request-comment/{comment_id}/delete',
583 controller='pullrequests', action='delete_comment',
583 controller='pullrequests', action='delete_comment',
584 conditions=dict(function=check_repo, method=["DELETE"]))
584 conditions=dict(function=check_repo, method=["DELETE"]))
585
585
586 rmap.connect('summary_home_summary', '/{repo_name:.*?}/summary',
586 rmap.connect('summary_home_summary', '/{repo_name:.*?}/summary',
587 controller='summary', conditions=dict(function=check_repo))
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 rmap.connect('branches_home', '/{repo_name:.*?}/branches',
589 rmap.connect('branches_home', '/{repo_name:.*?}/branches',
593 controller='branches', conditions=dict(function=check_repo))
590 controller='branches', conditions=dict(function=check_repo))
594
591
595 rmap.connect('tags_home', '/{repo_name:.*?}/tags',
592 rmap.connect('tags_home', '/{repo_name:.*?}/tags',
596 controller='tags', conditions=dict(function=check_repo))
593 controller='tags', conditions=dict(function=check_repo))
597
594
598 rmap.connect('bookmarks_home', '/{repo_name:.*?}/bookmarks',
595 rmap.connect('bookmarks_home', '/{repo_name:.*?}/bookmarks',
599 controller='bookmarks', conditions=dict(function=check_repo))
596 controller='bookmarks', conditions=dict(function=check_repo))
600
597
601 rmap.connect('changelog_home', '/{repo_name:.*?}/changelog',
598 rmap.connect('changelog_home', '/{repo_name:.*?}/changelog',
602 controller='changelog', conditions=dict(function=check_repo))
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 rmap.connect('changelog_file_home', '/{repo_name:.*?}/changelog/{revision}/{f_path:.*}',
605 rmap.connect('changelog_file_home', '/{repo_name:.*?}/changelog/{revision}/{f_path:.*}',
605 controller='changelog', f_path=None,
606 controller='changelog', f_path=None,
606 conditions=dict(function=check_repo))
607 conditions=dict(function=check_repo))
607
608
608 rmap.connect('changelog_details', '/{repo_name:.*?}/changelog_details/{cs}',
609 rmap.connect('changelog_details', '/{repo_name:.*?}/changelog_details/{cs}',
609 controller='changelog', action='changelog_details',
610 controller='changelog', action='changelog_details',
610 conditions=dict(function=check_repo))
611 conditions=dict(function=check_repo))
611
612
612 rmap.connect('files_home', '/{repo_name:.*?}/files/{revision}/{f_path:.*}',
613 rmap.connect('files_home', '/{repo_name:.*?}/files/{revision}/{f_path:.*}',
613 controller='files', revision='tip', f_path='',
614 controller='files', revision='tip', f_path='',
614 conditions=dict(function=check_repo))
615 conditions=dict(function=check_repo))
615
616
616 rmap.connect('files_home_nopath', '/{repo_name:.*?}/files/{revision}',
617 rmap.connect('files_home_nopath', '/{repo_name:.*?}/files/{revision}',
617 controller='files', revision='tip', f_path='',
618 controller='files', revision='tip', f_path='',
618 conditions=dict(function=check_repo))
619 conditions=dict(function=check_repo))
619
620
620 rmap.connect('files_history_home',
621 rmap.connect('files_history_home',
621 '/{repo_name:.*?}/history/{revision}/{f_path:.*}',
622 '/{repo_name:.*?}/history/{revision}/{f_path:.*}',
622 controller='files', action='history', revision='tip', f_path='',
623 controller='files', action='history', revision='tip', f_path='',
623 conditions=dict(function=check_repo))
624 conditions=dict(function=check_repo))
624
625
625 rmap.connect('files_diff_home', '/{repo_name:.*?}/diff/{f_path:.*}',
626 rmap.connect('files_diff_home', '/{repo_name:.*?}/diff/{f_path:.*}',
626 controller='files', action='diff', revision='tip', f_path='',
627 controller='files', action='diff', revision='tip', f_path='',
627 conditions=dict(function=check_repo))
628 conditions=dict(function=check_repo))
628
629
629 rmap.connect('files_rawfile_home',
630 rmap.connect('files_rawfile_home',
630 '/{repo_name:.*?}/rawfile/{revision}/{f_path:.*}',
631 '/{repo_name:.*?}/rawfile/{revision}/{f_path:.*}',
631 controller='files', action='rawfile', revision='tip',
632 controller='files', action='rawfile', revision='tip',
632 f_path='', conditions=dict(function=check_repo))
633 f_path='', conditions=dict(function=check_repo))
633
634
634 rmap.connect('files_raw_home',
635 rmap.connect('files_raw_home',
635 '/{repo_name:.*?}/raw/{revision}/{f_path:.*}',
636 '/{repo_name:.*?}/raw/{revision}/{f_path:.*}',
636 controller='files', action='raw', revision='tip', f_path='',
637 controller='files', action='raw', revision='tip', f_path='',
637 conditions=dict(function=check_repo))
638 conditions=dict(function=check_repo))
638
639
639 rmap.connect('files_annotate_home',
640 rmap.connect('files_annotate_home',
640 '/{repo_name:.*?}/annotate/{revision}/{f_path:.*}',
641 '/{repo_name:.*?}/annotate/{revision}/{f_path:.*}',
641 controller='files', action='index', revision='tip',
642 controller='files', action='index', revision='tip',
642 f_path='', annotate=True, conditions=dict(function=check_repo))
643 f_path='', annotate=True, conditions=dict(function=check_repo))
643
644
644 rmap.connect('files_edit_home',
645 rmap.connect('files_edit_home',
645 '/{repo_name:.*?}/edit/{revision}/{f_path:.*}',
646 '/{repo_name:.*?}/edit/{revision}/{f_path:.*}',
646 controller='files', action='edit', revision='tip',
647 controller='files', action='edit', revision='tip',
647 f_path='', conditions=dict(function=check_repo))
648 f_path='', conditions=dict(function=check_repo))
648
649
649 rmap.connect('files_add_home',
650 rmap.connect('files_add_home',
650 '/{repo_name:.*?}/add/{revision}/{f_path:.*}',
651 '/{repo_name:.*?}/add/{revision}/{f_path:.*}',
651 controller='files', action='add', revision='tip',
652 controller='files', action='add', revision='tip',
652 f_path='', conditions=dict(function=check_repo))
653 f_path='', conditions=dict(function=check_repo))
653
654
654 rmap.connect('files_archive_home', '/{repo_name:.*?}/archive/{fname}',
655 rmap.connect('files_archive_home', '/{repo_name:.*?}/archive/{fname}',
655 controller='files', action='archivefile',
656 controller='files', action='archivefile',
656 conditions=dict(function=check_repo))
657 conditions=dict(function=check_repo))
657
658
658 rmap.connect('files_nodelist_home',
659 rmap.connect('files_nodelist_home',
659 '/{repo_name:.*?}/nodelist/{revision}/{f_path:.*}',
660 '/{repo_name:.*?}/nodelist/{revision}/{f_path:.*}',
660 controller='files', action='nodelist',
661 controller='files', action='nodelist',
661 conditions=dict(function=check_repo))
662 conditions=dict(function=check_repo))
662
663
663 rmap.connect('repo_fork_create_home', '/{repo_name:.*?}/fork',
664 rmap.connect('repo_fork_create_home', '/{repo_name:.*?}/fork',
664 controller='forks', action='fork_create',
665 controller='forks', action='fork_create',
665 conditions=dict(function=check_repo, method=["POST"]))
666 conditions=dict(function=check_repo, method=["POST"]))
666
667
667 rmap.connect('repo_fork_home', '/{repo_name:.*?}/fork',
668 rmap.connect('repo_fork_home', '/{repo_name:.*?}/fork',
668 controller='forks', action='fork',
669 controller='forks', action='fork',
669 conditions=dict(function=check_repo))
670 conditions=dict(function=check_repo))
670
671
671 rmap.connect('repo_forks_home', '/{repo_name:.*?}/forks',
672 rmap.connect('repo_forks_home', '/{repo_name:.*?}/forks',
672 controller='forks', action='forks',
673 controller='forks', action='forks',
673 conditions=dict(function=check_repo))
674 conditions=dict(function=check_repo))
674
675
675 rmap.connect('repo_followers_home', '/{repo_name:.*?}/followers',
676 rmap.connect('repo_followers_home', '/{repo_name:.*?}/followers',
676 controller='followers', action='followers',
677 controller='followers', action='followers',
677 conditions=dict(function=check_repo))
678 conditions=dict(function=check_repo))
678
679
679 return rmap
680 return rmap
@@ -1,142 +1,172 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.controllers.changelog
3 rhodecode.controllers.changelog
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
5
6 changelog controller for rhodecode
6 changelog controller for rhodecode
7
7
8 :created_on: Apr 21, 2010
8 :created_on: Apr 21, 2010
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software: you can redistribute it and/or modify
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
16 # (at your option) any later version.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25
25
26 import logging
26 import logging
27 import traceback
27 import traceback
28
28
29 from pylons import request, url, session, tmpl_context as c
29 from pylons import request, url, session, tmpl_context as c
30 from pylons.controllers.util import redirect
30 from pylons.controllers.util import redirect
31 from pylons.i18n.translation import _
31 from pylons.i18n.translation import _
32
32
33 import rhodecode.lib.helpers as h
33 import rhodecode.lib.helpers as h
34 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
34 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
35 from rhodecode.lib.base import BaseRepoController, render
35 from rhodecode.lib.base import BaseRepoController, render
36 from rhodecode.lib.helpers import RepoPage
36 from rhodecode.lib.helpers import RepoPage
37 from rhodecode.lib.compat import json
37 from rhodecode.lib.compat import json
38 from rhodecode.lib.graphmod import _colored, _dagwalker
38 from rhodecode.lib.graphmod import _colored, _dagwalker
39 from rhodecode.lib.vcs.exceptions import RepositoryError, ChangesetDoesNotExistError,\
39 from rhodecode.lib.vcs.exceptions import RepositoryError, ChangesetDoesNotExistError,\
40 ChangesetError, NodeDoesNotExistError
40 ChangesetError, NodeDoesNotExistError
41 from rhodecode.lib.utils2 import safe_int
41 from rhodecode.lib.utils2 import safe_int
42 from webob.exc import HTTPNotFound
42
43
43 log = logging.getLogger(__name__)
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 class ChangelogController(BaseRepoController):
65 class ChangelogController(BaseRepoController):
47
66
48 def __before__(self):
67 def __before__(self):
49 super(ChangelogController, self).__before__()
68 super(ChangelogController, self).__before__()
50 c.affected_files_cut_off = 60
69 c.affected_files_cut_off = 60
51
70
52 def _graph(self, repo, revs_int, repo_size, size, p):
71 def _graph(self, repo, revs_int, repo_size, size, p):
53 """
72 """
54 Generates a DAG graph for repo
73 Generates a DAG graph for repo
55
74
56 :param repo:
75 :param repo:
57 :param revs_int:
76 :param revs_int:
58 :param repo_size:
77 :param repo_size:
59 :param size:
78 :param size:
60 :param p:
79 :param p:
61 """
80 """
62 if not revs_int:
81 if not revs_int:
63 c.jsdata = json.dumps([])
82 c.jsdata = json.dumps([])
64 return
83 return
65
84
66 data = []
85 data = []
67 revs = revs_int
86 revs = revs_int
68
87
69 dag = _dagwalker(repo, revs, repo.alias)
88 dag = _dagwalker(repo, revs, repo.alias)
70 dag = _colored(dag)
89 dag = _colored(dag)
71 for (id, type, ctx, vtx, edges) in dag:
90 for (id, type, ctx, vtx, edges) in dag:
72 data.append(['', vtx, edges])
91 data.append(['', vtx, edges])
73
92
74 c.jsdata = json.dumps(data)
93 c.jsdata = json.dumps(data)
75
94
76 @LoginRequired()
95 @LoginRequired()
77 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
96 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
78 'repository.admin')
97 'repository.admin')
79 def index(self, repo_name, revision=None, f_path=None):
98 def index(self, repo_name, revision=None, f_path=None):
80 limit = 100
99 limit = 100
81 default = 20
100 default = 20
82 if request.GET.get('size'):
101 if request.GET.get('size'):
83 c.size = max(min(safe_int(request.GET.get('size')), limit), 1)
102 c.size = max(min(safe_int(request.GET.get('size')), limit), 1)
84 session['changelog_size'] = c.size
103 session['changelog_size'] = c.size
85 session.save()
104 session.save()
86 else:
105 else:
87 c.size = int(session.get('changelog_size', default))
106 c.size = int(session.get('changelog_size', default))
88 # min size must be 1
107 # min size must be 1
89 c.size = max(c.size, 1)
108 c.size = max(c.size, 1)
90 p = safe_int(request.GET.get('page', 1), 1)
109 p = safe_int(request.GET.get('page', 1), 1)
91 branch_name = request.GET.get('branch', None)
110 branch_name = request.GET.get('branch', None)
92 c.changelog_for_path = f_path
111 c.changelog_for_path = f_path
93 try:
112 try:
94
113
95 if f_path:
114 if f_path:
96 log.debug('generating changelog for path %s' % f_path)
115 log.debug('generating changelog for path %s' % f_path)
97 # get the history for the file !
116 # get the history for the file !
98 tip_cs = c.rhodecode_repo.get_changeset()
117 tip_cs = c.rhodecode_repo.get_changeset()
99 try:
118 try:
100 collection = tip_cs.get_file_history(f_path)
119 collection = tip_cs.get_file_history(f_path)
101 except (NodeDoesNotExistError, ChangesetError):
120 except (NodeDoesNotExistError, ChangesetError):
102 #this node is not present at tip !
121 #this node is not present at tip !
103 try:
122 try:
104 cs = self.__get_cs_or_redirect(revision, repo_name)
123 cs = self.__get_cs_or_redirect(revision, repo_name)
105 collection = cs.get_file_history(f_path)
124 collection = cs.get_file_history(f_path)
106 except RepositoryError, e:
125 except RepositoryError, e:
107 h.flash(str(e), category='warning')
126 h.flash(str(e), category='warning')
108 redirect(h.url('changelog_home', repo_name=repo_name))
127 redirect(h.url('changelog_home', repo_name=repo_name))
109 collection = list(reversed(collection))
128 collection = list(reversed(collection))
110 else:
129 else:
111 collection = c.rhodecode_repo.get_changesets(start=0,
130 collection = c.rhodecode_repo.get_changesets(start=0,
112 branch_name=branch_name)
131 branch_name=branch_name)
113 c.total_cs = len(collection)
132 c.total_cs = len(collection)
114
133
115 c.pagination = RepoPage(collection, page=p, item_count=c.total_cs,
134 c.pagination = RepoPage(collection, page=p, item_count=c.total_cs,
116 items_per_page=c.size, branch=branch_name)
135 items_per_page=c.size, branch=branch_name)
117 collection = list(c.pagination)
136 collection = list(c.pagination)
118 page_revisions = [x.raw_id for x in c.pagination]
137 page_revisions = [x.raw_id for x in c.pagination]
119 c.comments = c.rhodecode_db_repo.get_comments(page_revisions)
138 c.comments = c.rhodecode_db_repo.get_comments(page_revisions)
120 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
139 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
121 except (RepositoryError, ChangesetDoesNotExistError, Exception), e:
140 except (RepositoryError, ChangesetDoesNotExistError, Exception), e:
122 log.error(traceback.format_exc())
141 log.error(traceback.format_exc())
123 h.flash(str(e), category='error')
142 h.flash(str(e), category='error')
124 return redirect(url('changelog_home', repo_name=c.repo_name))
143 return redirect(url('changelog_home', repo_name=c.repo_name))
125
144
126 c.branch_name = branch_name
145 c.branch_name = branch_name
127 c.branch_filters = [('', _('All Branches'))] + \
146 c.branch_filters = [('', _('All Branches'))] + \
128 [(k, k) for k in c.rhodecode_repo.branches.keys()]
147 [(k, k) for k in c.rhodecode_repo.branches.keys()]
129 _revs = []
148 _revs = []
130 if not f_path:
149 if not f_path:
131 _revs = [x.revision for x in c.pagination]
150 _revs = [x.revision for x in c.pagination]
132 self._graph(c.rhodecode_repo, _revs, c.total_cs, c.size, p)
151 self._graph(c.rhodecode_repo, _revs, c.total_cs, c.size, p)
133
152
134 return render('changelog/changelog.html')
153 return render('changelog/changelog.html')
135
154
136 @LoginRequired()
155 @LoginRequired()
137 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
156 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
138 'repository.admin')
157 'repository.admin')
139 def changelog_details(self, cs):
158 def changelog_details(self, cs):
140 if request.environ.get('HTTP_X_PARTIAL_XHR'):
159 if request.environ.get('HTTP_X_PARTIAL_XHR'):
141 c.cs = c.rhodecode_repo.get_changeset(cs)
160 c.cs = c.rhodecode_repo.get_changeset(cs)
142 return render('changelog/changelog_details.html')
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 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.controllers.summary
3 rhodecode.controllers.summary
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
5
6 Summary controller for Rhodecode
6 Summary controller for Rhodecode
7
7
8 :created_on: Apr 18, 2010
8 :created_on: Apr 18, 2010
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software: you can redistribute it and/or modify
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
16 # (at your option) any later version.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25
25
26 import traceback
26 import traceback
27 import calendar
27 import calendar
28 import logging
28 import logging
29 import urllib
29 import urllib
30 from time import mktime
30 from time import mktime
31 from datetime import timedelta, date
31 from datetime import timedelta, date
32 from urlparse import urlparse
32 from urlparse import urlparse
33
33
34 from pylons import tmpl_context as c, request, url, config
34 from pylons import tmpl_context as c, request, url, config
35 from pylons.i18n.translation import _
35 from pylons.i18n.translation import _
36 from webob.exc import HTTPBadRequest
36 from webob.exc import HTTPBadRequest
37
37
38 from beaker.cache import cache_region, region_invalidate
38 from beaker.cache import cache_region, region_invalidate
39
39
40 from rhodecode.lib import helpers as h
40 from rhodecode.lib import helpers as h
41 from rhodecode.lib.compat import product
41 from rhodecode.lib.compat import product
42 from rhodecode.lib.vcs.exceptions import ChangesetError, EmptyRepositoryError, \
42 from rhodecode.lib.vcs.exceptions import ChangesetError, EmptyRepositoryError, \
43 NodeDoesNotExistError
43 NodeDoesNotExistError
44 from rhodecode.config.conf import ALL_READMES, ALL_EXTS, LANGUAGES_EXTENSIONS_MAP
44 from rhodecode.config.conf import ALL_READMES, ALL_EXTS, LANGUAGES_EXTENSIONS_MAP
45 from rhodecode.model.db import Statistics, CacheInvalidation
45 from rhodecode.model.db import Statistics, CacheInvalidation
46 from rhodecode.lib.utils import jsonify
46 from rhodecode.lib.utils import jsonify
47 from rhodecode.lib.utils2 import safe_unicode, safe_str
47 from rhodecode.lib.utils2 import safe_unicode, safe_str
48 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator,\
48 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator,\
49 NotAnonymous
49 NotAnonymous
50 from rhodecode.lib.base import BaseRepoController, render
50 from rhodecode.lib.base import BaseRepoController, render
51 from rhodecode.lib.vcs.backends.base import EmptyChangeset
51 from rhodecode.lib.vcs.backends.base import EmptyChangeset
52 from rhodecode.lib.markup_renderer import MarkupRenderer
52 from rhodecode.lib.markup_renderer import MarkupRenderer
53 from rhodecode.lib.celerylib import run_task
53 from rhodecode.lib.celerylib import run_task
54 from rhodecode.lib.celerylib.tasks import get_commits_stats
54 from rhodecode.lib.celerylib.tasks import get_commits_stats
55 from rhodecode.lib.helpers import RepoPage
55 from rhodecode.lib.helpers import RepoPage
56 from rhodecode.lib.compat import json, OrderedDict
56 from rhodecode.lib.compat import json, OrderedDict
57 from rhodecode.lib.vcs.nodes import FileNode
57 from rhodecode.lib.vcs.nodes import FileNode
58 from rhodecode.controllers.changelog import _load_changelog_summary
58
59
59 log = logging.getLogger(__name__)
60 log = logging.getLogger(__name__)
60
61
61 README_FILES = [''.join([x[0][0], x[1][0]]) for x in
62 README_FILES = [''.join([x[0][0], x[1][0]]) for x in
62 sorted(list(product(ALL_READMES, ALL_EXTS)),
63 sorted(list(product(ALL_READMES, ALL_EXTS)),
63 key=lambda y:y[0][1] + y[1][1])]
64 key=lambda y:y[0][1] + y[1][1])]
64
65
65
66
66 class SummaryController(BaseRepoController):
67 class SummaryController(BaseRepoController):
67
68
68 def __before__(self):
69 def __before__(self):
69 super(SummaryController, self).__before__()
70 super(SummaryController, self).__before__()
70
71
71 def _get_download_links(self, repo):
72 def _get_download_links(self, repo):
72
73
73 download_l = []
74 download_l = []
74
75
75 branches_group = ([], _("Branches"))
76 branches_group = ([], _("Branches"))
76 tags_group = ([], _("Tags"))
77 tags_group = ([], _("Tags"))
77
78
78 for name, chs in c.rhodecode_repo.branches.items():
79 for name, chs in c.rhodecode_repo.branches.items():
79 #chs = chs.split(':')[-1]
80 #chs = chs.split(':')[-1]
80 branches_group[0].append((chs, name),)
81 branches_group[0].append((chs, name),)
81 download_l.append(branches_group)
82 download_l.append(branches_group)
82
83
83 for name, chs in c.rhodecode_repo.tags.items():
84 for name, chs in c.rhodecode_repo.tags.items():
84 #chs = chs.split(':')[-1]
85 #chs = chs.split(':')[-1]
85 tags_group[0].append((chs, name),)
86 tags_group[0].append((chs, name),)
86 download_l.append(tags_group)
87 download_l.append(tags_group)
87
88
88 return download_l
89 return download_l
89
90
90
91
91 def __get_readme_data(self, db_repo):
92 def __get_readme_data(self, db_repo):
92 repo_name = db_repo.repo_name
93 repo_name = db_repo.repo_name
93
94
94 @cache_region('long_term')
95 @cache_region('long_term')
95 def _get_readme_from_cache(key):
96 def _get_readme_from_cache(key):
96 readme_data = None
97 readme_data = None
97 readme_file = None
98 readme_file = None
98 log.debug('Looking for README file')
99 log.debug('Looking for README file')
99 try:
100 try:
100 # get's the landing revision! or tip if fails
101 # get's the landing revision! or tip if fails
101 cs = db_repo.get_landing_changeset()
102 cs = db_repo.get_landing_changeset()
102 if isinstance(cs, EmptyChangeset):
103 if isinstance(cs, EmptyChangeset):
103 raise EmptyRepositoryError()
104 raise EmptyRepositoryError()
104 renderer = MarkupRenderer()
105 renderer = MarkupRenderer()
105 for f in README_FILES:
106 for f in README_FILES:
106 try:
107 try:
107 readme = cs.get_node(f)
108 readme = cs.get_node(f)
108 if not isinstance(readme, FileNode):
109 if not isinstance(readme, FileNode):
109 continue
110 continue
110 readme_file = f
111 readme_file = f
111 log.debug('Found README file `%s` rendering...' %
112 log.debug('Found README file `%s` rendering...' %
112 readme_file)
113 readme_file)
113 readme_data = renderer.render(readme.content, f)
114 readme_data = renderer.render(readme.content, f)
114 break
115 break
115 except NodeDoesNotExistError:
116 except NodeDoesNotExistError:
116 continue
117 continue
117 except ChangesetError:
118 except ChangesetError:
118 log.error(traceback.format_exc())
119 log.error(traceback.format_exc())
119 pass
120 pass
120 except EmptyRepositoryError:
121 except EmptyRepositoryError:
121 pass
122 pass
122 except Exception:
123 except Exception:
123 log.error(traceback.format_exc())
124 log.error(traceback.format_exc())
124
125
125 return readme_data, readme_file
126 return readme_data, readme_file
126
127
127 key = repo_name + '_README'
128 key = repo_name + '_README'
128 inv = CacheInvalidation.invalidate(key)
129 inv = CacheInvalidation.invalidate(key)
129 if inv is not None:
130 if inv is not None:
130 region_invalidate(_get_readme_from_cache, None, key)
131 region_invalidate(_get_readme_from_cache, None, key)
131 CacheInvalidation.set_valid(inv.cache_key)
132 CacheInvalidation.set_valid(inv.cache_key)
132 return _get_readme_from_cache(key)
133 return _get_readme_from_cache(key)
133
134
134 @LoginRequired()
135 @LoginRequired()
135 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
136 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
136 'repository.admin')
137 'repository.admin')
137 def index(self, repo_name):
138 def index(self, repo_name):
138 c.dbrepo = dbrepo = c.rhodecode_db_repo
139 c.dbrepo = dbrepo = c.rhodecode_db_repo
139
140 _load_changelog_summary()
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
148 if self.rhodecode_user.username == 'default':
141 if self.rhodecode_user.username == 'default':
149 # for default(anonymous) user we don't need to pass credentials
142 # for default(anonymous) user we don't need to pass credentials
150 username = ''
143 username = ''
151 password = ''
144 password = ''
152 else:
145 else:
153 username = str(self.rhodecode_user.username)
146 username = str(self.rhodecode_user.username)
154 password = '@'
147 password = '@'
155
148
156 parsed_url = urlparse(url.current(qualified=True))
149 parsed_url = urlparse(url.current(qualified=True))
157
150
158 default_clone_uri = '{scheme}://{user}{pass}{netloc}{path}'
151 default_clone_uri = '{scheme}://{user}{pass}{netloc}{path}'
159
152
160 uri_tmpl = config.get('clone_uri', default_clone_uri)
153 uri_tmpl = config.get('clone_uri', default_clone_uri)
161 uri_tmpl = uri_tmpl.replace('{', '%(').replace('}', ')s')
154 uri_tmpl = uri_tmpl.replace('{', '%(').replace('}', ')s')
162 decoded_path = safe_unicode(urllib.unquote(parsed_url.path))
155 decoded_path = safe_unicode(urllib.unquote(parsed_url.path))
163 uri_dict = {
156 uri_dict = {
164 'user': urllib.quote(username),
157 'user': urllib.quote(username),
165 'pass': password,
158 'pass': password,
166 'scheme': parsed_url.scheme,
159 'scheme': parsed_url.scheme,
167 'netloc': parsed_url.netloc,
160 'netloc': parsed_url.netloc,
168 'path': urllib.quote(safe_str(decoded_path))
161 'path': urllib.quote(safe_str(decoded_path))
169 }
162 }
170
163
171 uri = (uri_tmpl % uri_dict)
164 uri = (uri_tmpl % uri_dict)
172 # generate another clone url by id
165 # generate another clone url by id
173 uri_dict.update(
166 uri_dict.update(
174 {'path': decoded_path.replace(repo_name, '_%s' % c.dbrepo.repo_id)}
167 {'path': decoded_path.replace(repo_name, '_%s' % c.dbrepo.repo_id)}
175 )
168 )
176 uri_id = uri_tmpl % uri_dict
169 uri_id = uri_tmpl % uri_dict
177
170
178 c.clone_repo_url = uri
171 c.clone_repo_url = uri
179 c.clone_repo_url_id = uri_id
172 c.clone_repo_url_id = uri_id
180
173
181 td = date.today() + timedelta(days=1)
174 td = date.today() + timedelta(days=1)
182 td_1m = td - timedelta(days=calendar.mdays[td.month])
175 td_1m = td - timedelta(days=calendar.mdays[td.month])
183 td_1y = td - timedelta(days=365)
176 td_1y = td - timedelta(days=365)
184
177
185 ts_min_m = mktime(td_1m.timetuple())
178 ts_min_m = mktime(td_1m.timetuple())
186 ts_min_y = mktime(td_1y.timetuple())
179 ts_min_y = mktime(td_1y.timetuple())
187 ts_max_y = mktime(td.timetuple())
180 ts_max_y = mktime(td.timetuple())
188
181
189 if dbrepo.enable_statistics:
182 if dbrepo.enable_statistics:
190 c.show_stats = True
183 c.show_stats = True
191 c.no_data_msg = _('No data loaded yet')
184 c.no_data_msg = _('No data loaded yet')
192 recurse_limit = 500 # don't recurse more than 500 times when parsing
185 recurse_limit = 500 # don't recurse more than 500 times when parsing
193 run_task(get_commits_stats, c.dbrepo.repo_name, ts_min_y,
186 run_task(get_commits_stats, c.dbrepo.repo_name, ts_min_y,
194 ts_max_y, recurse_limit)
187 ts_max_y, recurse_limit)
195 else:
188 else:
196 c.show_stats = False
189 c.show_stats = False
197 c.no_data_msg = _('Statistics are disabled for this repository')
190 c.no_data_msg = _('Statistics are disabled for this repository')
198 c.ts_min = ts_min_m
191 c.ts_min = ts_min_m
199 c.ts_max = ts_max_y
192 c.ts_max = ts_max_y
200
193
201 stats = self.sa.query(Statistics)\
194 stats = self.sa.query(Statistics)\
202 .filter(Statistics.repository == dbrepo)\
195 .filter(Statistics.repository == dbrepo)\
203 .scalar()
196 .scalar()
204
197
205 c.stats_percentage = 0
198 c.stats_percentage = 0
206
199
207 if stats and stats.languages:
200 if stats and stats.languages:
208 c.no_data = False is dbrepo.enable_statistics
201 c.no_data = False is dbrepo.enable_statistics
209 lang_stats_d = json.loads(stats.languages)
202 lang_stats_d = json.loads(stats.languages)
210 c.commit_data = stats.commit_activity
203 c.commit_data = stats.commit_activity
211 c.overview_data = stats.commit_activity_combined
204 c.overview_data = stats.commit_activity_combined
212
205
213 lang_stats = ((x, {"count": y,
206 lang_stats = ((x, {"count": y,
214 "desc": LANGUAGES_EXTENSIONS_MAP.get(x)})
207 "desc": LANGUAGES_EXTENSIONS_MAP.get(x)})
215 for x, y in lang_stats_d.items())
208 for x, y in lang_stats_d.items())
216
209
217 c.trending_languages = json.dumps(
210 c.trending_languages = json.dumps(
218 sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10]
211 sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10]
219 )
212 )
220 last_rev = stats.stat_on_revision + 1
213 last_rev = stats.stat_on_revision + 1
221 c.repo_last_rev = c.rhodecode_repo.count()\
214 c.repo_last_rev = c.rhodecode_repo.count()\
222 if c.rhodecode_repo.revisions else 0
215 if c.rhodecode_repo.revisions else 0
223 if last_rev == 0 or c.repo_last_rev == 0:
216 if last_rev == 0 or c.repo_last_rev == 0:
224 pass
217 pass
225 else:
218 else:
226 c.stats_percentage = '%.2f' % ((float((last_rev)) /
219 c.stats_percentage = '%.2f' % ((float((last_rev)) /
227 c.repo_last_rev) * 100)
220 c.repo_last_rev) * 100)
228 else:
221 else:
229 c.commit_data = json.dumps({})
222 c.commit_data = json.dumps({})
230 c.overview_data = json.dumps([[ts_min_y, 0], [ts_max_y, 10]])
223 c.overview_data = json.dumps([[ts_min_y, 0], [ts_max_y, 10]])
231 c.trending_languages = json.dumps({})
224 c.trending_languages = json.dumps({})
232 c.no_data = True
225 c.no_data = True
233
226
234 c.enable_downloads = dbrepo.enable_downloads
227 c.enable_downloads = dbrepo.enable_downloads
235 if c.enable_downloads:
228 if c.enable_downloads:
236 c.download_options = self._get_download_links(c.rhodecode_repo)
229 c.download_options = self._get_download_links(c.rhodecode_repo)
237
230
238 c.readme_data, c.readme_file = \
231 c.readme_data, c.readme_file = \
239 self.__get_readme_data(c.rhodecode_db_repo)
232 self.__get_readme_data(c.rhodecode_db_repo)
240 return render('summary/summary.html')
233 return render('summary/summary.html')
241
234
242 @LoginRequired()
235 @LoginRequired()
243 @NotAnonymous()
236 @NotAnonymous()
244 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
237 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
245 'repository.admin')
238 'repository.admin')
246 @jsonify
239 @jsonify
247 def repo_size(self, repo_name):
240 def repo_size(self, repo_name):
248 if request.is_xhr:
241 if request.is_xhr:
249 return c.rhodecode_db_repo._repo_size()
242 return c.rhodecode_db_repo._repo_size()
250 else:
243 else:
251 raise HTTPBadRequest()
244 raise HTTPBadRequest()
@@ -1,343 +1,342 b''
1 /**
1 /**
2 * Stylesheets for the context bar
2 * Stylesheets for the context bar
3 */
3 */
4
4
5 #quick .repo_switcher { background-image: url("../images/icons/database.png"); }
5 #quick .repo_switcher { background-image: url("../images/icons/database.png"); }
6 #quick .journal { background-image: url("../images/icons/book.png"); }
6 #quick .journal { background-image: url("../images/icons/book.png"); }
7 #quick .search { background-image: url("../images/icons/search_16.png"); }
7 #quick .search { background-image: url("../images/icons/search_16.png"); }
8 #quick .admin { background-image: url("../images/icons/cog_edit.png"); }
8 #quick .admin { background-image: url("../images/icons/cog_edit.png"); }
9
9
10 #context-bar a.follow { background-image: url("../images/icons/heart.png"); }
10 #context-bar a.follow { background-image: url("../images/icons/heart.png"); }
11 #context-bar a.following { background-image: url("../images/icons/heart_delete.png"); }
11 #context-bar a.following { background-image: url("../images/icons/heart_delete.png"); }
12 #context-bar a.fork { background-image: url("../images/icons/arrow_divide.png"); }
12 #context-bar a.fork { background-image: url("../images/icons/arrow_divide.png"); }
13 #context-bar a.summary { background-image: url("../images/icons/clipboard_16.png"); }
13 #context-bar a.summary { background-image: url("../images/icons/clipboard_16.png"); }
14 #context-bar a.changelogs { background-image: url("../images/icons/time.png"); }
14 #context-bar a.changelogs { background-image: url("../images/icons/time.png"); }
15 #context-bar a.files { background-image: url("../images/icons/file.png"); }
15 #context-bar a.files { background-image: url("../images/icons/file.png"); }
16 #context-bar a.switch-to { background-image: url("../images/icons/arrow_switch.png"); }
16 #context-bar a.switch-to { background-image: url("../images/icons/arrow_switch.png"); }
17 #context-bar a.options { background-image: url("../images/icons/table_gear.png"); }
17 #context-bar a.options { background-image: url("../images/icons/table_gear.png"); }
18 #context-bar a.forks { background-image: url("../images/icons/arrow_divide.png"); }
18 #context-bar a.forks { background-image: url("../images/icons/arrow_divide.png"); }
19 #context-bar a.pull-request { background-image: url("../images/icons/arrow_join.png"); }
19 #context-bar a.pull-request { background-image: url("../images/icons/arrow_join.png"); }
20 #context-bar a.branches { background-image: url("../images/icons/arrow_branch.png"); }
20 #context-bar a.branches { background-image: url("../images/icons/arrow_branch.png"); }
21 #context-bar a.tags { background-image: url("../images/icons/tag_blue.png"); }
21 #context-bar a.tags { background-image: url("../images/icons/tag_blue.png"); }
22 #context-bar a.bookmarks { background-image: url("../images/icons/tag_green.png"); }
22 #context-bar a.bookmarks { background-image: url("../images/icons/tag_green.png"); }
23 #context-bar a.settings { background-image: url("../images/icons/cog.png"); }
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 #context-bar a.search { background-image: url("../images/icons/search_16.png"); }
24 #context-bar a.search { background-image: url("../images/icons/search_16.png"); }
26 #context-bar a.admin { background-image: url("../images/icons/cog_edit.png"); }
25 #context-bar a.admin { background-image: url("../images/icons/cog_edit.png"); }
27
26
28 #context-bar a.journal { background-image: url("../images/icons/book.png"); }
27 #context-bar a.journal { background-image: url("../images/icons/book.png"); }
29 #context-bar a.repos { background-image: url("../images/icons/database_edit.png"); }
28 #context-bar a.repos { background-image: url("../images/icons/database_edit.png"); }
30 #context-bar a.repos_groups { background-image: url("../images/icons/database_link.png"); }
29 #context-bar a.repos_groups { background-image: url("../images/icons/database_link.png"); }
31 #context-bar a.users { background-image: url("../images/icons/user_edit.png"); }
30 #context-bar a.users { background-image: url("../images/icons/user_edit.png"); }
32 #context-bar a.groups { background-image: url("../images/icons/group_edit.png"); }
31 #context-bar a.groups { background-image: url("../images/icons/group_edit.png"); }
33 #context-bar a.permissions { background-image: url("../images/icons/key.png"); }
32 #context-bar a.permissions { background-image: url("../images/icons/key.png"); }
34 #context-bar a.ldap { background-image: url("../images/icons/server_key.png"); }
33 #context-bar a.ldap { background-image: url("../images/icons/server_key.png"); }
35 #context-bar a.defaults { background-image: url("../images/icons/wrench.png"); }
34 #context-bar a.defaults { background-image: url("../images/icons/wrench.png"); }
36 #context-bar a.settings { background-image: url("../images/icons/cog_edit.png"); }
35 #context-bar a.settings { background-image: url("../images/icons/cog_edit.png"); }
37 #context-bar a.compare_request { background-image: url('../images/icons/arrow_inout.png')}
36 #context-bar a.compare_request { background-image: url('../images/icons/arrow_inout.png')}
38 #context-bar a.locking_del { background-image: url('../images/icons/lock_delete.png')}
37 #context-bar a.locking_del { background-image: url('../images/icons/lock_delete.png')}
39 #context-bar a.locking_add { background-image: url('../images/icons/lock_add.png')}
38 #context-bar a.locking_add { background-image: url('../images/icons/lock_add.png')}
40
39
41 #content #context-bar {
40 #content #context-bar {
42 position: relative;
41 position: relative;
43 overflow: visible;
42 overflow: visible;
44 background-color: #336699;
43 background-color: #336699;
45 border-top: 1px solid #517da8;
44 border-top: 1px solid #517da8;
46 border-bottom: 1px solid #003162;
45 border-bottom: 1px solid #003162;
47 padding: 0 5px;
46 padding: 0 5px;
48 min-height: 36px;
47 min-height: 36px;
49 }
48 }
50
49
51 #header #header-inner #quick a,
50 #header #header-inner #quick a,
52 #content #context-bar,
51 #content #context-bar,
53 #content #context-bar a {
52 #content #context-bar a {
54 color: #FFFFFF;
53 color: #FFFFFF;
55 }
54 }
56
55
57 #header #header-inner #quick a:hover,
56 #header #header-inner #quick a:hover,
58 #content #context-bar a:hover {
57 #content #context-bar a:hover {
59 text-decoration: none;
58 text-decoration: none;
60 }
59 }
61
60
62 #content #context-bar .icon {
61 #content #context-bar .icon {
63 display: inline-block;
62 display: inline-block;
64 width: 16px;
63 width: 16px;
65 height: 16px;
64 height: 16px;
66 vertical-align: text-bottom;
65 vertical-align: text-bottom;
67 }
66 }
68
67
69 ul.horizontal-list {
68 ul.horizontal-list {
70 display: block;
69 display: block;
71 }
70 }
72
71
73 ul.horizontal-list > li {
72 ul.horizontal-list > li {
74 float: left;
73 float: left;
75 position: relative;
74 position: relative;
76 }
75 }
77
76
78 #header #header-inner #quick ul,
77 #header #header-inner #quick ul,
79 ul.horizontal-list > li ul {
78 ul.horizontal-list > li ul {
80 position: absolute;
79 position: absolute;
81 display: none;
80 display: none;
82 right: 0;
81 right: 0;
83 z-index: 999;
82 z-index: 999;
84 }
83 }
85
84
86 #header #header-inner #quick li:hover > ul,
85 #header #header-inner #quick li:hover > ul,
87 ul.horizontal-list li:hover > ul {
86 ul.horizontal-list li:hover > ul {
88 display: block;
87 display: block;
89 }
88 }
90
89
91 #header #header-inner #quick li ul li,
90 #header #header-inner #quick li ul li,
92 ul.horizontal-list ul li {
91 ul.horizontal-list ul li {
93 position: relative;
92 position: relative;
94 border-bottom: 1px solid rgba(0,0,0,0.1);
93 border-bottom: 1px solid rgba(0,0,0,0.1);
95 border-top: 1px solid rgba(255,255,255,0.1);
94 border-top: 1px solid rgba(255,255,255,0.1);
96 }
95 }
97
96
98 ul.horizontal-list > li ul ul {
97 ul.horizontal-list > li ul ul {
99 position: absolute;
98 position: absolute;
100 right: 100%;
99 right: 100%;
101 top: -1px;
100 top: -1px;
102 min-width: 200px;
101 min-width: 200px;
103 max-height: 400px;
102 max-height: 400px;
104 overflow-x: hidden;
103 overflow-x: hidden;
105 overflow-y: auto;
104 overflow-y: auto;
106 }
105 }
107
106
108 #header #header-inner #quick ul a,
107 #header #header-inner #quick ul a,
109 ul.horizontal-list li a {
108 ul.horizontal-list li a {
110 white-space: nowrap;
109 white-space: nowrap;
111 }
110 }
112
111
113 #breadcrumbs {
112 #breadcrumbs {
114 float: left;
113 float: left;
115 padding: 6px 0 5px 0;
114 padding: 6px 0 5px 0;
116 padding-left: 5px;
115 padding-left: 5px;
117 font-weight: bold;
116 font-weight: bold;
118 font-size: 14px;
117 font-size: 14px;
119 }
118 }
120
119
121 #breadcrumbs span {
120 #breadcrumbs span {
122 font-weight: bold;
121 font-weight: bold;
123 font-size: 1.4em;
122 font-size: 1.4em;
124 }
123 }
125
124
126 #header #header-inner #quick ul,
125 #header #header-inner #quick ul,
127 #revision-changer,
126 #revision-changer,
128 #context-pages,
127 #context-pages,
129 #context-pages ul {
128 #context-pages ul {
130 background: #3b6998; /* Old browsers */
129 background: #3b6998; /* Old browsers */
131 background: -moz-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* FF3.6+ */
130 background: -moz-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* FF3.6+ */
132 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4574a2), color-stop(100%,#2f5d8b)); /* Chrome,Safari4+ */
131 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4574a2), color-stop(100%,#2f5d8b)); /* Chrome,Safari4+ */
133 background: -webkit-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* Chrome10+,Safari5.1+ */
132 background: -webkit-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* Chrome10+,Safari5.1+ */
134 background: -o-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* Opera 11.10+ */
133 background: -o-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* Opera 11.10+ */
135 background: -ms-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* IE10+ */
134 background: -ms-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* IE10+ */
136 background: linear-gradient(to bottom, #4574a2 0%, #2f5d8b 100%); /* W3C */
135 background: linear-gradient(to bottom, #4574a2 0%, #2f5d8b 100%); /* W3C */
137 /*Filter on IE will also use overflow:hidden implicitly, and that would clip our inner menus.*/
136 /*Filter on IE will also use overflow:hidden implicitly, and that would clip our inner menus.*/
138 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4574a2', endColorstr='#2f5d8b',GradientType=0 ); /* IE6-9 */*/
137 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4574a2', endColorstr='#2f5d8b',GradientType=0 ); /* IE6-9 */*/
139 }
138 }
140
139
141 #header #header-inner #quick a,
140 #header #header-inner #quick a,
142 #context-actions a,
141 #context-actions a,
143 #context-pages a {
142 #context-pages a {
144 background-repeat: no-repeat;
143 background-repeat: no-repeat;
145 background-position: 10px 50%;
144 background-position: 10px 50%;
146 padding-left: 30px;
145 padding-left: 30px;
147 }
146 }
148
147
149 #quick a,
148 #quick a,
150 #context-pages ul ul a {
149 #context-pages ul ul a {
151 padding-left: 10px;
150 padding-left: 10px;
152 }
151 }
153
152
154 ul#context-actions {
153 ul#context-actions {
155 display: inline-block;
154 display: inline-block;
156 float: right;
155 float: right;
157 border-radius: 4px;
156 border-radius: 4px;
158 background-image: linear-gradient(top, #4574a2 0%, #2f5d8b 100%);
157 background-image: linear-gradient(top, #4574a2 0%, #2f5d8b 100%);
159 }
158 }
160
159
161 #content ul#context-actions li {
160 #content ul#context-actions li {
162 padding: 0px;
161 padding: 0px;
163 border-right: 1px solid rgba(0,0,0,0.1);
162 border-right: 1px solid rgba(0,0,0,0.1);
164 border-left: 1px solid rgba(255,255,255,0.1);
163 border-left: 1px solid rgba(255,255,255,0.1);
165 }
164 }
166
165
167 #context-actions a {
166 #context-actions a {
168 display: block;
167 display: block;
169 cursor: pointer;
168 cursor: pointer;
170 background: none;
169 background: none;
171 border: none;
170 border: none;
172 margin: 0px;
171 margin: 0px;
173 height: auto;
172 height: auto;
174 padding: 10px 10px 10px 30px;
173 padding: 10px 10px 10px 30px;
175 background-repeat: no-repeat;
174 background-repeat: no-repeat;
176 background-position: 10px 50%;
175 background-position: 10px 50%;
177 font-size: 1em;
176 font-size: 1em;
178 }
177 }
179
178
180 #context-actions a {
179 #context-actions a {
181 padding: 11px 10px 12px 30px;
180 padding: 11px 10px 12px 30px;
182 }
181 }
183
182
184 #header #header-inner #quick li:hover,
183 #header #header-inner #quick li:hover,
185 #revision-changer:hover,
184 #revision-changer:hover,
186 #context-pages li:hover,
185 #context-pages li:hover,
187 #context-actions li:hover,
186 #context-actions li:hover,
188 #content #context-actions li:hover,
187 #content #context-actions li:hover,
189 #header #header-inner #quick li.current,
188 #header #header-inner #quick li.current,
190 #context-pages li.current {
189 #context-pages li.current {
191 background: #6388ad; /* Old browsers */
190 background: #6388ad; /* Old browsers */
192 background: -moz-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* FF3.6+ */
191 background: -moz-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* FF3.6+ */
193 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+ */
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 background: -webkit-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Chrome10+,Safari5.1+ */
193 background: -webkit-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Chrome10+,Safari5.1+ */
195 background: -o-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Opera 11.10+ */
194 background: -o-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Opera 11.10+ */
196 background: -ms-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* IE10+ */
195 background: -ms-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* IE10+ */
197 background: linear-gradient(to bottom, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* W3C */
196 background: linear-gradient(to bottom, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* W3C */
198 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#88bfe8', endColorstr='#70b0e0',GradientType=0 ); /* IE6-9 */*/
197 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#88bfe8', endColorstr='#70b0e0',GradientType=0 ); /* IE6-9 */*/
199 }
198 }
200
199
201
200
202 #content #context-actions li:first-child {
201 #content #context-actions li:first-child {
203 border-left: none;
202 border-left: none;
204 border-radius: 4px 0 0px 4px;
203 border-radius: 4px 0 0px 4px;
205 }
204 }
206
205
207 #content #context-actions li:last-child {
206 #content #context-actions li:last-child {
208 border-right: none;
207 border-right: none;
209 border-radius: 0 4px 4px 0;
208 border-radius: 0 4px 4px 0;
210 }
209 }
211
210
212 #content #context-actions .icon {
211 #content #context-actions .icon {
213 margin: auto;
212 margin: auto;
214 margin-bottom: 5px;
213 margin-bottom: 5px;
215 display: block;
214 display: block;
216 clear: both;
215 clear: both;
217 float: none;
216 float: none;
218 }
217 }
219
218
220 #content #context-pages .follow .show-following,
219 #content #context-pages .follow .show-following,
221 #content #context-pages .following .show-follow {
220 #content #context-pages .following .show-follow {
222 display: none;
221 display: none;
223 }
222 }
224
223
225 #context-pages {
224 #context-pages {
226 float: right;
225 float: right;
227 border-left: 1px solid rgba(0,0,0,0.1);
226 border-left: 1px solid rgba(0,0,0,0.1);
228 }
227 }
229
228
230 #context-pages li.current {
229 #context-pages li.current {
231 background: #535353; /* Old browsers */
230 background: #535353; /* Old browsers */
232 background: -moz-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* FF3.6+ */
231 background: -moz-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* FF3.6+ */
233 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#5d5d5d), color-stop(100%,#484848)); /* Chrome,Safari4+ */
232 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#5d5d5d), color-stop(100%,#484848)); /* Chrome,Safari4+ */
234 background: -webkit-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* Chrome10+,Safari5.1+ */
233 background: -webkit-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* Chrome10+,Safari5.1+ */
235 background: -o-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* Opera 11.10+ */
234 background: -o-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* Opera 11.10+ */
236 background: -ms-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* IE10+ */
235 background: -ms-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* IE10+ */
237 background: linear-gradient(to bottom, #5d5d5d 0%, #484848 100%); /* W3C */
236 background: linear-gradient(to bottom, #5d5d5d 0%, #484848 100%); /* W3C */
238 }
237 }
239
238
240 #content #context-pages .icon {
239 #content #context-pages .icon {
241 margin-right: 5px;
240 margin-right: 5px;
242 }
241 }
243
242
244 #header #header-inner #quick li,
243 #header #header-inner #quick li,
245 #content #context-pages li {
244 #content #context-pages li {
246 border-right: 1px solid rgba(0,0,0,0.1);
245 border-right: 1px solid rgba(0,0,0,0.1);
247 border-left: 1px solid rgba(255,255,255,0.1);
246 border-left: 1px solid rgba(255,255,255,0.1);
248 padding: 0;
247 padding: 0;
249 }
248 }
250
249
251 #header #header-inner #quick li:last-child,
250 #header #header-inner #quick li:last-child,
252 #content #context-pages li:last-child {
251 #content #context-pages li:last-child {
253 border-right: none;
252 border-right: none;
254 }
253 }
255
254
256 #header #header-inner #quick > li:first-child {
255 #header #header-inner #quick > li:first-child {
257 border-left: none;
256 border-left: none;
258 }
257 }
259
258
260 #header #header-inner #quick > li:first-child > a {
259 #header #header-inner #quick > li:first-child > a {
261 border-radius: 4px 0 0 4px;
260 border-radius: 4px 0 0 4px;
262 }
261 }
263
262
264 #header #header-inner #quick a,
263 #header #header-inner #quick a,
265 #context-pages a,
264 #context-pages a,
266 #context-pages .admin_menu a {
265 #context-pages .admin_menu a {
267 display: block;
266 display: block;
268 padding: 0px 10px 1px 30px;
267 padding: 0px 10px 1px 30px;
269 padding-left: 30px;
268 padding-left: 30px;
270 line-height: 35px;
269 line-height: 35px;
271 }
270 }
272
271
273 #header #header-inner #quick a.thin,
272 #header #header-inner #quick a.thin,
274 #context-pages a.thin,
273 #context-pages a.thin,
275 #context-pages .admin_menu a.thin {
274 #context-pages .admin_menu a.thin {
276 line-height: 28px !important;
275 line-height: 28px !important;
277 }
276 }
278
277
279 #header #header-inner #quick a#quick_login_link {
278 #header #header-inner #quick a#quick_login_link {
280 padding-left: 0px;
279 padding-left: 0px;
281 }
280 }
282
281
283 #header #header-inner #quick a {
282 #header #header-inner #quick a {
284 overflow: hidden;
283 overflow: hidden;
285 }
284 }
286 #quick a.childs:after,
285 #quick a.childs:after,
287 #revision-changer:before,
286 #revision-changer:before,
288 #context-pages a.childs:after,
287 #context-pages a.childs:after,
289 #context-pages a.dropdown:after {
288 #context-pages a.dropdown:after {
290 content: ' \25BE';
289 content: ' \25BE';
291 }
290 }
292 #context-pages a.childs {
291 #context-pages a.childs {
293 padding-right: 30px;
292 padding-right: 30px;
294 }
293 }
295 #context-pages a.childs:after {
294 #context-pages a.childs:after {
296 position: absolute;
295 position: absolute;
297 float: right;
296 float: right;
298 padding-left: 5px;
297 padding-left: 5px;
299 padding-right: 5px;
298 padding-right: 5px;
300 }
299 }
301
300
302 #revision-changer:before {
301 #revision-changer:before {
303 position: absolute;
302 position: absolute;
304 top: 0px;
303 top: 0px;
305 right: 0px;
304 right: 0px;
306 border-right: 1px solid rgba(0,0,0,0.1);
305 border-right: 1px solid rgba(0,0,0,0.1);
307 height: 25px;
306 height: 25px;
308 padding-top: 10px;
307 padding-top: 10px;
309 padding-right: 10px;
308 padding-right: 10px;
310 }
309 }
311
310
312 #context-pages li:last-child a {
311 #context-pages li:last-child a {
313 padding-right: 10px;
312 padding-right: 10px;
314 }
313 }
315
314
316 #context-bar #revision-changer {
315 #context-bar #revision-changer {
317 position: relative;
316 position: relative;
318 cursor: pointer;
317 cursor: pointer;
319 border: none;
318 border: none;
320 padding: 0;
319 padding: 0;
321 margin: 0;
320 margin: 0;
322 color: #FFFFFF;
321 color: #FFFFFF;
323 font-size: 0.85em;
322 font-size: 0.85em;
324 padding: 2px 15px;
323 padding: 2px 15px;
325 padding-bottom: 3px;
324 padding-bottom: 3px;
326 padding-right: 30px;
325 padding-right: 30px;
327 border-right: 1px solid rgba(255,255,255,0.1);
326 border-right: 1px solid rgba(255,255,255,0.1);
328 }
327 }
329
328
330 #revision-changer .branch-name,
329 #revision-changer .branch-name,
331 #revision-changer .revision {
330 #revision-changer .revision {
332 display: block;
331 display: block;
333 text-align: center;
332 text-align: center;
334 line-height: 1.5em;
333 line-height: 1.5em;
335 }
334 }
336
335
337 #revision-changer .branch-name {
336 #revision-changer .branch-name {
338 font-weight: bold;
337 font-weight: bold;
339 }
338 }
340
339
341 #revision-changer .revision {
340 #revision-changer .revision {
342 text-transform: uppercase;
341 text-transform: uppercase;
343 }
342 }
@@ -1,4906 +1,4896 b''
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
2 border: 0;
2 border: 0;
3 outline: 0;
3 outline: 0;
4 font-size: 100%;
4 font-size: 100%;
5 vertical-align: baseline;
5 vertical-align: baseline;
6 background: transparent;
6 background: transparent;
7 margin: 0;
7 margin: 0;
8 padding: 0;
8 padding: 0;
9 }
9 }
10
10
11 body {
11 body {
12 line-height: 1;
12 line-height: 1;
13 height: 100%;
13 height: 100%;
14 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
14 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
15 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
16 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
16 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
17 color: #000;
17 color: #000;
18 margin: 0;
18 margin: 0;
19 padding: 0;
19 padding: 0;
20 font-size: 12px;
20 font-size: 12px;
21 }
21 }
22
22
23 ol, ul {
23 ol, ul {
24 list-style: none;
24 list-style: none;
25 }
25 }
26
26
27 blockquote, q {
27 blockquote, q {
28 quotes: none;
28 quotes: none;
29 }
29 }
30
30
31 blockquote:before, blockquote:after, q:before, q:after {
31 blockquote:before, blockquote:after, q:before, q:after {
32 content: none;
32 content: none;
33 }
33 }
34
34
35 :focus {
35 :focus {
36 outline: 0;
36 outline: 0;
37 }
37 }
38
38
39 del {
39 del {
40 text-decoration: line-through;
40 text-decoration: line-through;
41 }
41 }
42
42
43 table {
43 table {
44 border-collapse: collapse;
44 border-collapse: collapse;
45 border-spacing: 0;
45 border-spacing: 0;
46 }
46 }
47
47
48 html {
48 html {
49 height: 100%;
49 height: 100%;
50 }
50 }
51
51
52 a {
52 a {
53 color: #003367;
53 color: #003367;
54 text-decoration: none;
54 text-decoration: none;
55 cursor: pointer;
55 cursor: pointer;
56 }
56 }
57
57
58 a:hover {
58 a:hover {
59 color: #316293;
59 color: #316293;
60 text-decoration: underline;
60 text-decoration: underline;
61 }
61 }
62
62
63 h1, h2, h3, h4, h5, h6,
63 h1, h2, h3, h4, h5, h6,
64 div.h1, div.h2, div.h3, div.h4, div.h5, div.h6 {
64 div.h1, div.h2, div.h3, div.h4, div.h5, div.h6 {
65 color: #292929;
65 color: #292929;
66 font-weight: 700;
66 font-weight: 700;
67 }
67 }
68
68
69 h1, div.h1 {
69 h1, div.h1 {
70 font-size: 22px;
70 font-size: 22px;
71 }
71 }
72
72
73 h2, div.h2 {
73 h2, div.h2 {
74 font-size: 20px;
74 font-size: 20px;
75 }
75 }
76
76
77 h3, div.h3 {
77 h3, div.h3 {
78 font-size: 18px;
78 font-size: 18px;
79 }
79 }
80
80
81 h4, div.h4 {
81 h4, div.h4 {
82 font-size: 16px;
82 font-size: 16px;
83 }
83 }
84
84
85 h5, div.h5 {
85 h5, div.h5 {
86 font-size: 14px;
86 font-size: 14px;
87 }
87 }
88
88
89 h6, div.h6 {
89 h6, div.h6 {
90 font-size: 11px;
90 font-size: 11px;
91 }
91 }
92
92
93 ul.circle {
93 ul.circle {
94 list-style-type: circle;
94 list-style-type: circle;
95 }
95 }
96
96
97 ul.disc {
97 ul.disc {
98 list-style-type: disc;
98 list-style-type: disc;
99 }
99 }
100
100
101 ul.square {
101 ul.square {
102 list-style-type: square;
102 list-style-type: square;
103 }
103 }
104
104
105 ol.lower-roman {
105 ol.lower-roman {
106 list-style-type: lower-roman;
106 list-style-type: lower-roman;
107 }
107 }
108
108
109 ol.upper-roman {
109 ol.upper-roman {
110 list-style-type: upper-roman;
110 list-style-type: upper-roman;
111 }
111 }
112
112
113 ol.lower-alpha {
113 ol.lower-alpha {
114 list-style-type: lower-alpha;
114 list-style-type: lower-alpha;
115 }
115 }
116
116
117 ol.upper-alpha {
117 ol.upper-alpha {
118 list-style-type: upper-alpha;
118 list-style-type: upper-alpha;
119 }
119 }
120
120
121 ol.decimal {
121 ol.decimal {
122 list-style-type: decimal;
122 list-style-type: decimal;
123 }
123 }
124
124
125 div.color {
125 div.color {
126 clear: both;
126 clear: both;
127 overflow: hidden;
127 overflow: hidden;
128 position: absolute;
128 position: absolute;
129 background: #FFF;
129 background: #FFF;
130 margin: 7px 0 0 60px;
130 margin: 7px 0 0 60px;
131 padding: 1px 1px 1px 0;
131 padding: 1px 1px 1px 0;
132 }
132 }
133
133
134 div.color a {
134 div.color a {
135 width: 15px;
135 width: 15px;
136 height: 15px;
136 height: 15px;
137 display: block;
137 display: block;
138 float: left;
138 float: left;
139 margin: 0 0 0 1px;
139 margin: 0 0 0 1px;
140 padding: 0;
140 padding: 0;
141 }
141 }
142
142
143 div.options {
143 div.options {
144 clear: both;
144 clear: both;
145 overflow: hidden;
145 overflow: hidden;
146 position: absolute;
146 position: absolute;
147 background: #FFF;
147 background: #FFF;
148 margin: 7px 0 0 162px;
148 margin: 7px 0 0 162px;
149 padding: 0;
149 padding: 0;
150 }
150 }
151
151
152 div.options a {
152 div.options a {
153 height: 1%;
153 height: 1%;
154 display: block;
154 display: block;
155 text-decoration: none;
155 text-decoration: none;
156 margin: 0;
156 margin: 0;
157 padding: 3px 8px;
157 padding: 3px 8px;
158 }
158 }
159
159
160 .top-left-rounded-corner {
160 .top-left-rounded-corner {
161 -webkit-border-top-left-radius: 8px;
161 -webkit-border-top-left-radius: 8px;
162 -khtml-border-radius-topleft: 8px;
162 -khtml-border-radius-topleft: 8px;
163 border-top-left-radius: 8px;
163 border-top-left-radius: 8px;
164 }
164 }
165
165
166 .top-right-rounded-corner {
166 .top-right-rounded-corner {
167 -webkit-border-top-right-radius: 8px;
167 -webkit-border-top-right-radius: 8px;
168 -khtml-border-radius-topright: 8px;
168 -khtml-border-radius-topright: 8px;
169 border-top-right-radius: 8px;
169 border-top-right-radius: 8px;
170 }
170 }
171
171
172 .bottom-left-rounded-corner {
172 .bottom-left-rounded-corner {
173 -webkit-border-bottom-left-radius: 8px;
173 -webkit-border-bottom-left-radius: 8px;
174 -khtml-border-radius-bottomleft: 8px;
174 -khtml-border-radius-bottomleft: 8px;
175 border-bottom-left-radius: 8px;
175 border-bottom-left-radius: 8px;
176 }
176 }
177
177
178 .bottom-right-rounded-corner {
178 .bottom-right-rounded-corner {
179 -webkit-border-bottom-right-radius: 8px;
179 -webkit-border-bottom-right-radius: 8px;
180 -khtml-border-radius-bottomright: 8px;
180 -khtml-border-radius-bottomright: 8px;
181 border-bottom-right-radius: 8px;
181 border-bottom-right-radius: 8px;
182 }
182 }
183
183
184 .top-left-rounded-corner-mid {
184 .top-left-rounded-corner-mid {
185 -webkit-border-top-left-radius: 4px;
185 -webkit-border-top-left-radius: 4px;
186 -khtml-border-radius-topleft: 4px;
186 -khtml-border-radius-topleft: 4px;
187 border-top-left-radius: 4px;
187 border-top-left-radius: 4px;
188 }
188 }
189
189
190 .top-right-rounded-corner-mid {
190 .top-right-rounded-corner-mid {
191 -webkit-border-top-right-radius: 4px;
191 -webkit-border-top-right-radius: 4px;
192 -khtml-border-radius-topright: 4px;
192 -khtml-border-radius-topright: 4px;
193 border-top-right-radius: 4px;
193 border-top-right-radius: 4px;
194 }
194 }
195
195
196 .bottom-left-rounded-corner-mid {
196 .bottom-left-rounded-corner-mid {
197 -webkit-border-bottom-left-radius: 4px;
197 -webkit-border-bottom-left-radius: 4px;
198 -khtml-border-radius-bottomleft: 4px;
198 -khtml-border-radius-bottomleft: 4px;
199 border-bottom-left-radius: 4px;
199 border-bottom-left-radius: 4px;
200 }
200 }
201
201
202 .bottom-right-rounded-corner-mid {
202 .bottom-right-rounded-corner-mid {
203 -webkit-border-bottom-right-radius: 4px;
203 -webkit-border-bottom-right-radius: 4px;
204 -khtml-border-radius-bottomright: 4px;
204 -khtml-border-radius-bottomright: 4px;
205 border-bottom-right-radius: 4px;
205 border-bottom-right-radius: 4px;
206 }
206 }
207
207
208 .help-block {
208 .help-block {
209 color: #999999;
209 color: #999999;
210 display: block;
210 display: block;
211 margin-bottom: 0;
211 margin-bottom: 0;
212 margin-top: 5px;
212 margin-top: 5px;
213 }
213 }
214
214
215 .empty_data {
215 .empty_data {
216 color: #B9B9B9;
216 color: #B9B9B9;
217 }
217 }
218
218
219 a.permalink {
219 a.permalink {
220 visibility: hidden;
220 visibility: hidden;
221 position: absolute;
221 position: absolute;
222 margin: 3px 4px;
222 margin: 3px 4px;
223 }
223 }
224
224
225 a.permalink:hover {
225 a.permalink:hover {
226 text-decoration: none;
226 text-decoration: none;
227 }
227 }
228
228
229 h1:hover > a.permalink,
229 h1:hover > a.permalink,
230 h2:hover > a.permalink,
230 h2:hover > a.permalink,
231 h3:hover > a.permalink,
231 h3:hover > a.permalink,
232 h4:hover > a.permalink,
232 h4:hover > a.permalink,
233 h5:hover > a.permalink,
233 h5:hover > a.permalink,
234 h6:hover > a.permalink,
234 h6:hover > a.permalink,
235 div:hover > a.permalink {
235 div:hover > a.permalink {
236 visibility: visible;
236 visibility: visible;
237 }
237 }
238
238
239 #header {
239 #header {
240 }
240 }
241 #header ul#logged-user {
241 #header ul#logged-user {
242 margin-bottom: 5px !important;
242 margin-bottom: 5px !important;
243 -webkit-border-radius: 0px 0px 8px 8px;
243 -webkit-border-radius: 0px 0px 8px 8px;
244 -khtml-border-radius: 0px 0px 8px 8px;
244 -khtml-border-radius: 0px 0px 8px 8px;
245 border-radius: 0px 0px 8px 8px;
245 border-radius: 0px 0px 8px 8px;
246 height: 37px;
246 height: 37px;
247 background-color: #003B76;
247 background-color: #003B76;
248 background-repeat: repeat-x;
248 background-repeat: repeat-x;
249 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
249 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
250 background-image: -moz-linear-gradient(top, #003b76, #00376e);
250 background-image: -moz-linear-gradient(top, #003b76, #00376e);
251 background-image: -ms-linear-gradient(top, #003b76, #00376e);
251 background-image: -ms-linear-gradient(top, #003b76, #00376e);
252 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
252 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
253 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
253 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
254 background-image: -o-linear-gradient(top, #003b76, #00376e);
254 background-image: -o-linear-gradient(top, #003b76, #00376e);
255 background-image: linear-gradient(to bottom, #003b76, #00376e);
255 background-image: linear-gradient(to bottom, #003b76, #00376e);
256 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
256 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
257 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
257 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
258 }
258 }
259
259
260 #header ul#logged-user li {
260 #header ul#logged-user li {
261 list-style: none;
261 list-style: none;
262 float: left;
262 float: left;
263 margin: 8px 0 0;
263 margin: 8px 0 0;
264 padding: 4px 12px;
264 padding: 4px 12px;
265 border-left: 1px solid #316293;
265 border-left: 1px solid #316293;
266 }
266 }
267
267
268 #header ul#logged-user li.first {
268 #header ul#logged-user li.first {
269 border-left: none;
269 border-left: none;
270 margin: 4px;
270 margin: 4px;
271 }
271 }
272
272
273 #header ul#logged-user li.first div.gravatar {
273 #header ul#logged-user li.first div.gravatar {
274 margin-top: -2px;
274 margin-top: -2px;
275 }
275 }
276
276
277 #header ul#logged-user li.first div.account {
277 #header ul#logged-user li.first div.account {
278 padding-top: 4px;
278 padding-top: 4px;
279 float: left;
279 float: left;
280 }
280 }
281
281
282 #header ul#logged-user li.last {
282 #header ul#logged-user li.last {
283 border-right: none;
283 border-right: none;
284 }
284 }
285
285
286 #header ul#logged-user li a {
286 #header ul#logged-user li a {
287 color: #fff;
287 color: #fff;
288 font-weight: 700;
288 font-weight: 700;
289 text-decoration: none;
289 text-decoration: none;
290 }
290 }
291
291
292 #header ul#logged-user li a:hover {
292 #header ul#logged-user li a:hover {
293 text-decoration: underline;
293 text-decoration: underline;
294 }
294 }
295
295
296 #header ul#logged-user li.highlight a {
296 #header ul#logged-user li.highlight a {
297 color: #fff;
297 color: #fff;
298 }
298 }
299
299
300 #header ul#logged-user li.highlight a:hover {
300 #header ul#logged-user li.highlight a:hover {
301 color: #FFF;
301 color: #FFF;
302 }
302 }
303 #header-dd {
303 #header-dd {
304 clear: both;
304 clear: both;
305 position: fixed !important;
305 position: fixed !important;
306 background-color: #003B76;
306 background-color: #003B76;
307 opacity: 0.01;
307 opacity: 0.01;
308 cursor: pointer;
308 cursor: pointer;
309 min-height: 10px;
309 min-height: 10px;
310 width: 100% !important;
310 width: 100% !important;
311 -webkit-border-radius: 0px 0px 4px 4px;
311 -webkit-border-radius: 0px 0px 4px 4px;
312 -khtml-border-radius: 0px 0px 4px 4px;
312 -khtml-border-radius: 0px 0px 4px 4px;
313 border-radius: 0px 0px 4px 4px;
313 border-radius: 0px 0px 4px 4px;
314 }
314 }
315
315
316 #header-dd:hover {
316 #header-dd:hover {
317 opacity: 0.2;
317 opacity: 0.2;
318 -webkit-transition: opacity 0.5s ease-in-out;
318 -webkit-transition: opacity 0.5s ease-in-out;
319 -moz-transition: opacity 0.5s ease-in-out;
319 -moz-transition: opacity 0.5s ease-in-out;
320 transition: opacity 0.5s ease-in-out;
320 transition: opacity 0.5s ease-in-out;
321 }
321 }
322
322
323 #header #header-inner {
323 #header #header-inner {
324 min-height: 44px;
324 min-height: 44px;
325 clear: both;
325 clear: both;
326 position: relative;
326 position: relative;
327 background-color: #003B76;
327 background-color: #003B76;
328 background-repeat: repeat-x;
328 background-repeat: repeat-x;
329 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
329 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
330 background-image: -moz-linear-gradient(top, #003b76, #00376e);
330 background-image: -moz-linear-gradient(top, #003b76, #00376e);
331 background-image: -ms-linear-gradient(top, #003b76, #00376e);
331 background-image: -ms-linear-gradient(top, #003b76, #00376e);
332 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),color-stop(100%, #00376e) );
332 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),color-stop(100%, #00376e) );
333 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
333 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
334 background-image: -o-linear-gradient(top, #003b76, #00376e);
334 background-image: -o-linear-gradient(top, #003b76, #00376e);
335 background-image: linear-gradient(to bottom, #003b76, #00376e);
335 background-image: linear-gradient(to bottom, #003b76, #00376e);
336 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
336 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
337 margin: 0;
337 margin: 0;
338 padding: 0;
338 padding: 0;
339 display: block;
339 display: block;
340 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
340 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
341 -webkit-border-radius: 0px 0px 4px 4px;
341 -webkit-border-radius: 0px 0px 4px 4px;
342 -khtml-border-radius: 0px 0px 4px 4px;
342 -khtml-border-radius: 0px 0px 4px 4px;
343 border-radius: 0px 0px 4px 4px;
343 border-radius: 0px 0px 4px 4px;
344 }
344 }
345 #header #header-inner.hover {
345 #header #header-inner.hover {
346 width: 100% !important;
346 width: 100% !important;
347 -webkit-border-radius: 0px 0px 0px 0px;
347 -webkit-border-radius: 0px 0px 0px 0px;
348 -khtml-border-radius: 0px 0px 0px 0px;
348 -khtml-border-radius: 0px 0px 0px 0px;
349 border-radius: 0px 0px 0px 0px;
349 border-radius: 0px 0px 0px 0px;
350 position: fixed !important;
350 position: fixed !important;
351 z-index: 10000;
351 z-index: 10000;
352 }
352 }
353
353
354 .ie7 #header #header-inner.hover,
354 .ie7 #header #header-inner.hover,
355 .ie8 #header #header-inner.hover,
355 .ie8 #header #header-inner.hover,
356 .ie9 #header #header-inner.hover
356 .ie9 #header #header-inner.hover
357 {
357 {
358 z-index: auto !important;
358 z-index: auto !important;
359 }
359 }
360
360
361 .header-pos-fix, .anchor {
361 .header-pos-fix, .anchor {
362 margin-top: -46px;
362 margin-top: -46px;
363 padding-top: 46px;
363 padding-top: 46px;
364 }
364 }
365
365
366 #header #header-inner #home a {
366 #header #header-inner #home a {
367 height: 40px;
367 height: 40px;
368 width: 46px;
368 width: 46px;
369 display: block;
369 display: block;
370 background: url("../images/button_home.png");
370 background: url("../images/button_home.png");
371 background-position: 0 0;
371 background-position: 0 0;
372 margin: 0;
372 margin: 0;
373 padding: 0;
373 padding: 0;
374 }
374 }
375
375
376 #header #header-inner #home a:hover {
376 #header #header-inner #home a:hover {
377 background-position: 0 -40px;
377 background-position: 0 -40px;
378 }
378 }
379
379
380 #header #header-inner #logo {
380 #header #header-inner #logo {
381 float: left;
381 float: left;
382 position: absolute;
382 position: absolute;
383 }
383 }
384
384
385 #header #header-inner #logo h1 {
385 #header #header-inner #logo h1 {
386 color: #FFF;
386 color: #FFF;
387 font-size: 20px;
387 font-size: 20px;
388 margin: 12px 0 0 13px;
388 margin: 12px 0 0 13px;
389 padding: 0;
389 padding: 0;
390 }
390 }
391
391
392 #header #header-inner #logo a {
392 #header #header-inner #logo a {
393 color: #fff;
393 color: #fff;
394 text-decoration: none;
394 text-decoration: none;
395 }
395 }
396
396
397 #header #header-inner #logo a:hover {
397 #header #header-inner #logo a:hover {
398 color: #bfe3ff;
398 color: #bfe3ff;
399 }
399 }
400
400
401 #header #header-inner #quick {
401 #header #header-inner #quick {
402 position: relative;
402 position: relative;
403 float: right;
403 float: right;
404 list-style-type: none;
404 list-style-type: none;
405 list-style-position: outside;
405 list-style-position: outside;
406 margin: 4px 8px 0 0;
406 margin: 4px 8px 0 0;
407 padding: 0;
407 padding: 0;
408 border-radius: 4px;
408 border-radius: 4px;
409 }
409 }
410
410
411 #header #header-inner #quick li span.short {
411 #header #header-inner #quick li span.short {
412 padding: 9px 6px 8px 6px;
412 padding: 9px 6px 8px 6px;
413 }
413 }
414
414
415 #header #header-inner #quick li span {
415 #header #header-inner #quick li span {
416 display: inline;
416 display: inline;
417 margin: 0;
417 margin: 0;
418 }
418 }
419
419
420 #header #header-inner #quick li span.normal {
420 #header #header-inner #quick li span.normal {
421 border: none;
421 border: none;
422 padding: 10px 12px 8px;
422 padding: 10px 12px 8px;
423 }
423 }
424
424
425 #header #header-inner #quick li span.icon {
425 #header #header-inner #quick li span.icon {
426 border-left: none;
426 border-left: none;
427 padding-left: 10px;
427 padding-left: 10px;
428 }
428 }
429
429
430 #header #header-inner #quick li span.icon_short {
430 #header #header-inner #quick li span.icon_short {
431 top: 0;
431 top: 0;
432 left: 0;
432 left: 0;
433 border-left: none;
433 border-left: none;
434 border-right: 1px solid #2e5c89;
434 border-right: 1px solid #2e5c89;
435 padding: 8px 6px 4px;
435 padding: 8px 6px 4px;
436 }
436 }
437
437
438 #header #header-inner #quick li span.icon img, #header #header-inner #quick li span.icon_short img {
438 #header #header-inner #quick li span.icon img, #header #header-inner #quick li span.icon_short img {
439 vertical-align: middle;
439 vertical-align: middle;
440 margin-bottom: 2px;
440 margin-bottom: 2px;
441 }
441 }
442
442
443 #header #header-inner #quick ul.repo_switcher {
443 #header #header-inner #quick ul.repo_switcher {
444 max-height: 275px;
444 max-height: 275px;
445 overflow-x: hidden;
445 overflow-x: hidden;
446 overflow-y: auto;
446 overflow-y: auto;
447 }
447 }
448
448
449 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
449 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
450 padding: 2px 3px;
450 padding: 2px 3px;
451 padding-right: 17px;
451 padding-right: 17px;
452 }
452 }
453
453
454 #header #header-inner #quick ul.repo_switcher li.qfilter_rs input {
454 #header #header-inner #quick ul.repo_switcher li.qfilter_rs input {
455 width: 100%;
455 width: 100%;
456 border-radius: 10px;
456 border-radius: 10px;
457 padding: 2px 7px;
457 padding: 2px 7px;
458 }
458 }
459
459
460 #header #header-inner #quick .repo_switcher_type {
460 #header #header-inner #quick .repo_switcher_type {
461 position: absolute;
461 position: absolute;
462 left: 0;
462 left: 0;
463 top: 9px;
463 top: 9px;
464 margin: 0px 2px 0px 2px;
464 margin: 0px 2px 0px 2px;
465 }
465 }
466
466
467 #header #header-inner #quick li ul li a.journal, #header #header-inner #quick li ul li a.journal:hover {
467 #header #header-inner #quick li ul li a.journal, #header #header-inner #quick li ul li a.journal:hover {
468 background-image: url("../images/icons/book.png");
468 background-image: url("../images/icons/book.png");
469 }
469 }
470
470
471 #header #header-inner #quick li ul li a.private_repo, #header #header-inner #quick li ul li a.private_repo:hover {
471 #header #header-inner #quick li ul li a.private_repo, #header #header-inner #quick li ul li a.private_repo:hover {
472 background-image: url("../images/icons/lock.png")
472 background-image: url("../images/icons/lock.png")
473 }
473 }
474
474
475 #header #header-inner #quick li ul li a.public_repo, #header #header-inner #quick li ul li a.public_repo:hover {
475 #header #header-inner #quick li ul li a.public_repo, #header #header-inner #quick li ul li a.public_repo:hover {
476 background-image: url("../images/icons/lock_open.png");
476 background-image: url("../images/icons/lock_open.png");
477 }
477 }
478
478
479 #header #header-inner #quick li ul li a.hg, #header #header-inner #quick li ul li a.hg:hover {
479 #header #header-inner #quick li ul li a.hg, #header #header-inner #quick li ul li a.hg:hover {
480 background-image: url("../images/icons/hgicon.png");
480 background-image: url("../images/icons/hgicon.png");
481 padding-left: 42px;
481 padding-left: 42px;
482 background-position: 20px 9px;
482 background-position: 20px 9px;
483 }
483 }
484
484
485 #header #header-inner #quick li ul li a.git, #header #header-inner #quick li ul li a.git:hover {
485 #header #header-inner #quick li ul li a.git, #header #header-inner #quick li ul li a.git:hover {
486 background-image: url("../images/icons/giticon.png");
486 background-image: url("../images/icons/giticon.png");
487 padding-left: 42px;
487 padding-left: 42px;
488 background-position: 20px 9px;
488 background-position: 20px 9px;
489 }
489 }
490
490
491 #header #header-inner #quick li ul li a.repos, #header #header-inner #quick li ul li a.repos:hover {
491 #header #header-inner #quick li ul li a.repos, #header #header-inner #quick li ul li a.repos:hover {
492 background-image: url("../images/icons/database_edit.png");
492 background-image: url("../images/icons/database_edit.png");
493 }
493 }
494
494
495 #header #header-inner #quick li ul li a.repos_groups, #header #header-inner #quick li ul li a.repos_groups:hover {
495 #header #header-inner #quick li ul li a.repos_groups, #header #header-inner #quick li ul li a.repos_groups:hover {
496 background-image: url("../images/icons/database_link.png");
496 background-image: url("../images/icons/database_link.png");
497 }
497 }
498
498
499 #header #header-inner #quick li ul li a.users, #header #header-inner #quick li ul li a.users:hover {
499 #header #header-inner #quick li ul li a.users, #header #header-inner #quick li ul li a.users:hover {
500 background-image: url("../images/icons/user_edit.png");
500 background-image: url("../images/icons/user_edit.png");
501 }
501 }
502
502
503 #header #header-inner #quick li ul li a.groups, #header #header-inner #quick li ul li a.groups:hover {
503 #header #header-inner #quick li ul li a.groups, #header #header-inner #quick li ul li a.groups:hover {
504 background-image: url("../images/icons/group_edit.png");
504 background-image: url("../images/icons/group_edit.png");
505 }
505 }
506
506
507 #header #header-inner #quick li ul li a.defaults, #header #header-inner #quick li ul li a.defaults:hover {
507 #header #header-inner #quick li ul li a.defaults, #header #header-inner #quick li ul li a.defaults:hover {
508 background-image: url("../images/icons/wrench.png");
508 background-image: url("../images/icons/wrench.png");
509 }
509 }
510
510
511 #header #header-inner #quick li ul li a.settings, #header #header-inner #quick li ul li a.settings:hover {
511 #header #header-inner #quick li ul li a.settings, #header #header-inner #quick li ul li a.settings:hover {
512 background-image: url("../images/icons/cog.png");
512 background-image: url("../images/icons/cog.png");
513 }
513 }
514
514
515 #header #header-inner #quick li ul li a.permissions, #header #header-inner #quick li ul li a.permissions:hover {
515 #header #header-inner #quick li ul li a.permissions, #header #header-inner #quick li ul li a.permissions:hover {
516 background-image: url("../images/icons/key.png");
516 background-image: url("../images/icons/key.png");
517 }
517 }
518
518
519 #header #header-inner #quick li ul li a.ldap, #header #header-inner #quick li ul li a.ldap:hover {
519 #header #header-inner #quick li ul li a.ldap, #header #header-inner #quick li ul li a.ldap:hover {
520 background-image: url("../images/icons/server_key.png");
520 background-image: url("../images/icons/server_key.png");
521 }
521 }
522
522
523 #header #header-inner #quick li ul li a.fork, #header #header-inner #quick li ul li a.fork:hover {
523 #header #header-inner #quick li ul li a.fork, #header #header-inner #quick li ul li a.fork:hover {
524 background-image: url("../images/icons/arrow_divide.png");
524 background-image: url("../images/icons/arrow_divide.png");
525 }
525 }
526
526
527 #header #header-inner #quick li ul li a.locking_add, #header #header-inner #quick li ul li a.locking_add:hover {
527 #header #header-inner #quick li ul li a.locking_add, #header #header-inner #quick li ul li a.locking_add:hover {
528 background-image: url("../images/icons/lock_add.png");
528 background-image: url("../images/icons/lock_add.png");
529 }
529 }
530
530
531 #header #header-inner #quick li ul li a.locking_del, #header #header-inner #quick li ul li a.locking_del:hover {
531 #header #header-inner #quick li ul li a.locking_del, #header #header-inner #quick li ul li a.locking_del:hover {
532 background-image: url("../images/icons/lock_delete.png");
532 background-image: url("../images/icons/lock_delete.png");
533 }
533 }
534
534
535 #header #header-inner #quick li ul li a.pull_request, #header #header-inner #quick li ul li a.pull_request:hover {
535 #header #header-inner #quick li ul li a.pull_request, #header #header-inner #quick li ul li a.pull_request:hover {
536 background-image: url("../images/icons/arrow_join.png") ;
536 background-image: url("../images/icons/arrow_join.png") ;
537 }
537 }
538
538
539 #header #header-inner #quick li ul li a.compare_request, #header #header-inner #quick li ul li a.compare_request:hover {
539 #header #header-inner #quick li ul li a.compare_request, #header #header-inner #quick li ul li a.compare_request:hover {
540 background-image: url("../images/icons/arrow_inout.png");
540 background-image: url("../images/icons/arrow_inout.png");
541 }
541 }
542
542
543 #header #header-inner #quick li ul li a.search, #header #header-inner #quick li ul li a.search:hover {
543 #header #header-inner #quick li ul li a.search, #header #header-inner #quick li ul li a.search:hover {
544 background-image: url("../images/icons/search_16.png");
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 #header #header-inner #quick li ul li a.delete, #header #header-inner #quick li ul li a.delete:hover {
547 #header #header-inner #quick li ul li a.delete, #header #header-inner #quick li ul li a.delete:hover {
552 background-image: url("../images/icons/delete.png");
548 background-image: url("../images/icons/delete.png");
553 }
549 }
554
550
555 #header #header-inner #quick li ul li a.branches, #header #header-inner #quick li ul li a.branches:hover {
551 #header #header-inner #quick li ul li a.branches, #header #header-inner #quick li ul li a.branches:hover {
556 background-image: url("../images/icons/arrow_branch.png");
552 background-image: url("../images/icons/arrow_branch.png");
557 }
553 }
558
554
559 #header #header-inner #quick li ul li a.tags,
555 #header #header-inner #quick li ul li a.tags,
560 #header #header-inner #quick li ul li a.tags:hover {
556 #header #header-inner #quick li ul li a.tags:hover {
561 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
557 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
562 width: 167px;
558 width: 167px;
563 margin: 0;
559 margin: 0;
564 padding: 12px 9px 7px 24px;
560 padding: 12px 9px 7px 24px;
565 }
561 }
566
562
567 #header #header-inner #quick li ul li a.bookmarks,
563 #header #header-inner #quick li ul li a.bookmarks,
568 #header #header-inner #quick li ul li a.bookmarks:hover {
564 #header #header-inner #quick li ul li a.bookmarks:hover {
569 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
565 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
570 width: 167px;
566 width: 167px;
571 margin: 0;
567 margin: 0;
572 padding: 12px 9px 7px 24px;
568 padding: 12px 9px 7px 24px;
573 }
569 }
574
570
575 #header #header-inner #quick li ul li a.admin,
571 #header #header-inner #quick li ul li a.admin,
576 #header #header-inner #quick li ul li a.admin:hover {
572 #header #header-inner #quick li ul li a.admin:hover {
577 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
573 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
578 width: 167px;
574 width: 167px;
579 margin: 0;
575 margin: 0;
580 padding: 12px 9px 7px 24px;
576 padding: 12px 9px 7px 24px;
581 }
577 }
582
578
583 .groups_breadcrumbs a {
579 .groups_breadcrumbs a {
584 color: #fff;
580 color: #fff;
585 }
581 }
586
582
587 .groups_breadcrumbs a:hover {
583 .groups_breadcrumbs a:hover {
588 color: #bfe3ff;
584 color: #bfe3ff;
589 text-decoration: none;
585 text-decoration: none;
590 }
586 }
591
587
592 td.quick_repo_menu {
588 td.quick_repo_menu {
593 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
589 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
594 cursor: pointer;
590 cursor: pointer;
595 width: 8px;
591 width: 8px;
596 border: 1px solid transparent;
592 border: 1px solid transparent;
597 }
593 }
598
594
599 td.quick_repo_menu.active {
595 td.quick_repo_menu.active {
600 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
596 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
601 border: 1px solid #003367;
597 border: 1px solid #003367;
602 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
598 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
603 cursor: pointer;
599 cursor: pointer;
604 }
600 }
605
601
606 td.quick_repo_menu .menu_items {
602 td.quick_repo_menu .menu_items {
607 margin-top: 10px;
603 margin-top: 10px;
608 margin-left: -6px;
604 margin-left: -6px;
609 width: 150px;
605 width: 150px;
610 position: absolute;
606 position: absolute;
611 background-color: #FFF;
607 background-color: #FFF;
612 background: none repeat scroll 0 0 #FFFFFF;
608 background: none repeat scroll 0 0 #FFFFFF;
613 border-color: #003367 #666666 #666666;
609 border-color: #003367 #666666 #666666;
614 border-right: 1px solid #666666;
610 border-right: 1px solid #666666;
615 border-style: solid;
611 border-style: solid;
616 border-width: 1px;
612 border-width: 1px;
617 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
613 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
618 border-top-style: none;
614 border-top-style: none;
619 }
615 }
620
616
621 td.quick_repo_menu .menu_items li {
617 td.quick_repo_menu .menu_items li {
622 padding: 0 !important;
618 padding: 0 !important;
623 }
619 }
624
620
625 td.quick_repo_menu .menu_items a {
621 td.quick_repo_menu .menu_items a {
626 display: block;
622 display: block;
627 padding: 4px 12px 4px 8px;
623 padding: 4px 12px 4px 8px;
628 }
624 }
629
625
630 td.quick_repo_menu .menu_items a:hover {
626 td.quick_repo_menu .menu_items a:hover {
631 background-color: #EEE;
627 background-color: #EEE;
632 text-decoration: none;
628 text-decoration: none;
633 }
629 }
634
630
635 td.quick_repo_menu .menu_items .icon img {
631 td.quick_repo_menu .menu_items .icon img {
636 margin-bottom: -2px;
632 margin-bottom: -2px;
637 }
633 }
638
634
639 td.quick_repo_menu .menu_items.hidden {
635 td.quick_repo_menu .menu_items.hidden {
640 display: none;
636 display: none;
641 }
637 }
642
638
643 .yui-dt-first th {
639 .yui-dt-first th {
644 text-align: left;
640 text-align: left;
645 }
641 }
646
642
647 /*
643 /*
648 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
644 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
649 Code licensed under the BSD License:
645 Code licensed under the BSD License:
650 http://developer.yahoo.com/yui/license.html
646 http://developer.yahoo.com/yui/license.html
651 version: 2.9.0
647 version: 2.9.0
652 */
648 */
653 .yui-skin-sam .yui-dt-mask {
649 .yui-skin-sam .yui-dt-mask {
654 position: absolute;
650 position: absolute;
655 z-index: 9500;
651 z-index: 9500;
656 }
652 }
657 .yui-dt-tmp {
653 .yui-dt-tmp {
658 position: absolute;
654 position: absolute;
659 left: -9000px;
655 left: -9000px;
660 }
656 }
661 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
657 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
662 .yui-dt-scrollable .yui-dt-hd {
658 .yui-dt-scrollable .yui-dt-hd {
663 overflow: hidden;
659 overflow: hidden;
664 position: relative;
660 position: relative;
665 }
661 }
666 .yui-dt-scrollable .yui-dt-bd thead tr,
662 .yui-dt-scrollable .yui-dt-bd thead tr,
667 .yui-dt-scrollable .yui-dt-bd thead th {
663 .yui-dt-scrollable .yui-dt-bd thead th {
668 position: absolute;
664 position: absolute;
669 left: -1500px;
665 left: -1500px;
670 }
666 }
671 .yui-dt-scrollable tbody { -moz-outline: 0 }
667 .yui-dt-scrollable tbody { -moz-outline: 0 }
672 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
668 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
673 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
669 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
674 .yui-dt-coltarget {
670 .yui-dt-coltarget {
675 position: absolute;
671 position: absolute;
676 z-index: 999;
672 z-index: 999;
677 }
673 }
678 .yui-dt-hd { zoom: 1 }
674 .yui-dt-hd { zoom: 1 }
679 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
675 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
680 .yui-dt-resizer {
676 .yui-dt-resizer {
681 position: absolute;
677 position: absolute;
682 right: 0;
678 right: 0;
683 bottom: 0;
679 bottom: 0;
684 height: 100%;
680 height: 100%;
685 cursor: e-resize;
681 cursor: e-resize;
686 cursor: col-resize;
682 cursor: col-resize;
687 background-color: #CCC;
683 background-color: #CCC;
688 opacity: 0;
684 opacity: 0;
689 filter: alpha(opacity=0);
685 filter: alpha(opacity=0);
690 }
686 }
691 .yui-dt-resizerproxy {
687 .yui-dt-resizerproxy {
692 visibility: hidden;
688 visibility: hidden;
693 position: absolute;
689 position: absolute;
694 z-index: 9000;
690 z-index: 9000;
695 background-color: #CCC;
691 background-color: #CCC;
696 opacity: 0;
692 opacity: 0;
697 filter: alpha(opacity=0);
693 filter: alpha(opacity=0);
698 }
694 }
699 th.yui-dt-hidden .yui-dt-liner,
695 th.yui-dt-hidden .yui-dt-liner,
700 td.yui-dt-hidden .yui-dt-liner,
696 td.yui-dt-hidden .yui-dt-liner,
701 th.yui-dt-hidden .yui-dt-resizer { display: none }
697 th.yui-dt-hidden .yui-dt-resizer { display: none }
702 .yui-dt-editor,
698 .yui-dt-editor,
703 .yui-dt-editor-shim {
699 .yui-dt-editor-shim {
704 position: absolute;
700 position: absolute;
705 z-index: 9000;
701 z-index: 9000;
706 }
702 }
707 .yui-skin-sam .yui-dt table {
703 .yui-skin-sam .yui-dt table {
708 margin: 0;
704 margin: 0;
709 padding: 0;
705 padding: 0;
710 font-family: arial;
706 font-family: arial;
711 font-size: inherit;
707 font-size: inherit;
712 border-collapse: separate;
708 border-collapse: separate;
713 *border-collapse: collapse;
709 *border-collapse: collapse;
714 border-spacing: 0;
710 border-spacing: 0;
715 border: 1px solid #7f7f7f;
711 border: 1px solid #7f7f7f;
716 }
712 }
717 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
713 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
718 .yui-skin-sam .yui-dt caption {
714 .yui-skin-sam .yui-dt caption {
719 color: #000;
715 color: #000;
720 font-size: 85%;
716 font-size: 85%;
721 font-weight: normal;
717 font-weight: normal;
722 font-style: italic;
718 font-style: italic;
723 line-height: 1;
719 line-height: 1;
724 padding: 1em 0;
720 padding: 1em 0;
725 text-align: center;
721 text-align: center;
726 }
722 }
727 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
723 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
728 .yui-skin-sam .yui-dt th,
724 .yui-skin-sam .yui-dt th,
729 .yui-skin-sam .yui-dt th a {
725 .yui-skin-sam .yui-dt th a {
730 font-weight: normal;
726 font-weight: normal;
731 text-decoration: none;
727 text-decoration: none;
732 color: #000;
728 color: #000;
733 vertical-align: bottom;
729 vertical-align: bottom;
734 }
730 }
735 .yui-skin-sam .yui-dt th {
731 .yui-skin-sam .yui-dt th {
736 margin: 0;
732 margin: 0;
737 padding: 0;
733 padding: 0;
738 border: 0;
734 border: 0;
739 border-right: 1px solid #cbcbcb;
735 border-right: 1px solid #cbcbcb;
740 }
736 }
741 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
737 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
742 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
738 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
743 .yui-skin-sam .yui-dt-liner {
739 .yui-skin-sam .yui-dt-liner {
744 margin: 0;
740 margin: 0;
745 padding: 0;
741 padding: 0;
746 }
742 }
747 .yui-skin-sam .yui-dt-coltarget {
743 .yui-skin-sam .yui-dt-coltarget {
748 width: 5px;
744 width: 5px;
749 background-color: red;
745 background-color: red;
750 }
746 }
751 .yui-skin-sam .yui-dt td {
747 .yui-skin-sam .yui-dt td {
752 margin: 0;
748 margin: 0;
753 padding: 0;
749 padding: 0;
754 border: 0;
750 border: 0;
755 border-right: 1px solid #cbcbcb;
751 border-right: 1px solid #cbcbcb;
756 text-align: left;
752 text-align: left;
757 }
753 }
758 .yui-skin-sam .yui-dt-list td { border-right: 0 }
754 .yui-skin-sam .yui-dt-list td { border-right: 0 }
759 .yui-skin-sam .yui-dt-resizer { width: 6px }
755 .yui-skin-sam .yui-dt-resizer { width: 6px }
760 .yui-skin-sam .yui-dt-mask {
756 .yui-skin-sam .yui-dt-mask {
761 background-color: #000;
757 background-color: #000;
762 opacity: .25;
758 opacity: .25;
763 filter: alpha(opacity=25);
759 filter: alpha(opacity=25);
764 }
760 }
765 .yui-skin-sam .yui-dt-message { background-color: #FFF }
761 .yui-skin-sam .yui-dt-message { background-color: #FFF }
766 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
762 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
767 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
763 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
768 border-left: 1px solid #7f7f7f;
764 border-left: 1px solid #7f7f7f;
769 border-top: 1px solid #7f7f7f;
765 border-top: 1px solid #7f7f7f;
770 border-right: 1px solid #7f7f7f;
766 border-right: 1px solid #7f7f7f;
771 }
767 }
772 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
768 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
773 border-left: 1px solid #7f7f7f;
769 border-left: 1px solid #7f7f7f;
774 border-bottom: 1px solid #7f7f7f;
770 border-bottom: 1px solid #7f7f7f;
775 border-right: 1px solid #7f7f7f;
771 border-right: 1px solid #7f7f7f;
776 background-color: #FFF;
772 background-color: #FFF;
777 }
773 }
778 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
774 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
779 .yui-skin-sam th.yui-dt-asc,
775 .yui-skin-sam th.yui-dt-asc,
780 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
776 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
781 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
777 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
782 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
778 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
783 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
779 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
784 tbody .yui-dt-editable { cursor: pointer }
780 tbody .yui-dt-editable { cursor: pointer }
785 .yui-dt-editor {
781 .yui-dt-editor {
786 text-align: left;
782 text-align: left;
787 background-color: #f2f2f2;
783 background-color: #f2f2f2;
788 border: 1px solid #808080;
784 border: 1px solid #808080;
789 padding: 6px;
785 padding: 6px;
790 }
786 }
791 .yui-dt-editor label {
787 .yui-dt-editor label {
792 padding-left: 4px;
788 padding-left: 4px;
793 padding-right: 6px;
789 padding-right: 6px;
794 }
790 }
795 .yui-dt-editor .yui-dt-button {
791 .yui-dt-editor .yui-dt-button {
796 padding-top: 6px;
792 padding-top: 6px;
797 text-align: right;
793 text-align: right;
798 }
794 }
799 .yui-dt-editor .yui-dt-button button {
795 .yui-dt-editor .yui-dt-button button {
800 background: url(../images/sprite.png) repeat-x 0 0;
796 background: url(../images/sprite.png) repeat-x 0 0;
801 border: 1px solid #999;
797 border: 1px solid #999;
802 width: 4em;
798 width: 4em;
803 height: 1.8em;
799 height: 1.8em;
804 margin-left: 6px;
800 margin-left: 6px;
805 }
801 }
806 .yui-dt-editor .yui-dt-button button.yui-dt-default {
802 .yui-dt-editor .yui-dt-button button.yui-dt-default {
807 background: url(../images/sprite.png) repeat-x 0 -1400px;
803 background: url(../images/sprite.png) repeat-x 0 -1400px;
808 background-color: #5584e0;
804 background-color: #5584e0;
809 border: 1px solid #304369;
805 border: 1px solid #304369;
810 color: #FFF;
806 color: #FFF;
811 }
807 }
812 .yui-dt-editor .yui-dt-button button:hover {
808 .yui-dt-editor .yui-dt-button button:hover {
813 background: url(../images/sprite.png) repeat-x 0 -1300px;
809 background: url(../images/sprite.png) repeat-x 0 -1300px;
814 color: #000;
810 color: #000;
815 }
811 }
816 .yui-dt-editor .yui-dt-button button:active {
812 .yui-dt-editor .yui-dt-button button:active {
817 background: url(../images/sprite.png) repeat-x 0 -1700px;
813 background: url(../images/sprite.png) repeat-x 0 -1700px;
818 color: #000;
814 color: #000;
819 }
815 }
820 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
816 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
821 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
817 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
822 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
818 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
823 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
819 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
824 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
820 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
825 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
821 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
826 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
822 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
827 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
823 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
828 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
824 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
829 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
825 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
830 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
826 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
831 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
827 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
832 .yui-skin-sam th.yui-dt-highlighted,
828 .yui-skin-sam th.yui-dt-highlighted,
833 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
829 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
834 .yui-skin-sam tr.yui-dt-highlighted,
830 .yui-skin-sam tr.yui-dt-highlighted,
835 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
831 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
836 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
832 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
837 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
833 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
838 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
834 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
839 cursor: pointer;
835 cursor: pointer;
840 background-color: #b2d2ff;
836 background-color: #b2d2ff;
841 }
837 }
842 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
838 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
843 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
839 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
844 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
840 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
845 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
841 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
846 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
842 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
847 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
843 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
848 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
844 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
849 cursor: pointer;
845 cursor: pointer;
850 background-color: #b2d2ff;
846 background-color: #b2d2ff;
851 }
847 }
852 .yui-skin-sam th.yui-dt-selected,
848 .yui-skin-sam th.yui-dt-selected,
853 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
849 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
854 .yui-skin-sam tr.yui-dt-selected td,
850 .yui-skin-sam tr.yui-dt-selected td,
855 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
851 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
856 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
852 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
857 background-color: #426fd9;
853 background-color: #426fd9;
858 color: #FFF;
854 color: #FFF;
859 }
855 }
860 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
856 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
861 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
857 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
862 background-color: #446cd7;
858 background-color: #446cd7;
863 color: #FFF;
859 color: #FFF;
864 }
860 }
865 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
861 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
866 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
862 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
867 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
863 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
868 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
864 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
869 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
865 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
870 background-color: #426fd9;
866 background-color: #426fd9;
871 color: #FFF;
867 color: #FFF;
872 }
868 }
873 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
869 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
874 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
870 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
875 background-color: #446cd7;
871 background-color: #446cd7;
876 color: #FFF;
872 color: #FFF;
877 }
873 }
878 .yui-skin-sam .yui-dt-paginator {
874 .yui-skin-sam .yui-dt-paginator {
879 display: block;
875 display: block;
880 margin: 6px 0;
876 margin: 6px 0;
881 white-space: nowrap;
877 white-space: nowrap;
882 }
878 }
883 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
879 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
884 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
880 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
885 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
881 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
886 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
882 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
887 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
883 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
888 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
884 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
889 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
885 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
890 .yui-skin-sam a.yui-dt-page {
886 .yui-skin-sam a.yui-dt-page {
891 border: 1px solid #cbcbcb;
887 border: 1px solid #cbcbcb;
892 padding: 2px 6px;
888 padding: 2px 6px;
893 text-decoration: none;
889 text-decoration: none;
894 background-color: #fff;
890 background-color: #fff;
895 }
891 }
896 .yui-skin-sam .yui-dt-selected {
892 .yui-skin-sam .yui-dt-selected {
897 border: 1px solid #fff;
893 border: 1px solid #fff;
898 background-color: #fff;
894 background-color: #fff;
899 }
895 }
900
896
901 #content #left {
897 #content #left {
902 left: 0;
898 left: 0;
903 width: 280px;
899 width: 280px;
904 position: absolute;
900 position: absolute;
905 }
901 }
906
902
907 #content #right {
903 #content #right {
908 margin: 0 60px 10px 290px;
904 margin: 0 60px 10px 290px;
909 }
905 }
910
906
911 #content div.box {
907 #content div.box {
912 clear: both;
908 clear: both;
913 background: #fff;
909 background: #fff;
914 margin: 0 0 10px;
910 margin: 0 0 10px;
915 padding: 0 0 10px;
911 padding: 0 0 10px;
916 -webkit-border-radius: 4px 4px 4px 4px;
912 -webkit-border-radius: 4px 4px 4px 4px;
917 -khtml-border-radius: 4px 4px 4px 4px;
913 -khtml-border-radius: 4px 4px 4px 4px;
918 border-radius: 4px 4px 4px 4px;
914 border-radius: 4px 4px 4px 4px;
919 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
915 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
920 }
916 }
921
917
922 #content div.box-left {
918 #content div.box-left {
923 width: 49%;
919 width: 49%;
924 clear: none;
920 clear: none;
925 float: left;
921 float: left;
926 margin: 0 0 10px;
922 margin: 0 0 10px;
927 }
923 }
928
924
929 #content div.box-right {
925 #content div.box-right {
930 width: 49%;
926 width: 49%;
931 clear: none;
927 clear: none;
932 float: right;
928 float: right;
933 margin: 0 0 10px;
929 margin: 0 0 10px;
934 }
930 }
935
931
936 #content div.box div.title {
932 #content div.box div.title {
937 clear: both;
933 clear: both;
938 overflow: hidden;
934 overflow: hidden;
939 background-color: #003B76;
935 background-color: #003B76;
940 background-repeat: repeat-x;
936 background-repeat: repeat-x;
941 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
937 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
942 background-image: -moz-linear-gradient(top, #003b76, #00376e);
938 background-image: -moz-linear-gradient(top, #003b76, #00376e);
943 background-image: -ms-linear-gradient(top, #003b76, #00376e);
939 background-image: -ms-linear-gradient(top, #003b76, #00376e);
944 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
940 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
945 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
941 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
946 background-image: -o-linear-gradient(top, #003b76, #00376e);
942 background-image: -o-linear-gradient(top, #003b76, #00376e);
947 background-image: linear-gradient(to bottom, #003b76, #00376e);
943 background-image: linear-gradient(to bottom, #003b76, #00376e);
948 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
944 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
949 margin: 0 0 20px;
945 margin: 0 0 20px;
950 padding: 0;
946 padding: 0;
951 border-radius: 4px 4px 0 0;
947 border-radius: 4px 4px 0 0;
952 }
948 }
953
949
954 #content div.box div.title h5 {
950 #content div.box div.title h5 {
955 float: left;
951 float: left;
956 border: none;
952 border: none;
957 color: #fff;
953 color: #fff;
958 margin: 0;
954 margin: 0;
959 padding: 11px 0 11px 10px;
955 padding: 11px 0 11px 10px;
960 }
956 }
961
957
962 #content div.box div.title .link-white {
958 #content div.box div.title .link-white {
963 color: #FFFFFF;
959 color: #FFFFFF;
964 }
960 }
965
961
966 #content div.box div.title .link-white.current {
962 #content div.box div.title .link-white.current {
967 color: #BFE3FF;
963 color: #BFE3FF;
968 }
964 }
969
965
970 #content div.box div.title ul.links li {
966 #content div.box div.title ul.links li {
971 list-style: none;
967 list-style: none;
972 float: left;
968 float: left;
973 margin: 0;
969 margin: 0;
974 padding: 0;
970 padding: 0;
975 }
971 }
976
972
977 #content div.box div.title ul.links li a {
973 #content div.box div.title ul.links li a {
978 border-left: 1px solid #316293;
974 border-left: 1px solid #316293;
979 color: #FFFFFF;
975 color: #FFFFFF;
980 display: block;
976 display: block;
981 float: left;
977 float: left;
982 font-size: 13px;
978 font-size: 13px;
983 font-weight: 700;
979 font-weight: 700;
984 height: 1%;
980 height: 1%;
985 margin: 0;
981 margin: 0;
986 padding: 11px 22px 12px;
982 padding: 11px 22px 12px;
987 text-decoration: none;
983 text-decoration: none;
988 }
984 }
989
985
990 #content div.box h1, #content div.box h2, #content div.box h3, #content div.box h4, #content div.box h5, #content div.box h6,
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 #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 {
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 clear: both;
988 clear: both;
993 overflow: hidden;
989 overflow: hidden;
994 border-bottom: 1px solid #DDD;
990 border-bottom: 1px solid #DDD;
995 margin: 10px 20px;
991 margin: 10px 20px;
996 padding: 0 0 15px;
992 padding: 0 0 15px;
997 }
993 }
998
994
999 #content div.box p {
995 #content div.box p {
1000 color: #5f5f5f;
996 color: #5f5f5f;
1001 font-size: 12px;
997 font-size: 12px;
1002 line-height: 150%;
998 line-height: 150%;
1003 margin: 0 24px 10px;
999 margin: 0 24px 10px;
1004 padding: 0;
1000 padding: 0;
1005 }
1001 }
1006
1002
1007 #content div.box blockquote {
1003 #content div.box blockquote {
1008 border-left: 4px solid #DDD;
1004 border-left: 4px solid #DDD;
1009 color: #5f5f5f;
1005 color: #5f5f5f;
1010 font-size: 11px;
1006 font-size: 11px;
1011 line-height: 150%;
1007 line-height: 150%;
1012 margin: 0 34px;
1008 margin: 0 34px;
1013 padding: 0 0 0 14px;
1009 padding: 0 0 0 14px;
1014 }
1010 }
1015
1011
1016 #content div.box blockquote p {
1012 #content div.box blockquote p {
1017 margin: 10px 0;
1013 margin: 10px 0;
1018 padding: 0;
1014 padding: 0;
1019 }
1015 }
1020
1016
1021 #content div.box dl {
1017 #content div.box dl {
1022 margin: 10px 0px;
1018 margin: 10px 0px;
1023 }
1019 }
1024
1020
1025 #content div.box dt {
1021 #content div.box dt {
1026 font-size: 12px;
1022 font-size: 12px;
1027 margin: 0;
1023 margin: 0;
1028 }
1024 }
1029
1025
1030 #content div.box dd {
1026 #content div.box dd {
1031 font-size: 12px;
1027 font-size: 12px;
1032 margin: 0;
1028 margin: 0;
1033 padding: 8px 0 8px 15px;
1029 padding: 8px 0 8px 15px;
1034 }
1030 }
1035
1031
1036 #content div.box li {
1032 #content div.box li {
1037 font-size: 12px;
1033 font-size: 12px;
1038 padding: 4px 0;
1034 padding: 4px 0;
1039 }
1035 }
1040
1036
1041 #content div.box ul.disc, #content div.box ul.circle {
1037 #content div.box ul.disc, #content div.box ul.circle {
1042 margin: 10px 24px 10px 38px;
1038 margin: 10px 24px 10px 38px;
1043 }
1039 }
1044
1040
1045 #content div.box ul.square {
1041 #content div.box ul.square {
1046 margin: 10px 24px 10px 40px;
1042 margin: 10px 24px 10px 40px;
1047 }
1043 }
1048
1044
1049 #content div.box img.left {
1045 #content div.box img.left {
1050 border: none;
1046 border: none;
1051 float: left;
1047 float: left;
1052 margin: 10px 10px 10px 0;
1048 margin: 10px 10px 10px 0;
1053 }
1049 }
1054
1050
1055 #content div.box img.right {
1051 #content div.box img.right {
1056 border: none;
1052 border: none;
1057 float: right;
1053 float: right;
1058 margin: 10px 0 10px 10px;
1054 margin: 10px 0 10px 10px;
1059 }
1055 }
1060
1056
1061 #content div.box div.messages {
1057 #content div.box div.messages {
1062 clear: both;
1058 clear: both;
1063 overflow: hidden;
1059 overflow: hidden;
1064 margin: 0 20px;
1060 margin: 0 20px;
1065 padding: 0;
1061 padding: 0;
1066 }
1062 }
1067
1063
1068 #content div.box div.message {
1064 #content div.box div.message {
1069 clear: both;
1065 clear: both;
1070 overflow: hidden;
1066 overflow: hidden;
1071 margin: 0;
1067 margin: 0;
1072 padding: 5px 0;
1068 padding: 5px 0;
1073 white-space: pre-wrap;
1069 white-space: pre-wrap;
1074 }
1070 }
1075 #content div.box div.expand {
1071 #content div.box div.expand {
1076 width: 110%;
1072 width: 110%;
1077 height: 14px;
1073 height: 14px;
1078 font-size: 10px;
1074 font-size: 10px;
1079 text-align: center;
1075 text-align: center;
1080 cursor: pointer;
1076 cursor: pointer;
1081 color: #666;
1077 color: #666;
1082
1078
1083 background: -webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,rgba(64,96,128,0.1)));
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 background: -webkit-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1080 background: -webkit-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1085 background: -moz-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1081 background: -moz-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1086 background: -o-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1082 background: -o-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1087 background: -ms-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1083 background: -ms-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1088 background: linear-gradient(to bottom,rgba(255,255,255,0),rgba(64,96,128,0.1));
1084 background: linear-gradient(to bottom,rgba(255,255,255,0),rgba(64,96,128,0.1));
1089
1085
1090 display: none;
1086 display: none;
1091 overflow: hidden;
1087 overflow: hidden;
1092 }
1088 }
1093 #content div.box div.expand .expandtext {
1089 #content div.box div.expand .expandtext {
1094 background-color: #ffffff;
1090 background-color: #ffffff;
1095 padding: 2px;
1091 padding: 2px;
1096 border-radius: 2px;
1092 border-radius: 2px;
1097 }
1093 }
1098
1094
1099 #content div.box div.message a {
1095 #content div.box div.message a {
1100 font-weight: 400 !important;
1096 font-weight: 400 !important;
1101 }
1097 }
1102
1098
1103 #content div.box div.message div.image {
1099 #content div.box div.message div.image {
1104 float: left;
1100 float: left;
1105 margin: 9px 0 0 5px;
1101 margin: 9px 0 0 5px;
1106 padding: 6px;
1102 padding: 6px;
1107 }
1103 }
1108
1104
1109 #content div.box div.message div.image img {
1105 #content div.box div.message div.image img {
1110 vertical-align: middle;
1106 vertical-align: middle;
1111 margin: 0;
1107 margin: 0;
1112 }
1108 }
1113
1109
1114 #content div.box div.message div.text {
1110 #content div.box div.message div.text {
1115 float: left;
1111 float: left;
1116 margin: 0;
1112 margin: 0;
1117 padding: 9px 6px;
1113 padding: 9px 6px;
1118 }
1114 }
1119
1115
1120 #content div.box div.message div.dismiss a {
1116 #content div.box div.message div.dismiss a {
1121 height: 16px;
1117 height: 16px;
1122 width: 16px;
1118 width: 16px;
1123 display: block;
1119 display: block;
1124 background: url("../images/icons/cross.png") no-repeat;
1120 background: url("../images/icons/cross.png") no-repeat;
1125 margin: 15px 14px 0 0;
1121 margin: 15px 14px 0 0;
1126 padding: 0;
1122 padding: 0;
1127 }
1123 }
1128
1124
1129 #content div.box div.message div.text h1, #content div.box div.message div.text h2, #content div.box div.message div.text h3, #content div.box div.message div.text h4, #content div.box div.message div.text h5, #content div.box div.message div.text h6 {
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 border: none;
1126 border: none;
1131 margin: 0;
1127 margin: 0;
1132 padding: 0;
1128 padding: 0;
1133 }
1129 }
1134
1130
1135 #content div.box div.message div.text span {
1131 #content div.box div.message div.text span {
1136 height: 1%;
1132 height: 1%;
1137 display: block;
1133 display: block;
1138 margin: 0;
1134 margin: 0;
1139 padding: 5px 0 0;
1135 padding: 5px 0 0;
1140 }
1136 }
1141
1137
1142 #content div.box div.message-error {
1138 #content div.box div.message-error {
1143 height: 1%;
1139 height: 1%;
1144 clear: both;
1140 clear: both;
1145 overflow: hidden;
1141 overflow: hidden;
1146 background: #FBE3E4;
1142 background: #FBE3E4;
1147 border: 1px solid #FBC2C4;
1143 border: 1px solid #FBC2C4;
1148 color: #860006;
1144 color: #860006;
1149 }
1145 }
1150
1146
1151 #content div.box div.message-error h6 {
1147 #content div.box div.message-error h6 {
1152 color: #860006;
1148 color: #860006;
1153 }
1149 }
1154
1150
1155 #content div.box div.message-warning {
1151 #content div.box div.message-warning {
1156 height: 1%;
1152 height: 1%;
1157 clear: both;
1153 clear: both;
1158 overflow: hidden;
1154 overflow: hidden;
1159 background: #FFF6BF;
1155 background: #FFF6BF;
1160 border: 1px solid #FFD324;
1156 border: 1px solid #FFD324;
1161 color: #5f5200;
1157 color: #5f5200;
1162 }
1158 }
1163
1159
1164 #content div.box div.message-warning h6 {
1160 #content div.box div.message-warning h6 {
1165 color: #5f5200;
1161 color: #5f5200;
1166 }
1162 }
1167
1163
1168 #content div.box div.message-notice {
1164 #content div.box div.message-notice {
1169 height: 1%;
1165 height: 1%;
1170 clear: both;
1166 clear: both;
1171 overflow: hidden;
1167 overflow: hidden;
1172 background: #8FBDE0;
1168 background: #8FBDE0;
1173 border: 1px solid #6BACDE;
1169 border: 1px solid #6BACDE;
1174 color: #003863;
1170 color: #003863;
1175 }
1171 }
1176
1172
1177 #content div.box div.message-notice h6 {
1173 #content div.box div.message-notice h6 {
1178 color: #003863;
1174 color: #003863;
1179 }
1175 }
1180
1176
1181 #content div.box div.message-success {
1177 #content div.box div.message-success {
1182 height: 1%;
1178 height: 1%;
1183 clear: both;
1179 clear: both;
1184 overflow: hidden;
1180 overflow: hidden;
1185 background: #E6EFC2;
1181 background: #E6EFC2;
1186 border: 1px solid #C6D880;
1182 border: 1px solid #C6D880;
1187 color: #4e6100;
1183 color: #4e6100;
1188 }
1184 }
1189
1185
1190 #content div.box div.message-success h6 {
1186 #content div.box div.message-success h6 {
1191 color: #4e6100;
1187 color: #4e6100;
1192 }
1188 }
1193
1189
1194 #content div.box div.form div.fields div.field {
1190 #content div.box div.form div.fields div.field {
1195 height: 1%;
1191 height: 1%;
1196 min-height: 12px;
1192 min-height: 12px;
1197 border-bottom: 1px solid #DDD;
1193 border-bottom: 1px solid #DDD;
1198 clear: both;
1194 clear: both;
1199 margin: 0;
1195 margin: 0;
1200 padding: 10px 0;
1196 padding: 10px 0;
1201 }
1197 }
1202
1198
1203 #content div.box div.form div.fields div.field-first {
1199 #content div.box div.form div.fields div.field-first {
1204 padding: 0 0 10px;
1200 padding: 0 0 10px;
1205 }
1201 }
1206
1202
1207 #content div.box div.form div.fields div.field-noborder {
1203 #content div.box div.form div.fields div.field-noborder {
1208 border-bottom: 0 !important;
1204 border-bottom: 0 !important;
1209 }
1205 }
1210
1206
1211 #content div.box div.form div.fields div.field span.error-message {
1207 #content div.box div.form div.fields div.field span.error-message {
1212 height: 1%;
1208 height: 1%;
1213 display: inline-block;
1209 display: inline-block;
1214 color: red;
1210 color: red;
1215 margin: 8px 0 0 4px;
1211 margin: 8px 0 0 4px;
1216 padding: 0;
1212 padding: 0;
1217 }
1213 }
1218
1214
1219 #content div.box div.form div.fields div.field span.success {
1215 #content div.box div.form div.fields div.field span.success {
1220 height: 1%;
1216 height: 1%;
1221 display: block;
1217 display: block;
1222 color: #316309;
1218 color: #316309;
1223 margin: 8px 0 0;
1219 margin: 8px 0 0;
1224 padding: 0;
1220 padding: 0;
1225 }
1221 }
1226
1222
1227 #content div.box div.form div.fields div.field div.label {
1223 #content div.box div.form div.fields div.field div.label {
1228 left: 70px;
1224 left: 70px;
1229 width: 155px;
1225 width: 155px;
1230 position: absolute;
1226 position: absolute;
1231 margin: 0;
1227 margin: 0;
1232 padding: 5px 0 0 0px;
1228 padding: 5px 0 0 0px;
1233 }
1229 }
1234
1230
1235 #content div.box div.form div.fields div.field div.label-summary {
1231 #content div.box div.form div.fields div.field div.label-summary {
1236 left: 30px;
1232 left: 30px;
1237 width: 155px;
1233 width: 155px;
1238 position: absolute;
1234 position: absolute;
1239 margin: 0;
1235 margin: 0;
1240 padding: 0px 0 0 0px;
1236 padding: 0px 0 0 0px;
1241 }
1237 }
1242
1238
1243 #content div.box-left div.form div.fields div.field div.label,
1239 #content div.box-left div.form div.fields div.field div.label,
1244 #content div.box-right div.form div.fields div.field div.label,
1240 #content div.box-right div.form div.fields div.field div.label,
1245 #content div.box-left div.form div.fields div.field div.label,
1241 #content div.box-left div.form div.fields div.field div.label,
1246 #content div.box-left div.form div.fields div.field div.label-summary,
1242 #content div.box-left div.form div.fields div.field div.label-summary,
1247 #content div.box-right div.form div.fields div.field div.label-summary,
1243 #content div.box-right div.form div.fields div.field div.label-summary,
1248 #content div.box-left div.form div.fields div.field div.label-summary {
1244 #content div.box-left div.form div.fields div.field div.label-summary {
1249 clear: both;
1245 clear: both;
1250 overflow: hidden;
1246 overflow: hidden;
1251 left: 0;
1247 left: 0;
1252 width: auto;
1248 width: auto;
1253 position: relative;
1249 position: relative;
1254 margin: 0;
1250 margin: 0;
1255 padding: 0 0 8px;
1251 padding: 0 0 8px;
1256 }
1252 }
1257
1253
1258 #content div.box div.form div.fields div.field div.label-select {
1254 #content div.box div.form div.fields div.field div.label-select {
1259 padding: 5px 0 0 5px;
1255 padding: 5px 0 0 5px;
1260 }
1256 }
1261
1257
1262 #content div.box-left div.form div.fields div.field div.label-select,
1258 #content div.box-left div.form div.fields div.field div.label-select,
1263 #content div.box-right div.form div.fields div.field div.label-select {
1259 #content div.box-right div.form div.fields div.field div.label-select {
1264 padding: 0 0 8px;
1260 padding: 0 0 8px;
1265 }
1261 }
1266
1262
1267 #content div.box-left div.form div.fields div.field div.label-textarea,
1263 #content div.box-left div.form div.fields div.field div.label-textarea,
1268 #content div.box-right div.form div.fields div.field div.label-textarea {
1264 #content div.box-right div.form div.fields div.field div.label-textarea {
1269 padding: 0 0 8px !important;
1265 padding: 0 0 8px !important;
1270 }
1266 }
1271
1267
1272 #content div.box div.form div.fields div.field div.label label, div.label label {
1268 #content div.box div.form div.fields div.field div.label label, div.label label {
1273 color: #393939;
1269 color: #393939;
1274 font-weight: 700;
1270 font-weight: 700;
1275 }
1271 }
1276 #content div.box div.form div.fields div.field div.label label, div.label-summary label {
1272 #content div.box div.form div.fields div.field div.label label, div.label-summary label {
1277 color: #393939;
1273 color: #393939;
1278 font-weight: 700;
1274 font-weight: 700;
1279 }
1275 }
1280 #content div.box div.form div.fields div.field div.input {
1276 #content div.box div.form div.fields div.field div.input {
1281 margin: 0 0 0 200px;
1277 margin: 0 0 0 200px;
1282 }
1278 }
1283
1279
1284 #content div.box div.form div.fields div.field div.input.summary {
1280 #content div.box div.form div.fields div.field div.input.summary {
1285 margin: 0 0 0 110px;
1281 margin: 0 0 0 110px;
1286 }
1282 }
1287 #content div.box div.form div.fields div.field div.input.summary-short {
1283 #content div.box div.form div.fields div.field div.input.summary-short {
1288 margin: 0 0 0 110px;
1284 margin: 0 0 0 110px;
1289 }
1285 }
1290 #content div.box div.form div.fields div.field div.file {
1286 #content div.box div.form div.fields div.field div.file {
1291 margin: 0 0 0 200px;
1287 margin: 0 0 0 200px;
1292 }
1288 }
1293
1289
1294 #content div.box-left div.form div.fields div.field div.input, #content div.box-right div.form div.fields div.field div.input {
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 margin: 0 0 0 0px;
1291 margin: 0 0 0 0px;
1296 }
1292 }
1297
1293
1298 #content div.box div.form div.fields div.field div.input input,
1294 #content div.box div.form div.fields div.field div.input input,
1299 .reviewer_ac input {
1295 .reviewer_ac input {
1300 background: #FFF;
1296 background: #FFF;
1301 border-top: 1px solid #b3b3b3;
1297 border-top: 1px solid #b3b3b3;
1302 border-left: 1px solid #b3b3b3;
1298 border-left: 1px solid #b3b3b3;
1303 border-right: 1px solid #eaeaea;
1299 border-right: 1px solid #eaeaea;
1304 border-bottom: 1px solid #eaeaea;
1300 border-bottom: 1px solid #eaeaea;
1305 color: #000;
1301 color: #000;
1306 font-size: 11px;
1302 font-size: 11px;
1307 margin: 0;
1303 margin: 0;
1308 padding: 7px 7px 6px;
1304 padding: 7px 7px 6px;
1309 }
1305 }
1310
1306
1311 #content div.box div.form div.fields div.field div.input input#clone_url,
1307 #content div.box div.form div.fields div.field div.input input#clone_url,
1312 #content div.box div.form div.fields div.field div.input input#clone_url_id
1308 #content div.box div.form div.fields div.field div.input input#clone_url_id
1313 {
1309 {
1314 font-size: 16px;
1310 font-size: 16px;
1315 padding: 2px;
1311 padding: 2px;
1316 }
1312 }
1317
1313
1318 #content div.box div.form div.fields div.field div.file input {
1314 #content div.box div.form div.fields div.field div.file input {
1319 background: none repeat scroll 0 0 #FFFFFF;
1315 background: none repeat scroll 0 0 #FFFFFF;
1320 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1316 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1321 border-style: solid;
1317 border-style: solid;
1322 border-width: 1px;
1318 border-width: 1px;
1323 color: #000000;
1319 color: #000000;
1324 font-size: 11px;
1320 font-size: 11px;
1325 margin: 0;
1321 margin: 0;
1326 padding: 7px 7px 6px;
1322 padding: 7px 7px 6px;
1327 }
1323 }
1328
1324
1329 input.disabled {
1325 input.disabled {
1330 background-color: #F5F5F5 !important;
1326 background-color: #F5F5F5 !important;
1331 }
1327 }
1332 #content div.box div.form div.fields div.field div.input input.small {
1328 #content div.box div.form div.fields div.field div.input input.small {
1333 width: 30%;
1329 width: 30%;
1334 }
1330 }
1335
1331
1336 #content div.box div.form div.fields div.field div.input input.medium {
1332 #content div.box div.form div.fields div.field div.input input.medium {
1337 width: 55%;
1333 width: 55%;
1338 }
1334 }
1339
1335
1340 #content div.box div.form div.fields div.field div.input input.large {
1336 #content div.box div.form div.fields div.field div.input input.large {
1341 width: 85%;
1337 width: 85%;
1342 }
1338 }
1343
1339
1344 #content div.box div.form div.fields div.field div.input input.date {
1340 #content div.box div.form div.fields div.field div.input input.date {
1345 width: 177px;
1341 width: 177px;
1346 }
1342 }
1347
1343
1348 #content div.box div.form div.fields div.field div.input input.button {
1344 #content div.box div.form div.fields div.field div.input input.button {
1349 background: #D4D0C8;
1345 background: #D4D0C8;
1350 border-top: 1px solid #FFF;
1346 border-top: 1px solid #FFF;
1351 border-left: 1px solid #FFF;
1347 border-left: 1px solid #FFF;
1352 border-right: 1px solid #404040;
1348 border-right: 1px solid #404040;
1353 border-bottom: 1px solid #404040;
1349 border-bottom: 1px solid #404040;
1354 color: #000;
1350 color: #000;
1355 margin: 0;
1351 margin: 0;
1356 padding: 4px 8px;
1352 padding: 4px 8px;
1357 }
1353 }
1358
1354
1359 #content div.box div.form div.fields div.field div.textarea {
1355 #content div.box div.form div.fields div.field div.textarea {
1360 border-top: 1px solid #b3b3b3;
1356 border-top: 1px solid #b3b3b3;
1361 border-left: 1px solid #b3b3b3;
1357 border-left: 1px solid #b3b3b3;
1362 border-right: 1px solid #eaeaea;
1358 border-right: 1px solid #eaeaea;
1363 border-bottom: 1px solid #eaeaea;
1359 border-bottom: 1px solid #eaeaea;
1364 margin: 0 0 0 200px;
1360 margin: 0 0 0 200px;
1365 padding: 10px;
1361 padding: 10px;
1366 }
1362 }
1367
1363
1368 #content div.box div.form div.fields div.field div.textarea-editor {
1364 #content div.box div.form div.fields div.field div.textarea-editor {
1369 border: 1px solid #ddd;
1365 border: 1px solid #ddd;
1370 padding: 0;
1366 padding: 0;
1371 }
1367 }
1372
1368
1373 #content div.box div.form div.fields div.field div.textarea textarea {
1369 #content div.box div.form div.fields div.field div.textarea textarea {
1374 width: 100%;
1370 width: 100%;
1375 height: 220px;
1371 height: 220px;
1376 overflow: hidden;
1372 overflow: hidden;
1377 background: #FFF;
1373 background: #FFF;
1378 color: #000;
1374 color: #000;
1379 font-size: 11px;
1375 font-size: 11px;
1380 outline: none;
1376 outline: none;
1381 border-width: 0;
1377 border-width: 0;
1382 margin: 0;
1378 margin: 0;
1383 padding: 0;
1379 padding: 0;
1384 }
1380 }
1385
1381
1386 #content div.box-left div.form div.fields div.field div.textarea textarea, #content div.box-right div.form div.fields div.field div.textarea textarea {
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 width: 100%;
1383 width: 100%;
1388 height: 100px;
1384 height: 100px;
1389 }
1385 }
1390
1386
1391 #content div.box div.form div.fields div.field div.textarea table {
1387 #content div.box div.form div.fields div.field div.textarea table {
1392 width: 100%;
1388 width: 100%;
1393 border: none;
1389 border: none;
1394 margin: 0;
1390 margin: 0;
1395 padding: 0;
1391 padding: 0;
1396 }
1392 }
1397
1393
1398 #content div.box div.form div.fields div.field div.textarea table td {
1394 #content div.box div.form div.fields div.field div.textarea table td {
1399 background: #DDD;
1395 background: #DDD;
1400 border: none;
1396 border: none;
1401 padding: 0;
1397 padding: 0;
1402 }
1398 }
1403
1399
1404 #content div.box div.form div.fields div.field div.textarea table td table {
1400 #content div.box div.form div.fields div.field div.textarea table td table {
1405 width: auto;
1401 width: auto;
1406 border: none;
1402 border: none;
1407 margin: 0;
1403 margin: 0;
1408 padding: 0;
1404 padding: 0;
1409 }
1405 }
1410
1406
1411 #content div.box div.form div.fields div.field div.textarea table td table td {
1407 #content div.box div.form div.fields div.field div.textarea table td table td {
1412 font-size: 11px;
1408 font-size: 11px;
1413 padding: 5px 5px 5px 0;
1409 padding: 5px 5px 5px 0;
1414 }
1410 }
1415
1411
1416 #content div.box div.form div.fields div.field input[type=text]:focus,
1412 #content div.box div.form div.fields div.field input[type=text]:focus,
1417 #content div.box div.form div.fields div.field input[type=password]:focus,
1413 #content div.box div.form div.fields div.field input[type=password]:focus,
1418 #content div.box div.form div.fields div.field input[type=file]:focus,
1414 #content div.box div.form div.fields div.field input[type=file]:focus,
1419 #content div.box div.form div.fields div.field textarea:focus,
1415 #content div.box div.form div.fields div.field textarea:focus,
1420 #content div.box div.form div.fields div.field select:focus,
1416 #content div.box div.form div.fields div.field select:focus,
1421 .reviewer_ac input:focus {
1417 .reviewer_ac input:focus {
1422 background: #f6f6f6;
1418 background: #f6f6f6;
1423 border-color: #666;
1419 border-color: #666;
1424 }
1420 }
1425
1421
1426 .reviewer_ac {
1422 .reviewer_ac {
1427 padding: 10px
1423 padding: 10px
1428 }
1424 }
1429
1425
1430 div.form div.fields div.field div.button {
1426 div.form div.fields div.field div.button {
1431 margin: 0;
1427 margin: 0;
1432 padding: 0 0 0 8px;
1428 padding: 0 0 0 8px;
1433 }
1429 }
1434 #content div.box table.noborder {
1430 #content div.box table.noborder {
1435 border: 1px solid transparent;
1431 border: 1px solid transparent;
1436 }
1432 }
1437
1433
1438 #content div.box table {
1434 #content div.box table {
1439 width: 100%;
1435 width: 100%;
1440 border-collapse: separate;
1436 border-collapse: separate;
1441 margin: 0;
1437 margin: 0;
1442 padding: 0;
1438 padding: 0;
1443 border: 1px solid #eee;
1439 border: 1px solid #eee;
1444 -webkit-border-radius: 4px;
1440 -webkit-border-radius: 4px;
1445 border-radius: 4px;
1441 border-radius: 4px;
1446 }
1442 }
1447
1443
1448 #content div.box table th {
1444 #content div.box table th {
1449 background: #eee;
1445 background: #eee;
1450 border-bottom: 1px solid #ddd;
1446 border-bottom: 1px solid #ddd;
1451 padding: 5px 0px 5px 5px;
1447 padding: 5px 0px 5px 5px;
1452 text-align: left;
1448 text-align: left;
1453 }
1449 }
1454
1450
1455 #content div.box table th.left {
1451 #content div.box table th.left {
1456 text-align: left;
1452 text-align: left;
1457 }
1453 }
1458
1454
1459 #content div.box table th.right {
1455 #content div.box table th.right {
1460 text-align: right;
1456 text-align: right;
1461 }
1457 }
1462
1458
1463 #content div.box table th.center {
1459 #content div.box table th.center {
1464 text-align: center;
1460 text-align: center;
1465 }
1461 }
1466
1462
1467 #content div.box table th.selected {
1463 #content div.box table th.selected {
1468 vertical-align: middle;
1464 vertical-align: middle;
1469 padding: 0;
1465 padding: 0;
1470 }
1466 }
1471
1467
1472 #content div.box table td {
1468 #content div.box table td {
1473 background: #fff;
1469 background: #fff;
1474 border-bottom: 1px solid #cdcdcd;
1470 border-bottom: 1px solid #cdcdcd;
1475 vertical-align: middle;
1471 vertical-align: middle;
1476 padding: 5px;
1472 padding: 5px;
1477 }
1473 }
1478
1474
1479 #content div.box table tr.selected td {
1475 #content div.box table tr.selected td {
1480 background: #FFC;
1476 background: #FFC;
1481 }
1477 }
1482
1478
1483 #content div.box table td.selected {
1479 #content div.box table td.selected {
1484 width: 3%;
1480 width: 3%;
1485 text-align: center;
1481 text-align: center;
1486 vertical-align: middle;
1482 vertical-align: middle;
1487 padding: 0;
1483 padding: 0;
1488 }
1484 }
1489
1485
1490 #content div.box table td.action {
1486 #content div.box table td.action {
1491 width: 45%;
1487 width: 45%;
1492 text-align: left;
1488 text-align: left;
1493 }
1489 }
1494
1490
1495 #content div.box table td.date {
1491 #content div.box table td.date {
1496 width: 33%;
1492 width: 33%;
1497 text-align: center;
1493 text-align: center;
1498 }
1494 }
1499
1495
1500 #content div.box div.action {
1496 #content div.box div.action {
1501 float: right;
1497 float: right;
1502 background: #FFF;
1498 background: #FFF;
1503 text-align: right;
1499 text-align: right;
1504 margin: 10px 0 0;
1500 margin: 10px 0 0;
1505 padding: 0;
1501 padding: 0;
1506 }
1502 }
1507
1503
1508 #content div.box div.action select {
1504 #content div.box div.action select {
1509 font-size: 11px;
1505 font-size: 11px;
1510 margin: 0;
1506 margin: 0;
1511 }
1507 }
1512
1508
1513 #content div.box div.action .ui-selectmenu {
1509 #content div.box div.action .ui-selectmenu {
1514 margin: 0;
1510 margin: 0;
1515 padding: 0;
1511 padding: 0;
1516 }
1512 }
1517
1513
1518 #content div.box div.pagination {
1514 #content div.box div.pagination {
1519 height: 1%;
1515 height: 1%;
1520 clear: both;
1516 clear: both;
1521 overflow: hidden;
1517 overflow: hidden;
1522 margin: 10px 0 0;
1518 margin: 10px 0 0;
1523 padding: 0;
1519 padding: 0;
1524 }
1520 }
1525
1521
1526 #content div.box div.pagination ul.pager {
1522 #content div.box div.pagination ul.pager {
1527 float: right;
1523 float: right;
1528 text-align: right;
1524 text-align: right;
1529 margin: 0;
1525 margin: 0;
1530 padding: 0;
1526 padding: 0;
1531 }
1527 }
1532
1528
1533 #content div.box div.pagination ul.pager li {
1529 #content div.box div.pagination ul.pager li {
1534 height: 1%;
1530 height: 1%;
1535 float: left;
1531 float: left;
1536 list-style: none;
1532 list-style: none;
1537 background: #ebebeb url("../images/pager.png") repeat-x;
1533 background: #ebebeb url("../images/pager.png") repeat-x;
1538 border-top: 1px solid #dedede;
1534 border-top: 1px solid #dedede;
1539 border-left: 1px solid #cfcfcf;
1535 border-left: 1px solid #cfcfcf;
1540 border-right: 1px solid #c4c4c4;
1536 border-right: 1px solid #c4c4c4;
1541 border-bottom: 1px solid #c4c4c4;
1537 border-bottom: 1px solid #c4c4c4;
1542 color: #4A4A4A;
1538 color: #4A4A4A;
1543 font-weight: 700;
1539 font-weight: 700;
1544 margin: 0 0 0 4px;
1540 margin: 0 0 0 4px;
1545 padding: 0;
1541 padding: 0;
1546 }
1542 }
1547
1543
1548 #content div.box div.pagination ul.pager li.separator {
1544 #content div.box div.pagination ul.pager li.separator {
1549 padding: 6px;
1545 padding: 6px;
1550 }
1546 }
1551
1547
1552 #content div.box div.pagination ul.pager li.current {
1548 #content div.box div.pagination ul.pager li.current {
1553 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1549 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1554 border-top: 1px solid #ccc;
1550 border-top: 1px solid #ccc;
1555 border-left: 1px solid #bebebe;
1551 border-left: 1px solid #bebebe;
1556 border-right: 1px solid #b1b1b1;
1552 border-right: 1px solid #b1b1b1;
1557 border-bottom: 1px solid #afafaf;
1553 border-bottom: 1px solid #afafaf;
1558 color: #515151;
1554 color: #515151;
1559 padding: 6px;
1555 padding: 6px;
1560 }
1556 }
1561
1557
1562 #content div.box div.pagination ul.pager li a {
1558 #content div.box div.pagination ul.pager li a {
1563 height: 1%;
1559 height: 1%;
1564 display: block;
1560 display: block;
1565 float: left;
1561 float: left;
1566 color: #515151;
1562 color: #515151;
1567 text-decoration: none;
1563 text-decoration: none;
1568 margin: 0;
1564 margin: 0;
1569 padding: 6px;
1565 padding: 6px;
1570 }
1566 }
1571
1567
1572 #content div.box div.pagination ul.pager li a:hover, #content div.box div.pagination ul.pager li a:active {
1568 #content div.box div.pagination ul.pager li a:hover, #content div.box div.pagination ul.pager li a:active {
1573 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1569 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1574 border-top: 1px solid #ccc;
1570 border-top: 1px solid #ccc;
1575 border-left: 1px solid #bebebe;
1571 border-left: 1px solid #bebebe;
1576 border-right: 1px solid #b1b1b1;
1572 border-right: 1px solid #b1b1b1;
1577 border-bottom: 1px solid #afafaf;
1573 border-bottom: 1px solid #afafaf;
1578 margin: -1px;
1574 margin: -1px;
1579 }
1575 }
1580
1576
1581 #content div.box div.pagination-wh {
1577 #content div.box div.pagination-wh {
1582 height: 1%;
1578 height: 1%;
1583 clear: both;
1579 clear: both;
1584 overflow: hidden;
1580 overflow: hidden;
1585 text-align: right;
1581 text-align: right;
1586 margin: 10px 0 0;
1582 margin: 10px 0 0;
1587 padding: 0;
1583 padding: 0;
1588 }
1584 }
1589
1585
1590 #content div.box div.pagination-right {
1586 #content div.box div.pagination-right {
1591 float: right;
1587 float: right;
1592 }
1588 }
1593
1589
1594 #content div.box div.pagination-wh a,
1590 #content div.box div.pagination-wh a,
1595 #content div.box div.pagination-wh span.pager_dotdot,
1591 #content div.box div.pagination-wh span.pager_dotdot,
1596 #content div.box div.pagination-wh span.yui-pg-previous,
1592 #content div.box div.pagination-wh span.yui-pg-previous,
1597 #content div.box div.pagination-wh span.yui-pg-last,
1593 #content div.box div.pagination-wh span.yui-pg-last,
1598 #content div.box div.pagination-wh span.yui-pg-next,
1594 #content div.box div.pagination-wh span.yui-pg-next,
1599 #content div.box div.pagination-wh span.yui-pg-first {
1595 #content div.box div.pagination-wh span.yui-pg-first {
1600 height: 1%;
1596 height: 1%;
1601 float: left;
1597 float: left;
1602 background: #ebebeb url("../images/pager.png") repeat-x;
1598 background: #ebebeb url("../images/pager.png") repeat-x;
1603 border-top: 1px solid #dedede;
1599 border-top: 1px solid #dedede;
1604 border-left: 1px solid #cfcfcf;
1600 border-left: 1px solid #cfcfcf;
1605 border-right: 1px solid #c4c4c4;
1601 border-right: 1px solid #c4c4c4;
1606 border-bottom: 1px solid #c4c4c4;
1602 border-bottom: 1px solid #c4c4c4;
1607 color: #4A4A4A;
1603 color: #4A4A4A;
1608 font-weight: 700;
1604 font-weight: 700;
1609 margin: 0 0 0 4px;
1605 margin: 0 0 0 4px;
1610 padding: 6px;
1606 padding: 6px;
1611 }
1607 }
1612
1608
1613 #content div.box div.pagination-wh span.pager_curpage {
1609 #content div.box div.pagination-wh span.pager_curpage {
1614 height: 1%;
1610 height: 1%;
1615 float: left;
1611 float: left;
1616 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1612 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1617 border-top: 1px solid #ccc;
1613 border-top: 1px solid #ccc;
1618 border-left: 1px solid #bebebe;
1614 border-left: 1px solid #bebebe;
1619 border-right: 1px solid #b1b1b1;
1615 border-right: 1px solid #b1b1b1;
1620 border-bottom: 1px solid #afafaf;
1616 border-bottom: 1px solid #afafaf;
1621 color: #515151;
1617 color: #515151;
1622 font-weight: 700;
1618 font-weight: 700;
1623 margin: 0 0 0 4px;
1619 margin: 0 0 0 4px;
1624 padding: 6px;
1620 padding: 6px;
1625 }
1621 }
1626
1622
1627 #content div.box div.pagination-wh a:hover, #content div.box div.pagination-wh a:active {
1623 #content div.box div.pagination-wh a:hover, #content div.box div.pagination-wh a:active {
1628 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1624 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1629 border-top: 1px solid #ccc;
1625 border-top: 1px solid #ccc;
1630 border-left: 1px solid #bebebe;
1626 border-left: 1px solid #bebebe;
1631 border-right: 1px solid #b1b1b1;
1627 border-right: 1px solid #b1b1b1;
1632 border-bottom: 1px solid #afafaf;
1628 border-bottom: 1px solid #afafaf;
1633 text-decoration: none;
1629 text-decoration: none;
1634 }
1630 }
1635
1631
1636 #content div.box div.traffic div.legend {
1632 #content div.box div.traffic div.legend {
1637 clear: both;
1633 clear: both;
1638 overflow: hidden;
1634 overflow: hidden;
1639 border-bottom: 1px solid #ddd;
1635 border-bottom: 1px solid #ddd;
1640 margin: 0 0 10px;
1636 margin: 0 0 10px;
1641 padding: 0 0 10px;
1637 padding: 0 0 10px;
1642 }
1638 }
1643
1639
1644 #content div.box div.traffic div.legend h6 {
1640 #content div.box div.traffic div.legend h6 {
1645 float: left;
1641 float: left;
1646 border: none;
1642 border: none;
1647 margin: 0;
1643 margin: 0;
1648 padding: 0;
1644 padding: 0;
1649 }
1645 }
1650
1646
1651 #content div.box div.traffic div.legend li {
1647 #content div.box div.traffic div.legend li {
1652 list-style: none;
1648 list-style: none;
1653 float: left;
1649 float: left;
1654 font-size: 11px;
1650 font-size: 11px;
1655 margin: 0;
1651 margin: 0;
1656 padding: 0 8px 0 4px;
1652 padding: 0 8px 0 4px;
1657 }
1653 }
1658
1654
1659 #content div.box div.traffic div.legend li.visits {
1655 #content div.box div.traffic div.legend li.visits {
1660 border-left: 12px solid #edc240;
1656 border-left: 12px solid #edc240;
1661 }
1657 }
1662
1658
1663 #content div.box div.traffic div.legend li.pageviews {
1659 #content div.box div.traffic div.legend li.pageviews {
1664 border-left: 12px solid #afd8f8;
1660 border-left: 12px solid #afd8f8;
1665 }
1661 }
1666
1662
1667 #content div.box div.traffic table {
1663 #content div.box div.traffic table {
1668 width: auto;
1664 width: auto;
1669 }
1665 }
1670
1666
1671 #content div.box div.traffic table td {
1667 #content div.box div.traffic table td {
1672 background: transparent;
1668 background: transparent;
1673 border: none;
1669 border: none;
1674 padding: 2px 3px 3px;
1670 padding: 2px 3px 3px;
1675 }
1671 }
1676
1672
1677 #content div.box div.traffic table td.legendLabel {
1673 #content div.box div.traffic table td.legendLabel {
1678 padding: 0 3px 2px;
1674 padding: 0 3px 2px;
1679 }
1675 }
1680
1676
1681 #content div.box #summary {
1677 #content div.box #summary {
1682 margin-right: 200px;
1678 margin-right: 200px;
1683 }
1679 }
1684
1680
1685 #summary-menu-stats {
1681 #summary-menu-stats {
1686 float: left;
1682 float: left;
1687 width: 180px;
1683 width: 180px;
1688 position: absolute;
1684 position: absolute;
1689 top: 0;
1685 top: 0;
1690 right: 0;
1686 right: 0;
1691 }
1687 }
1692
1688
1693 #summary-menu-stats ul {
1689 #summary-menu-stats ul {
1694 margin: 0 10px;
1690 margin: 0 10px;
1695 display: block;
1691 display: block;
1696 background-color: #f9f9f9;
1692 background-color: #f9f9f9;
1697 border: 1px solid #d1d1d1;
1693 border: 1px solid #d1d1d1;
1698 border-radius: 4px;
1694 border-radius: 4px;
1699 }
1695 }
1700
1696
1701 #content #summary-menu-stats li {
1697 #content #summary-menu-stats li {
1702 border-top: 1px solid #d1d1d1;
1698 border-top: 1px solid #d1d1d1;
1703 padding: 0;
1699 padding: 0;
1704 }
1700 }
1705
1701
1706 #content #summary-menu-stats li:hover {
1702 #content #summary-menu-stats li:hover {
1707 background: #f0f0f0;
1703 background: #f0f0f0;
1708 }
1704 }
1709
1705
1710 #content #summary-menu-stats li:first-child {
1706 #content #summary-menu-stats li:first-child {
1711 border-top: none;
1707 border-top: none;
1712 }
1708 }
1713
1709
1714 #summary-menu-stats a.followers { background-image: url('../images/icons/heart.png')}
1710 #summary-menu-stats a.followers { background-image: url('../images/icons/heart.png')}
1715 #summary-menu-stats a.forks { background-image: url('../images/icons/arrow_divide.png')}
1711 #summary-menu-stats a.forks { background-image: url('../images/icons/arrow_divide.png')}
1716 #summary-menu-stats a.settings { background-image: url('../images/icons/cog_edit.png')}
1712 #summary-menu-stats a.settings { background-image: url('../images/icons/cog_edit.png')}
1717 #summary-menu-stats a.feed { background-image: url('../images/icons/rss_16.png')}
1713 #summary-menu-stats a.feed { background-image: url('../images/icons/rss_16.png')}
1718 #summary-menu-stats a.repo-size { background-image: url('../images/icons/server.png')}
1714 #summary-menu-stats a.repo-size { background-image: url('../images/icons/server.png')}
1719
1715
1720 #summary-menu-stats a {
1716 #summary-menu-stats a {
1721 display: block;
1717 display: block;
1722 padding: 12px 30px;
1718 padding: 12px 30px;
1723 background-repeat: no-repeat;
1719 background-repeat: no-repeat;
1724 background-position: 10px 50%;
1720 background-position: 10px 50%;
1725 padding-right: 10px;
1721 padding-right: 10px;
1726 }
1722 }
1727
1723
1728 #repo_size_2.loaded {
1724 #repo_size_2.loaded {
1729 margin-left: 30px;
1725 margin-left: 30px;
1730 display: block;
1726 display: block;
1731 padding-right: 10px;
1727 padding-right: 10px;
1732 padding-bottom: 7px;
1728 padding-bottom: 7px;
1733 }
1729 }
1734
1730
1735 #summary-menu-stats a:hover {
1731 #summary-menu-stats a:hover {
1736 text-decoration: none;
1732 text-decoration: none;
1737 }
1733 }
1738
1734
1739 #summary-menu-stats a span {
1735 #summary-menu-stats a span {
1740 background-color: #DEDEDE;
1736 background-color: #DEDEDE;
1741 color: 888 !important;
1737 color: 888 !important;
1742 border-radius: 4px;
1738 border-radius: 4px;
1743 padding: 2px 4px;
1739 padding: 2px 4px;
1744 font-size: 10px;
1740 font-size: 10px;
1745 }
1741 }
1746
1742
1747 #summary .metatag {
1743 #summary .metatag {
1748 display: inline-block;
1744 display: inline-block;
1749 padding: 3px 5px;
1745 padding: 3px 5px;
1750 margin-bottom: 3px;
1746 margin-bottom: 3px;
1751 margin-right: 1px;
1747 margin-right: 1px;
1752 border-radius: 5px;
1748 border-radius: 5px;
1753 }
1749 }
1754
1750
1755 #content div.box #summary p {
1751 #content div.box #summary p {
1756 margin-bottom: -5px;
1752 margin-bottom: -5px;
1757 width: 600px;
1753 width: 600px;
1758 white-space: pre-wrap;
1754 white-space: pre-wrap;
1759 }
1755 }
1760
1756
1761 #content div.box #summary p:last-child {
1757 #content div.box #summary p:last-child {
1762 margin-bottom: 9px;
1758 margin-bottom: 9px;
1763 }
1759 }
1764
1760
1765 #content div.box #summary p:first-of-type {
1761 #content div.box #summary p:first-of-type {
1766 margin-top: 9px;
1762 margin-top: 9px;
1767 }
1763 }
1768
1764
1769 .metatag {
1765 .metatag {
1770 display: inline-block;
1766 display: inline-block;
1771 margin-right: 1px;
1767 margin-right: 1px;
1772 -webkit-border-radius: 4px 4px 4px 4px;
1768 -webkit-border-radius: 4px 4px 4px 4px;
1773 -khtml-border-radius: 4px 4px 4px 4px;
1769 -khtml-border-radius: 4px 4px 4px 4px;
1774 border-radius: 4px 4px 4px 4px;
1770 border-radius: 4px 4px 4px 4px;
1775
1771
1776 border: solid 1px #9CF;
1772 border: solid 1px #9CF;
1777 padding: 2px 3px 2px 3px !important;
1773 padding: 2px 3px 2px 3px !important;
1778 background-color: #DEF;
1774 background-color: #DEF;
1779 }
1775 }
1780
1776
1781 .metatag[tag="dead"] {
1777 .metatag[tag="dead"] {
1782 background-color: #E44;
1778 background-color: #E44;
1783 }
1779 }
1784
1780
1785 .metatag[tag="stale"] {
1781 .metatag[tag="stale"] {
1786 background-color: #EA4;
1782 background-color: #EA4;
1787 }
1783 }
1788
1784
1789 .metatag[tag="featured"] {
1785 .metatag[tag="featured"] {
1790 background-color: #AEA;
1786 background-color: #AEA;
1791 }
1787 }
1792
1788
1793 .metatag[tag="requires"] {
1789 .metatag[tag="requires"] {
1794 background-color: #9CF;
1790 background-color: #9CF;
1795 }
1791 }
1796
1792
1797 .metatag[tag="recommends"] {
1793 .metatag[tag="recommends"] {
1798 background-color: #BDF;
1794 background-color: #BDF;
1799 }
1795 }
1800
1796
1801 .metatag[tag="lang"] {
1797 .metatag[tag="lang"] {
1802 background-color: #FAF474;
1798 background-color: #FAF474;
1803 }
1799 }
1804
1800
1805 .metatag[tag="license"] {
1801 .metatag[tag="license"] {
1806 border: solid 1px #9CF;
1802 border: solid 1px #9CF;
1807 background-color: #DEF;
1803 background-color: #DEF;
1808 target-new: tab !important;
1804 target-new: tab !important;
1809 }
1805 }
1810 .metatag[tag="see"] {
1806 .metatag[tag="see"] {
1811 border: solid 1px #CBD;
1807 border: solid 1px #CBD;
1812 background-color: #EDF;
1808 background-color: #EDF;
1813 }
1809 }
1814
1810
1815 a.metatag[tag="license"]:hover {
1811 a.metatag[tag="license"]:hover {
1816 background-color: #003367;
1812 background-color: #003367;
1817 color: #FFF;
1813 color: #FFF;
1818 text-decoration: none;
1814 text-decoration: none;
1819 }
1815 }
1820
1816
1821 #summary .desc {
1817 #summary .desc {
1822 white-space: pre;
1818 white-space: pre;
1823 width: 100%;
1819 width: 100%;
1824 }
1820 }
1825
1821
1826 #summary .repo_name {
1822 #summary .repo_name {
1827 font-size: 1.6em;
1823 font-size: 1.6em;
1828 font-weight: bold;
1824 font-weight: bold;
1829 vertical-align: baseline;
1825 vertical-align: baseline;
1830 clear: right
1826 clear: right
1831 }
1827 }
1832
1828
1833 #footer {
1829 #footer {
1834 clear: both;
1830 clear: both;
1835 overflow: hidden;
1831 overflow: hidden;
1836 text-align: right;
1832 text-align: right;
1837 margin: 0;
1833 margin: 0;
1838 padding: 0 10px 4px;
1834 padding: 0 10px 4px;
1839 margin: -10px 0 0;
1835 margin: -10px 0 0;
1840 }
1836 }
1841
1837
1842 #footer div#footer-inner {
1838 #footer div#footer-inner {
1843 background-color: #003B76;
1839 background-color: #003B76;
1844 background-repeat: repeat-x;
1840 background-repeat: repeat-x;
1845 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1841 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1846 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1842 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1847 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1843 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1848 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1844 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1849 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1845 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1850 background-image: -o-linear-gradient( top, #003b76, #00376e));
1846 background-image: -o-linear-gradient( top, #003b76, #00376e));
1851 background-image: linear-gradient(to bottom, #003b76, #00376e);
1847 background-image: linear-gradient(to bottom, #003b76, #00376e);
1852 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1848 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1853 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1849 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1854 -webkit-border-radius: 4px 4px 4px 4px;
1850 -webkit-border-radius: 4px 4px 4px 4px;
1855 -khtml-border-radius: 4px 4px 4px 4px;
1851 -khtml-border-radius: 4px 4px 4px 4px;
1856 border-radius: 4px 4px 4px 4px;
1852 border-radius: 4px 4px 4px 4px;
1857 }
1853 }
1858
1854
1859 #footer div#footer-inner p {
1855 #footer div#footer-inner p {
1860 padding: 15px 25px 15px 0;
1856 padding: 15px 25px 15px 0;
1861 color: #FFF;
1857 color: #FFF;
1862 font-weight: 700;
1858 font-weight: 700;
1863 }
1859 }
1864
1860
1865 #footer div#footer-inner .footer-link {
1861 #footer div#footer-inner .footer-link {
1866 float: left;
1862 float: left;
1867 padding-left: 10px;
1863 padding-left: 10px;
1868 }
1864 }
1869
1865
1870 #footer div#footer-inner .footer-link a, #footer div#footer-inner .footer-link-right a {
1866 #footer div#footer-inner .footer-link a, #footer div#footer-inner .footer-link-right a {
1871 color: #FFF;
1867 color: #FFF;
1872 }
1868 }
1873
1869
1874 #login div.title {
1870 #login div.title {
1875 clear: both;
1871 clear: both;
1876 overflow: hidden;
1872 overflow: hidden;
1877 position: relative;
1873 position: relative;
1878 background-color: #003B76;
1874 background-color: #003B76;
1879 background-repeat: repeat-x;
1875 background-repeat: repeat-x;
1880 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1876 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1881 background-image: -moz-linear-gradient( top, #003b76, #00376e);
1877 background-image: -moz-linear-gradient( top, #003b76, #00376e);
1882 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1878 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1883 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1879 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1884 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1880 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1885 background-image: -o-linear-gradient( top, #003b76, #00376e));
1881 background-image: -o-linear-gradient( top, #003b76, #00376e));
1886 background-image: linear-gradient(to bottom, #003b76, #00376e);
1882 background-image: linear-gradient(to bottom, #003b76, #00376e);
1887 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1883 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1888 margin: 0 auto;
1884 margin: 0 auto;
1889 padding: 0;
1885 padding: 0;
1890 }
1886 }
1891
1887
1892 #login div.inner {
1888 #login div.inner {
1893 background: #FFF url("../images/login.png") no-repeat top left;
1889 background: #FFF url("../images/login.png") no-repeat top left;
1894 border-top: none;
1890 border-top: none;
1895 border-bottom: none;
1891 border-bottom: none;
1896 margin: 0 auto;
1892 margin: 0 auto;
1897 padding: 20px;
1893 padding: 20px;
1898 }
1894 }
1899
1895
1900 #login div.form div.fields div.field div.label {
1896 #login div.form div.fields div.field div.label {
1901 width: 173px;
1897 width: 173px;
1902 float: left;
1898 float: left;
1903 text-align: right;
1899 text-align: right;
1904 margin: 2px 10px 0 0;
1900 margin: 2px 10px 0 0;
1905 padding: 5px 0 0 5px;
1901 padding: 5px 0 0 5px;
1906 }
1902 }
1907
1903
1908 #login div.form div.fields div.field div.input input {
1904 #login div.form div.fields div.field div.input input {
1909 background: #FFF;
1905 background: #FFF;
1910 border-top: 1px solid #b3b3b3;
1906 border-top: 1px solid #b3b3b3;
1911 border-left: 1px solid #b3b3b3;
1907 border-left: 1px solid #b3b3b3;
1912 border-right: 1px solid #eaeaea;
1908 border-right: 1px solid #eaeaea;
1913 border-bottom: 1px solid #eaeaea;
1909 border-bottom: 1px solid #eaeaea;
1914 color: #000;
1910 color: #000;
1915 font-size: 11px;
1911 font-size: 11px;
1916 margin: 0;
1912 margin: 0;
1917 padding: 7px 7px 6px;
1913 padding: 7px 7px 6px;
1918 }
1914 }
1919
1915
1920 #login div.form div.fields div.buttons {
1916 #login div.form div.fields div.buttons {
1921 clear: both;
1917 clear: both;
1922 overflow: hidden;
1918 overflow: hidden;
1923 border-top: 1px solid #DDD;
1919 border-top: 1px solid #DDD;
1924 text-align: right;
1920 text-align: right;
1925 margin: 0;
1921 margin: 0;
1926 padding: 10px 0 0;
1922 padding: 10px 0 0;
1927 }
1923 }
1928
1924
1929 #login div.form div.links {
1925 #login div.form div.links {
1930 clear: both;
1926 clear: both;
1931 overflow: hidden;
1927 overflow: hidden;
1932 margin: 10px 0 0;
1928 margin: 10px 0 0;
1933 padding: 0 0 2px;
1929 padding: 0 0 2px;
1934 }
1930 }
1935
1931
1936 .user-menu {
1932 .user-menu {
1937 margin: 0px !important;
1933 margin: 0px !important;
1938 float: left;
1934 float: left;
1939 }
1935 }
1940
1936
1941 .user-menu .container {
1937 .user-menu .container {
1942 padding: 0px 4px 0px 4px;
1938 padding: 0px 4px 0px 4px;
1943 margin: 0px 0px 0px 0px;
1939 margin: 0px 0px 0px 0px;
1944 }
1940 }
1945
1941
1946 .user-menu .gravatar {
1942 .user-menu .gravatar {
1947 margin: 0px 0px 0px 0px;
1943 margin: 0px 0px 0px 0px;
1948 cursor: pointer;
1944 cursor: pointer;
1949 }
1945 }
1950 .user-menu .gravatar.enabled {
1946 .user-menu .gravatar.enabled {
1951 background-color: #FDF784 !important;
1947 background-color: #FDF784 !important;
1952 }
1948 }
1953 .user-menu .gravatar:hover {
1949 .user-menu .gravatar:hover {
1954 background-color: #FDF784 !important;
1950 background-color: #FDF784 !important;
1955 }
1951 }
1956 #quick_login {
1952 #quick_login {
1957 min-height: 110px;
1953 min-height: 110px;
1958 padding: 4px;
1954 padding: 4px;
1959 position: absolute;
1955 position: absolute;
1960 right: 0;
1956 right: 0;
1961 background-color: #003B76;
1957 background-color: #003B76;
1962 background-repeat: repeat-x;
1958 background-repeat: repeat-x;
1963 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1959 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1964 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1960 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1965 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1961 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1966 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1962 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1967 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1963 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1968 background-image: -o-linear-gradient(top, #003b76, #00376e);
1964 background-image: -o-linear-gradient(top, #003b76, #00376e);
1969 background-image: linear-gradient(to bottom, #003b76, #00376e);
1965 background-image: linear-gradient(to bottom, #003b76, #00376e);
1970 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1966 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1971
1967
1972 z-index: 999;
1968 z-index: 999;
1973 -webkit-border-radius: 0px 0px 4px 4px;
1969 -webkit-border-radius: 0px 0px 4px 4px;
1974 -khtml-border-radius: 0px 0px 4px 4px;
1970 -khtml-border-radius: 0px 0px 4px 4px;
1975 border-radius: 0px 0px 4px 4px;
1971 border-radius: 0px 0px 4px 4px;
1976 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1972 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1977
1973
1978 overflow: hidden;
1974 overflow: hidden;
1979 }
1975 }
1980 #quick_login h4 {
1976 #quick_login h4 {
1981 color: #fff;
1977 color: #fff;
1982 padding: 5px 0px 5px 14px;
1978 padding: 5px 0px 5px 14px;
1983 }
1979 }
1984
1980
1985 #quick_login .password_forgoten {
1981 #quick_login .password_forgoten {
1986 padding-right: 0px;
1982 padding-right: 0px;
1987 padding-top: 0px;
1983 padding-top: 0px;
1988 text-align: left;
1984 text-align: left;
1989 }
1985 }
1990
1986
1991 #quick_login .password_forgoten a {
1987 #quick_login .password_forgoten a {
1992 font-size: 10px;
1988 font-size: 10px;
1993 color: #fff;
1989 color: #fff;
1994 padding: 0px !important;
1990 padding: 0px !important;
1995 line-height: 20px !important;
1991 line-height: 20px !important;
1996 }
1992 }
1997
1993
1998 #quick_login .register {
1994 #quick_login .register {
1999 padding-right: 10px;
1995 padding-right: 10px;
2000 padding-top: 5px;
1996 padding-top: 5px;
2001 text-align: left;
1997 text-align: left;
2002 }
1998 }
2003
1999
2004 #quick_login .register a {
2000 #quick_login .register a {
2005 font-size: 10px;
2001 font-size: 10px;
2006 color: #fff;
2002 color: #fff;
2007 padding: 0px !important;
2003 padding: 0px !important;
2008 line-height: 20px !important;
2004 line-height: 20px !important;
2009 }
2005 }
2010
2006
2011 #quick_login .submit {
2007 #quick_login .submit {
2012 margin: -20px 0 0 0px;
2008 margin: -20px 0 0 0px;
2013 position: absolute;
2009 position: absolute;
2014 right: 15px;
2010 right: 15px;
2015 }
2011 }
2016
2012
2017 #quick_login .links_left {
2013 #quick_login .links_left {
2018 float: left;
2014 float: left;
2019 margin-right: 130px;
2015 margin-right: 130px;
2020 width: 170px;
2016 width: 170px;
2021 }
2017 }
2022 #quick_login .links_right {
2018 #quick_login .links_right {
2023
2019
2024 position: absolute;
2020 position: absolute;
2025 right: 0;
2021 right: 0;
2026 }
2022 }
2027 #quick_login .full_name {
2023 #quick_login .full_name {
2028 color: #FFFFFF;
2024 color: #FFFFFF;
2029 font-weight: bold;
2025 font-weight: bold;
2030 padding: 3px 3px 3px 6px;
2026 padding: 3px 3px 3px 6px;
2031 }
2027 }
2032 #quick_login .big_gravatar {
2028 #quick_login .big_gravatar {
2033 padding: 4px 0px 0px 6px;
2029 padding: 4px 0px 0px 6px;
2034 }
2030 }
2035 #quick_login .notifications {
2031 #quick_login .notifications {
2036 padding: 2px 0px 0px 6px;
2032 padding: 2px 0px 0px 6px;
2037 color: #FFFFFF;
2033 color: #FFFFFF;
2038 font-weight: bold;
2034 font-weight: bold;
2039 line-height: 10px !important;
2035 line-height: 10px !important;
2040 }
2036 }
2041 #quick_login .notifications a,
2037 #quick_login .notifications a,
2042 #quick_login .unread a {
2038 #quick_login .unread a {
2043 color: #FFFFFF;
2039 color: #FFFFFF;
2044 display: block;
2040 display: block;
2045 padding: 0px !important;
2041 padding: 0px !important;
2046 }
2042 }
2047 #quick_login .notifications a:hover,
2043 #quick_login .notifications a:hover,
2048 #quick_login .unread a:hover {
2044 #quick_login .unread a:hover {
2049 background-color: inherit !important;
2045 background-color: inherit !important;
2050 }
2046 }
2051 #quick_login .email, #quick_login .unread {
2047 #quick_login .email, #quick_login .unread {
2052 color: #FFFFFF;
2048 color: #FFFFFF;
2053 padding: 3px 3px 3px 6px;
2049 padding: 3px 3px 3px 6px;
2054 }
2050 }
2055 #quick_login .links .logout {
2051 #quick_login .links .logout {
2056 }
2052 }
2057
2053
2058 #quick_login div.form div.fields {
2054 #quick_login div.form div.fields {
2059 padding-top: 2px;
2055 padding-top: 2px;
2060 padding-left: 10px;
2056 padding-left: 10px;
2061 }
2057 }
2062
2058
2063 #quick_login div.form div.fields div.field {
2059 #quick_login div.form div.fields div.field {
2064 padding: 5px;
2060 padding: 5px;
2065 }
2061 }
2066
2062
2067 #quick_login div.form div.fields div.field div.label label {
2063 #quick_login div.form div.fields div.field div.label label {
2068 color: #fff;
2064 color: #fff;
2069 padding-bottom: 3px;
2065 padding-bottom: 3px;
2070 }
2066 }
2071
2067
2072 #quick_login div.form div.fields div.field div.input input {
2068 #quick_login div.form div.fields div.field div.input input {
2073 width: 236px;
2069 width: 236px;
2074 background: #FFF;
2070 background: #FFF;
2075 border-top: 1px solid #b3b3b3;
2071 border-top: 1px solid #b3b3b3;
2076 border-left: 1px solid #b3b3b3;
2072 border-left: 1px solid #b3b3b3;
2077 border-right: 1px solid #eaeaea;
2073 border-right: 1px solid #eaeaea;
2078 border-bottom: 1px solid #eaeaea;
2074 border-bottom: 1px solid #eaeaea;
2079 color: #000;
2075 color: #000;
2080 font-size: 11px;
2076 font-size: 11px;
2081 margin: 0;
2077 margin: 0;
2082 padding: 5px 7px 4px;
2078 padding: 5px 7px 4px;
2083 }
2079 }
2084
2080
2085 #quick_login div.form div.fields div.buttons {
2081 #quick_login div.form div.fields div.buttons {
2086 clear: both;
2082 clear: both;
2087 overflow: hidden;
2083 overflow: hidden;
2088 text-align: right;
2084 text-align: right;
2089 margin: 0;
2085 margin: 0;
2090 padding: 5px 14px 0px 5px;
2086 padding: 5px 14px 0px 5px;
2091 }
2087 }
2092
2088
2093 #quick_login div.form div.links {
2089 #quick_login div.form div.links {
2094 clear: both;
2090 clear: both;
2095 overflow: hidden;
2091 overflow: hidden;
2096 margin: 10px 0 0;
2092 margin: 10px 0 0;
2097 padding: 0 0 2px;
2093 padding: 0 0 2px;
2098 }
2094 }
2099
2095
2100 #quick_login ol.links {
2096 #quick_login ol.links {
2101 display: block;
2097 display: block;
2102 font-weight: bold;
2098 font-weight: bold;
2103 list-style: none outside none;
2099 list-style: none outside none;
2104 text-align: right;
2100 text-align: right;
2105 }
2101 }
2106 #quick_login ol.links li {
2102 #quick_login ol.links li {
2107 line-height: 27px;
2103 line-height: 27px;
2108 margin: 0;
2104 margin: 0;
2109 padding: 0;
2105 padding: 0;
2110 color: #fff;
2106 color: #fff;
2111 display: block;
2107 display: block;
2112 float: none !important;
2108 float: none !important;
2113 }
2109 }
2114
2110
2115 #quick_login ol.links li a {
2111 #quick_login ol.links li a {
2116 color: #fff;
2112 color: #fff;
2117 display: block;
2113 display: block;
2118 padding: 2px;
2114 padding: 2px;
2119 }
2115 }
2120 #quick_login ol.links li a:HOVER {
2116 #quick_login ol.links li a:HOVER {
2121 background-color: inherit !important;
2117 background-color: inherit !important;
2122 }
2118 }
2123
2119
2124 #register div.title {
2120 #register div.title {
2125 clear: both;
2121 clear: both;
2126 overflow: hidden;
2122 overflow: hidden;
2127 position: relative;
2123 position: relative;
2128 background-color: #003B76;
2124 background-color: #003B76;
2129 background-repeat: repeat-x;
2125 background-repeat: repeat-x;
2130 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2126 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2131 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2127 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2132 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2128 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2133 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2129 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2134 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2130 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2135 background-image: -o-linear-gradient(top, #003b76, #00376e);
2131 background-image: -o-linear-gradient(top, #003b76, #00376e);
2136 background-image: linear-gradient(to bottom, #003b76, #00376e);
2132 background-image: linear-gradient(to bottom, #003b76, #00376e);
2137 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
2133 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
2138 endColorstr='#00376e', GradientType=0 );
2134 endColorstr='#00376e', GradientType=0 );
2139 margin: 0 auto;
2135 margin: 0 auto;
2140 padding: 0;
2136 padding: 0;
2141 }
2137 }
2142
2138
2143 #register div.inner {
2139 #register div.inner {
2144 background: #FFF;
2140 background: #FFF;
2145 border-top: none;
2141 border-top: none;
2146 border-bottom: none;
2142 border-bottom: none;
2147 margin: 0 auto;
2143 margin: 0 auto;
2148 padding: 20px;
2144 padding: 20px;
2149 }
2145 }
2150
2146
2151 #register div.form div.fields div.field div.label {
2147 #register div.form div.fields div.field div.label {
2152 width: 135px;
2148 width: 135px;
2153 float: left;
2149 float: left;
2154 text-align: right;
2150 text-align: right;
2155 margin: 2px 10px 0 0;
2151 margin: 2px 10px 0 0;
2156 padding: 5px 0 0 5px;
2152 padding: 5px 0 0 5px;
2157 }
2153 }
2158
2154
2159 #register div.form div.fields div.field div.input input {
2155 #register div.form div.fields div.field div.input input {
2160 width: 300px;
2156 width: 300px;
2161 background: #FFF;
2157 background: #FFF;
2162 border-top: 1px solid #b3b3b3;
2158 border-top: 1px solid #b3b3b3;
2163 border-left: 1px solid #b3b3b3;
2159 border-left: 1px solid #b3b3b3;
2164 border-right: 1px solid #eaeaea;
2160 border-right: 1px solid #eaeaea;
2165 border-bottom: 1px solid #eaeaea;
2161 border-bottom: 1px solid #eaeaea;
2166 color: #000;
2162 color: #000;
2167 font-size: 11px;
2163 font-size: 11px;
2168 margin: 0;
2164 margin: 0;
2169 padding: 7px 7px 6px;
2165 padding: 7px 7px 6px;
2170 }
2166 }
2171
2167
2172 #register div.form div.fields div.buttons {
2168 #register div.form div.fields div.buttons {
2173 clear: both;
2169 clear: both;
2174 overflow: hidden;
2170 overflow: hidden;
2175 border-top: 1px solid #DDD;
2171 border-top: 1px solid #DDD;
2176 text-align: left;
2172 text-align: left;
2177 margin: 0;
2173 margin: 0;
2178 padding: 10px 0 0 150px;
2174 padding: 10px 0 0 150px;
2179 }
2175 }
2180
2176
2181 #register div.form div.activation_msg {
2177 #register div.form div.activation_msg {
2182 padding-top: 4px;
2178 padding-top: 4px;
2183 padding-bottom: 4px;
2179 padding-bottom: 4px;
2184 }
2180 }
2185
2181
2186 #journal .journal_day {
2182 #journal .journal_day {
2187 font-size: 20px;
2183 font-size: 20px;
2188 padding: 10px 0px;
2184 padding: 10px 0px;
2189 border-bottom: 2px solid #DDD;
2185 border-bottom: 2px solid #DDD;
2190 margin-left: 10px;
2186 margin-left: 10px;
2191 margin-right: 10px;
2187 margin-right: 10px;
2192 }
2188 }
2193
2189
2194 #journal .journal_container {
2190 #journal .journal_container {
2195 padding: 5px;
2191 padding: 5px;
2196 clear: both;
2192 clear: both;
2197 margin: 0px 5px 0px 10px;
2193 margin: 0px 5px 0px 10px;
2198 }
2194 }
2199
2195
2200 #journal .journal_action_container {
2196 #journal .journal_action_container {
2201 padding-left: 38px;
2197 padding-left: 38px;
2202 }
2198 }
2203
2199
2204 #journal .journal_user {
2200 #journal .journal_user {
2205 color: #747474;
2201 color: #747474;
2206 font-size: 14px;
2202 font-size: 14px;
2207 font-weight: bold;
2203 font-weight: bold;
2208 height: 30px;
2204 height: 30px;
2209 }
2205 }
2210
2206
2211 #journal .journal_user.deleted {
2207 #journal .journal_user.deleted {
2212 color: #747474;
2208 color: #747474;
2213 font-size: 14px;
2209 font-size: 14px;
2214 font-weight: normal;
2210 font-weight: normal;
2215 height: 30px;
2211 height: 30px;
2216 font-style: italic;
2212 font-style: italic;
2217 }
2213 }
2218
2214
2219
2215
2220 #journal .journal_icon {
2216 #journal .journal_icon {
2221 clear: both;
2217 clear: both;
2222 float: left;
2218 float: left;
2223 padding-right: 4px;
2219 padding-right: 4px;
2224 padding-top: 3px;
2220 padding-top: 3px;
2225 }
2221 }
2226
2222
2227 #journal .journal_action {
2223 #journal .journal_action {
2228 padding-top: 4px;
2224 padding-top: 4px;
2229 min-height: 2px;
2225 min-height: 2px;
2230 float: left
2226 float: left
2231 }
2227 }
2232
2228
2233 #journal .journal_action_params {
2229 #journal .journal_action_params {
2234 clear: left;
2230 clear: left;
2235 padding-left: 22px;
2231 padding-left: 22px;
2236 }
2232 }
2237
2233
2238 #journal .journal_repo {
2234 #journal .journal_repo {
2239 float: left;
2235 float: left;
2240 margin-left: 6px;
2236 margin-left: 6px;
2241 padding-top: 3px;
2237 padding-top: 3px;
2242 }
2238 }
2243
2239
2244 #journal .date {
2240 #journal .date {
2245 clear: both;
2241 clear: both;
2246 color: #777777;
2242 color: #777777;
2247 font-size: 11px;
2243 font-size: 11px;
2248 padding-left: 22px;
2244 padding-left: 22px;
2249 }
2245 }
2250
2246
2251 #journal .journal_repo .journal_repo_name {
2247 #journal .journal_repo .journal_repo_name {
2252 font-weight: bold;
2248 font-weight: bold;
2253 font-size: 1.1em;
2249 font-size: 1.1em;
2254 }
2250 }
2255
2251
2256 #journal .compare_view {
2252 #journal .compare_view {
2257 padding: 5px 0px 5px 0px;
2253 padding: 5px 0px 5px 0px;
2258 width: 95px;
2254 width: 95px;
2259 }
2255 }
2260
2256
2261 .journal_highlight {
2257 .journal_highlight {
2262 font-weight: bold;
2258 font-weight: bold;
2263 padding: 0 2px;
2259 padding: 0 2px;
2264 vertical-align: bottom;
2260 vertical-align: bottom;
2265 }
2261 }
2266
2262
2267 .trending_language_tbl, .trending_language_tbl td {
2263 .trending_language_tbl, .trending_language_tbl td {
2268 border: 0 !important;
2264 border: 0 !important;
2269 margin: 0 !important;
2265 margin: 0 !important;
2270 padding: 0 !important;
2266 padding: 0 !important;
2271 }
2267 }
2272
2268
2273 .trending_language_tbl, .trending_language_tbl tr {
2269 .trending_language_tbl, .trending_language_tbl tr {
2274 border-spacing: 1px;
2270 border-spacing: 1px;
2275 }
2271 }
2276
2272
2277 .trending_language {
2273 .trending_language {
2278 background-color: #003367;
2274 background-color: #003367;
2279 color: #FFF;
2275 color: #FFF;
2280 display: block;
2276 display: block;
2281 min-width: 20px;
2277 min-width: 20px;
2282 text-decoration: none;
2278 text-decoration: none;
2283 height: 12px;
2279 height: 12px;
2284 margin-bottom: 0px;
2280 margin-bottom: 0px;
2285 margin-left: 5px;
2281 margin-left: 5px;
2286 white-space: pre;
2282 white-space: pre;
2287 padding: 3px;
2283 padding: 3px;
2288 }
2284 }
2289
2285
2290 h3.files_location {
2286 h3.files_location {
2291 font-size: 1.8em;
2287 font-size: 1.8em;
2292 font-weight: 700;
2288 font-weight: 700;
2293 border-bottom: none !important;
2289 border-bottom: none !important;
2294 margin: 10px 0 !important;
2290 margin: 10px 0 !important;
2295 }
2291 }
2296
2292
2297 #files_data dl dt {
2293 #files_data dl dt {
2298 float: left;
2294 float: left;
2299 width: 60px;
2295 width: 60px;
2300 margin: 0 !important;
2296 margin: 0 !important;
2301 padding: 5px;
2297 padding: 5px;
2302 }
2298 }
2303
2299
2304 #files_data dl dd {
2300 #files_data dl dd {
2305 margin: 0 !important;
2301 margin: 0 !important;
2306 padding: 5px !important;
2302 padding: 5px !important;
2307 }
2303 }
2308
2304
2309 .file_history {
2305 .file_history {
2310 padding-top: 10px;
2306 padding-top: 10px;
2311 font-size: 16px;
2307 font-size: 16px;
2312 }
2308 }
2313 .file_author {
2309 .file_author {
2314 float: left;
2310 float: left;
2315 }
2311 }
2316
2312
2317 .file_author .item {
2313 .file_author .item {
2318 float: left;
2314 float: left;
2319 padding: 5px;
2315 padding: 5px;
2320 color: #888;
2316 color: #888;
2321 }
2317 }
2322
2318
2323 .tablerow0 {
2319 .tablerow0 {
2324 background-color: #F8F8F8;
2320 background-color: #F8F8F8;
2325 }
2321 }
2326
2322
2327 .tablerow1 {
2323 .tablerow1 {
2328 background-color: #FFFFFF;
2324 background-color: #FFFFFF;
2329 }
2325 }
2330
2326
2331 .changeset_id {
2327 .changeset_id {
2332 color: #666666;
2328 color: #666666;
2333 margin-right: -3px;
2329 margin-right: -3px;
2334 }
2330 }
2335
2331
2336 .changeset_hash {
2332 .changeset_hash {
2337 color: #000000;
2333 color: #000000;
2338 }
2334 }
2339
2335
2340 #changeset_content {
2336 #changeset_content {
2341 border-left: 1px solid #CCC;
2337 border-left: 1px solid #CCC;
2342 border-right: 1px solid #CCC;
2338 border-right: 1px solid #CCC;
2343 border-bottom: 1px solid #CCC;
2339 border-bottom: 1px solid #CCC;
2344 padding: 5px;
2340 padding: 5px;
2345 }
2341 }
2346
2342
2347 #changeset_compare_view_content {
2343 #changeset_compare_view_content {
2348 border: 1px solid #CCC;
2344 border: 1px solid #CCC;
2349 padding: 5px;
2345 padding: 5px;
2350 }
2346 }
2351
2347
2352 #changeset_content .container {
2348 #changeset_content .container {
2353 min-height: 100px;
2349 min-height: 100px;
2354 font-size: 1.2em;
2350 font-size: 1.2em;
2355 overflow: hidden;
2351 overflow: hidden;
2356 }
2352 }
2357
2353
2358 #changeset_compare_view_content .compare_view_commits {
2354 #changeset_compare_view_content .compare_view_commits {
2359 width: auto !important;
2355 width: auto !important;
2360 }
2356 }
2361
2357
2362 #changeset_compare_view_content .compare_view_commits td {
2358 #changeset_compare_view_content .compare_view_commits td {
2363 padding: 0px 0px 0px 12px !important;
2359 padding: 0px 0px 0px 12px !important;
2364 }
2360 }
2365
2361
2366 #changeset_content .container .right {
2362 #changeset_content .container .right {
2367 float: right;
2363 float: right;
2368 width: 20%;
2364 width: 20%;
2369 text-align: right;
2365 text-align: right;
2370 }
2366 }
2371
2367
2372 #changeset_content .container .message {
2368 #changeset_content .container .message {
2373 white-space: pre-wrap;
2369 white-space: pre-wrap;
2374 }
2370 }
2375 #changeset_content .container .message a:hover {
2371 #changeset_content .container .message a:hover {
2376 text-decoration: none;
2372 text-decoration: none;
2377 }
2373 }
2378 .cs_files .cur_cs {
2374 .cs_files .cur_cs {
2379 margin: 10px 2px;
2375 margin: 10px 2px;
2380 font-weight: bold;
2376 font-weight: bold;
2381 }
2377 }
2382
2378
2383 .cs_files .node {
2379 .cs_files .node {
2384 float: left;
2380 float: left;
2385 }
2381 }
2386
2382
2387 .cs_files .changes {
2383 .cs_files .changes {
2388 float: right;
2384 float: right;
2389 color: #003367;
2385 color: #003367;
2390 }
2386 }
2391
2387
2392 .cs_files .changes .added {
2388 .cs_files .changes .added {
2393 background-color: #BBFFBB;
2389 background-color: #BBFFBB;
2394 float: left;
2390 float: left;
2395 text-align: center;
2391 text-align: center;
2396 font-size: 9px;
2392 font-size: 9px;
2397 padding: 2px 0px 2px 0px;
2393 padding: 2px 0px 2px 0px;
2398 }
2394 }
2399
2395
2400 .cs_files .changes .deleted {
2396 .cs_files .changes .deleted {
2401 background-color: #FF8888;
2397 background-color: #FF8888;
2402 float: left;
2398 float: left;
2403 text-align: center;
2399 text-align: center;
2404 font-size: 9px;
2400 font-size: 9px;
2405 padding: 2px 0px 2px 0px;
2401 padding: 2px 0px 2px 0px;
2406 }
2402 }
2407 /*new binary*/
2403 /*new binary*/
2408 .cs_files .changes .bin1 {
2404 .cs_files .changes .bin1 {
2409 background-color: #BBFFBB;
2405 background-color: #BBFFBB;
2410 float: left;
2406 float: left;
2411 text-align: center;
2407 text-align: center;
2412 font-size: 9px;
2408 font-size: 9px;
2413 padding: 2px 0px 2px 0px;
2409 padding: 2px 0px 2px 0px;
2414 }
2410 }
2415
2411
2416 /*deleted binary*/
2412 /*deleted binary*/
2417 .cs_files .changes .bin2 {
2413 .cs_files .changes .bin2 {
2418 background-color: #FF8888;
2414 background-color: #FF8888;
2419 float: left;
2415 float: left;
2420 text-align: center;
2416 text-align: center;
2421 font-size: 9px;
2417 font-size: 9px;
2422 padding: 2px 0px 2px 0px;
2418 padding: 2px 0px 2px 0px;
2423 }
2419 }
2424
2420
2425 /*mod binary*/
2421 /*mod binary*/
2426 .cs_files .changes .bin3 {
2422 .cs_files .changes .bin3 {
2427 background-color: #DDDDDD;
2423 background-color: #DDDDDD;
2428 float: left;
2424 float: left;
2429 text-align: center;
2425 text-align: center;
2430 font-size: 9px;
2426 font-size: 9px;
2431 padding: 2px 0px 2px 0px;
2427 padding: 2px 0px 2px 0px;
2432 }
2428 }
2433
2429
2434 /*rename file*/
2430 /*rename file*/
2435 .cs_files .changes .bin4 {
2431 .cs_files .changes .bin4 {
2436 background-color: #6D99FF;
2432 background-color: #6D99FF;
2437 float: left;
2433 float: left;
2438 text-align: center;
2434 text-align: center;
2439 font-size: 9px;
2435 font-size: 9px;
2440 padding: 2px 0px 2px 0px;
2436 padding: 2px 0px 2px 0px;
2441 }
2437 }
2442
2438
2443
2439
2444 .cs_files .cs_added, .cs_files .cs_A {
2440 .cs_files .cs_added, .cs_files .cs_A {
2445 background: url("../images/icons/page_white_add.png") no-repeat scroll
2441 background: url("../images/icons/page_white_add.png") no-repeat scroll
2446 3px;
2442 3px;
2447 height: 16px;
2443 height: 16px;
2448 padding-left: 20px;
2444 padding-left: 20px;
2449 margin-top: 7px;
2445 margin-top: 7px;
2450 text-align: left;
2446 text-align: left;
2451 }
2447 }
2452
2448
2453 .cs_files .cs_changed, .cs_files .cs_M {
2449 .cs_files .cs_changed, .cs_files .cs_M {
2454 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2450 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2455 3px;
2451 3px;
2456 height: 16px;
2452 height: 16px;
2457 padding-left: 20px;
2453 padding-left: 20px;
2458 margin-top: 7px;
2454 margin-top: 7px;
2459 text-align: left;
2455 text-align: left;
2460 }
2456 }
2461
2457
2462 .cs_files .cs_removed, .cs_files .cs_D {
2458 .cs_files .cs_removed, .cs_files .cs_D {
2463 background: url("../images/icons/page_white_delete.png") no-repeat
2459 background: url("../images/icons/page_white_delete.png") no-repeat
2464 scroll 3px;
2460 scroll 3px;
2465 height: 16px;
2461 height: 16px;
2466 padding-left: 20px;
2462 padding-left: 20px;
2467 margin-top: 7px;
2463 margin-top: 7px;
2468 text-align: left;
2464 text-align: left;
2469 }
2465 }
2470
2466
2471 .table {
2467 .table {
2472 position: relative;
2468 position: relative;
2473 }
2469 }
2474
2470
2475 #graph {
2471 #graph {
2476 position: relative;
2472 position: relative;
2477 overflow: hidden;
2473 overflow: hidden;
2478 }
2474 }
2479
2475
2480 #graph_nodes {
2476 #graph_nodes {
2481 position: absolute;
2477 position: absolute;
2482 }
2478 }
2483
2479
2484 #graph_content,
2480 #graph_content,
2485 #graph .info_box,
2481 #graph .info_box,
2486 #graph .container_header {
2482 #graph .container_header {
2487 margin-left: 100px;
2483 margin-left: 100px;
2488 }
2484 }
2489
2485
2490 #graph_content {
2486 #graph_content {
2491 position: relative;
2487 position: relative;
2492 }
2488 }
2493
2489
2494 #graph .container_header {
2490 #graph .container_header {
2495 padding: 10px;
2491 padding: 10px;
2496 height: 25px;
2492 height: 25px;
2497 }
2493 }
2498
2494
2499 #graph_content #rev_range_container {
2495 #graph_content #rev_range_container {
2500 float: left;
2496 float: left;
2501 margin: 0px 0px 0px 3px;
2497 margin: 0px 0px 0px 3px;
2502 }
2498 }
2503
2499
2504 #graph_content #rev_range_clear {
2500 #graph_content #rev_range_clear {
2505 float: left;
2501 float: left;
2506 margin: 0px 0px 0px 3px;
2502 margin: 0px 0px 0px 3px;
2507 }
2503 }
2508
2504
2509 #graph_content #changesets {
2505 #graph_content #changesets {
2510 table-layout: fixed;
2506 table-layout: fixed;
2511 border-collapse: collapse;
2507 border-collapse: collapse;
2512 border-left: none;
2508 border-left: none;
2513 border-right: none;
2509 border-right: none;
2514 border-color: #cdcdcd;
2510 border-color: #cdcdcd;
2515 }
2511 }
2516
2512
2517 #graph_content #changesets td {
2513 #graph_content #changesets td {
2518 overflow: hidden;
2514 overflow: hidden;
2519 text-overflow: ellipsis;
2515 text-overflow: ellipsis;
2520 white-space: nowrap;
2516 white-space: nowrap;
2521 height: 31px;
2517 height: 31px;
2522 border-color: #cdcdcd;
2518 border-color: #cdcdcd;
2523 text-align: left;
2519 text-align: left;
2524 }
2520 }
2525
2521
2526 #graph_content .container .checkbox {
2522 #graph_content .container .checkbox {
2527 width: 12px;
2523 width: 12px;
2528 font-size: 0.85em;
2524 font-size: 0.85em;
2529 }
2525 }
2530
2526
2531 #graph_content .container .status {
2527 #graph_content .container .status {
2532 width: 14px;
2528 width: 14px;
2533 font-size: 0.85em;
2529 font-size: 0.85em;
2534 }
2530 }
2535
2531
2536 #graph_content .container .author {
2532 #graph_content .container .author {
2537 width: 105px;
2533 width: 105px;
2538 }
2534 }
2539
2535
2540 #graph_content .container .hash {
2536 #graph_content .container .hash {
2541 width: 100px;
2537 width: 100px;
2542 font-size: 0.85em;
2538 font-size: 0.85em;
2543 }
2539 }
2544
2540
2545 #graph_content #changesets .container .date {
2541 #graph_content #changesets .container .date {
2546 width: 76px;
2542 width: 76px;
2547 color: #666;
2543 color: #666;
2548 font-size: 10px;
2544 font-size: 10px;
2549 }
2545 }
2550
2546
2551 #graph_content #changesets .container .right {
2547 #graph_content #changesets .container .right {
2552 width: 120px;
2548 width: 120px;
2553 padding-right: 0px;
2549 padding-right: 0px;
2554 overflow: visible;
2550 overflow: visible;
2555 position: relative;
2551 position: relative;
2556 }
2552 }
2557
2553
2558 #graph_content .container .mid {
2554 #graph_content .container .mid {
2559 padding: 0;
2555 padding: 0;
2560 }
2556 }
2561
2557
2562 #graph_content .log-container {
2558 #graph_content .log-container {
2563 position: relative;
2559 position: relative;
2564 }
2560 }
2565
2561
2566 #graph_content .container .changeset_range {
2562 #graph_content .container .changeset_range {
2567 float: left;
2563 float: left;
2568 margin: 6px 3px;
2564 margin: 6px 3px;
2569 }
2565 }
2570
2566
2571 #graph_content .container .author img {
2567 #graph_content .container .author img {
2572 vertical-align: middle;
2568 vertical-align: middle;
2573 }
2569 }
2574
2570
2575 #graph_content .container .author .user {
2571 #graph_content .container .author .user {
2576 color: #444444;
2572 color: #444444;
2577 }
2573 }
2578
2574
2579 #graph_content .container .mid .message {
2575 #graph_content .container .mid .message {
2580 white-space: pre-wrap;
2576 white-space: pre-wrap;
2581 padding: 0;
2577 padding: 0;
2582 overflow: hidden;
2578 overflow: hidden;
2583 height: 1.1em;
2579 height: 1.1em;
2584 }
2580 }
2585
2581
2586 #graph_content .container .extra-container {
2582 #graph_content .container .extra-container {
2587 display: block;
2583 display: block;
2588 position: absolute;
2584 position: absolute;
2589 top: -15px;
2585 top: -15px;
2590 right: 0;
2586 right: 0;
2591 padding-left: 5px;
2587 padding-left: 5px;
2592 background: #FFFFFF;
2588 background: #FFFFFF;
2593 height: 41px;
2589 height: 41px;
2594 }
2590 }
2595
2591
2596 #graph_content .comments-container,
2592 #graph_content .comments-container,
2597 #graph_content .logtags {
2593 #graph_content .logtags {
2598 display: block;
2594 display: block;
2599 float: left;
2595 float: left;
2600 overflow: hidden;
2596 overflow: hidden;
2601 padding: 0;
2597 padding: 0;
2602 margin: 0;
2598 margin: 0;
2603 }
2599 }
2604
2600
2605 #graph_content .comments-container {
2601 #graph_content .comments-container {
2606 margin: 0.8em 0;
2602 margin: 0.8em 0;
2607 margin-right: 0.5em;
2603 margin-right: 0.5em;
2608 }
2604 }
2609
2605
2610 #graph_content .tagcontainer {
2606 #graph_content .tagcontainer {
2611 width: 80px;
2607 width: 80px;
2612 position: relative;
2608 position: relative;
2613 float: right;
2609 float: right;
2614 height: 100%;
2610 height: 100%;
2615 top: 7px;
2611 top: 7px;
2616 margin-left: 0.5em;
2612 margin-left: 0.5em;
2617 }
2613 }
2618
2614
2619 #graph_content .logtags {
2615 #graph_content .logtags {
2620 min-width: 80px;
2616 min-width: 80px;
2621 height: 1.1em;
2617 height: 1.1em;
2622 position: absolute;
2618 position: absolute;
2623 left: 0px;
2619 left: 0px;
2624 width: auto;
2620 width: auto;
2625 top: 0px;
2621 top: 0px;
2626 }
2622 }
2627
2623
2628 #graph_content .logtags.tags {
2624 #graph_content .logtags.tags {
2629 top: 14px;
2625 top: 14px;
2630 }
2626 }
2631
2627
2632 #graph_content .logtags:hover {
2628 #graph_content .logtags:hover {
2633 overflow: visible;
2629 overflow: visible;
2634 position: absolute;
2630 position: absolute;
2635 width: auto;
2631 width: auto;
2636 right: 0;
2632 right: 0;
2637 left: initial;
2633 left: initial;
2638 }
2634 }
2639
2635
2640 #graph_content .logtags .booktag,
2636 #graph_content .logtags .booktag,
2641 #graph_content .logtags .tagtag {
2637 #graph_content .logtags .tagtag {
2642 float: left;
2638 float: left;
2643 line-height: 1em;
2639 line-height: 1em;
2644 margin-bottom: 1px;
2640 margin-bottom: 1px;
2645 margin-right: 1px;
2641 margin-right: 1px;
2646 padding: 1px 3px;
2642 padding: 1px 3px;
2647 font-size: 10px;
2643 font-size: 10px;
2648 }
2644 }
2649
2645
2650 #graph_content .container .mid .message a:hover {
2646 #graph_content .container .mid .message a:hover {
2651 text-decoration: none;
2647 text-decoration: none;
2652 }
2648 }
2653
2649
2654 .revision-link {
2650 .revision-link {
2655 color: #3F6F9F;
2651 color: #3F6F9F;
2656 font-weight: bold !important;
2652 font-weight: bold !important;
2657 }
2653 }
2658
2654
2659 .issue-tracker-link {
2655 .issue-tracker-link {
2660 color: #3F6F9F;
2656 color: #3F6F9F;
2661 font-weight: bold !important;
2657 font-weight: bold !important;
2662 }
2658 }
2663
2659
2664 .changeset-status-container {
2660 .changeset-status-container {
2665 padding-right: 5px;
2661 padding-right: 5px;
2666 margin-top: 1px;
2662 margin-top: 1px;
2667 float: right;
2663 float: right;
2668 height: 14px;
2664 height: 14px;
2669 }
2665 }
2670 .code-header .changeset-status-container {
2666 .code-header .changeset-status-container {
2671 float: left;
2667 float: left;
2672 padding: 2px 0px 0px 2px;
2668 padding: 2px 0px 0px 2px;
2673 }
2669 }
2674 .changeset-status-container .changeset-status-lbl {
2670 .changeset-status-container .changeset-status-lbl {
2675 color: rgb(136, 136, 136);
2671 color: rgb(136, 136, 136);
2676 float: left;
2672 float: left;
2677 padding: 3px 4px 0px 0px
2673 padding: 3px 4px 0px 0px
2678 }
2674 }
2679 .code-header .changeset-status-container .changeset-status-lbl {
2675 .code-header .changeset-status-container .changeset-status-lbl {
2680 float: left;
2676 float: left;
2681 padding: 0px 4px 0px 0px;
2677 padding: 0px 4px 0px 0px;
2682 }
2678 }
2683 .changeset-status-container .changeset-status-ico {
2679 .changeset-status-container .changeset-status-ico {
2684 float: left;
2680 float: left;
2685 }
2681 }
2686 .code-header .changeset-status-container .changeset-status-ico, .container .changeset-status-ico {
2682 .code-header .changeset-status-container .changeset-status-ico, .container .changeset-status-ico {
2687 float: left;
2683 float: left;
2688 }
2684 }
2689
2685
2690 #graph_content .comments-cnt {
2686 #graph_content .comments-cnt {
2691 color: rgb(136, 136, 136);
2687 color: rgb(136, 136, 136);
2692 padding: 5px 0;
2688 padding: 5px 0;
2693 }
2689 }
2694
2690
2695 #graph_content .comments-cnt a {
2691 #graph_content .comments-cnt a {
2696 background-image: url('../images/icons/comments.png');
2692 background-image: url('../images/icons/comments.png');
2697 background-repeat: no-repeat;
2693 background-repeat: no-repeat;
2698 background-position: 100% 50%;
2694 background-position: 100% 50%;
2699 padding: 5px 0;
2695 padding: 5px 0;
2700 padding-right: 20px;
2696 padding-right: 20px;
2701 }
2697 }
2702
2698
2703 .right .changes {
2699 .right .changes {
2704 clear: both;
2700 clear: both;
2705 }
2701 }
2706
2702
2707 .right .changes .changed_total {
2703 .right .changes .changed_total {
2708 display: block;
2704 display: block;
2709 float: right;
2705 float: right;
2710 text-align: center;
2706 text-align: center;
2711 min-width: 45px;
2707 min-width: 45px;
2712 cursor: pointer;
2708 cursor: pointer;
2713 color: #444444;
2709 color: #444444;
2714 background: #FEA;
2710 background: #FEA;
2715 -webkit-border-radius: 0px 0px 0px 6px;
2711 -webkit-border-radius: 0px 0px 0px 6px;
2716 border-radius: 0px 0px 0px 6px;
2712 border-radius: 0px 0px 0px 6px;
2717 padding: 1px;
2713 padding: 1px;
2718 }
2714 }
2719
2715
2720 .right .changes .added, .changed, .removed {
2716 .right .changes .added, .changed, .removed {
2721 display: block;
2717 display: block;
2722 padding: 1px;
2718 padding: 1px;
2723 color: #444444;
2719 color: #444444;
2724 float: right;
2720 float: right;
2725 text-align: center;
2721 text-align: center;
2726 min-width: 15px;
2722 min-width: 15px;
2727 }
2723 }
2728
2724
2729 .right .changes .added {
2725 .right .changes .added {
2730 background: #CFC;
2726 background: #CFC;
2731 }
2727 }
2732
2728
2733 .right .changes .changed {
2729 .right .changes .changed {
2734 background: #FEA;
2730 background: #FEA;
2735 }
2731 }
2736
2732
2737 .right .changes .removed {
2733 .right .changes .removed {
2738 background: #FAA;
2734 background: #FAA;
2739 }
2735 }
2740
2736
2741 .right .merge {
2737 .right .merge {
2742 padding: 1px 3px 1px 3px;
2738 padding: 1px 3px 1px 3px;
2743 background-color: #fca062;
2739 background-color: #fca062;
2744 font-size: 10px;
2740 font-size: 10px;
2745 color: #ffffff;
2741 color: #ffffff;
2746 text-transform: uppercase;
2742 text-transform: uppercase;
2747 white-space: nowrap;
2743 white-space: nowrap;
2748 -webkit-border-radius: 3px;
2744 -webkit-border-radius: 3px;
2749 border-radius: 3px;
2745 border-radius: 3px;
2750 margin-right: 2px;
2746 margin-right: 2px;
2751 }
2747 }
2752
2748
2753 .right .parent {
2749 .right .parent {
2754 color: #666666;
2750 color: #666666;
2755 clear: both;
2751 clear: both;
2756 }
2752 }
2757 .right .logtags {
2753 .right .logtags {
2758 line-height: 2.2em;
2754 line-height: 2.2em;
2759 }
2755 }
2760 .branchtag, .logtags .tagtag, .logtags .booktag {
2756 .branchtag, .logtags .tagtag, .logtags .booktag {
2761 margin: 0px 2px;
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 .branchtag,
2760 .branchtag,
2771 .tagtag,
2761 .tagtag,
2772 .booktag,
2762 .booktag,
2773 .spantag {
2763 .spantag {
2774 padding: 1px 3px 1px 3px;
2764 padding: 1px 3px 1px 3px;
2775 font-size: 10px;
2765 font-size: 10px;
2776 color: #336699;
2766 color: #336699;
2777 white-space: nowrap;
2767 white-space: nowrap;
2778 -webkit-border-radius: 4px;
2768 -webkit-border-radius: 4px;
2779 border-radius: 4px;
2769 border-radius: 4px;
2780 border: 1px solid #d9e8f8;
2770 border: 1px solid #d9e8f8;
2781 line-height: 1.5em;
2771 line-height: 1.5em;
2782 }
2772 }
2783
2773
2784 #graph_content .branchtag,
2774 #graph_content .branchtag,
2785 #graph_content .tagtag,
2775 #graph_content .tagtag,
2786 #graph_content .booktag {
2776 #graph_content .booktag {
2787 margin: 1.1em 0;
2777 margin: 1.1em 0;
2788 margin-right: 0.5em;
2778 margin-right: 0.5em;
2789 }
2779 }
2790
2780
2791 .branchtag,
2781 .branchtag,
2792 .tagtag,
2782 .tagtag,
2793 .booktag {
2783 .booktag {
2794 float: left;
2784 float: left;
2795 }
2785 }
2796
2786
2797 .right .logtags .branchtag,
2787 .right .logtags .branchtag,
2798 .right .logtags .tagtag,
2788 .right .logtags .tagtag,
2799 .right .logtags .booktag,
2789 .right .logtags .booktag,
2800 .right .merge {
2790 .right .merge {
2801 float: right;
2791 float: right;
2802 line-height: 1em;
2792 line-height: 1em;
2803 margin: 1px 1px !important;
2793 margin: 1px 1px !important;
2804 display: block;
2794 display: block;
2805 }
2795 }
2806
2796
2807 .booktag {
2797 .booktag {
2808 border-color: #46A546;
2798 border-color: #46A546;
2809 color: #46A546;
2799 color: #46A546;
2810 }
2800 }
2811
2801
2812 .tagtag {
2802 .tagtag {
2813 border-color: #62cffc;
2803 border-color: #62cffc;
2814 color: #62cffc;
2804 color: #62cffc;
2815 }
2805 }
2816
2806
2817 .logtags .branchtag a:hover,
2807 .logtags .branchtag a:hover,
2818 .logtags .branchtag a,
2808 .logtags .branchtag a,
2819 .branchtag a,
2809 .branchtag a,
2820 .branchtag a:hover {
2810 .branchtag a:hover {
2821 text-decoration: none;
2811 text-decoration: none;
2822 color: inherit;
2812 color: inherit;
2823 }
2813 }
2824 .logtags .tagtag {
2814 .logtags .tagtag {
2825 padding: 1px 3px 1px 3px;
2815 padding: 1px 3px 1px 3px;
2826 background-color: #62cffc;
2816 background-color: #62cffc;
2827 font-size: 10px;
2817 font-size: 10px;
2828 color: #ffffff;
2818 color: #ffffff;
2829 white-space: nowrap;
2819 white-space: nowrap;
2830 -webkit-border-radius: 3px;
2820 -webkit-border-radius: 3px;
2831 border-radius: 3px;
2821 border-radius: 3px;
2832 }
2822 }
2833
2823
2834 .tagtag a,
2824 .tagtag a,
2835 .tagtag a:hover,
2825 .tagtag a:hover,
2836 .logtags .tagtag a,
2826 .logtags .tagtag a,
2837 .logtags .tagtag a:hover {
2827 .logtags .tagtag a:hover {
2838 text-decoration: none;
2828 text-decoration: none;
2839 color: inherit;
2829 color: inherit;
2840 }
2830 }
2841 .logbooks .booktag, .logbooks .booktag, .logtags .booktag, .logtags .booktag {
2831 .logbooks .booktag, .logbooks .booktag, .logtags .booktag, .logtags .booktag {
2842 padding: 1px 3px 1px 3px;
2832 padding: 1px 3px 1px 3px;
2843 background-color: #46A546;
2833 background-color: #46A546;
2844 font-size: 10px;
2834 font-size: 10px;
2845 color: #ffffff;
2835 color: #ffffff;
2846 white-space: nowrap;
2836 white-space: nowrap;
2847 -webkit-border-radius: 3px;
2837 -webkit-border-radius: 3px;
2848 border-radius: 3px;
2838 border-radius: 3px;
2849 }
2839 }
2850 .logbooks .booktag, .logbooks .booktag a, .right .logtags .booktag, .logtags .booktag a {
2840 .logbooks .booktag, .logbooks .booktag a, .right .logtags .booktag, .logtags .booktag a {
2851 color: #ffffff;
2841 color: #ffffff;
2852 }
2842 }
2853
2843
2854 .logbooks .booktag, .logbooks .booktag a:hover,
2844 .logbooks .booktag, .logbooks .booktag a:hover,
2855 .logtags .booktag, .logtags .booktag a:hover,
2845 .logtags .booktag, .logtags .booktag a:hover,
2856 .booktag a,
2846 .booktag a,
2857 .booktag a:hover {
2847 .booktag a:hover {
2858 text-decoration: none;
2848 text-decoration: none;
2859 color: inherit;
2849 color: inherit;
2860 }
2850 }
2861 div.browserblock {
2851 div.browserblock {
2862 overflow: hidden;
2852 overflow: hidden;
2863 border: 1px solid #ccc;
2853 border: 1px solid #ccc;
2864 background: #f8f8f8;
2854 background: #f8f8f8;
2865 font-size: 100%;
2855 font-size: 100%;
2866 line-height: 125%;
2856 line-height: 125%;
2867 padding: 0;
2857 padding: 0;
2868 -webkit-border-radius: 6px 6px 0px 0px;
2858 -webkit-border-radius: 6px 6px 0px 0px;
2869 border-radius: 6px 6px 0px 0px;
2859 border-radius: 6px 6px 0px 0px;
2870 }
2860 }
2871
2861
2872 div.browserblock .browser-header {
2862 div.browserblock .browser-header {
2873 background: #FFF;
2863 background: #FFF;
2874 padding: 10px 0px 15px 0px;
2864 padding: 10px 0px 15px 0px;
2875 width: 100%;
2865 width: 100%;
2876 }
2866 }
2877
2867
2878 div.browserblock .browser-nav {
2868 div.browserblock .browser-nav {
2879 float: left
2869 float: left
2880 }
2870 }
2881
2871
2882 div.browserblock .browser-branch {
2872 div.browserblock .browser-branch {
2883 float: left;
2873 float: left;
2884 }
2874 }
2885
2875
2886 div.browserblock .browser-branch label {
2876 div.browserblock .browser-branch label {
2887 color: #4A4A4A;
2877 color: #4A4A4A;
2888 vertical-align: text-top;
2878 vertical-align: text-top;
2889 }
2879 }
2890
2880
2891 div.browserblock .browser-header span {
2881 div.browserblock .browser-header span {
2892 margin-left: 5px;
2882 margin-left: 5px;
2893 font-weight: 700;
2883 font-weight: 700;
2894 }
2884 }
2895
2885
2896 div.browserblock .browser-search {
2886 div.browserblock .browser-search {
2897 clear: both;
2887 clear: both;
2898 padding: 8px 8px 0px 5px;
2888 padding: 8px 8px 0px 5px;
2899 height: 20px;
2889 height: 20px;
2900 }
2890 }
2901
2891
2902 div.browserblock #node_filter_box {
2892 div.browserblock #node_filter_box {
2903 }
2893 }
2904
2894
2905 div.browserblock .search_activate {
2895 div.browserblock .search_activate {
2906 float: left
2896 float: left
2907 }
2897 }
2908
2898
2909 div.browserblock .add_node {
2899 div.browserblock .add_node {
2910 float: left;
2900 float: left;
2911 padding-left: 5px;
2901 padding-left: 5px;
2912 }
2902 }
2913
2903
2914 div.browserblock .search_activate a:hover, div.browserblock .add_node a:hover {
2904 div.browserblock .search_activate a:hover, div.browserblock .add_node a:hover {
2915 text-decoration: none !important;
2905 text-decoration: none !important;
2916 }
2906 }
2917
2907
2918 div.browserblock .browser-body {
2908 div.browserblock .browser-body {
2919 background: #EEE;
2909 background: #EEE;
2920 border-top: 1px solid #CCC;
2910 border-top: 1px solid #CCC;
2921 }
2911 }
2922
2912
2923 table.code-browser {
2913 table.code-browser {
2924 border-collapse: collapse;
2914 border-collapse: collapse;
2925 width: 100%;
2915 width: 100%;
2926 }
2916 }
2927
2917
2928 table.code-browser tr {
2918 table.code-browser tr {
2929 margin: 3px;
2919 margin: 3px;
2930 }
2920 }
2931
2921
2932 table.code-browser thead th {
2922 table.code-browser thead th {
2933 background-color: #EEE;
2923 background-color: #EEE;
2934 height: 20px;
2924 height: 20px;
2935 font-size: 1.1em;
2925 font-size: 1.1em;
2936 font-weight: 700;
2926 font-weight: 700;
2937 text-align: left;
2927 text-align: left;
2938 padding-left: 10px;
2928 padding-left: 10px;
2939 }
2929 }
2940
2930
2941 table.code-browser tbody td {
2931 table.code-browser tbody td {
2942 padding-left: 10px;
2932 padding-left: 10px;
2943 height: 20px;
2933 height: 20px;
2944 }
2934 }
2945
2935
2946 table.code-browser .browser-file {
2936 table.code-browser .browser-file {
2947 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2937 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2948 height: 16px;
2938 height: 16px;
2949 padding-left: 20px;
2939 padding-left: 20px;
2950 text-align: left;
2940 text-align: left;
2951 }
2941 }
2952 .diffblock .changeset_header {
2942 .diffblock .changeset_header {
2953 height: 16px;
2943 height: 16px;
2954 }
2944 }
2955 .diffblock .changeset_file {
2945 .diffblock .changeset_file {
2956 background: url("../images/icons/file.png") no-repeat scroll 3px;
2946 background: url("../images/icons/file.png") no-repeat scroll 3px;
2957 text-align: left;
2947 text-align: left;
2958 float: left;
2948 float: left;
2959 padding: 2px 0px 2px 22px;
2949 padding: 2px 0px 2px 22px;
2960 }
2950 }
2961 .diffblock .diff-menu-wrapper {
2951 .diffblock .diff-menu-wrapper {
2962 float: left;
2952 float: left;
2963 }
2953 }
2964
2954
2965 .diffblock .diff-menu {
2955 .diffblock .diff-menu {
2966 position: absolute;
2956 position: absolute;
2967 background: none repeat scroll 0 0 #FFFFFF;
2957 background: none repeat scroll 0 0 #FFFFFF;
2968 border-color: #003367 #666666 #666666;
2958 border-color: #003367 #666666 #666666;
2969 border-right: 1px solid #666666;
2959 border-right: 1px solid #666666;
2970 border-style: solid solid solid;
2960 border-style: solid solid solid;
2971 border-width: 1px;
2961 border-width: 1px;
2972 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2962 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
2973 margin-top: 5px;
2963 margin-top: 5px;
2974 margin-left: 1px;
2964 margin-left: 1px;
2975
2965
2976 }
2966 }
2977 .diffblock .diff-actions {
2967 .diffblock .diff-actions {
2978 padding: 2px 0px 0px 2px;
2968 padding: 2px 0px 0px 2px;
2979 float: left;
2969 float: left;
2980 }
2970 }
2981 .diffblock .diff-menu ul li {
2971 .diffblock .diff-menu ul li {
2982 padding: 0px 0px 0px 0px !important;
2972 padding: 0px 0px 0px 0px !important;
2983 }
2973 }
2984 .diffblock .diff-menu ul li a {
2974 .diffblock .diff-menu ul li a {
2985 display: block;
2975 display: block;
2986 padding: 3px 8px 3px 8px !important;
2976 padding: 3px 8px 3px 8px !important;
2987 }
2977 }
2988 .diffblock .diff-menu ul li a:hover {
2978 .diffblock .diff-menu ul li a:hover {
2989 text-decoration: none;
2979 text-decoration: none;
2990 background-color: #EEEEEE;
2980 background-color: #EEEEEE;
2991 }
2981 }
2992 table.code-browser .browser-dir {
2982 table.code-browser .browser-dir {
2993 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2983 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
2994 height: 16px;
2984 height: 16px;
2995 padding-left: 20px;
2985 padding-left: 20px;
2996 text-align: left;
2986 text-align: left;
2997 }
2987 }
2998
2988
2999 table.code-browser .submodule-dir {
2989 table.code-browser .submodule-dir {
3000 background: url("../images/icons/disconnect.png") no-repeat scroll 3px;
2990 background: url("../images/icons/disconnect.png") no-repeat scroll 3px;
3001 height: 16px;
2991 height: 16px;
3002 padding-left: 20px;
2992 padding-left: 20px;
3003 text-align: left;
2993 text-align: left;
3004 }
2994 }
3005
2995
3006
2996
3007 .box .search {
2997 .box .search {
3008 clear: both;
2998 clear: both;
3009 overflow: hidden;
2999 overflow: hidden;
3010 margin: 0;
3000 margin: 0;
3011 padding: 0 20px 10px;
3001 padding: 0 20px 10px;
3012 }
3002 }
3013
3003
3014 .box .search div.search_path {
3004 .box .search div.search_path {
3015 background: none repeat scroll 0 0 #EEE;
3005 background: none repeat scroll 0 0 #EEE;
3016 border: 1px solid #CCC;
3006 border: 1px solid #CCC;
3017 color: blue;
3007 color: blue;
3018 margin-bottom: 10px;
3008 margin-bottom: 10px;
3019 padding: 10px 0;
3009 padding: 10px 0;
3020 }
3010 }
3021
3011
3022 .box .search div.search_path div.link {
3012 .box .search div.search_path div.link {
3023 font-weight: 700;
3013 font-weight: 700;
3024 margin-left: 25px;
3014 margin-left: 25px;
3025 }
3015 }
3026
3016
3027 .box .search div.search_path div.link a {
3017 .box .search div.search_path div.link a {
3028 color: #003367;
3018 color: #003367;
3029 cursor: pointer;
3019 cursor: pointer;
3030 text-decoration: none;
3020 text-decoration: none;
3031 }
3021 }
3032
3022
3033 #path_unlock {
3023 #path_unlock {
3034 color: red;
3024 color: red;
3035 font-size: 1.2em;
3025 font-size: 1.2em;
3036 padding-left: 4px;
3026 padding-left: 4px;
3037 }
3027 }
3038
3028
3039 .info_box span {
3029 .info_box span {
3040 margin-left: 3px;
3030 margin-left: 3px;
3041 margin-right: 3px;
3031 margin-right: 3px;
3042 }
3032 }
3043
3033
3044 .info_box .rev {
3034 .info_box .rev {
3045 color: #003367;
3035 color: #003367;
3046 font-size: 1.6em;
3036 font-size: 1.6em;
3047 font-weight: bold;
3037 font-weight: bold;
3048 vertical-align: sub;
3038 vertical-align: sub;
3049 }
3039 }
3050
3040
3051 .info_box input#at_rev, .info_box input#size {
3041 .info_box input#at_rev, .info_box input#size {
3052 background: #FFF;
3042 background: #FFF;
3053 border-top: 1px solid #b3b3b3;
3043 border-top: 1px solid #b3b3b3;
3054 border-left: 1px solid #b3b3b3;
3044 border-left: 1px solid #b3b3b3;
3055 border-right: 1px solid #eaeaea;
3045 border-right: 1px solid #eaeaea;
3056 border-bottom: 1px solid #eaeaea;
3046 border-bottom: 1px solid #eaeaea;
3057 color: #000;
3047 color: #000;
3058 font-size: 12px;
3048 font-size: 12px;
3059 margin: 0;
3049 margin: 0;
3060 padding: 1px 5px 1px;
3050 padding: 1px 5px 1px;
3061 }
3051 }
3062
3052
3063 .info_box input#view {
3053 .info_box input#view {
3064 text-align: center;
3054 text-align: center;
3065 padding: 4px 3px 2px 2px;
3055 padding: 4px 3px 2px 2px;
3066 }
3056 }
3067
3057
3068 .yui-overlay, .yui-panel-container {
3058 .yui-overlay, .yui-panel-container {
3069 visibility: hidden;
3059 visibility: hidden;
3070 position: absolute;
3060 position: absolute;
3071 z-index: 2;
3061 z-index: 2;
3072 }
3062 }
3073
3063
3074 #tip-box {
3064 #tip-box {
3075 position: absolute;
3065 position: absolute;
3076
3066
3077 background-color: #FFF;
3067 background-color: #FFF;
3078 border: 2px solid #003367;
3068 border: 2px solid #003367;
3079 font: 100% sans-serif;
3069 font: 100% sans-serif;
3080 width: auto;
3070 width: auto;
3081 opacity: 1;
3071 opacity: 1;
3082 padding: 8px;
3072 padding: 8px;
3083
3073
3084 white-space: pre-wrap;
3074 white-space: pre-wrap;
3085 -webkit-border-radius: 8px 8px 8px 8px;
3075 -webkit-border-radius: 8px 8px 8px 8px;
3086 -khtml-border-radius: 8px 8px 8px 8px;
3076 -khtml-border-radius: 8px 8px 8px 8px;
3087 border-radius: 8px 8px 8px 8px;
3077 border-radius: 8px 8px 8px 8px;
3088 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3078 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3089 -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3079 -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3090 }
3080 }
3091
3081
3092 .hl-tip-box {
3082 .hl-tip-box {
3093 visibility: hidden;
3083 visibility: hidden;
3094 position: absolute;
3084 position: absolute;
3095 color: #666;
3085 color: #666;
3096 background-color: #FFF;
3086 background-color: #FFF;
3097 border: 2px solid #003367;
3087 border: 2px solid #003367;
3098 font: 100% sans-serif;
3088 font: 100% sans-serif;
3099 width: auto;
3089 width: auto;
3100 opacity: 1;
3090 opacity: 1;
3101 padding: 8px;
3091 padding: 8px;
3102 white-space: pre-wrap;
3092 white-space: pre-wrap;
3103 -webkit-border-radius: 8px 8px 8px 8px;
3093 -webkit-border-radius: 8px 8px 8px 8px;
3104 -khtml-border-radius: 8px 8px 8px 8px;
3094 -khtml-border-radius: 8px 8px 8px 8px;
3105 border-radius: 8px 8px 8px 8px;
3095 border-radius: 8px 8px 8px 8px;
3106 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3096 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3107 }
3097 }
3108
3098
3109
3099
3110 .mentions-container {
3100 .mentions-container {
3111 width: 90% !important;
3101 width: 90% !important;
3112 }
3102 }
3113 .mentions-container .yui-ac-content {
3103 .mentions-container .yui-ac-content {
3114 width: 100% !important;
3104 width: 100% !important;
3115 }
3105 }
3116
3106
3117 .ac {
3107 .ac {
3118 vertical-align: top;
3108 vertical-align: top;
3119 }
3109 }
3120
3110
3121 .ac .yui-ac {
3111 .ac .yui-ac {
3122 position: inherit;
3112 position: inherit;
3123 font-size: 100%;
3113 font-size: 100%;
3124 }
3114 }
3125
3115
3126 .ac .perm_ac {
3116 .ac .perm_ac {
3127 width: 20em;
3117 width: 20em;
3128 }
3118 }
3129
3119
3130 .ac .yui-ac-input {
3120 .ac .yui-ac-input {
3131 width: 100%;
3121 width: 100%;
3132 }
3122 }
3133
3123
3134 .ac .yui-ac-container {
3124 .ac .yui-ac-container {
3135 position: absolute;
3125 position: absolute;
3136 top: 1.6em;
3126 top: 1.6em;
3137 width: auto;
3127 width: auto;
3138 }
3128 }
3139
3129
3140 .ac .yui-ac-content {
3130 .ac .yui-ac-content {
3141 position: absolute;
3131 position: absolute;
3142 border: 1px solid gray;
3132 border: 1px solid gray;
3143 background: #fff;
3133 background: #fff;
3144 z-index: 9050;
3134 z-index: 9050;
3145 }
3135 }
3146
3136
3147 .ac .yui-ac-shadow {
3137 .ac .yui-ac-shadow {
3148 position: absolute;
3138 position: absolute;
3149 width: 100%;
3139 width: 100%;
3150 background: #000;
3140 background: #000;
3151 opacity: .10;
3141 opacity: .10;
3152 filter: alpha(opacity = 10);
3142 filter: alpha(opacity = 10);
3153 z-index: 9049;
3143 z-index: 9049;
3154 margin: .3em;
3144 margin: .3em;
3155 }
3145 }
3156
3146
3157 .ac .yui-ac-content ul {
3147 .ac .yui-ac-content ul {
3158 width: 100%;
3148 width: 100%;
3159 margin: 0;
3149 margin: 0;
3160 padding: 0;
3150 padding: 0;
3161 z-index: 9050;
3151 z-index: 9050;
3162 }
3152 }
3163
3153
3164 .ac .yui-ac-content li {
3154 .ac .yui-ac-content li {
3165 cursor: default;
3155 cursor: default;
3166 white-space: nowrap;
3156 white-space: nowrap;
3167 margin: 0;
3157 margin: 0;
3168 padding: 2px 5px;
3158 padding: 2px 5px;
3169 height: 18px;
3159 height: 18px;
3170 z-index: 9050;
3160 z-index: 9050;
3171 display: block;
3161 display: block;
3172 width: auto !important;
3162 width: auto !important;
3173 }
3163 }
3174
3164
3175 .ac .yui-ac-content li .ac-container-wrap {
3165 .ac .yui-ac-content li .ac-container-wrap {
3176 width: auto;
3166 width: auto;
3177 }
3167 }
3178
3168
3179 .ac .yui-ac-content li.yui-ac-prehighlight {
3169 .ac .yui-ac-content li.yui-ac-prehighlight {
3180 background: #B3D4FF;
3170 background: #B3D4FF;
3181 z-index: 9050;
3171 z-index: 9050;
3182 }
3172 }
3183
3173
3184 .ac .yui-ac-content li.yui-ac-highlight {
3174 .ac .yui-ac-content li.yui-ac-highlight {
3185 background: #556CB5;
3175 background: #556CB5;
3186 color: #FFF;
3176 color: #FFF;
3187 z-index: 9050;
3177 z-index: 9050;
3188 }
3178 }
3189 .ac .yui-ac-bd {
3179 .ac .yui-ac-bd {
3190 z-index: 9050;
3180 z-index: 9050;
3191 }
3181 }
3192
3182
3193 .reposize {
3183 .reposize {
3194 background: url("../images/icons/server.png") no-repeat scroll 3px;
3184 background: url("../images/icons/server.png") no-repeat scroll 3px;
3195 height: 16px;
3185 height: 16px;
3196 width: 20px;
3186 width: 20px;
3197 cursor: pointer;
3187 cursor: pointer;
3198 display: block;
3188 display: block;
3199 float: right;
3189 float: right;
3200 margin-top: 2px;
3190 margin-top: 2px;
3201 }
3191 }
3202
3192
3203 #repo_size {
3193 #repo_size {
3204 display: block;
3194 display: block;
3205 margin-top: 4px;
3195 margin-top: 4px;
3206 color: #666;
3196 color: #666;
3207 float: right;
3197 float: right;
3208 }
3198 }
3209
3199
3210 .locking_locked {
3200 .locking_locked {
3211 background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px;
3201 background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px;
3212 height: 16px;
3202 height: 16px;
3213 width: 20px;
3203 width: 20px;
3214 cursor: pointer;
3204 cursor: pointer;
3215 display: block;
3205 display: block;
3216 float: right;
3206 float: right;
3217 margin-top: 2px;
3207 margin-top: 2px;
3218 }
3208 }
3219
3209
3220 .locking_unlocked {
3210 .locking_unlocked {
3221 background: #FFF url("../images/icons/accept.png") no-repeat scroll 3px;
3211 background: #FFF url("../images/icons/accept.png") no-repeat scroll 3px;
3222 height: 16px;
3212 height: 16px;
3223 width: 20px;
3213 width: 20px;
3224 cursor: pointer;
3214 cursor: pointer;
3225 display: block;
3215 display: block;
3226 float: right;
3216 float: right;
3227 margin-top: 2px;
3217 margin-top: 2px;
3228 }
3218 }
3229
3219
3230 .currently_following {
3220 .currently_following {
3231 padding-left: 10px;
3221 padding-left: 10px;
3232 padding-bottom: 5px;
3222 padding-bottom: 5px;
3233 }
3223 }
3234
3224
3235 .add_icon {
3225 .add_icon {
3236 background: url("../images/icons/add.png") no-repeat scroll 3px;
3226 background: url("../images/icons/add.png") no-repeat scroll 3px;
3237 padding-left: 20px;
3227 padding-left: 20px;
3238 padding-top: 0px;
3228 padding-top: 0px;
3239 text-align: left;
3229 text-align: left;
3240 }
3230 }
3241
3231
3242 .accept_icon {
3232 .accept_icon {
3243 background: url("../images/icons/accept.png") no-repeat scroll 3px;
3233 background: url("../images/icons/accept.png") no-repeat scroll 3px;
3244 padding-left: 20px;
3234 padding-left: 20px;
3245 padding-top: 0px;
3235 padding-top: 0px;
3246 text-align: left;
3236 text-align: left;
3247 }
3237 }
3248
3238
3249 .edit_icon {
3239 .edit_icon {
3250 background: url("../images/icons/application_form_edit.png") no-repeat scroll 3px;
3240 background: url("../images/icons/application_form_edit.png") no-repeat scroll 3px;
3251 padding-left: 20px;
3241 padding-left: 20px;
3252 padding-top: 0px;
3242 padding-top: 0px;
3253 text-align: left;
3243 text-align: left;
3254 }
3244 }
3255
3245
3256 .delete_icon {
3246 .delete_icon {
3257 background: url("../images/icons/delete.png") no-repeat scroll 3px;
3247 background: url("../images/icons/delete.png") no-repeat scroll 3px;
3258 padding-left: 20px;
3248 padding-left: 20px;
3259 padding-top: 0px;
3249 padding-top: 0px;
3260 text-align: left;
3250 text-align: left;
3261 }
3251 }
3262
3252
3263 .refresh_icon {
3253 .refresh_icon {
3264 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
3254 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
3265 3px;
3255 3px;
3266 padding-left: 20px;
3256 padding-left: 20px;
3267 padding-top: 0px;
3257 padding-top: 0px;
3268 text-align: left;
3258 text-align: left;
3269 }
3259 }
3270
3260
3271 .pull_icon {
3261 .pull_icon {
3272 background: url("../images/icons/connect.png") no-repeat scroll 3px;
3262 background: url("../images/icons/connect.png") no-repeat scroll 3px;
3273 padding-left: 20px;
3263 padding-left: 20px;
3274 padding-top: 0px;
3264 padding-top: 0px;
3275 text-align: left;
3265 text-align: left;
3276 }
3266 }
3277
3267
3278 .rss_icon {
3268 .rss_icon {
3279 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3269 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3280 padding-left: 20px;
3270 padding-left: 20px;
3281 padding-top: 4px;
3271 padding-top: 4px;
3282 text-align: left;
3272 text-align: left;
3283 font-size: 8px
3273 font-size: 8px
3284 }
3274 }
3285
3275
3286 .atom_icon {
3276 .atom_icon {
3287 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3277 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3288 padding-left: 20px;
3278 padding-left: 20px;
3289 padding-top: 4px;
3279 padding-top: 4px;
3290 text-align: left;
3280 text-align: left;
3291 font-size: 8px
3281 font-size: 8px
3292 }
3282 }
3293
3283
3294 .archive_icon {
3284 .archive_icon {
3295 background: url("../images/icons/compress.png") no-repeat scroll 3px;
3285 background: url("../images/icons/compress.png") no-repeat scroll 3px;
3296 padding-left: 20px;
3286 padding-left: 20px;
3297 text-align: left;
3287 text-align: left;
3298 padding-top: 1px;
3288 padding-top: 1px;
3299 }
3289 }
3300
3290
3301 .start_following_icon {
3291 .start_following_icon {
3302 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3292 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3303 padding-left: 20px;
3293 padding-left: 20px;
3304 text-align: left;
3294 text-align: left;
3305 padding-top: 0px;
3295 padding-top: 0px;
3306 }
3296 }
3307
3297
3308 .stop_following_icon {
3298 .stop_following_icon {
3309 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3299 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3310 padding-left: 20px;
3300 padding-left: 20px;
3311 text-align: left;
3301 text-align: left;
3312 padding-top: 0px;
3302 padding-top: 0px;
3313 }
3303 }
3314
3304
3315 .action_button {
3305 .action_button {
3316 border: 0;
3306 border: 0;
3317 display: inline;
3307 display: inline;
3318 }
3308 }
3319
3309
3320 .action_button:hover {
3310 .action_button:hover {
3321 border: 0;
3311 border: 0;
3322 text-decoration: underline;
3312 text-decoration: underline;
3323 cursor: pointer;
3313 cursor: pointer;
3324 }
3314 }
3325
3315
3326 #switch_repos {
3316 #switch_repos {
3327 position: absolute;
3317 position: absolute;
3328 height: 25px;
3318 height: 25px;
3329 z-index: 1;
3319 z-index: 1;
3330 }
3320 }
3331
3321
3332 #switch_repos select {
3322 #switch_repos select {
3333 min-width: 150px;
3323 min-width: 150px;
3334 max-height: 250px;
3324 max-height: 250px;
3335 z-index: 1;
3325 z-index: 1;
3336 }
3326 }
3337
3327
3338 .breadcrumbs {
3328 .breadcrumbs {
3339 border: medium none;
3329 border: medium none;
3340 color: #FFF;
3330 color: #FFF;
3341 float: left;
3331 float: left;
3342 font-weight: 700;
3332 font-weight: 700;
3343 font-size: 14px;
3333 font-size: 14px;
3344 margin: 0;
3334 margin: 0;
3345 padding: 11px 0 11px 10px;
3335 padding: 11px 0 11px 10px;
3346 }
3336 }
3347
3337
3348 .breadcrumbs .hash {
3338 .breadcrumbs .hash {
3349 text-transform: none;
3339 text-transform: none;
3350 color: #fff;
3340 color: #fff;
3351 }
3341 }
3352
3342
3353 .breadcrumbs a {
3343 .breadcrumbs a {
3354 color: #FFF;
3344 color: #FFF;
3355 }
3345 }
3356
3346
3357 .flash_msg {
3347 .flash_msg {
3358 }
3348 }
3359
3349
3360 .flash_msg ul {
3350 .flash_msg ul {
3361 }
3351 }
3362
3352
3363 .error_red {
3353 .error_red {
3364 color: red;
3354 color: red;
3365 }
3355 }
3366
3356
3367 .error_msg {
3357 .error_msg {
3368 background-color: #c43c35;
3358 background-color: #c43c35;
3369 background-repeat: repeat-x;
3359 background-repeat: repeat-x;
3370 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35) );
3360 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35) );
3371 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3361 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3372 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3362 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3373 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35) );
3363 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35) );
3374 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3364 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3375 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3365 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3376 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3366 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3377 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35', GradientType=0 );
3367 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35', GradientType=0 );
3378 border-color: #c43c35 #c43c35 #882a25;
3368 border-color: #c43c35 #c43c35 #882a25;
3379 }
3369 }
3380
3370
3381 .error_msg a {
3371 .error_msg a {
3382 text-decoration: underline;
3372 text-decoration: underline;
3383 }
3373 }
3384
3374
3385 .warning_msg {
3375 .warning_msg {
3386 color: #404040 !important;
3376 color: #404040 !important;
3387 background-color: #eedc94;
3377 background-color: #eedc94;
3388 background-repeat: repeat-x;
3378 background-repeat: repeat-x;
3389 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94) );
3379 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94) );
3390 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
3380 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
3391 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
3381 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
3392 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94) );
3382 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94) );
3393 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
3383 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
3394 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
3384 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
3395 background-image: linear-gradient(to bottom, #fceec1, #eedc94);
3385 background-image: linear-gradient(to bottom, #fceec1, #eedc94);
3396 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0 );
3386 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0 );
3397 border-color: #eedc94 #eedc94 #e4c652;
3387 border-color: #eedc94 #eedc94 #e4c652;
3398 }
3388 }
3399
3389
3400 .warning_msg a {
3390 .warning_msg a {
3401 text-decoration: underline;
3391 text-decoration: underline;
3402 }
3392 }
3403
3393
3404 .success_msg {
3394 .success_msg {
3405 background-color: #57a957;
3395 background-color: #57a957;
3406 background-repeat: repeat-x !important;
3396 background-repeat: repeat-x !important;
3407 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957) );
3397 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957) );
3408 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3398 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3409 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3399 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3410 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957) );
3400 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957) );
3411 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3401 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3412 background-image: -o-linear-gradient(top, #62c462, #57a957);
3402 background-image: -o-linear-gradient(top, #62c462, #57a957);
3413 background-image: linear-gradient(to bottom, #62c462, #57a957);
3403 background-image: linear-gradient(to bottom, #62c462, #57a957);
3414 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0 );
3404 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0 );
3415 border-color: #57a957 #57a957 #3d773d;
3405 border-color: #57a957 #57a957 #3d773d;
3416 }
3406 }
3417
3407
3418 .success_msg a {
3408 .success_msg a {
3419 text-decoration: underline;
3409 text-decoration: underline;
3420 color: #FFF !important;
3410 color: #FFF !important;
3421 }
3411 }
3422
3412
3423 .notice_msg {
3413 .notice_msg {
3424 background-color: #339bb9;
3414 background-color: #339bb9;
3425 background-repeat: repeat-x;
3415 background-repeat: repeat-x;
3426 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9) );
3416 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9) );
3427 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3417 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3428 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3418 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3429 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9) );
3419 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9) );
3430 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3420 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3431 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3421 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3432 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3422 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3433 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0 );
3423 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0 );
3434 border-color: #339bb9 #339bb9 #22697d;
3424 border-color: #339bb9 #339bb9 #22697d;
3435 }
3425 }
3436
3426
3437 .notice_msg a {
3427 .notice_msg a {
3438 text-decoration: underline;
3428 text-decoration: underline;
3439 }
3429 }
3440
3430
3441 .success_msg, .error_msg, .notice_msg, .warning_msg {
3431 .success_msg, .error_msg, .notice_msg, .warning_msg {
3442 font-size: 12px;
3432 font-size: 12px;
3443 font-weight: 700;
3433 font-weight: 700;
3444 min-height: 14px;
3434 min-height: 14px;
3445 line-height: 14px;
3435 line-height: 14px;
3446 margin-bottom: 10px;
3436 margin-bottom: 10px;
3447 margin-top: 0;
3437 margin-top: 0;
3448 display: block;
3438 display: block;
3449 overflow: auto;
3439 overflow: auto;
3450 padding: 6px 10px 6px 10px;
3440 padding: 6px 10px 6px 10px;
3451 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3441 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3452 position: relative;
3442 position: relative;
3453 color: #FFF;
3443 color: #FFF;
3454 border-width: 1px;
3444 border-width: 1px;
3455 border-style: solid;
3445 border-style: solid;
3456 -webkit-border-radius: 4px;
3446 -webkit-border-radius: 4px;
3457 border-radius: 4px;
3447 border-radius: 4px;
3458 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3448 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3459 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3449 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3460 }
3450 }
3461
3451
3462 #msg_close {
3452 #msg_close {
3463 background: transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
3453 background: transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
3464 cursor: pointer;
3454 cursor: pointer;
3465 height: 16px;
3455 height: 16px;
3466 position: absolute;
3456 position: absolute;
3467 right: 5px;
3457 right: 5px;
3468 top: 5px;
3458 top: 5px;
3469 width: 16px;
3459 width: 16px;
3470 }
3460 }
3471 div#legend_data {
3461 div#legend_data {
3472 padding-left: 10px;
3462 padding-left: 10px;
3473 }
3463 }
3474 div#legend_container table {
3464 div#legend_container table {
3475 border: none !important;
3465 border: none !important;
3476 }
3466 }
3477 div#legend_container table, div#legend_choices table {
3467 div#legend_container table, div#legend_choices table {
3478 width: auto !important;
3468 width: auto !important;
3479 }
3469 }
3480
3470
3481 table#permissions_manage {
3471 table#permissions_manage {
3482 width: 0 !important;
3472 width: 0 !important;
3483 }
3473 }
3484
3474
3485 table#permissions_manage span.private_repo_msg {
3475 table#permissions_manage span.private_repo_msg {
3486 font-size: 0.8em;
3476 font-size: 0.8em;
3487 opacity: 0.6;
3477 opacity: 0.6;
3488 }
3478 }
3489
3479
3490 table#permissions_manage td.private_repo_msg {
3480 table#permissions_manage td.private_repo_msg {
3491 font-size: 0.8em;
3481 font-size: 0.8em;
3492 }
3482 }
3493
3483
3494 table#permissions_manage tr#add_perm_input td {
3484 table#permissions_manage tr#add_perm_input td {
3495 vertical-align: middle;
3485 vertical-align: middle;
3496 }
3486 }
3497
3487
3498 div.gravatar {
3488 div.gravatar {
3499 background-color: #FFF;
3489 background-color: #FFF;
3500 float: left;
3490 float: left;
3501 margin-right: 0.7em;
3491 margin-right: 0.7em;
3502 padding: 1px 1px 1px 1px;
3492 padding: 1px 1px 1px 1px;
3503 line-height: 0;
3493 line-height: 0;
3504 -webkit-border-radius: 3px;
3494 -webkit-border-radius: 3px;
3505 -khtml-border-radius: 3px;
3495 -khtml-border-radius: 3px;
3506 border-radius: 3px;
3496 border-radius: 3px;
3507 }
3497 }
3508
3498
3509 div.gravatar img {
3499 div.gravatar img {
3510 -webkit-border-radius: 2px;
3500 -webkit-border-radius: 2px;
3511 -khtml-border-radius: 2px;
3501 -khtml-border-radius: 2px;
3512 border-radius: 2px;
3502 border-radius: 2px;
3513 }
3503 }
3514
3504
3515 #header, #content, #footer {
3505 #header, #content, #footer {
3516 min-width: 978px;
3506 min-width: 978px;
3517 }
3507 }
3518
3508
3519 #content {
3509 #content {
3520 clear: both;
3510 clear: both;
3521 padding: 10px 10px 14px 10px;
3511 padding: 10px 10px 14px 10px;
3522 }
3512 }
3523
3513
3524 #content.hover {
3514 #content.hover {
3525 padding: 55px 10px 14px 10px !important;
3515 padding: 55px 10px 14px 10px !important;
3526 }
3516 }
3527
3517
3528 #content div.box div.title div.search {
3518 #content div.box div.title div.search {
3529 border-left: 1px solid #316293;
3519 border-left: 1px solid #316293;
3530 }
3520 }
3531
3521
3532 #content div.box div.title div.search div.input input {
3522 #content div.box div.title div.search div.input input {
3533 border: 1px solid #316293;
3523 border: 1px solid #316293;
3534 }
3524 }
3535
3525
3536 .ui-btn {
3526 .ui-btn {
3537 color: #515151;
3527 color: #515151;
3538 background-color: #DADADA;
3528 background-color: #DADADA;
3539 background-repeat: repeat-x;
3529 background-repeat: repeat-x;
3540 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3530 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3541 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3531 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3542 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3532 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3543 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3533 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3544 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3534 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3545 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3535 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3546 background-image: linear-gradient(to bottom, #F4F4F4, #DADADA);
3536 background-image: linear-gradient(to bottom, #F4F4F4, #DADADA);
3547 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3537 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3548
3538
3549 border-top: 1px solid #DDD;
3539 border-top: 1px solid #DDD;
3550 border-left: 1px solid #c6c6c6;
3540 border-left: 1px solid #c6c6c6;
3551 border-right: 1px solid #DDD;
3541 border-right: 1px solid #DDD;
3552 border-bottom: 1px solid #c6c6c6;
3542 border-bottom: 1px solid #c6c6c6;
3553 color: #515151;
3543 color: #515151;
3554 outline: none;
3544 outline: none;
3555 margin: 0px 3px 3px 0px;
3545 margin: 0px 3px 3px 0px;
3556 -webkit-border-radius: 4px 4px 4px 4px !important;
3546 -webkit-border-radius: 4px 4px 4px 4px !important;
3557 -khtml-border-radius: 4px 4px 4px 4px !important;
3547 -khtml-border-radius: 4px 4px 4px 4px !important;
3558 border-radius: 4px 4px 4px 4px !important;
3548 border-radius: 4px 4px 4px 4px !important;
3559 cursor: pointer !important;
3549 cursor: pointer !important;
3560 padding: 3px 3px 3px 3px;
3550 padding: 3px 3px 3px 3px;
3561 background-position: 0 -15px;
3551 background-position: 0 -15px;
3562
3552
3563 }
3553 }
3564
3554
3565 .ui-btn.disabled {
3555 .ui-btn.disabled {
3566 color: #999;
3556 color: #999;
3567 }
3557 }
3568
3558
3569 .ui-btn.xsmall {
3559 .ui-btn.xsmall {
3570 padding: 1px 2px 1px 1px;
3560 padding: 1px 2px 1px 1px;
3571 }
3561 }
3572
3562
3573 .ui-btn.large {
3563 .ui-btn.large {
3574 padding: 6px 12px;
3564 padding: 6px 12px;
3575 }
3565 }
3576
3566
3577 .ui-btn.clone {
3567 .ui-btn.clone {
3578 padding: 5px 2px 6px 1px;
3568 padding: 5px 2px 6px 1px;
3579 margin: 0px 0px 3px -4px;
3569 margin: 0px 0px 3px -4px;
3580 -webkit-border-radius: 0px 4px 4px 0px !important;
3570 -webkit-border-radius: 0px 4px 4px 0px !important;
3581 -khtml-border-radius: 0px 4px 4px 0px !important;
3571 -khtml-border-radius: 0px 4px 4px 0px !important;
3582 border-radius: 0px 4px 4px 0px !important;
3572 border-radius: 0px 4px 4px 0px !important;
3583 width: 100px;
3573 width: 100px;
3584 text-align: center;
3574 text-align: center;
3585 display: inline-block;
3575 display: inline-block;
3586 position: relative;
3576 position: relative;
3587 top: -2px;
3577 top: -2px;
3588 }
3578 }
3589 .ui-btn:focus {
3579 .ui-btn:focus {
3590 outline: none;
3580 outline: none;
3591 }
3581 }
3592 .ui-btn:hover {
3582 .ui-btn:hover {
3593 background-position: 0 -15px;
3583 background-position: 0 -15px;
3594 text-decoration: none;
3584 text-decoration: none;
3595 color: #515151;
3585 color: #515151;
3596 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3586 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3597 }
3587 }
3598
3588
3599 .ui-btn.disabled:hover {
3589 .ui-btn.disabled:hover {
3600 background-position: 0;
3590 background-position: 0;
3601 color: #999;
3591 color: #999;
3602 text-decoration: none;
3592 text-decoration: none;
3603 box-shadow: none !important;
3593 box-shadow: none !important;
3604 }
3594 }
3605
3595
3606 .ui-btn.red {
3596 .ui-btn.red {
3607 color: #fff;
3597 color: #fff;
3608 background-color: #c43c35;
3598 background-color: #c43c35;
3609 background-repeat: repeat-x;
3599 background-repeat: repeat-x;
3610 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3600 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3611 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3601 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3612 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3602 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3613 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3603 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3614 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3604 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3615 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3605 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3616 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3606 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3617 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3607 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3618 border-color: #c43c35 #c43c35 #882a25;
3608 border-color: #c43c35 #c43c35 #882a25;
3619 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
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 .ui-btn.blue {
3613 .ui-btn.blue {
3624 color: #fff;
3614 color: #fff;
3625 background-color: #339bb9;
3615 background-color: #339bb9;
3626 background-repeat: repeat-x;
3616 background-repeat: repeat-x;
3627 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3617 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3628 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3618 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3629 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3619 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3630 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3620 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3631 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3621 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3632 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3622 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3633 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3623 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3634 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3624 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3635 border-color: #339bb9 #339bb9 #22697d;
3625 border-color: #339bb9 #339bb9 #22697d;
3636 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3626 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3637 }
3627 }
3638
3628
3639 .ui-btn.green {
3629 .ui-btn.green {
3640 background-color: #57a957;
3630 background-color: #57a957;
3641 background-repeat: repeat-x;
3631 background-repeat: repeat-x;
3642 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3632 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3643 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3633 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3644 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3634 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3645 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3635 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3646 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3636 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3647 background-image: -o-linear-gradient(top, #62c462, #57a957);
3637 background-image: -o-linear-gradient(top, #62c462, #57a957);
3648 background-image: linear-gradient(to bottom, #62c462, #57a957);
3638 background-image: linear-gradient(to bottom, #62c462, #57a957);
3649 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3639 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3650 border-color: #57a957 #57a957 #3d773d;
3640 border-color: #57a957 #57a957 #3d773d;
3651 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
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 .ui-btn.blue.hidden {
3644 .ui-btn.blue.hidden {
3655 display: none;
3645 display: none;
3656 }
3646 }
3657
3647
3658 .ui-btn.active {
3648 .ui-btn.active {
3659 font-weight: bold;
3649 font-weight: bold;
3660 }
3650 }
3661
3651
3662 ins, div.options a:hover {
3652 ins, div.options a:hover {
3663 text-decoration: none;
3653 text-decoration: none;
3664 }
3654 }
3665
3655
3666 img,
3656 img,
3667 #header #header-inner #quick li a:hover span.normal,
3657 #header #header-inner #quick li a:hover span.normal,
3668 #content div.box div.form div.fields div.field div.textarea table td table td a,
3658 #content div.box div.form div.fields div.field div.textarea table td table td a,
3669 #clone_url,
3659 #clone_url,
3670 #clone_url_id
3660 #clone_url_id
3671 {
3661 {
3672 border: none;
3662 border: none;
3673 }
3663 }
3674
3664
3675 img.icon, .right .merge img {
3665 img.icon, .right .merge img {
3676 vertical-align: bottom;
3666 vertical-align: bottom;
3677 }
3667 }
3678
3668
3679 #header ul#logged-user, #content div.box div.title ul.links,
3669 #header ul#logged-user, #content div.box div.title ul.links,
3680 #content div.box div.message div.dismiss,
3670 #content div.box div.message div.dismiss,
3681 #content div.box div.traffic div.legend ul {
3671 #content div.box div.traffic div.legend ul {
3682 float: right;
3672 float: right;
3683 margin: 0;
3673 margin: 0;
3684 padding: 0;
3674 padding: 0;
3685 }
3675 }
3686
3676
3687 #header #header-inner #home, #header #header-inner #logo,
3677 #header #header-inner #home, #header #header-inner #logo,
3688 #content div.box ul.left, #content div.box ol.left,
3678 #content div.box ul.left, #content div.box ol.left,
3689 div#commit_history,
3679 div#commit_history,
3690 div#legend_data, div#legend_container, div#legend_choices {
3680 div#legend_data, div#legend_container, div#legend_choices {
3691 float: left;
3681 float: left;
3692 }
3682 }
3693
3683
3694 #header #header-inner #quick li #quick_login,
3684 #header #header-inner #quick li #quick_login,
3695 #header #header-inner #quick li:hover ul ul,
3685 #header #header-inner #quick li:hover ul ul,
3696 #header #header-inner #quick li:hover ul ul ul,
3686 #header #header-inner #quick li:hover ul ul ul,
3697 #header #header-inner #quick li:hover ul ul ul ul,
3687 #header #header-inner #quick li:hover ul ul ul ul,
3698 #content #left #menu ul.closed, #content #left #menu li ul.collapsed, .yui-tt-shadow {
3688 #content #left #menu ul.closed, #content #left #menu li ul.collapsed, .yui-tt-shadow {
3699 display: none;
3689 display: none;
3700 }
3690 }
3701
3691
3702 #header #header-inner #quick li:hover #quick_login,
3692 #header #header-inner #quick li:hover #quick_login,
3703 #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 {
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 display: block;
3694 display: block;
3705 }
3695 }
3706
3696
3707 #content div.graph {
3697 #content div.graph {
3708 padding: 0 10px 10px;
3698 padding: 0 10px 10px;
3709 }
3699 }
3710
3700
3711 #content div.box div.title ul.links li a:hover,
3701 #content div.box div.title ul.links li a:hover,
3712 #content div.box div.title ul.links li.ui-tabs-selected a {
3702 #content div.box div.title ul.links li.ui-tabs-selected a {
3713
3703
3714 background: #6388ad; /* Old browsers */
3704 background: #6388ad; /* Old browsers */
3715 background: -moz-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* FF3.6+ */
3705 background: -moz-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* FF3.6+ */
3716 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+ */
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 background: -webkit-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Chrome10+,Safari5.1+ */
3707 background: -webkit-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Chrome10+,Safari5.1+ */
3718 background: -o-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Opera 11.10+ */
3708 background: -o-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Opera 11.10+ */
3719 background: -ms-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* IE10+ */
3709 background: -ms-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* IE10+ */
3720 background: linear-gradient(to bottom, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* W3C */
3710 background: linear-gradient(to bottom, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* W3C */
3721 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#88bfe8', endColorstr='#70b0e0',GradientType=0 ); /* IE6-9 */*/
3711 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#88bfe8', endColorstr='#70b0e0',GradientType=0 ); /* IE6-9 */*/
3722 }
3712 }
3723
3713
3724 #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 {
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 margin: 10px 24px 10px 44px;
3715 margin: 10px 24px 10px 44px;
3726 }
3716 }
3727
3717
3728 #content div.box div.form, #content div.box div.table, #content div.box div.traffic {
3718 #content div.box div.form, #content div.box div.table, #content div.box div.traffic {
3729 position: relative;
3719 position: relative;
3730 clear: both;
3720 clear: both;
3731 margin: 0;
3721 margin: 0;
3732 padding: 0 20px 10px;
3722 padding: 0 20px 10px;
3733 }
3723 }
3734
3724
3735 #content div.box div.form div.fields, #login div.form, #login div.form div.fields, #register div.form, #register div.form div.fields {
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 clear: both;
3726 clear: both;
3737 overflow: hidden;
3727 overflow: hidden;
3738 margin: 0;
3728 margin: 0;
3739 padding: 0;
3729 padding: 0;
3740 }
3730 }
3741
3731
3742 #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 {
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 height: 1%;
3733 height: 1%;
3744 display: block;
3734 display: block;
3745 color: #363636;
3735 color: #363636;
3746 margin: 0;
3736 margin: 0;
3747 padding: 2px 0 0;
3737 padding: 2px 0 0;
3748 }
3738 }
3749
3739
3750 #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 {
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 background: #FBE3E4;
3741 background: #FBE3E4;
3752 border-top: 1px solid #e1b2b3;
3742 border-top: 1px solid #e1b2b3;
3753 border-left: 1px solid #e1b2b3;
3743 border-left: 1px solid #e1b2b3;
3754 border-right: 1px solid #FBC2C4;
3744 border-right: 1px solid #FBC2C4;
3755 border-bottom: 1px solid #FBC2C4;
3745 border-bottom: 1px solid #FBC2C4;
3756 }
3746 }
3757
3747
3758 #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 {
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 background: #E6EFC2;
3749 background: #E6EFC2;
3760 border-top: 1px solid #cebb98;
3750 border-top: 1px solid #cebb98;
3761 border-left: 1px solid #cebb98;
3751 border-left: 1px solid #cebb98;
3762 border-right: 1px solid #c6d880;
3752 border-right: 1px solid #c6d880;
3763 border-bottom: 1px solid #c6d880;
3753 border-bottom: 1px solid #c6d880;
3764 }
3754 }
3765
3755
3766 #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 {
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 margin: 0;
3757 margin: 0;
3768 }
3758 }
3769
3759
3770 #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 {
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 margin: 0 0 0 0px !important;
3761 margin: 0 0 0 0px !important;
3772 padding: 0;
3762 padding: 0;
3773 }
3763 }
3774
3764
3775 #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 {
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 margin: 0 0 0 200px;
3766 margin: 0 0 0 200px;
3777 padding: 0;
3767 padding: 0;
3778 }
3768 }
3779
3769
3780 #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 {
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 color: #000;
3771 color: #000;
3782 text-decoration: none;
3772 text-decoration: none;
3783 }
3773 }
3784
3774
3785 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus, #content div.box div.action a.ui-selectmenu-focus {
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 border: 1px solid #666;
3776 border: 1px solid #666;
3787 }
3777 }
3788
3778
3789 #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 {
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 clear: both;
3780 clear: both;
3791 overflow: hidden;
3781 overflow: hidden;
3792 margin: 0;
3782 margin: 0;
3793 padding: 8px 0 2px;
3783 padding: 8px 0 2px;
3794 }
3784 }
3795
3785
3796 #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 {
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 float: left;
3787 float: left;
3798 margin: 0;
3788 margin: 0;
3799 }
3789 }
3800
3790
3801 #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 {
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 height: 1%;
3792 height: 1%;
3803 display: block;
3793 display: block;
3804 float: left;
3794 float: left;
3805 margin: 2px 0 0 4px;
3795 margin: 2px 0 0 4px;
3806 }
3796 }
3807
3797
3808 div.form div.fields div.field div.button input,
3798 div.form div.fields div.field div.button input,
3809 #content div.box div.form div.fields div.buttons input
3799 #content div.box div.form div.fields div.buttons input
3810 div.form div.fields div.buttons input,
3800 div.form div.fields div.buttons input,
3811 #content div.box div.action div.button input {
3801 #content div.box div.action div.button input {
3812 font-size: 11px;
3802 font-size: 11px;
3813 font-weight: 700;
3803 font-weight: 700;
3814 margin: 0;
3804 margin: 0;
3815 }
3805 }
3816
3806
3817 input.ui-button {
3807 input.ui-button {
3818 background: #e5e3e3 url("../images/button.png") repeat-x;
3808 background: #e5e3e3 url("../images/button.png") repeat-x;
3819 border-top: 1px solid #DDD;
3809 border-top: 1px solid #DDD;
3820 border-left: 1px solid #c6c6c6;
3810 border-left: 1px solid #c6c6c6;
3821 border-right: 1px solid #DDD;
3811 border-right: 1px solid #DDD;
3822 border-bottom: 1px solid #c6c6c6;
3812 border-bottom: 1px solid #c6c6c6;
3823 color: #515151 !important;
3813 color: #515151 !important;
3824 outline: none;
3814 outline: none;
3825 margin: 0;
3815 margin: 0;
3826 padding: 6px 12px;
3816 padding: 6px 12px;
3827 -webkit-border-radius: 4px 4px 4px 4px;
3817 -webkit-border-radius: 4px 4px 4px 4px;
3828 -khtml-border-radius: 4px 4px 4px 4px;
3818 -khtml-border-radius: 4px 4px 4px 4px;
3829 border-radius: 4px 4px 4px 4px;
3819 border-radius: 4px 4px 4px 4px;
3830 box-shadow: 0 1px 0 #ececec;
3820 box-shadow: 0 1px 0 #ececec;
3831 cursor: pointer;
3821 cursor: pointer;
3832 }
3822 }
3833
3823
3834 input.ui-button:hover {
3824 input.ui-button:hover {
3835 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3825 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3836 border-top: 1px solid #ccc;
3826 border-top: 1px solid #ccc;
3837 border-left: 1px solid #bebebe;
3827 border-left: 1px solid #bebebe;
3838 border-right: 1px solid #b1b1b1;
3828 border-right: 1px solid #b1b1b1;
3839 border-bottom: 1px solid #afafaf;
3829 border-bottom: 1px solid #afafaf;
3840 }
3830 }
3841
3831
3842 div.form div.fields div.field div.highlight, #content div.box div.form div.fields div.buttons div.highlight {
3832 div.form div.fields div.field div.highlight, #content div.box div.form div.fields div.buttons div.highlight {
3843 display: inline;
3833 display: inline;
3844 }
3834 }
3845
3835
3846 #content div.box div.form div.fields div.buttons, div.form div.fields div.buttons {
3836 #content div.box div.form div.fields div.buttons, div.form div.fields div.buttons {
3847 margin: 10px 0 0 200px;
3837 margin: 10px 0 0 200px;
3848 padding: 0;
3838 padding: 0;
3849 }
3839 }
3850
3840
3851 #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 {
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 margin: 10px 0 0;
3842 margin: 10px 0 0;
3853 }
3843 }
3854
3844
3855 #content div.box table td.user, #content div.box table td.address {
3845 #content div.box table td.user, #content div.box table td.address {
3856 width: 10%;
3846 width: 10%;
3857 text-align: center;
3847 text-align: center;
3858 }
3848 }
3859
3849
3860 #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 {
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 text-align: right;
3851 text-align: right;
3862 margin: 6px 0 0;
3852 margin: 6px 0 0;
3863 padding: 0;
3853 padding: 0;
3864 }
3854 }
3865
3855
3866 #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 {
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 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3857 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3868 border-top: 1px solid #ccc;
3858 border-top: 1px solid #ccc;
3869 border-left: 1px solid #bebebe;
3859 border-left: 1px solid #bebebe;
3870 border-right: 1px solid #b1b1b1;
3860 border-right: 1px solid #b1b1b1;
3871 border-bottom: 1px solid #afafaf;
3861 border-bottom: 1px solid #afafaf;
3872 color: #515151;
3862 color: #515151;
3873 margin: 0;
3863 margin: 0;
3874 padding: 6px 12px;
3864 padding: 6px 12px;
3875 }
3865 }
3876
3866
3877 #content div.box div.pagination div.results, #content div.box div.pagination-wh div.results {
3867 #content div.box div.pagination div.results, #content div.box div.pagination-wh div.results {
3878 text-align: left;
3868 text-align: left;
3879 float: left;
3869 float: left;
3880 margin: 0;
3870 margin: 0;
3881 padding: 0;
3871 padding: 0;
3882 }
3872 }
3883
3873
3884 #content div.box div.pagination div.results span, #content div.box div.pagination-wh div.results span {
3874 #content div.box div.pagination div.results span, #content div.box div.pagination-wh div.results span {
3885 height: 1%;
3875 height: 1%;
3886 display: block;
3876 display: block;
3887 float: left;
3877 float: left;
3888 background: #ebebeb url("../images/pager.png") repeat-x;
3878 background: #ebebeb url("../images/pager.png") repeat-x;
3889 border-top: 1px solid #dedede;
3879 border-top: 1px solid #dedede;
3890 border-left: 1px solid #cfcfcf;
3880 border-left: 1px solid #cfcfcf;
3891 border-right: 1px solid #c4c4c4;
3881 border-right: 1px solid #c4c4c4;
3892 border-bottom: 1px solid #c4c4c4;
3882 border-bottom: 1px solid #c4c4c4;
3893 color: #4A4A4A;
3883 color: #4A4A4A;
3894 font-weight: 700;
3884 font-weight: 700;
3895 margin: 0;
3885 margin: 0;
3896 padding: 6px 8px;
3886 padding: 6px 8px;
3897 }
3887 }
3898
3888
3899 #content div.box div.pagination ul.pager li.disabled, #content div.box div.pagination-wh a.disabled {
3889 #content div.box div.pagination ul.pager li.disabled, #content div.box div.pagination-wh a.disabled {
3900 color: #B4B4B4;
3890 color: #B4B4B4;
3901 padding: 6px;
3891 padding: 6px;
3902 }
3892 }
3903
3893
3904 #login, #register {
3894 #login, #register {
3905 width: 520px;
3895 width: 520px;
3906 margin: 10% auto 0;
3896 margin: 10% auto 0;
3907 padding: 0;
3897 padding: 0;
3908 }
3898 }
3909
3899
3910 #login div.color, #register div.color {
3900 #login div.color, #register div.color {
3911 clear: both;
3901 clear: both;
3912 overflow: hidden;
3902 overflow: hidden;
3913 background: #FFF;
3903 background: #FFF;
3914 margin: 10px auto 0;
3904 margin: 10px auto 0;
3915 padding: 3px 3px 3px 0;
3905 padding: 3px 3px 3px 0;
3916 }
3906 }
3917
3907
3918 #login div.color a, #register div.color a {
3908 #login div.color a, #register div.color a {
3919 width: 20px;
3909 width: 20px;
3920 height: 20px;
3910 height: 20px;
3921 display: block;
3911 display: block;
3922 float: left;
3912 float: left;
3923 margin: 0 0 0 3px;
3913 margin: 0 0 0 3px;
3924 padding: 0;
3914 padding: 0;
3925 }
3915 }
3926
3916
3927 #login div.title h5, #register div.title h5 {
3917 #login div.title h5, #register div.title h5 {
3928 color: #fff;
3918 color: #fff;
3929 margin: 10px;
3919 margin: 10px;
3930 padding: 0;
3920 padding: 0;
3931 }
3921 }
3932
3922
3933 #login div.form div.fields div.field, #register div.form div.fields div.field {
3923 #login div.form div.fields div.field, #register div.form div.fields div.field {
3934 clear: both;
3924 clear: both;
3935 overflow: hidden;
3925 overflow: hidden;
3936 margin: 0;
3926 margin: 0;
3937 padding: 0 0 10px;
3927 padding: 0 0 10px;
3938 }
3928 }
3939
3929
3940 #login div.form div.fields div.field span.error-message, #register div.form div.fields div.field span.error-message {
3930 #login div.form div.fields div.field span.error-message, #register div.form div.fields div.field span.error-message {
3941 height: 1%;
3931 height: 1%;
3942 display: block;
3932 display: block;
3943 color: red;
3933 color: red;
3944 margin: 8px 0 0;
3934 margin: 8px 0 0;
3945 padding: 0;
3935 padding: 0;
3946 max-width: 320px;
3936 max-width: 320px;
3947 }
3937 }
3948
3938
3949 #login div.form div.fields div.field div.label label, #register div.form div.fields div.field div.label label {
3939 #login div.form div.fields div.field div.label label, #register div.form div.fields div.field div.label label {
3950 color: #000;
3940 color: #000;
3951 font-weight: 700;
3941 font-weight: 700;
3952 }
3942 }
3953
3943
3954 #login div.form div.fields div.field div.input, #register div.form div.fields div.field div.input {
3944 #login div.form div.fields div.field div.input, #register div.form div.fields div.field div.input {
3955 float: left;
3945 float: left;
3956 margin: 0;
3946 margin: 0;
3957 padding: 0;
3947 padding: 0;
3958 }
3948 }
3959
3949
3960 #login div.form div.fields div.field div.input input.large {
3950 #login div.form div.fields div.field div.input input.large {
3961 width: 250px;
3951 width: 250px;
3962 }
3952 }
3963
3953
3964 #login div.form div.fields div.field div.checkbox, #register div.form div.fields div.field div.checkbox {
3954 #login div.form div.fields div.field div.checkbox, #register div.form div.fields div.field div.checkbox {
3965 margin: 0 0 0 184px;
3955 margin: 0 0 0 184px;
3966 padding: 0;
3956 padding: 0;
3967 }
3957 }
3968
3958
3969 #login div.form div.fields div.field div.checkbox label, #register div.form div.fields div.field div.checkbox label {
3959 #login div.form div.fields div.field div.checkbox label, #register div.form div.fields div.field div.checkbox label {
3970 color: #565656;
3960 color: #565656;
3971 font-weight: 700;
3961 font-weight: 700;
3972 }
3962 }
3973
3963
3974 #login div.form div.fields div.buttons input, #register div.form div.fields div.buttons input {
3964 #login div.form div.fields div.buttons input, #register div.form div.fields div.buttons input {
3975 color: #000;
3965 color: #000;
3976 font-size: 1em;
3966 font-size: 1em;
3977 font-weight: 700;
3967 font-weight: 700;
3978 margin: 0;
3968 margin: 0;
3979 }
3969 }
3980
3970
3981 #changeset_content .container .wrapper, #graph_content .container .wrapper {
3971 #changeset_content .container .wrapper, #graph_content .container .wrapper {
3982 width: 600px;
3972 width: 600px;
3983 }
3973 }
3984
3974
3985 #changeset_content .container .date, .ac .match {
3975 #changeset_content .container .date, .ac .match {
3986 font-weight: 700;
3976 font-weight: 700;
3987 padding-top: 5px;
3977 padding-top: 5px;
3988 padding-bottom: 5px;
3978 padding-bottom: 5px;
3989 }
3979 }
3990
3980
3991 div#legend_container table td, div#legend_choices table td {
3981 div#legend_container table td, div#legend_choices table td {
3992 border: none !important;
3982 border: none !important;
3993 height: 20px !important;
3983 height: 20px !important;
3994 padding: 0 !important;
3984 padding: 0 !important;
3995 }
3985 }
3996
3986
3997 .q_filter_box {
3987 .q_filter_box {
3998 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3988 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
3999 -webkit-border-radius: 4px;
3989 -webkit-border-radius: 4px;
4000 border-radius: 4px;
3990 border-radius: 4px;
4001 border: 0 none;
3991 border: 0 none;
4002 color: #AAAAAA;
3992 color: #AAAAAA;
4003 margin-bottom: -4px;
3993 margin-bottom: -4px;
4004 margin-top: -4px;
3994 margin-top: -4px;
4005 padding-left: 3px;
3995 padding-left: 3px;
4006 }
3996 }
4007
3997
4008 #node_filter {
3998 #node_filter {
4009 border: 0px solid #545454;
3999 border: 0px solid #545454;
4010 color: #AAAAAA;
4000 color: #AAAAAA;
4011 padding-left: 3px;
4001 padding-left: 3px;
4012 }
4002 }
4013
4003
4014
4004
4015 .group_members_wrap {
4005 .group_members_wrap {
4016 min-height: 85px;
4006 min-height: 85px;
4017 padding-left: 20px;
4007 padding-left: 20px;
4018 }
4008 }
4019
4009
4020 .group_members .group_member {
4010 .group_members .group_member {
4021 height: 30px;
4011 height: 30px;
4022 padding: 0px 0px 0px 0px;
4012 padding: 0px 0px 0px 0px;
4023 }
4013 }
4024
4014
4025 .reviewers_member {
4015 .reviewers_member {
4026 height: 15px;
4016 height: 15px;
4027 padding: 0px 0px 0px 10px;
4017 padding: 0px 0px 0px 10px;
4028 }
4018 }
4029
4019
4030 .emails_wrap {
4020 .emails_wrap {
4031 padding: 0px 20px;
4021 padding: 0px 20px;
4032 }
4022 }
4033
4023
4034 .emails_wrap .email_entry {
4024 .emails_wrap .email_entry {
4035 height: 30px;
4025 height: 30px;
4036 padding: 0px 0px 0px 10px;
4026 padding: 0px 0px 0px 10px;
4037 }
4027 }
4038 .emails_wrap .email_entry .email {
4028 .emails_wrap .email_entry .email {
4039 float: left
4029 float: left
4040 }
4030 }
4041 .emails_wrap .email_entry .email_action {
4031 .emails_wrap .email_entry .email_action {
4042 float: left
4032 float: left
4043 }
4033 }
4044
4034
4045 .ips_wrap {
4035 .ips_wrap {
4046 padding: 0px 20px;
4036 padding: 0px 20px;
4047 }
4037 }
4048
4038
4049 .ips_wrap .ip_entry {
4039 .ips_wrap .ip_entry {
4050 height: 30px;
4040 height: 30px;
4051 padding: 0px 0px 0px 10px;
4041 padding: 0px 0px 0px 10px;
4052 }
4042 }
4053 .ips_wrap .ip_entry .ip {
4043 .ips_wrap .ip_entry .ip {
4054 float: left
4044 float: left
4055 }
4045 }
4056 .ips_wrap .ip_entry .ip_action {
4046 .ips_wrap .ip_entry .ip_action {
4057 float: left
4047 float: left
4058 }
4048 }
4059
4049
4060
4050
4061 /*README STYLE*/
4051 /*README STYLE*/
4062
4052
4063 div.readme {
4053 div.readme {
4064 padding: 0px;
4054 padding: 0px;
4065 }
4055 }
4066
4056
4067 div.readme h2 {
4057 div.readme h2 {
4068 font-weight: normal;
4058 font-weight: normal;
4069 }
4059 }
4070
4060
4071 div.readme .readme_box {
4061 div.readme .readme_box {
4072 background-color: #fafafa;
4062 background-color: #fafafa;
4073 }
4063 }
4074
4064
4075 div.readme .readme_box {
4065 div.readme .readme_box {
4076 clear: both;
4066 clear: both;
4077 overflow: hidden;
4067 overflow: hidden;
4078 margin: 0;
4068 margin: 0;
4079 padding: 0 20px 10px;
4069 padding: 0 20px 10px;
4080 }
4070 }
4081
4071
4082 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 {
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 border-bottom: 0 !important;
4073 border-bottom: 0 !important;
4084 margin: 0 !important;
4074 margin: 0 !important;
4085 padding: 0 !important;
4075 padding: 0 !important;
4086 line-height: 1.5em !important;
4076 line-height: 1.5em !important;
4087 }
4077 }
4088
4078
4089
4079
4090 div.readme .readme_box h1:first-child {
4080 div.readme .readme_box h1:first-child {
4091 padding-top: .25em !important;
4081 padding-top: .25em !important;
4092 }
4082 }
4093
4083
4094 div.readme .readme_box h2, div.readme .readme_box h3 {
4084 div.readme .readme_box h2, div.readme .readme_box h3 {
4095 margin: 1em 0 !important;
4085 margin: 1em 0 !important;
4096 }
4086 }
4097
4087
4098 div.readme .readme_box h2 {
4088 div.readme .readme_box h2 {
4099 margin-top: 1.5em !important;
4089 margin-top: 1.5em !important;
4100 border-top: 4px solid #e0e0e0 !important;
4090 border-top: 4px solid #e0e0e0 !important;
4101 padding-top: .5em !important;
4091 padding-top: .5em !important;
4102 }
4092 }
4103
4093
4104 div.readme .readme_box p {
4094 div.readme .readme_box p {
4105 color: black !important;
4095 color: black !important;
4106 margin: 1em 0 !important;
4096 margin: 1em 0 !important;
4107 line-height: 1.5em !important;
4097 line-height: 1.5em !important;
4108 }
4098 }
4109
4099
4110 div.readme .readme_box ul {
4100 div.readme .readme_box ul {
4111 list-style: disc !important;
4101 list-style: disc !important;
4112 margin: 1em 0 1em 2em !important;
4102 margin: 1em 0 1em 2em !important;
4113 }
4103 }
4114
4104
4115 div.readme .readme_box ol {
4105 div.readme .readme_box ol {
4116 list-style: decimal;
4106 list-style: decimal;
4117 margin: 1em 0 1em 2em !important;
4107 margin: 1em 0 1em 2em !important;
4118 }
4108 }
4119
4109
4120 div.readme .readme_box pre, code {
4110 div.readme .readme_box pre, code {
4121 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4111 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4122 }
4112 }
4123
4113
4124 div.readme .readme_box code {
4114 div.readme .readme_box code {
4125 font-size: 12px !important;
4115 font-size: 12px !important;
4126 background-color: ghostWhite !important;
4116 background-color: ghostWhite !important;
4127 color: #444 !important;
4117 color: #444 !important;
4128 padding: 0 .2em !important;
4118 padding: 0 .2em !important;
4129 border: 1px solid #dedede !important;
4119 border: 1px solid #dedede !important;
4130 }
4120 }
4131
4121
4132 div.readme .readme_box pre code {
4122 div.readme .readme_box pre code {
4133 padding: 0 !important;
4123 padding: 0 !important;
4134 font-size: 12px !important;
4124 font-size: 12px !important;
4135 background-color: #eee !important;
4125 background-color: #eee !important;
4136 border: none !important;
4126 border: none !important;
4137 }
4127 }
4138
4128
4139 div.readme .readme_box pre {
4129 div.readme .readme_box pre {
4140 margin: 1em 0;
4130 margin: 1em 0;
4141 font-size: 12px;
4131 font-size: 12px;
4142 background-color: #eee;
4132 background-color: #eee;
4143 border: 1px solid #ddd;
4133 border: 1px solid #ddd;
4144 padding: 5px;
4134 padding: 5px;
4145 color: #444;
4135 color: #444;
4146 overflow: auto;
4136 overflow: auto;
4147 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4137 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4148 -webkit-border-radius: 3px;
4138 -webkit-border-radius: 3px;
4149 border-radius: 3px;
4139 border-radius: 3px;
4150 }
4140 }
4151
4141
4152 div.readme .readme_box table {
4142 div.readme .readme_box table {
4153 display: table;
4143 display: table;
4154 border-collapse: separate;
4144 border-collapse: separate;
4155 border-spacing: 2px;
4145 border-spacing: 2px;
4156 border-color: gray;
4146 border-color: gray;
4157 width: auto !important;
4147 width: auto !important;
4158 }
4148 }
4159
4149
4160
4150
4161 /** RST STYLE **/
4151 /** RST STYLE **/
4162
4152
4163
4153
4164 div.rst-block {
4154 div.rst-block {
4165 padding: 0px;
4155 padding: 0px;
4166 }
4156 }
4167
4157
4168 div.rst-block h2 {
4158 div.rst-block h2 {
4169 font-weight: normal;
4159 font-weight: normal;
4170 }
4160 }
4171
4161
4172 div.rst-block {
4162 div.rst-block {
4173 background-color: #fafafa;
4163 background-color: #fafafa;
4174 }
4164 }
4175
4165
4176 div.rst-block {
4166 div.rst-block {
4177 clear: both;
4167 clear: both;
4178 overflow: hidden;
4168 overflow: hidden;
4179 margin: 0;
4169 margin: 0;
4180 padding: 0 20px 10px;
4170 padding: 0 20px 10px;
4181 }
4171 }
4182
4172
4183 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
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 border-bottom: 0 !important;
4174 border-bottom: 0 !important;
4185 margin: 0 !important;
4175 margin: 0 !important;
4186 padding: 0 !important;
4176 padding: 0 !important;
4187 line-height: 1.5em !important;
4177 line-height: 1.5em !important;
4188 }
4178 }
4189
4179
4190
4180
4191 div.rst-block h1:first-child {
4181 div.rst-block h1:first-child {
4192 padding-top: .25em !important;
4182 padding-top: .25em !important;
4193 }
4183 }
4194
4184
4195 div.rst-block h2, div.rst-block h3 {
4185 div.rst-block h2, div.rst-block h3 {
4196 margin: 1em 0 !important;
4186 margin: 1em 0 !important;
4197 }
4187 }
4198
4188
4199 div.rst-block h2 {
4189 div.rst-block h2 {
4200 margin-top: 1.5em !important;
4190 margin-top: 1.5em !important;
4201 border-top: 4px solid #e0e0e0 !important;
4191 border-top: 4px solid #e0e0e0 !important;
4202 padding-top: .5em !important;
4192 padding-top: .5em !important;
4203 }
4193 }
4204
4194
4205 div.rst-block p {
4195 div.rst-block p {
4206 color: black !important;
4196 color: black !important;
4207 margin: 1em 0 !important;
4197 margin: 1em 0 !important;
4208 line-height: 1.5em !important;
4198 line-height: 1.5em !important;
4209 }
4199 }
4210
4200
4211 div.rst-block ul {
4201 div.rst-block ul {
4212 list-style: disc !important;
4202 list-style: disc !important;
4213 margin: 1em 0 1em 2em !important;
4203 margin: 1em 0 1em 2em !important;
4214 }
4204 }
4215
4205
4216 div.rst-block ol {
4206 div.rst-block ol {
4217 list-style: decimal;
4207 list-style: decimal;
4218 margin: 1em 0 1em 2em !important;
4208 margin: 1em 0 1em 2em !important;
4219 }
4209 }
4220
4210
4221 div.rst-block pre, code {
4211 div.rst-block pre, code {
4222 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4212 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4223 }
4213 }
4224
4214
4225 div.rst-block code {
4215 div.rst-block code {
4226 font-size: 12px !important;
4216 font-size: 12px !important;
4227 background-color: ghostWhite !important;
4217 background-color: ghostWhite !important;
4228 color: #444 !important;
4218 color: #444 !important;
4229 padding: 0 .2em !important;
4219 padding: 0 .2em !important;
4230 border: 1px solid #dedede !important;
4220 border: 1px solid #dedede !important;
4231 }
4221 }
4232
4222
4233 div.rst-block pre code {
4223 div.rst-block pre code {
4234 padding: 0 !important;
4224 padding: 0 !important;
4235 font-size: 12px !important;
4225 font-size: 12px !important;
4236 background-color: #eee !important;
4226 background-color: #eee !important;
4237 border: none !important;
4227 border: none !important;
4238 }
4228 }
4239
4229
4240 div.rst-block pre {
4230 div.rst-block pre {
4241 margin: 1em 0;
4231 margin: 1em 0;
4242 font-size: 12px;
4232 font-size: 12px;
4243 background-color: #eee;
4233 background-color: #eee;
4244 border: 1px solid #ddd;
4234 border: 1px solid #ddd;
4245 padding: 5px;
4235 padding: 5px;
4246 color: #444;
4236 color: #444;
4247 overflow: auto;
4237 overflow: auto;
4248 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4238 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4249 -webkit-border-radius: 3px;
4239 -webkit-border-radius: 3px;
4250 border-radius: 3px;
4240 border-radius: 3px;
4251 }
4241 }
4252
4242
4253
4243
4254 /** comment main **/
4244 /** comment main **/
4255 .comments {
4245 .comments {
4256 padding: 10px 20px;
4246 padding: 10px 20px;
4257 }
4247 }
4258
4248
4259 .comments .comment {
4249 .comments .comment {
4260 border: 1px solid #ddd;
4250 border: 1px solid #ddd;
4261 margin-top: 10px;
4251 margin-top: 10px;
4262 -webkit-border-radius: 4px;
4252 -webkit-border-radius: 4px;
4263 border-radius: 4px;
4253 border-radius: 4px;
4264 }
4254 }
4265
4255
4266 .comments .comment .meta {
4256 .comments .comment .meta {
4267 background: #f8f8f8;
4257 background: #f8f8f8;
4268 padding: 4px;
4258 padding: 4px;
4269 border-bottom: 1px solid #ddd;
4259 border-bottom: 1px solid #ddd;
4270 height: 18px;
4260 height: 18px;
4271 }
4261 }
4272
4262
4273 .comments .comment .meta img {
4263 .comments .comment .meta img {
4274 vertical-align: middle;
4264 vertical-align: middle;
4275 }
4265 }
4276
4266
4277 .comments .comment .meta .user {
4267 .comments .comment .meta .user {
4278 font-weight: bold;
4268 font-weight: bold;
4279 float: left;
4269 float: left;
4280 padding: 4px 2px 2px 2px;
4270 padding: 4px 2px 2px 2px;
4281 }
4271 }
4282
4272
4283 .comments .comment .meta .date {
4273 .comments .comment .meta .date {
4284 float: left;
4274 float: left;
4285 padding: 4px 4px 0px 4px;
4275 padding: 4px 4px 0px 4px;
4286 }
4276 }
4287
4277
4288 .comments .comment .text {
4278 .comments .comment .text {
4289 background-color: #FAFAFA;
4279 background-color: #FAFAFA;
4290 }
4280 }
4291 .comment .text div.rst-block p {
4281 .comment .text div.rst-block p {
4292 margin: 0.5em 0px !important;
4282 margin: 0.5em 0px !important;
4293 }
4283 }
4294
4284
4295 .comments .comments-number {
4285 .comments .comments-number {
4296 padding: 0px 0px 10px 0px;
4286 padding: 0px 0px 10px 0px;
4297 font-weight: bold;
4287 font-weight: bold;
4298 color: #666;
4288 color: #666;
4299 font-size: 16px;
4289 font-size: 16px;
4300 }
4290 }
4301
4291
4302 /** comment form **/
4292 /** comment form **/
4303
4293
4304 .status-block {
4294 .status-block {
4305 min-height: 80px;
4295 min-height: 80px;
4306 clear: both
4296 clear: both
4307 }
4297 }
4308
4298
4309
4299
4310 div.comment-form {
4300 div.comment-form {
4311 margin-top: 20px;
4301 margin-top: 20px;
4312 }
4302 }
4313
4303
4314 .comment-form strong {
4304 .comment-form strong {
4315 display: block;
4305 display: block;
4316 margin-bottom: 15px;
4306 margin-bottom: 15px;
4317 }
4307 }
4318
4308
4319 .comment-form textarea {
4309 .comment-form textarea {
4320 width: 100%;
4310 width: 100%;
4321 height: 100px;
4311 height: 100px;
4322 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4312 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4323 }
4313 }
4324
4314
4325 form.comment-form {
4315 form.comment-form {
4326 margin-top: 10px;
4316 margin-top: 10px;
4327 margin-left: 10px;
4317 margin-left: 10px;
4328 }
4318 }
4329
4319
4330 .comment-inline-form .comment-block-ta,
4320 .comment-inline-form .comment-block-ta,
4331 .comment-form .comment-block-ta {
4321 .comment-form .comment-block-ta {
4332 border: 1px solid #ccc;
4322 border: 1px solid #ccc;
4333 border-radius: 3px;
4323 border-radius: 3px;
4334 box-sizing: border-box;
4324 box-sizing: border-box;
4335 }
4325 }
4336
4326
4337 .comment-form-submit {
4327 .comment-form-submit {
4338 margin-top: 5px;
4328 margin-top: 5px;
4339 margin-left: 525px;
4329 margin-left: 525px;
4340 }
4330 }
4341
4331
4342 .file-comments {
4332 .file-comments {
4343 display: none;
4333 display: none;
4344 }
4334 }
4345
4335
4346 .comment-form .comment {
4336 .comment-form .comment {
4347 margin-left: 10px;
4337 margin-left: 10px;
4348 }
4338 }
4349
4339
4350 .comment-form .comment-help {
4340 .comment-form .comment-help {
4351 padding: 5px 5px 5px 5px;
4341 padding: 5px 5px 5px 5px;
4352 color: #666;
4342 color: #666;
4353 }
4343 }
4354 .comment-form .comment-help .preview-btn,
4344 .comment-form .comment-help .preview-btn,
4355 .comment-form .comment-help .edit-btn {
4345 .comment-form .comment-help .edit-btn {
4356 float: right;
4346 float: right;
4357 margin: -6px 0px 0px 0px;
4347 margin: -6px 0px 0px 0px;
4358 }
4348 }
4359
4349
4360 .comment-form .preview-box.unloaded,
4350 .comment-form .preview-box.unloaded,
4361 .comment-inline-form .preview-box.unloaded {
4351 .comment-inline-form .preview-box.unloaded {
4362 height: 50px;
4352 height: 50px;
4363 text-align: center;
4353 text-align: center;
4364 padding: 20px;
4354 padding: 20px;
4365 background-color: #fafafa;
4355 background-color: #fafafa;
4366 }
4356 }
4367
4357
4368 .comment-form .comment-button {
4358 .comment-form .comment-button {
4369 padding-top: 5px;
4359 padding-top: 5px;
4370 }
4360 }
4371
4361
4372 .add-another-button {
4362 .add-another-button {
4373 margin-left: 10px;
4363 margin-left: 10px;
4374 margin-top: 10px;
4364 margin-top: 10px;
4375 margin-bottom: 10px;
4365 margin-bottom: 10px;
4376 }
4366 }
4377
4367
4378 .comment .buttons {
4368 .comment .buttons {
4379 float: right;
4369 float: right;
4380 margin: -1px 0px 0px 0px;
4370 margin: -1px 0px 0px 0px;
4381 }
4371 }
4382
4372
4383
4373
4384 .show-inline-comments {
4374 .show-inline-comments {
4385 position: relative;
4375 position: relative;
4386 top: 1px
4376 top: 1px
4387 }
4377 }
4388
4378
4389 /** comment inline form **/
4379 /** comment inline form **/
4390 .comment-inline-form {
4380 .comment-inline-form {
4391 margin: 4px;
4381 margin: 4px;
4392 }
4382 }
4393 .comment-inline-form .overlay {
4383 .comment-inline-form .overlay {
4394 display: none;
4384 display: none;
4395 }
4385 }
4396 .comment-inline-form .overlay.submitting {
4386 .comment-inline-form .overlay.submitting {
4397 display: block;
4387 display: block;
4398 background: none repeat scroll 0 0 white;
4388 background: none repeat scroll 0 0 white;
4399 font-size: 16px;
4389 font-size: 16px;
4400 opacity: 0.5;
4390 opacity: 0.5;
4401 position: absolute;
4391 position: absolute;
4402 text-align: center;
4392 text-align: center;
4403 vertical-align: top;
4393 vertical-align: top;
4404
4394
4405 }
4395 }
4406 .comment-inline-form .overlay.submitting .overlay-text {
4396 .comment-inline-form .overlay.submitting .overlay-text {
4407 width: 100%;
4397 width: 100%;
4408 margin-top: 5%;
4398 margin-top: 5%;
4409 }
4399 }
4410
4400
4411 .comment-inline-form .clearfix,
4401 .comment-inline-form .clearfix,
4412 .comment-form .clearfix {
4402 .comment-form .clearfix {
4413 background: #EEE;
4403 background: #EEE;
4414 -webkit-border-radius: 4px;
4404 -webkit-border-radius: 4px;
4415 border-radius: 4px;
4405 border-radius: 4px;
4416 padding: 5px;
4406 padding: 5px;
4417 margin: 0px;
4407 margin: 0px;
4418 }
4408 }
4419
4409
4420 div.comment-inline-form {
4410 div.comment-inline-form {
4421 padding: 4px 0px 6px 0px;
4411 padding: 4px 0px 6px 0px;
4422 }
4412 }
4423
4413
4424 .comment-inline-form strong {
4414 .comment-inline-form strong {
4425 display: block;
4415 display: block;
4426 margin-bottom: 15px;
4416 margin-bottom: 15px;
4427 }
4417 }
4428
4418
4429 .comment-inline-form textarea {
4419 .comment-inline-form textarea {
4430 width: 100%;
4420 width: 100%;
4431 height: 100px;
4421 height: 100px;
4432 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4422 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4433 }
4423 }
4434
4424
4435 form.comment-inline-form {
4425 form.comment-inline-form {
4436 margin-top: 10px;
4426 margin-top: 10px;
4437 margin-left: 10px;
4427 margin-left: 10px;
4438 }
4428 }
4439
4429
4440 .comment-inline-form-submit {
4430 .comment-inline-form-submit {
4441 margin-top: 5px;
4431 margin-top: 5px;
4442 margin-left: 525px;
4432 margin-left: 525px;
4443 }
4433 }
4444
4434
4445 .file-comments {
4435 .file-comments {
4446 display: none;
4436 display: none;
4447 }
4437 }
4448
4438
4449 .comment-inline-form .comment {
4439 .comment-inline-form .comment {
4450 margin-left: 10px;
4440 margin-left: 10px;
4451 }
4441 }
4452
4442
4453 .comment-inline-form .comment-help {
4443 .comment-inline-form .comment-help {
4454 padding: 5px 5px 5px 5px;
4444 padding: 5px 5px 5px 5px;
4455 color: #666;
4445 color: #666;
4456 }
4446 }
4457
4447
4458 .comment-inline-form .comment-help .preview-btn,
4448 .comment-inline-form .comment-help .preview-btn,
4459 .comment-inline-form .comment-help .edit-btn {
4449 .comment-inline-form .comment-help .edit-btn {
4460 float: right;
4450 float: right;
4461 margin: -6px 0px 0px 0px;
4451 margin: -6px 0px 0px 0px;
4462 }
4452 }
4463
4453
4464 .comment-inline-form .comment-button {
4454 .comment-inline-form .comment-button {
4465 padding-top: 5px;
4455 padding-top: 5px;
4466 }
4456 }
4467
4457
4468 /** comment inline **/
4458 /** comment inline **/
4469 .inline-comments {
4459 .inline-comments {
4470 padding: 10px 20px;
4460 padding: 10px 20px;
4471 }
4461 }
4472
4462
4473 .inline-comments div.rst-block {
4463 .inline-comments div.rst-block {
4474 clear: both;
4464 clear: both;
4475 overflow: hidden;
4465 overflow: hidden;
4476 margin: 0;
4466 margin: 0;
4477 padding: 0 20px 0px;
4467 padding: 0 20px 0px;
4478 }
4468 }
4479 .inline-comments .comment {
4469 .inline-comments .comment {
4480 border: 1px solid #ddd;
4470 border: 1px solid #ddd;
4481 -webkit-border-radius: 4px;
4471 -webkit-border-radius: 4px;
4482 border-radius: 4px;
4472 border-radius: 4px;
4483 margin: 3px 3px 5px 5px;
4473 margin: 3px 3px 5px 5px;
4484 background-color: #FAFAFA;
4474 background-color: #FAFAFA;
4485 }
4475 }
4486 .inline-comments .add-comment {
4476 .inline-comments .add-comment {
4487 padding: 2px 4px 8px 5px;
4477 padding: 2px 4px 8px 5px;
4488 }
4478 }
4489
4479
4490 .inline-comments .comment-wrapp {
4480 .inline-comments .comment-wrapp {
4491 padding: 1px;
4481 padding: 1px;
4492 }
4482 }
4493 .inline-comments .comment .meta {
4483 .inline-comments .comment .meta {
4494 background: #f8f8f8;
4484 background: #f8f8f8;
4495 padding: 4px;
4485 padding: 4px;
4496 border-bottom: 1px solid #ddd;
4486 border-bottom: 1px solid #ddd;
4497 height: 20px;
4487 height: 20px;
4498 }
4488 }
4499
4489
4500 .inline-comments .comment .meta img {
4490 .inline-comments .comment .meta img {
4501 vertical-align: middle;
4491 vertical-align: middle;
4502 }
4492 }
4503
4493
4504 .inline-comments .comment .meta .user {
4494 .inline-comments .comment .meta .user {
4505 font-weight: bold;
4495 font-weight: bold;
4506 float: left;
4496 float: left;
4507 padding: 3px;
4497 padding: 3px;
4508 }
4498 }
4509
4499
4510 .inline-comments .comment .meta .date {
4500 .inline-comments .comment .meta .date {
4511 float: left;
4501 float: left;
4512 padding: 3px;
4502 padding: 3px;
4513 }
4503 }
4514
4504
4515 .inline-comments .comment .text {
4505 .inline-comments .comment .text {
4516 background-color: #FAFAFA;
4506 background-color: #FAFAFA;
4517 }
4507 }
4518
4508
4519 .inline-comments .comments-number {
4509 .inline-comments .comments-number {
4520 padding: 0px 0px 10px 0px;
4510 padding: 0px 0px 10px 0px;
4521 font-weight: bold;
4511 font-weight: bold;
4522 color: #666;
4512 color: #666;
4523 font-size: 16px;
4513 font-size: 16px;
4524 }
4514 }
4525 .inline-comments-button .add-comment {
4515 .inline-comments-button .add-comment {
4526 margin: 2px 0px 8px 5px !important
4516 margin: 2px 0px 8px 5px !important
4527 }
4517 }
4528
4518
4529 .notification-paginator {
4519 .notification-paginator {
4530 padding: 0px 0px 4px 16px;
4520 padding: 0px 0px 4px 16px;
4531 }
4521 }
4532
4522
4533 #context-pages .pull-request span,
4523 #context-pages .pull-request span,
4534 .menu_link_notifications {
4524 .menu_link_notifications {
4535 padding: 4px 4px !important;
4525 padding: 4px 4px !important;
4536 text-align: center;
4526 text-align: center;
4537 color: #888 !important;
4527 color: #888 !important;
4538 background-color: #DEDEDE !important;
4528 background-color: #DEDEDE !important;
4539 border-radius: 4px !important;
4529 border-radius: 4px !important;
4540 -webkit-border-radius: 4px !important;
4530 -webkit-border-radius: 4px !important;
4541 }
4531 }
4542
4532
4543 #context-pages .forks span,
4533 #context-pages .forks span,
4544 .menu_link_notifications {
4534 .menu_link_notifications {
4545 padding: 4px 4px !important;
4535 padding: 4px 4px !important;
4546 text-align: center;
4536 text-align: center;
4547 color: #888 !important;
4537 color: #888 !important;
4548 background-color: #DEDEDE !important;
4538 background-color: #DEDEDE !important;
4549 border-radius: 4px !important;
4539 border-radius: 4px !important;
4550 -webkit-border-radius: 4px !important;
4540 -webkit-border-radius: 4px !important;
4551 }
4541 }
4552
4542
4553
4543
4554 .notification-header {
4544 .notification-header {
4555 padding-top: 6px;
4545 padding-top: 6px;
4556 }
4546 }
4557 .notification-header .desc {
4547 .notification-header .desc {
4558 font-size: 16px;
4548 font-size: 16px;
4559 height: 24px;
4549 height: 24px;
4560 float: left
4550 float: left
4561 }
4551 }
4562 .notification-list .container.unread {
4552 .notification-list .container.unread {
4563 background: none repeat scroll 0 0 rgba(255, 255, 180, 0.6);
4553 background: none repeat scroll 0 0 rgba(255, 255, 180, 0.6);
4564 }
4554 }
4565 .notification-header .gravatar {
4555 .notification-header .gravatar {
4566 background: none repeat scroll 0 0 transparent;
4556 background: none repeat scroll 0 0 transparent;
4567 padding: 0px 0px 0px 8px;
4557 padding: 0px 0px 0px 8px;
4568 }
4558 }
4569 .notification-list .container .notification-header .desc {
4559 .notification-list .container .notification-header .desc {
4570 font-weight: bold;
4560 font-weight: bold;
4571 font-size: 17px;
4561 font-size: 17px;
4572 }
4562 }
4573 .notification-table {
4563 .notification-table {
4574 border: 1px solid #ccc;
4564 border: 1px solid #ccc;
4575 -webkit-border-radius: 6px 6px 6px 6px;
4565 -webkit-border-radius: 6px 6px 6px 6px;
4576 border-radius: 6px 6px 6px 6px;
4566 border-radius: 6px 6px 6px 6px;
4577 clear: both;
4567 clear: both;
4578 margin: 0px 20px 0px 20px;
4568 margin: 0px 20px 0px 20px;
4579 }
4569 }
4580 .notification-header .delete-notifications {
4570 .notification-header .delete-notifications {
4581 float: right;
4571 float: right;
4582 padding-top: 8px;
4572 padding-top: 8px;
4583 cursor: pointer;
4573 cursor: pointer;
4584 }
4574 }
4585 .notification-header .read-notifications {
4575 .notification-header .read-notifications {
4586 float: right;
4576 float: right;
4587 padding-top: 8px;
4577 padding-top: 8px;
4588 cursor: pointer;
4578 cursor: pointer;
4589 }
4579 }
4590 .notification-subject {
4580 .notification-subject {
4591 clear: both;
4581 clear: both;
4592 border-bottom: 1px solid #eee;
4582 border-bottom: 1px solid #eee;
4593 padding: 5px 0px 5px 38px;
4583 padding: 5px 0px 5px 38px;
4594 }
4584 }
4595
4585
4596 .notification-body {
4586 .notification-body {
4597 clear: both;
4587 clear: both;
4598 margin: 34px 2px 2px 8px
4588 margin: 34px 2px 2px 8px
4599 }
4589 }
4600
4590
4601 /****
4591 /****
4602 PULL REQUESTS
4592 PULL REQUESTS
4603 *****/
4593 *****/
4604 .pullrequests_section_head {
4594 .pullrequests_section_head {
4605 padding: 10px 10px 10px 0px;
4595 padding: 10px 10px 10px 0px;
4606 font-size: 16px;
4596 font-size: 16px;
4607 font-weight: bold;
4597 font-weight: bold;
4608 }
4598 }
4609
4599
4610 h3.closed,
4600 h3.closed,
4611 #pullrequests_container li.closed a
4601 #pullrequests_container li.closed a
4612 {
4602 {
4613 color: #555;
4603 color: #555;
4614 background: #eee;
4604 background: #eee;
4615 }
4605 }
4616
4606
4617 div.pr-title {
4607 div.pr-title {
4618 font-size: 1.6em;
4608 font-size: 1.6em;
4619 }
4609 }
4620
4610
4621 div.pr {
4611 div.pr {
4622 border-bottom: 1px solid #DDD;
4612 border-bottom: 1px solid #DDD;
4623 margin: 0px 20px;
4613 margin: 0px 20px;
4624 padding: 10px 4px;
4614 padding: 10px 4px;
4625 }
4615 }
4626 div.pr-closed {
4616 div.pr-closed {
4627 background-color: rgba(245,245,245,0.5);
4617 background-color: rgba(245,245,245,0.5);
4628 }
4618 }
4629
4619
4630 span.pr-closed-tag {
4620 span.pr-closed-tag {
4631 margin-bottom: 1px;
4621 margin-bottom: 1px;
4632 margin-right: 1px;
4622 margin-right: 1px;
4633 padding: 1px 3px;
4623 padding: 1px 3px;
4634 font-size: 10px;
4624 font-size: 10px;
4635 padding: 1px 3px 1px 3px;
4625 padding: 1px 3px 1px 3px;
4636 font-size: 10px;
4626 font-size: 10px;
4637 color: #336699;
4627 color: #336699;
4638 white-space: nowrap;
4628 white-space: nowrap;
4639 -webkit-border-radius: 4px;
4629 -webkit-border-radius: 4px;
4640 border-radius: 4px;
4630 border-radius: 4px;
4641 border: 1px solid #d9e8f8;
4631 border: 1px solid #d9e8f8;
4642 line-height: 1.5em;
4632 line-height: 1.5em;
4643 }
4633 }
4644
4634
4645 /****
4635 /****
4646 PERMS
4636 PERMS
4647 *****/
4637 *****/
4648 #perms .perms_section_head {
4638 #perms .perms_section_head {
4649 padding: 10px 10px 10px 0px;
4639 padding: 10px 10px 10px 0px;
4650 font-size: 16px;
4640 font-size: 16px;
4651 font-weight: bold;
4641 font-weight: bold;
4652 }
4642 }
4653
4643
4654 #perms .perm_tag {
4644 #perms .perm_tag {
4655 padding: 1px 3px 1px 3px;
4645 padding: 1px 3px 1px 3px;
4656 font-size: 10px;
4646 font-size: 10px;
4657 font-weight: bold;
4647 font-weight: bold;
4658 text-transform: uppercase;
4648 text-transform: uppercase;
4659 white-space: nowrap;
4649 white-space: nowrap;
4660 -webkit-border-radius: 3px;
4650 -webkit-border-radius: 3px;
4661 border-radius: 3px;
4651 border-radius: 3px;
4662 }
4652 }
4663
4653
4664 #perms .perm_tag.admin {
4654 #perms .perm_tag.admin {
4665 background-color: #B94A48;
4655 background-color: #B94A48;
4666 color: #ffffff;
4656 color: #ffffff;
4667 }
4657 }
4668
4658
4669 #perms .perm_tag.write {
4659 #perms .perm_tag.write {
4670 background-color: #DB7525;
4660 background-color: #DB7525;
4671 color: #ffffff;
4661 color: #ffffff;
4672 }
4662 }
4673
4663
4674 #perms .perm_tag.read {
4664 #perms .perm_tag.read {
4675 background-color: #468847;
4665 background-color: #468847;
4676 color: #ffffff;
4666 color: #ffffff;
4677 }
4667 }
4678
4668
4679 #perms .perm_tag.none {
4669 #perms .perm_tag.none {
4680 background-color: #bfbfbf;
4670 background-color: #bfbfbf;
4681 color: #ffffff;
4671 color: #ffffff;
4682 }
4672 }
4683
4673
4684 .perm-gravatar {
4674 .perm-gravatar {
4685 vertical-align: middle;
4675 vertical-align: middle;
4686 padding: 2px;
4676 padding: 2px;
4687 }
4677 }
4688 .perm-gravatar-ac {
4678 .perm-gravatar-ac {
4689 vertical-align: middle;
4679 vertical-align: middle;
4690 padding: 2px;
4680 padding: 2px;
4691 width: 14px;
4681 width: 14px;
4692 height: 14px;
4682 height: 14px;
4693 }
4683 }
4694
4684
4695 /*****************************************************************************
4685 /*****************************************************************************
4696 DIFFS CSS
4686 DIFFS CSS
4697 ******************************************************************************/
4687 ******************************************************************************/
4698 .diff-collapse {
4688 .diff-collapse {
4699 text-align: center;
4689 text-align: center;
4700 margin-bottom: -15px;
4690 margin-bottom: -15px;
4701 }
4691 }
4702 .diff-collapse-button {
4692 .diff-collapse-button {
4703 cursor: pointer;
4693 cursor: pointer;
4704 color: #666;
4694 color: #666;
4705 font-size: 16px;
4695 font-size: 16px;
4706 }
4696 }
4707 .diff-container {
4697 .diff-container {
4708
4698
4709 }
4699 }
4710
4700
4711 .diff-container.hidden {
4701 .diff-container.hidden {
4712 display: none;
4702 display: none;
4713 overflow: hidden;
4703 overflow: hidden;
4714 }
4704 }
4715
4705
4716
4706
4717 div.diffblock {
4707 div.diffblock {
4718 overflow: auto;
4708 overflow: auto;
4719 padding: 0px;
4709 padding: 0px;
4720 border: 1px solid #ccc;
4710 border: 1px solid #ccc;
4721 background: #f8f8f8;
4711 background: #f8f8f8;
4722 font-size: 100%;
4712 font-size: 100%;
4723 line-height: 100%;
4713 line-height: 100%;
4724 /* new */
4714 /* new */
4725 line-height: 125%;
4715 line-height: 125%;
4726 -webkit-border-radius: 6px 6px 0px 0px;
4716 -webkit-border-radius: 6px 6px 0px 0px;
4727 border-radius: 6px 6px 0px 0px;
4717 border-radius: 6px 6px 0px 0px;
4728 }
4718 }
4729 div.diffblock.margined {
4719 div.diffblock.margined {
4730 margin: 0px 20px 0px 20px;
4720 margin: 0px 20px 0px 20px;
4731 }
4721 }
4732 div.diffblock .code-header {
4722 div.diffblock .code-header {
4733 border-bottom: 1px solid #CCCCCC;
4723 border-bottom: 1px solid #CCCCCC;
4734 background: #EEEEEE;
4724 background: #EEEEEE;
4735 padding: 10px 0 10px 0;
4725 padding: 10px 0 10px 0;
4736 height: 14px;
4726 height: 14px;
4737 }
4727 }
4738
4728
4739 div.diffblock .code-header.banner {
4729 div.diffblock .code-header.banner {
4740 border-bottom: 1px solid #CCCCCC;
4730 border-bottom: 1px solid #CCCCCC;
4741 background: #EEEEEE;
4731 background: #EEEEEE;
4742 height: 14px;
4732 height: 14px;
4743 margin: 0px 95px 0px 95px;
4733 margin: 0px 95px 0px 95px;
4744 padding: 3px 3px 11px 3px;
4734 padding: 3px 3px 11px 3px;
4745 }
4735 }
4746
4736
4747 div.diffblock .code-header-title {
4737 div.diffblock .code-header-title {
4748 padding: 0px 0px 10px 5px !important;
4738 padding: 0px 0px 10px 5px !important;
4749 margin: 0 !important;
4739 margin: 0 !important;
4750 }
4740 }
4751 div.diffblock .code-header .hash {
4741 div.diffblock .code-header .hash {
4752 float: left;
4742 float: left;
4753 padding: 2px 0 0 2px;
4743 padding: 2px 0 0 2px;
4754 }
4744 }
4755 div.diffblock .code-header .date {
4745 div.diffblock .code-header .date {
4756 float: left;
4746 float: left;
4757 text-transform: uppercase;
4747 text-transform: uppercase;
4758 padding: 2px 0px 0px 2px;
4748 padding: 2px 0px 0px 2px;
4759 }
4749 }
4760 div.diffblock .code-header div {
4750 div.diffblock .code-header div {
4761 margin-left: 4px;
4751 margin-left: 4px;
4762 font-weight: bold;
4752 font-weight: bold;
4763 font-size: 14px;
4753 font-size: 14px;
4764 }
4754 }
4765
4755
4766 div.diffblock .parents {
4756 div.diffblock .parents {
4767 float: left;
4757 float: left;
4768 height: 26px;
4758 height: 26px;
4769 width: 100px;
4759 width: 100px;
4770 font-size: 10px;
4760 font-size: 10px;
4771 font-weight: 400;
4761 font-weight: 400;
4772 vertical-align: middle;
4762 vertical-align: middle;
4773 padding: 0px 2px 2px 2px;
4763 padding: 0px 2px 2px 2px;
4774 background-color: #eeeeee;
4764 background-color: #eeeeee;
4775 border-bottom: 1px solid #CCCCCC;
4765 border-bottom: 1px solid #CCCCCC;
4776 }
4766 }
4777
4767
4778 div.diffblock .children {
4768 div.diffblock .children {
4779 float: right;
4769 float: right;
4780 height: 26px;
4770 height: 26px;
4781 width: 100px;
4771 width: 100px;
4782 font-size: 10px;
4772 font-size: 10px;
4783 font-weight: 400;
4773 font-weight: 400;
4784 vertical-align: middle;
4774 vertical-align: middle;
4785 text-align: right;
4775 text-align: right;
4786 padding: 0px 2px 2px 2px;
4776 padding: 0px 2px 2px 2px;
4787 background-color: #eeeeee;
4777 background-color: #eeeeee;
4788 border-bottom: 1px solid #CCCCCC;
4778 border-bottom: 1px solid #CCCCCC;
4789 }
4779 }
4790
4780
4791 div.diffblock .code-body {
4781 div.diffblock .code-body {
4792 background: #FFFFFF;
4782 background: #FFFFFF;
4793 }
4783 }
4794 div.diffblock pre.raw {
4784 div.diffblock pre.raw {
4795 background: #FFFFFF;
4785 background: #FFFFFF;
4796 color: #000000;
4786 color: #000000;
4797 }
4787 }
4798 table.code-difftable {
4788 table.code-difftable {
4799 border-collapse: collapse;
4789 border-collapse: collapse;
4800 width: 99%;
4790 width: 99%;
4801 border-radius: 0px !important;
4791 border-radius: 0px !important;
4802 }
4792 }
4803 table.code-difftable td {
4793 table.code-difftable td {
4804 padding: 0 !important;
4794 padding: 0 !important;
4805 background: none !important;
4795 background: none !important;
4806 border: 0 !important;
4796 border: 0 !important;
4807 vertical-align: baseline !important
4797 vertical-align: baseline !important
4808 }
4798 }
4809 table.code-difftable .context {
4799 table.code-difftable .context {
4810 background: none repeat scroll 0 0 #DDE7EF;
4800 background: none repeat scroll 0 0 #DDE7EF;
4811 }
4801 }
4812 table.code-difftable .add {
4802 table.code-difftable .add {
4813 background: none repeat scroll 0 0 #DDFFDD;
4803 background: none repeat scroll 0 0 #DDFFDD;
4814 }
4804 }
4815 table.code-difftable .add ins {
4805 table.code-difftable .add ins {
4816 background: none repeat scroll 0 0 #AAFFAA;
4806 background: none repeat scroll 0 0 #AAFFAA;
4817 text-decoration: none;
4807 text-decoration: none;
4818 }
4808 }
4819 table.code-difftable .del {
4809 table.code-difftable .del {
4820 background: none repeat scroll 0 0 #FFDDDD;
4810 background: none repeat scroll 0 0 #FFDDDD;
4821 }
4811 }
4822 table.code-difftable .del del {
4812 table.code-difftable .del del {
4823 background: none repeat scroll 0 0 #FFAAAA;
4813 background: none repeat scroll 0 0 #FFAAAA;
4824 text-decoration: none;
4814 text-decoration: none;
4825 }
4815 }
4826
4816
4827 /** LINE NUMBERS **/
4817 /** LINE NUMBERS **/
4828 table.code-difftable .lineno {
4818 table.code-difftable .lineno {
4829
4819
4830 padding-left: 2px;
4820 padding-left: 2px;
4831 padding-right: 2px;
4821 padding-right: 2px;
4832 text-align: right;
4822 text-align: right;
4833 width: 32px;
4823 width: 32px;
4834 -moz-user-select: none;
4824 -moz-user-select: none;
4835 -webkit-user-select: none;
4825 -webkit-user-select: none;
4836 border-right: 1px solid #CCC !important;
4826 border-right: 1px solid #CCC !important;
4837 border-left: 0px solid #CCC !important;
4827 border-left: 0px solid #CCC !important;
4838 border-top: 0px solid #CCC !important;
4828 border-top: 0px solid #CCC !important;
4839 border-bottom: none !important;
4829 border-bottom: none !important;
4840 vertical-align: middle !important;
4830 vertical-align: middle !important;
4841
4831
4842 }
4832 }
4843 table.code-difftable .lineno.new {
4833 table.code-difftable .lineno.new {
4844 }
4834 }
4845 table.code-difftable .lineno.old {
4835 table.code-difftable .lineno.old {
4846 }
4836 }
4847 table.code-difftable .lineno a {
4837 table.code-difftable .lineno a {
4848 color: #747474 !important;
4838 color: #747474 !important;
4849 font: 11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4839 font: 11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4850 letter-spacing: -1px;
4840 letter-spacing: -1px;
4851 text-align: right;
4841 text-align: right;
4852 padding-right: 2px;
4842 padding-right: 2px;
4853 cursor: pointer;
4843 cursor: pointer;
4854 display: block;
4844 display: block;
4855 width: 32px;
4845 width: 32px;
4856 }
4846 }
4857
4847
4858 table.code-difftable .lineno-inline {
4848 table.code-difftable .lineno-inline {
4859 background: none repeat scroll 0 0 #FFF !important;
4849 background: none repeat scroll 0 0 #FFF !important;
4860 padding-left: 2px;
4850 padding-left: 2px;
4861 padding-right: 2px;
4851 padding-right: 2px;
4862 text-align: right;
4852 text-align: right;
4863 width: 30px;
4853 width: 30px;
4864 -moz-user-select: none;
4854 -moz-user-select: none;
4865 -webkit-user-select: none;
4855 -webkit-user-select: none;
4866 }
4856 }
4867
4857
4868 /** CODE **/
4858 /** CODE **/
4869 table.code-difftable .code {
4859 table.code-difftable .code {
4870 display: block;
4860 display: block;
4871 width: 100%;
4861 width: 100%;
4872 }
4862 }
4873 table.code-difftable .code td {
4863 table.code-difftable .code td {
4874 margin: 0;
4864 margin: 0;
4875 padding: 0;
4865 padding: 0;
4876 }
4866 }
4877 table.code-difftable .code pre {
4867 table.code-difftable .code pre {
4878 margin: 0;
4868 margin: 0;
4879 padding: 0;
4869 padding: 0;
4880 height: 17px;
4870 height: 17px;
4881 line-height: 17px;
4871 line-height: 17px;
4882 }
4872 }
4883
4873
4884
4874
4885 .diffblock.margined.comm .line .code:hover {
4875 .diffblock.margined.comm .line .code:hover {
4886 background-color: #FFFFCC !important;
4876 background-color: #FFFFCC !important;
4887 cursor: pointer !important;
4877 cursor: pointer !important;
4888 background-image: url("../images/icons/comment_add.png") !important;
4878 background-image: url("../images/icons/comment_add.png") !important;
4889 background-repeat: no-repeat !important;
4879 background-repeat: no-repeat !important;
4890 background-position: right !important;
4880 background-position: right !important;
4891 background-position: 0% 50% !important;
4881 background-position: 0% 50% !important;
4892 }
4882 }
4893 .diffblock.margined.comm .line .code.no-comment:hover {
4883 .diffblock.margined.comm .line .code.no-comment:hover {
4894 background-image: none !important;
4884 background-image: none !important;
4895 cursor: auto !important;
4885 cursor: auto !important;
4896 background-color: inherit !important;
4886 background-color: inherit !important;
4897 }
4887 }
4898
4888
4899 div.comment:target>.comment-wrapp {
4889 div.comment:target>.comment-wrapp {
4900 border: solid 2px #ee0 !important;
4890 border: solid 2px #ee0 !important;
4901 }
4891 }
4902
4892
4903 .lineno:target a {
4893 .lineno:target a {
4904 border: solid 2px #ee0 !important;
4894 border: solid 2px #ee0 !important;
4905 margin: -2px;
4895 margin: -2px;
4906 }
4896 }
@@ -1,341 +1,340 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="root.html"/>
2 <%inherit file="root.html"/>
3
3
4 <!-- HEADER -->
4 <!-- HEADER -->
5 <div id="header-dd"></div>
5 <div id="header-dd"></div>
6 <div id="header">
6 <div id="header">
7 <div id="header-inner" class="title">
7 <div id="header-inner" class="title">
8 <div id="logo">
8 <div id="logo">
9 <h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1>
9 <h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1>
10 </div>
10 </div>
11 <!-- MENU -->
11 <!-- MENU -->
12 ${self.page_nav()}
12 ${self.page_nav()}
13 <!-- END MENU -->
13 <!-- END MENU -->
14 ${self.body()}
14 ${self.body()}
15 </div>
15 </div>
16 </div>
16 </div>
17 <!-- END HEADER -->
17 <!-- END HEADER -->
18
18
19 <!-- CONTENT -->
19 <!-- CONTENT -->
20 <div id="content">
20 <div id="content">
21 <div class="flash_msg">
21 <div class="flash_msg">
22 <% messages = h.flash.pop_messages() %>
22 <% messages = h.flash.pop_messages() %>
23 % if messages:
23 % if messages:
24 <ul id="flash-messages">
24 <ul id="flash-messages">
25 % for message in messages:
25 % for message in messages:
26 <li class="${message.category}_msg">${message}</li>
26 <li class="${message.category}_msg">${message}</li>
27 % endfor
27 % endfor
28 </ul>
28 </ul>
29 % endif
29 % endif
30 </div>
30 </div>
31 <div id="main">
31 <div id="main">
32 ${next.main()}
32 ${next.main()}
33 </div>
33 </div>
34 </div>
34 </div>
35 <!-- END CONTENT -->
35 <!-- END CONTENT -->
36
36
37 <!-- FOOTER -->
37 <!-- FOOTER -->
38 <div id="footer">
38 <div id="footer">
39 <div id="footer-inner" class="title">
39 <div id="footer-inner" class="title">
40 <div>
40 <div>
41 <p class="footer-link">
41 <p class="footer-link">
42 <a href="${h.url('bugtracker')}">${_('Submit a bug')}</a>
42 <a href="${h.url('bugtracker')}">${_('Submit a bug')}</a>
43 </p>
43 </p>
44 <p class="footer-link-right">
44 <p class="footer-link-right">
45 <a href="${h.url('rhodecode_official')}">RhodeCode ${c.rhodecode_version}</a>
45 <a href="${h.url('rhodecode_official')}">RhodeCode ${c.rhodecode_version}</a>
46 ${'(%s)' % c.rhodecode_instanceid if c.rhodecode_instanceid else ''}
46 ${'(%s)' % c.rhodecode_instanceid if c.rhodecode_instanceid else ''}
47 &copy; 2010-${h.datetime.today().year} by Marcin Kuzminski and others
47 &copy; 2010-${h.datetime.today().year} by Marcin Kuzminski and others
48 </p>
48 </p>
49 </div>
49 </div>
50 </div>
50 </div>
51 </div>
51 </div>
52
52
53 <!-- END FOOTER -->
53 <!-- END FOOTER -->
54
54
55 ### MAKO DEFS ###
55 ### MAKO DEFS ###
56 <%def name="breadcrumbs()">
56 <%def name="breadcrumbs()">
57 <div class="breadcrumbs">
57 <div class="breadcrumbs">
58 ${self.breadcrumbs_links()}
58 ${self.breadcrumbs_links()}
59 </div>
59 </div>
60 </%def>
60 </%def>
61
61
62 <%def name="context_bar(current)">
62 <%def name="context_bar(current)">
63 ${repo_context_bar(current)}
63 ${repo_context_bar(current)}
64 </%def>
64 </%def>
65
65
66 <%def name="admin_menu()">
66 <%def name="admin_menu()">
67 <ul class="admin_menu">
67 <ul class="admin_menu">
68 <li>${h.link_to(_('Admin journal'),h.url('admin_home'),class_='journal ')}</li>
68 <li>${h.link_to(_('Admin journal'),h.url('admin_home'),class_='journal ')}</li>
69 <li>${h.link_to(_('Repositories'),h.url('repos'),class_='repos')}</li>
69 <li>${h.link_to(_('Repositories'),h.url('repos'),class_='repos')}</li>
70 <li>${h.link_to(_('Repository groups'),h.url('repos_groups'),class_='repos_groups')}</li>
70 <li>${h.link_to(_('Repository groups'),h.url('repos_groups'),class_='repos_groups')}</li>
71 <li>${h.link_to(_('Users'),h.url('users'),class_='users')}</li>
71 <li>${h.link_to(_('Users'),h.url('users'),class_='users')}</li>
72 <li>${h.link_to(_('User groups'),h.url('users_groups'),class_='groups')}</li>
72 <li>${h.link_to(_('User groups'),h.url('users_groups'),class_='groups')}</li>
73 <li>${h.link_to(_('Permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
73 <li>${h.link_to(_('Permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
74 <li>${h.link_to(_('LDAP'),h.url('ldap_home'),class_='ldap')}</li>
74 <li>${h.link_to(_('LDAP'),h.url('ldap_home'),class_='ldap')}</li>
75 <li>${h.link_to(_('Defaults'),h.url('defaults'),class_='defaults')}</li>
75 <li>${h.link_to(_('Defaults'),h.url('defaults'),class_='defaults')}</li>
76 <li class="last">${h.link_to(_('Settings'),h.url('admin_settings'),class_='settings')}</li>
76 <li class="last">${h.link_to(_('Settings'),h.url('admin_settings'),class_='settings')}</li>
77 </ul>
77 </ul>
78 </%def>
78 </%def>
79
79
80 <%def name="admin_menu_simple(repository_groups=None, user_groups=None)">
80 <%def name="admin_menu_simple(repository_groups=None, user_groups=None)">
81 <ul>
81 <ul>
82 %if repository_groups:
82 %if repository_groups:
83 <li>${h.link_to(_('Repository groups'),h.url('repos_groups'),class_='repos_groups')}</li>
83 <li>${h.link_to(_('Repository groups'),h.url('repos_groups'),class_='repos_groups')}</li>
84 %endif:
84 %endif:
85 %if user_groups:
85 %if user_groups:
86 <li>${h.link_to(_('User groups'),h.url('users_groups'),class_='groups')}</li>
86 <li>${h.link_to(_('User groups'),h.url('users_groups'),class_='groups')}</li>
87 %endif
87 %endif
88 </ul>
88 </ul>
89 </%def>
89 </%def>
90
90
91 <%def name="repo_context_bar(current=None)">
91 <%def name="repo_context_bar(current=None)">
92 <%
92 <%
93 def follow_class():
93 def follow_class():
94 if c.repository_following:
94 if c.repository_following:
95 return h.literal('following')
95 return h.literal('following')
96 else:
96 else:
97 return h.literal('follow')
97 return h.literal('follow')
98 %>
98 %>
99 <%
99 <%
100 def is_current(selected):
100 def is_current(selected):
101 if selected == current:
101 if selected == current:
102 return h.literal('class="current"')
102 return h.literal('class="current"')
103 %>
103 %>
104
104
105 <!--- CONTEXT BAR -->
105 <!--- CONTEXT BAR -->
106 <div id="context-bar" class="box">
106 <div id="context-bar" class="box">
107 <div id="breadcrumbs">
107 <div id="breadcrumbs">
108 ${h.link_to(_(u'Repositories'),h.url('home'))}
108 ${h.link_to(_(u'Repositories'),h.url('home'))}
109 &raquo;
109 &raquo;
110 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
110 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
111 </div>
111 </div>
112 <ul id="context-pages" class="horizontal-list">
112 <ul id="context-pages" class="horizontal-list">
113 <li ${is_current('summary')}><a href="${h.url('summary_home', repo_name=c.repo_name)}" class="summary">${_('Summary')}</a></li>
113 <li ${is_current('summary')}><a href="${h.url('summary_home', repo_name=c.repo_name)}" class="summary">${_('Summary')}</a></li>
114 <li ${is_current('changelog')}><a href="${h.url('changelog_home', repo_name=c.repo_name)}" class="changelogs">${_('Changelog')}</a></li>
114 <li ${is_current('changelog')}><a href="${h.url('changelog_home', repo_name=c.repo_name)}" class="changelogs">${_('Changelog')}</a></li>
115 <li ${is_current('files')}><a href="${h.url('files_home', repo_name=c.repo_name)}" class="files"></span>${_('Files')}</a></li>
115 <li ${is_current('files')}><a href="${h.url('files_home', repo_name=c.repo_name)}" class="files"></span>${_('Files')}</a></li>
116 <li ${is_current('switch-to')}>
116 <li ${is_current('switch-to')}>
117 <a href="#" id="branch_tag_switcher_2" class="dropdown switch-to"></span>${_('Switch To')}</a>
117 <a href="#" id="branch_tag_switcher_2" class="dropdown switch-to"></span>${_('Switch To')}</a>
118 <ul id="switch_to_list_2" class="switch_to submenu">
118 <ul id="switch_to_list_2" class="switch_to submenu">
119 <li><a href="#">${_('loading...')}</a></li>
119 <li><a href="#">${_('loading...')}</a></li>
120 </ul>
120 </ul>
121 </li>
121 </li>
122 <li ${is_current('options')}>
122 <li ${is_current('options')}>
123 <a href="#" class="dropdown options"></span>${_('Options')}</a>
123 <a href="#" class="dropdown options"></span>${_('Options')}</a>
124 <ul>
124 <ul>
125 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
125 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
126 <li>${h.link_to(_('Settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
126 <li>${h.link_to(_('Settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
127 %endif
127 %endif
128 %if c.rhodecode_db_repo.fork:
128 %if c.rhodecode_db_repo.fork:
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>
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 %endif
130 %endif
131 <li>${h.link_to(_('Lightweight changelog'),h.url('shortlog_home',repo_name=c.repo_name),class_='shortlog')}</li>
132 <li>${h.link_to(_('Search'),h.url('search_repo',repo_name=c.repo_name),class_='search')}</li>
131 <li>${h.link_to(_('Search'),h.url('search_repo',repo_name=c.repo_name),class_='search')}</li>
133
132
134 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
133 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
135 %if c.rhodecode_db_repo.locked[0]:
134 %if c.rhodecode_db_repo.locked[0]:
136 <li>${h.link_to(_('Unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
135 <li>${h.link_to(_('Unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
137 %else:
136 %else:
138 <li>${h.link_to(_('Lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
137 <li>${h.link_to(_('Lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
139 %endif
138 %endif
140 %endif
139 %endif
141 ## TODO: this check feels wrong, it would be better to have a check for permissions
140 ## TODO: this check feels wrong, it would be better to have a check for permissions
142 ## also it feels like a job for the controller
141 ## also it feels like a job for the controller
143 %if c.rhodecode_user.username != 'default':
142 %if c.rhodecode_user.username != 'default':
144 <li>
143 <li>
145 <a class="${follow_class()}" onclick="javascript:toggleFollowingRepo(this,${c.rhodecode_db_repo.repo_id},'${str(h.get_token())}');">
144 <a class="${follow_class()}" onclick="javascript:toggleFollowingRepo(this,${c.rhodecode_db_repo.repo_id},'${str(h.get_token())}');">
146 <span class="show-follow">${_('Follow')}</span>
145 <span class="show-follow">${_('Follow')}</span>
147 <span class="show-following">${_('Unfollow')}</span>
146 <span class="show-following">${_('Unfollow')}</span>
148 </a>
147 </a>
149 </li>
148 </li>
150 <li><a href="${h.url('repo_fork_home',repo_name=c.repo_name)}" class="fork">${_('Fork')}</a></li>
149 <li><a href="${h.url('repo_fork_home',repo_name=c.repo_name)}" class="fork">${_('Fork')}</a></li>
151 %if h.is_hg(c.rhodecode_repo):
150 %if h.is_hg(c.rhodecode_repo):
152 <li><a href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="pull-request">${_('Create Pull Request')}</a></li>
151 <li><a href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="pull-request">${_('Create Pull Request')}</a></li>
153 %endif
152 %endif
154 %endif
153 %endif
155 </ul>
154 </ul>
156 </li>
155 </li>
157 <li ${is_current('showpullrequest')}>
156 <li ${is_current('showpullrequest')}>
158 <a href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}" title="${_('Show Pull Requests')}" class="pull-request">${_('Pull Requests')}
157 <a href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}" title="${_('Show Pull Requests')}" class="pull-request">${_('Pull Requests')}
159 %if c.repository_pull_requests:
158 %if c.repository_pull_requests:
160 <span>${c.repository_pull_requests}</span>
159 <span>${c.repository_pull_requests}</span>
161 %endif
160 %endif
162 </a>
161 </a>
163 </li>
162 </li>
164 </ul>
163 </ul>
165 </div>
164 </div>
166 <script type="text/javascript">
165 <script type="text/javascript">
167 YUE.on('branch_tag_switcher_2','mouseover',function(){
166 YUE.on('branch_tag_switcher_2','mouseover',function(){
168 var loaded = YUD.hasClass('branch_tag_switcher_2','loaded');
167 var loaded = YUD.hasClass('branch_tag_switcher_2','loaded');
169 if(!loaded){
168 if(!loaded){
170 YUD.addClass('branch_tag_switcher_2','loaded');
169 YUD.addClass('branch_tag_switcher_2','loaded');
171 ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list_2',
170 ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list_2',
172 function(o){},
171 function(o){},
173 function(o){YUD.removeClass('branch_tag_switcher_2','loaded');}
172 function(o){YUD.removeClass('branch_tag_switcher_2','loaded');}
174 ,null);
173 ,null);
175 }
174 }
176 return false;
175 return false;
177 });
176 });
178 </script>
177 </script>
179 <!--- END CONTEXT BAR -->
178 <!--- END CONTEXT BAR -->
180 </%def>
179 </%def>
181
180
182 <%def name="usermenu()">
181 <%def name="usermenu()">
183 ## USER MENU
182 ## USER MENU
184 <li>
183 <li>
185 <a class="menu_link childs" id="quick_login_link">
184 <a class="menu_link childs" id="quick_login_link">
186 <span class="icon">
185 <span class="icon">
187 <img src="${h.gravatar_url(c.rhodecode_user.email,20)}" alt="avatar">
186 <img src="${h.gravatar_url(c.rhodecode_user.email,20)}" alt="avatar">
188 </span>
187 </span>
189 %if c.rhodecode_user.username != 'default':
188 %if c.rhodecode_user.username != 'default':
190 <span class="menu_link_user">${c.rhodecode_user.username}</span>
189 <span class="menu_link_user">${c.rhodecode_user.username}</span>
191 %if c.unread_notifications != 0:
190 %if c.unread_notifications != 0:
192 <span class="menu_link_notifications">${c.unread_notifications}</span>
191 <span class="menu_link_notifications">${c.unread_notifications}</span>
193 %endif
192 %endif
194 %else:
193 %else:
195 <span>${_('Not logged in')}</span>
194 <span>${_('Not logged in')}</span>
196 %endif
195 %endif
197 </a>
196 </a>
198
197
199 <div class="user-menu">
198 <div class="user-menu">
200 <div id="quick_login">
199 <div id="quick_login">
201 %if c.rhodecode_user.username == 'default':
200 %if c.rhodecode_user.username == 'default':
202 <h4>${_('Login to your account')}</h4>
201 <h4>${_('Login to your account')}</h4>
203 ${h.form(h.url('login_home',came_from=h.url.current()))}
202 ${h.form(h.url('login_home',came_from=h.url.current()))}
204 <div class="form">
203 <div class="form">
205 <div class="fields">
204 <div class="fields">
206 <div class="field">
205 <div class="field">
207 <div class="label">
206 <div class="label">
208 <label for="username">${_('Username')}:</label>
207 <label for="username">${_('Username')}:</label>
209 </div>
208 </div>
210 <div class="input">
209 <div class="input">
211 ${h.text('username',class_='focus')}
210 ${h.text('username',class_='focus')}
212 </div>
211 </div>
213
212
214 </div>
213 </div>
215 <div class="field">
214 <div class="field">
216 <div class="label">
215 <div class="label">
217 <label for="password">${_('Password')}:</label>
216 <label for="password">${_('Password')}:</label>
218 </div>
217 </div>
219 <div class="input">
218 <div class="input">
220 ${h.password('password',class_='focus')}
219 ${h.password('password',class_='focus')}
221 </div>
220 </div>
222
221
223 </div>
222 </div>
224 <div class="buttons">
223 <div class="buttons">
225 <div class="password_forgoten">${h.link_to(_('Forgot password ?'),h.url('reset_password'))}</div>
224 <div class="password_forgoten">${h.link_to(_('Forgot password ?'),h.url('reset_password'))}</div>
226 <div class="register">
225 <div class="register">
227 %if h.HasPermissionAny('hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')():
226 %if h.HasPermissionAny('hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')():
228 ${h.link_to(_("Don't have an account ?"),h.url('register'))}
227 ${h.link_to(_("Don't have an account ?"),h.url('register'))}
229 %endif
228 %endif
230 </div>
229 </div>
231 <div class="submit">
230 <div class="submit">
232 ${h.submit('sign_in',_('Log In'),class_="ui-btn xsmall")}
231 ${h.submit('sign_in',_('Log In'),class_="ui-btn xsmall")}
233 </div>
232 </div>
234 </div>
233 </div>
235 </div>
234 </div>
236 </div>
235 </div>
237 ${h.end_form()}
236 ${h.end_form()}
238 %else:
237 %else:
239 <div class="links_left">
238 <div class="links_left">
240 <div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div>
239 <div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div>
241 <div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
240 <div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
242 <div class="email">${c.rhodecode_user.email}</div>
241 <div class="email">${c.rhodecode_user.email}</div>
243 </div>
242 </div>
244 <div class="links_right">
243 <div class="links_right">
245 <ol class="links">
244 <ol class="links">
246 <li><a href="${h.url('notifications')}">${_('Notifications')}: ${c.unread_notifications}</a></li>
245 <li><a href="${h.url('notifications')}">${_('Notifications')}: ${c.unread_notifications}</a></li>
247 <li>${h.link_to(_(u'My account'),h.url('admin_settings_my_account'))}</li>
246 <li>${h.link_to(_(u'My account'),h.url('admin_settings_my_account'))}</li>
248 <li class="logout">${h.link_to(_(u'Log Out'),h.url('logout_home'))}</li>
247 <li class="logout">${h.link_to(_(u'Log Out'),h.url('logout_home'))}</li>
249 </ol>
248 </ol>
250 </div>
249 </div>
251 %endif
250 %endif
252 </div>
251 </div>
253 </div>
252 </div>
254
253
255 </li>
254 </li>
256 </%def>
255 </%def>
257
256
258 <%def name="menu(current=None)">
257 <%def name="menu(current=None)">
259 <%
258 <%
260 def is_current(selected):
259 def is_current(selected):
261 if selected == current:
260 if selected == current:
262 return h.literal('class="current"')
261 return h.literal('class="current"')
263 %>
262 %>
264 <ul id="quick" class="horizontal-list">
263 <ul id="quick" class="horizontal-list">
265 <!-- repo switcher -->
264 <!-- repo switcher -->
266 <li ${is_current('repositories')}>
265 <li ${is_current('repositories')}>
267 <a class="menu_link repo_switcher childs" id="repo_switcher" title="${_('Switch repository')}" href="${h.url('home')}">
266 <a class="menu_link repo_switcher childs" id="repo_switcher" title="${_('Switch repository')}" href="${h.url('home')}">
268 ${_('Repositories')}
267 ${_('Repositories')}
269 </a>
268 </a>
270 <ul id="repo_switcher_list" class="repo_switcher">
269 <ul id="repo_switcher_list" class="repo_switcher">
271 <li>
270 <li>
272 <a href="#">${_('loading...')}</a>
271 <a href="#">${_('loading...')}</a>
273 </li>
272 </li>
274 </ul>
273 </ul>
275 </li>
274 </li>
276 ##ROOT MENU
275 ##ROOT MENU
277 %if c.rhodecode_user.username != 'default':
276 %if c.rhodecode_user.username != 'default':
278 <li ${is_current('journal')}>
277 <li ${is_current('journal')}>
279 <a class="menu_link journal" title="${_('Show recent activity')}" href="${h.url('journal')}">
278 <a class="menu_link journal" title="${_('Show recent activity')}" href="${h.url('journal')}">
280 ${_('Journal')}
279 ${_('Journal')}
281 </a>
280 </a>
282 </li>
281 </li>
283 %else:
282 %else:
284 <li ${is_current('journal')}>
283 <li ${is_current('journal')}>
285 <a class="menu_link journal" title="${_('Public journal')}" href="${h.url('public_journal')}">
284 <a class="menu_link journal" title="${_('Public journal')}" href="${h.url('public_journal')}">
286 ${_('Public journal')}
285 ${_('Public journal')}
287 </a>
286 </a>
288 </li>
287 </li>
289 %endif
288 %endif
290 <li ${is_current('search')}>
289 <li ${is_current('search')}>
291 <a class="menu_link search" title="${_('Search in repositories')}" href="${h.url('search')}">
290 <a class="menu_link search" title="${_('Search in repositories')}" href="${h.url('search')}">
292 ${_('Search')}
291 ${_('Search')}
293 </a>
292 </a>
294 </li>
293 </li>
295 % if h.HasPermissionAll('hg.admin')('access admin main page'):
294 % if h.HasPermissionAll('hg.admin')('access admin main page'):
296 <li ${is_current('admin')}>
295 <li ${is_current('admin')}>
297 <a class="menu_link admin childs" title="${_('Admin')}" href="${h.url('admin_home')}">
296 <a class="menu_link admin childs" title="${_('Admin')}" href="${h.url('admin_home')}">
298 ${_('Admin')}
297 ${_('Admin')}
299 </a>
298 </a>
300 ${admin_menu()}
299 ${admin_menu()}
301 </li>
300 </li>
302 % elif c.rhodecode_user.repository_groups_admin or c.rhodecode_user.user_groups_admin:
301 % elif c.rhodecode_user.repository_groups_admin or c.rhodecode_user.user_groups_admin:
303 <li ${is_current('admin')}>
302 <li ${is_current('admin')}>
304 <a class="menu_link admin childs" title="${_('Admin')}">
303 <a class="menu_link admin childs" title="${_('Admin')}">
305 ${_('Admin')}
304 ${_('Admin')}
306 </a>
305 </a>
307 ${admin_menu_simple(c.rhodecode_user.repository_groups_admin, c.rhodecode_user.user_groups_admin)}
306 ${admin_menu_simple(c.rhodecode_user.repository_groups_admin, c.rhodecode_user.user_groups_admin)}
308 </li>
307 </li>
309 % endif
308 % endif
310 ${usermenu()}
309 ${usermenu()}
311 <script type="text/javascript">
310 <script type="text/javascript">
312 YUE.on('repo_switcher','mouseover',function(){
311 YUE.on('repo_switcher','mouseover',function(){
313 var target = 'q_filter_rs';
312 var target = 'q_filter_rs';
314 var qfilter_activate = function(){
313 var qfilter_activate = function(){
315 var nodes = YUQ('ul#repo_switcher_list li a.repo_name');
314 var nodes = YUQ('ul#repo_switcher_list li a.repo_name');
316 var func = function(node){
315 var func = function(node){
317 return node.parentNode;
316 return node.parentNode;
318 }
317 }
319 q_filter(target,nodes,func);
318 q_filter(target,nodes,func);
320 }
319 }
321
320
322 var loaded = YUD.hasClass('repo_switcher','loaded');
321 var loaded = YUD.hasClass('repo_switcher','loaded');
323 if(!loaded){
322 if(!loaded){
324 YUD.addClass('repo_switcher','loaded');
323 YUD.addClass('repo_switcher','loaded');
325 ypjax("${h.url('repo_switcher')}",'repo_switcher_list',
324 ypjax("${h.url('repo_switcher')}",'repo_switcher_list',
326 function(o){qfilter_activate();YUD.get(target).focus()},
325 function(o){qfilter_activate();YUD.get(target).focus()},
327 function(o){YUD.removeClass('repo_switcher','loaded');}
326 function(o){YUD.removeClass('repo_switcher','loaded');}
328 ,null);
327 ,null);
329 }else{
328 }else{
330 YUD.get(target).focus();
329 YUD.get(target).focus();
331 }
330 }
332 return false;
331 return false;
333 });
332 });
334
333
335 YUE.on('header-dd', 'click',function(e){
334 YUE.on('header-dd', 'click',function(e){
336 YUD.addClass('header-inner', 'hover');
335 YUD.addClass('header-inner', 'hover');
337 YUD.addClass('content', 'hover');
336 YUD.addClass('content', 'hover');
338 });
337 });
339
338
340 </script>
339 </script>
341 </%def>
340 </%def>
@@ -1,749 +1,749 b''
1 <%inherit file="/base/base.html"/>
1 <%inherit file="/base/base.html"/>
2
2
3 <%def name="title()">
3 <%def name="title()">
4 ${_('%s Summary') % c.repo_name} &middot; ${c.rhodecode_name}
4 ${_('%s Summary') % c.repo_name} &middot; ${c.rhodecode_name}
5 </%def>
5 </%def>
6
6
7 <%def name="breadcrumbs_links()">
7 <%def name="breadcrumbs_links()">
8 ${_('Summary')}
8 ${_('Summary')}
9 </%def>
9 </%def>
10
10
11 <%def name="page_nav()">
11 <%def name="page_nav()">
12 ${self.menu('repositories')}
12 ${self.menu('repositories')}
13 </%def>
13 </%def>
14
14
15 <%def name="head_extra()">
15 <%def name="head_extra()">
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" />
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 <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" />
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 <script>
19 <script>
20 redirect_hash_branch = function(){
20 redirect_hash_branch = function(){
21 var branch = window.location.hash.replace(/^#(.*)/, '$1');
21 var branch = window.location.hash.replace(/^#(.*)/, '$1');
22 if (branch){
22 if (branch){
23 window.location = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}"
23 window.location = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}"
24 .replace('__BRANCH__',branch);
24 .replace('__BRANCH__',branch);
25 }
25 }
26 }
26 }
27 redirect_hash_branch();
27 redirect_hash_branch();
28 window.onhashchange = function() {
28 window.onhashchange = function() {
29 redirect_hash_branch();
29 redirect_hash_branch();
30 };
30 };
31 </script>
31 </script>
32
32
33 </%def>
33 </%def>
34
34
35 <%def name="main()">
35 <%def name="main()">
36 ${self.context_bar('summary')}
36 ${self.context_bar('summary')}
37 <%
37 <%
38 summary = lambda n:{False:'summary-short'}.get(n)
38 summary = lambda n:{False:'summary-short'}.get(n)
39 %>
39 %>
40 %if c.show_stats:
40 %if c.show_stats:
41 <div class="box box-left">
41 <div class="box box-left">
42 %else:
42 %else:
43 <div class="box">
43 <div class="box">
44 %endif
44 %endif
45 <!-- box / title -->
45 <!-- box / title -->
46 <div class="title">
46 <div class="title">
47 ${self.breadcrumbs()}
47 ${self.breadcrumbs()}
48 </div>
48 </div>
49 <!-- end box / title -->
49 <!-- end box / title -->
50 <div class="form">
50 <div class="form">
51 <div id="summary" class="fields">
51 <div id="summary" class="fields">
52
52
53 <div class="field">
53 <div class="field">
54 <div class="label-summary">
54 <div class="label-summary">
55 <label>${_('Name')}:</label>
55 <label>${_('Name')}:</label>
56 </div>
56 </div>
57 <div class="input ${summary(c.show_stats)}">
57 <div class="input ${summary(c.show_stats)}">
58
58
59 ## locking icon
59 ## locking icon
60 %if c.rhodecode_db_repo.enable_locking:
60 %if c.rhodecode_db_repo.enable_locking:
61 %if c.rhodecode_db_repo.locked[0]:
61 %if c.rhodecode_db_repo.locked[0]:
62 <span class="locking_locked tooltip" title="${_('Repository locked by %s') % h.person_by_id(c.rhodecode_db_repo.locked[0])}"></span>
62 <span class="locking_locked tooltip" title="${_('Repository locked by %s') % h.person_by_id(c.rhodecode_db_repo.locked[0])}"></span>
63 %else:
63 %else:
64 <span class="locking_unlocked tooltip" title="${_('Repository unlocked')}"></span>
64 <span class="locking_unlocked tooltip" title="${_('Repository unlocked')}"></span>
65 %endif
65 %endif
66 %endif
66 %endif
67 ##REPO TYPE
67 ##REPO TYPE
68 %if h.is_hg(c.dbrepo):
68 %if h.is_hg(c.dbrepo):
69 <img style="margin-bottom:2px" class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/>
69 <img style="margin-bottom:2px" class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/>
70 %endif
70 %endif
71 %if h.is_git(c.dbrepo):
71 %if h.is_git(c.dbrepo):
72 <img style="margin-bottom:2px" class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/>
72 <img style="margin-bottom:2px" class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/>
73 %endif
73 %endif
74
74
75 ##PUBLIC/PRIVATE
75 ##PUBLIC/PRIVATE
76 %if c.dbrepo.private:
76 %if c.dbrepo.private:
77 <img style="margin-bottom:2px" class="icon" title="${_('Private repository')}" alt="${_('Private repository')}" src="${h.url('/images/icons/lock.png')}"/>
77 <img style="margin-bottom:2px" class="icon" title="${_('Private repository')}" alt="${_('Private repository')}" src="${h.url('/images/icons/lock.png')}"/>
78 %else:
78 %else:
79 <img style="margin-bottom:2px" class="icon" title="${_('Public repository')}" alt="${_('Public repository')}" src="${h.url('/images/icons/lock_open.png')}"/>
79 <img style="margin-bottom:2px" class="icon" title="${_('Public repository')}" alt="${_('Public repository')}" src="${h.url('/images/icons/lock_open.png')}"/>
80 %endif
80 %endif
81
81
82 ##REPO NAME
82 ##REPO NAME
83 <span class="repo_name" title="${_('Non changable ID %s') % c.dbrepo.repo_id}">${h.repo_link(c.dbrepo.groups_and_repo)}</span>
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 ##FORK
85 ##FORK
86 %if c.dbrepo.fork:
86 %if c.dbrepo.fork:
87 <div style="margin-top:5px;clear:both">
87 <div style="margin-top:5px;clear:both">
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')}"/>
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 ${_('Fork of')} ${c.dbrepo.fork.repo_name}
89 ${_('Fork of')} ${c.dbrepo.fork.repo_name}
90 </a>
90 </a>
91 </div>
91 </div>
92 %endif
92 %endif
93 ##REMOTE
93 ##REMOTE
94 %if c.dbrepo.clone_uri:
94 %if c.dbrepo.clone_uri:
95 <div style="margin-top:5px;clear:both">
95 <div style="margin-top:5px;clear:both">
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')}"/>
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 ${_('Clone from')} ${h.hide_credentials(c.dbrepo.clone_uri)}
97 ${_('Clone from')} ${h.hide_credentials(c.dbrepo.clone_uri)}
98 </a>
98 </a>
99 </div>
99 </div>
100 %endif
100 %endif
101 </div>
101 </div>
102 </div>
102 </div>
103
103
104 <div class="field">
104 <div class="field">
105 <div class="label-summary">
105 <div class="label-summary">
106 <label>${_('Description')}:</label>
106 <label>${_('Description')}:</label>
107 </div>
107 </div>
108 %if c.visual.stylify_metatags:
108 %if c.visual.stylify_metatags:
109 <div class="input ${summary(c.show_stats)} desc">${h.urlify_text(h.desc_stylize(c.dbrepo.description))}</div>
109 <div class="input ${summary(c.show_stats)} desc">${h.urlify_text(h.desc_stylize(c.dbrepo.description))}</div>
110 %else:
110 %else:
111 <div class="input ${summary(c.show_stats)} desc">${h.urlify_text(c.dbrepo.description)}</div>
111 <div class="input ${summary(c.show_stats)} desc">${h.urlify_text(c.dbrepo.description)}</div>
112 %endif
112 %endif
113 </div>
113 </div>
114
114
115 <div class="field">
115 <div class="field">
116 <div class="label-summary">
116 <div class="label-summary">
117 <label>${_('Contact')}:</label>
117 <label>${_('Contact')}:</label>
118 </div>
118 </div>
119 <div class="input ${summary(c.show_stats)}">
119 <div class="input ${summary(c.show_stats)}">
120 <div class="gravatar">
120 <div class="gravatar">
121 <img alt="gravatar" src="${h.gravatar_url(c.dbrepo.user.email)}"/>
121 <img alt="gravatar" src="${h.gravatar_url(c.dbrepo.user.email)}"/>
122 </div>
122 </div>
123 ${_('Username')}: ${c.dbrepo.user.username}<br/>
123 ${_('Username')}: ${c.dbrepo.user.username}<br/>
124 ${_('Name')}: ${c.dbrepo.user.name} ${c.dbrepo.user.lastname}<br/>
124 ${_('Name')}: ${c.dbrepo.user.name} ${c.dbrepo.user.lastname}<br/>
125 ${_('Email')}: <a href="mailto:${c.dbrepo.user.email}">${c.dbrepo.user.email}</a>
125 ${_('Email')}: <a href="mailto:${c.dbrepo.user.email}">${c.dbrepo.user.email}</a>
126 </div>
126 </div>
127 </div>
127 </div>
128
128
129 <div class="field">
129 <div class="field">
130 <div class="label-summary">
130 <div class="label-summary">
131 <label>${_('Clone url')}:</label>
131 <label>${_('Clone url')}:</label>
132 </div>
132 </div>
133 <div class="input ${summary(c.show_stats)}">
133 <div class="input ${summary(c.show_stats)}">
134 <input style="width:${'75%' if c.show_stats else '80%'}" type="text" id="clone_url" readonly="readonly" value="${c.clone_repo_url}"/>
134 <input style="width:${'75%' if c.show_stats else '80%'}" type="text" id="clone_url" readonly="readonly" value="${c.clone_repo_url}"/>
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}"/>
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 <div style="display:none" id="clone_by_name" class="ui-btn clone">${_('Show by Name')}</div>
136 <div style="display:none" id="clone_by_name" class="ui-btn clone">${_('Show by Name')}</div>
137 <div id="clone_by_id" class="ui-btn clone">${_('Show by ID')}</div>
137 <div id="clone_by_id" class="ui-btn clone">${_('Show by ID')}</div>
138 </div>
138 </div>
139 </div>
139 </div>
140
140
141 <div class="field">
141 <div class="field">
142 <div class="label-summary">
142 <div class="label-summary">
143 <label>${_('Trending files')}:</label>
143 <label>${_('Trending files')}:</label>
144 </div>
144 </div>
145 <div class="input ${summary(c.show_stats)}">
145 <div class="input ${summary(c.show_stats)}">
146 %if c.show_stats:
146 %if c.show_stats:
147 <div id="lang_stats"></div>
147 <div id="lang_stats"></div>
148 %else:
148 %else:
149 ${_('Statistics are disabled for this repository')}
149 ${_('Statistics are disabled for this repository')}
150 %if h.HasPermissionAll('hg.admin')('enable stats on from summary'):
150 %if h.HasPermissionAll('hg.admin')('enable stats on from summary'):
151 ${h.link_to(_('Enable'),h.url('edit_repo',repo_name=c.repo_name),class_="ui-btn")}
151 ${h.link_to(_('Enable'),h.url('edit_repo',repo_name=c.repo_name),class_="ui-btn")}
152 %endif
152 %endif
153 %endif
153 %endif
154 </div>
154 </div>
155 </div>
155 </div>
156
156
157 <div class="field">
157 <div class="field">
158 <div class="label-summary">
158 <div class="label-summary">
159 <label>${_('Download')}:</label>
159 <label>${_('Download')}:</label>
160 </div>
160 </div>
161 <div class="input ${summary(c.show_stats)}">
161 <div class="input ${summary(c.show_stats)}">
162 %if len(c.rhodecode_repo.revisions) == 0:
162 %if len(c.rhodecode_repo.revisions) == 0:
163 ${_('There are no downloads yet')}
163 ${_('There are no downloads yet')}
164 %elif not c.enable_downloads:
164 %elif not c.enable_downloads:
165 ${_('Downloads are disabled for this repository')}
165 ${_('Downloads are disabled for this repository')}
166 %if h.HasPermissionAll('hg.admin')('enable downloads on from summary'):
166 %if h.HasPermissionAll('hg.admin')('enable downloads on from summary'):
167 ${h.link_to(_('Enable'),h.url('edit_repo',repo_name=c.repo_name),class_="ui-btn")}
167 ${h.link_to(_('Enable'),h.url('edit_repo',repo_name=c.repo_name),class_="ui-btn")}
168 %endif
168 %endif
169 %else:
169 %else:
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>
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 ${h.select('download_options',c.rhodecode_repo.get_changeset().raw_id,c.download_options)}
171 ${h.select('download_options',c.rhodecode_repo.get_changeset().raw_id,c.download_options)}
172 <span style="vertical-align: bottom">
172 <span style="vertical-align: bottom">
173 <input id="archive_subrepos" type="checkbox" name="subrepos" />
173 <input id="archive_subrepos" type="checkbox" name="subrepos" />
174 <label for="archive_subrepos" class="tooltip" title="${h.tooltip(_('Check this to download archive with subrepos'))}" >${_('with subrepos')}</label>
174 <label for="archive_subrepos" class="tooltip" title="${h.tooltip(_('Check this to download archive with subrepos'))}" >${_('with subrepos')}</label>
175 </span>
175 </span>
176 %endif
176 %endif
177 </div>
177 </div>
178 </div>
178 </div>
179 </div>
179 </div>
180 <div id="summary-menu-stats">
180 <div id="summary-menu-stats">
181 <ul>
181 <ul>
182 <li>
182 <li>
183 <a class="followers" title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
183 <a class="followers" title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
184 ${_('Followers')}
184 ${_('Followers')}
185 <span style="float:right" id="current_followers_count">${c.repository_followers}</span>
185 <span style="float:right" id="current_followers_count">${c.repository_followers}</span>
186 </a>
186 </a>
187 </li>
187 </li>
188 <li>
188 <li>
189 <a class="forks" title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
189 <a class="forks" title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
190 ${_('Forks')}
190 ${_('Forks')}
191 <span style="float:right">${c.repository_forks}</span>
191 <span style="float:right">${c.repository_forks}</span>
192 </a>
192 </a>
193 </li>
193 </li>
194
194
195 %if c.rhodecode_user.username != 'default':
195 %if c.rhodecode_user.username != 'default':
196 <li class="repo_size">
196 <li class="repo_size">
197 <a href="#" class="repo-size" onclick="javascript:showRepoSize('repo_size_2','${c.dbrepo.repo_name}','${str(h.get_token())}')">${_('Repository Size')}</a>
197 <a href="#" class="repo-size" onclick="javascript:showRepoSize('repo_size_2','${c.dbrepo.repo_name}','${str(h.get_token())}')">${_('Repository Size')}</a>
198 <span id="repo_size_2"></span>
198 <span id="repo_size_2"></span>
199 </li>
199 </li>
200 %endif
200 %endif
201
201
202 <li>
202 <li>
203 %if c.rhodecode_user.username != 'default':
203 %if c.rhodecode_user.username != 'default':
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')}
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 %else:
205 %else:
206 ${h.link_to(_('Feed'),h.url('atom_feed_home',repo_name=c.dbrepo.repo_name),class_='feed')}
206 ${h.link_to(_('Feed'),h.url('atom_feed_home',repo_name=c.dbrepo.repo_name),class_='feed')}
207 %endif
207 %endif
208 </li>
208 </li>
209
209
210 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
210 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
211 <li>
211 <li>
212 ${h.link_to(_('Settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}
212 ${h.link_to(_('Settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}
213 </li>
213 </li>
214 %endif
214 %endif
215 </ul>
215 </ul>
216 </div>
216 </div>
217 </div>
217 </div>
218 </div>
218 </div>
219
219
220 %if c.show_stats:
220 %if c.show_stats:
221 <div class="box box-right" style="min-height:455px">
221 <div class="box box-right" style="min-height:455px">
222 <!-- box / title -->
222 <!-- box / title -->
223 <div class="title">
223 <div class="title">
224 <h5>${_('Commit activity by day / author')}</h5>
224 <h5>${_('Commit activity by day / author')}</h5>
225 </div>
225 </div>
226
226
227 <div class="graph">
227 <div class="graph">
228 <div style="padding:0 10px 10px 17px;">
228 <div style="padding:0 10px 10px 17px;">
229 %if c.no_data:
229 %if c.no_data:
230 ${c.no_data_msg}
230 ${c.no_data_msg}
231 %if h.HasPermissionAll('hg.admin')('enable stats on from summary'):
231 %if h.HasPermissionAll('hg.admin')('enable stats on from summary'):
232 ${h.link_to(_('enable'),h.url('edit_repo',repo_name=c.repo_name),class_="ui-btn")}
232 ${h.link_to(_('enable'),h.url('edit_repo',repo_name=c.repo_name),class_="ui-btn")}
233 %endif
233 %endif
234 %else:
234 %else:
235 ${_('Stats gathered: ')} ${c.stats_percentage}%
235 ${_('Stats gathered: ')} ${c.stats_percentage}%
236 %endif
236 %endif
237 </div>
237 </div>
238 <div id="commit_history" style="width:450px;height:300px;float:left"></div>
238 <div id="commit_history" style="width:450px;height:300px;float:left"></div>
239 <div style="clear: both;height: 10px"></div>
239 <div style="clear: both;height: 10px"></div>
240 <div id="overview" style="width:450px;height:100px;float:left"></div>
240 <div id="overview" style="width:450px;height:100px;float:left"></div>
241
241
242 <div id="legend_data" style="clear:both;margin-top:10px;">
242 <div id="legend_data" style="clear:both;margin-top:10px;">
243 <div id="legend_container"></div>
243 <div id="legend_container"></div>
244 <div id="legend_choices">
244 <div id="legend_choices">
245 <table id="legend_choices_tables" class="noborder" style="font-size:smaller;color:#545454"></table>
245 <table id="legend_choices_tables" class="noborder" style="font-size:smaller;color:#545454"></table>
246 </div>
246 </div>
247 </div>
247 </div>
248 </div>
248 </div>
249 </div>
249 </div>
250 %endif
250 %endif
251
251
252 <div class="box">
252 <div class="box">
253 <div class="title">
253 <div class="title">
254 <div class="breadcrumbs">
254 <div class="breadcrumbs">
255 %if c.repo_changesets:
255 %if c.repo_changesets:
256 ${h.link_to(_('Latest changes'),h.url('changelog_home',repo_name=c.repo_name))}
256 ${h.link_to(_('Latest changes'),h.url('changelog_home',repo_name=c.repo_name))}
257 %else:
257 %else:
258 ${_('Quick start')}
258 ${_('Quick start')}
259 %endif
259 %endif
260 </div>
260 </div>
261 </div>
261 </div>
262 <div class="table">
262 <div class="table">
263 <div id="shortlog_data">
263 <div id="shortlog_data">
264 <%include file='../shortlog/shortlog_data.html'/>
264 <%include file='../changelog/changelog_summary_data.html'/>
265 </div>
265 </div>
266 </div>
266 </div>
267 </div>
267 </div>
268
268
269 %if c.readme_data:
269 %if c.readme_data:
270 <div id="readme" class="anchor">
270 <div id="readme" class="anchor">
271 <div class="box" style="background-color: #FAFAFA">
271 <div class="box" style="background-color: #FAFAFA">
272 <div class="title" title="${_("Readme file at revision '%s'" % c.rhodecode_db_repo.landing_rev)}">
272 <div class="title" title="${_("Readme file at revision '%s'" % c.rhodecode_db_repo.landing_rev)}">
273 <div class="breadcrumbs">
273 <div class="breadcrumbs">
274 <a href="${h.url('files_home',repo_name=c.repo_name,revision='tip',f_path=c.readme_file)}">${c.readme_file}</a>
274 <a href="${h.url('files_home',repo_name=c.repo_name,revision='tip',f_path=c.readme_file)}">${c.readme_file}</a>
275 <a class="permalink" href="#readme" title="${_('Permalink to this readme')}">&para;</a>
275 <a class="permalink" href="#readme" title="${_('Permalink to this readme')}">&para;</a>
276 </div>
276 </div>
277 </div>
277 </div>
278 <div class="readme">
278 <div class="readme">
279 <div class="readme_box">
279 <div class="readme_box">
280 ${c.readme_data|n}
280 ${c.readme_data|n}
281 </div>
281 </div>
282 </div>
282 </div>
283 </div>
283 </div>
284 </div>
284 </div>
285 %endif
285 %endif
286
286
287 <script type="text/javascript">
287 <script type="text/javascript">
288 var clone_url = 'clone_url';
288 var clone_url = 'clone_url';
289 YUE.on(clone_url,'click',function(e){
289 YUE.on(clone_url,'click',function(e){
290 if(YUD.hasClass(clone_url,'selected')){
290 if(YUD.hasClass(clone_url,'selected')){
291 return
291 return
292 }
292 }
293 else{
293 else{
294 YUD.addClass(clone_url,'selected');
294 YUD.addClass(clone_url,'selected');
295 YUD.get(clone_url).select();
295 YUD.get(clone_url).select();
296 }
296 }
297 })
297 })
298
298
299 YUE.on('clone_by_name','click',function(e){
299 YUE.on('clone_by_name','click',function(e){
300 // show url by name and hide name button
300 // show url by name and hide name button
301 YUD.setStyle('clone_url','display','');
301 YUD.setStyle('clone_url','display','');
302 YUD.setStyle('clone_by_name','display','none');
302 YUD.setStyle('clone_by_name','display','none');
303
303
304 // hide url by id and show name button
304 // hide url by id and show name button
305 YUD.setStyle('clone_by_id','display','');
305 YUD.setStyle('clone_by_id','display','');
306 YUD.setStyle('clone_url_id','display','none');
306 YUD.setStyle('clone_url_id','display','none');
307
307
308 })
308 })
309 YUE.on('clone_by_id','click',function(e){
309 YUE.on('clone_by_id','click',function(e){
310
310
311 // show url by id and hide id button
311 // show url by id and hide id button
312 YUD.setStyle('clone_by_id','display','none');
312 YUD.setStyle('clone_by_id','display','none');
313 YUD.setStyle('clone_url_id','display','');
313 YUD.setStyle('clone_url_id','display','');
314
314
315 // hide url by name and show id button
315 // hide url by name and show id button
316 YUD.setStyle('clone_by_name','display','');
316 YUD.setStyle('clone_by_name','display','');
317 YUD.setStyle('clone_url','display','none');
317 YUD.setStyle('clone_url','display','none');
318 })
318 })
319
319
320
320
321 var tmpl_links = {};
321 var tmpl_links = {};
322 %for cnt,archive in enumerate(c.rhodecode_repo._get_archives()):
322 %for cnt,archive in enumerate(c.rhodecode_repo._get_archives()):
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')}';
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 %endfor
324 %endfor
325
325
326 YUE.on(['download_options','archive_subrepos'],'change',function(e){
326 YUE.on(['download_options','archive_subrepos'],'change',function(e){
327 var sm = YUD.get('download_options');
327 var sm = YUD.get('download_options');
328 var new_cs = sm.options[sm.selectedIndex];
328 var new_cs = sm.options[sm.selectedIndex];
329
329
330 for(k in tmpl_links){
330 for(k in tmpl_links){
331 var s = YUD.get(k+'_link');
331 var s = YUD.get(k+'_link');
332 if(s){
332 if(s){
333 var title_tmpl = "${_('Download %s as %s') % ('__CS_NAME__','__CS_EXT__')}";
333 var title_tmpl = "${_('Download %s as %s') % ('__CS_NAME__','__CS_EXT__')}";
334 title_tmpl= title_tmpl.replace('__CS_NAME__',new_cs.text);
334 title_tmpl= title_tmpl.replace('__CS_NAME__',new_cs.text);
335 title_tmpl = title_tmpl.replace('__CS_EXT__',k);
335 title_tmpl = title_tmpl.replace('__CS_EXT__',k);
336
336
337 var url = tmpl_links[k].replace('__CS__',new_cs.value);
337 var url = tmpl_links[k].replace('__CS__',new_cs.value);
338 var subrepos = YUD.get('archive_subrepos').checked;
338 var subrepos = YUD.get('archive_subrepos').checked;
339 url = url.replace('__SUB__',subrepos);
339 url = url.replace('__SUB__',subrepos);
340 url = url.replace('__NAME__',title_tmpl);
340 url = url.replace('__NAME__',title_tmpl);
341 s.innerHTML = url
341 s.innerHTML = url
342 }
342 }
343 }
343 }
344 });
344 });
345 </script>
345 </script>
346 %if c.show_stats:
346 %if c.show_stats:
347 <script type="text/javascript">
347 <script type="text/javascript">
348 var data = ${c.trending_languages|n};
348 var data = ${c.trending_languages|n};
349 var total = 0;
349 var total = 0;
350 var no_data = true;
350 var no_data = true;
351 var tbl = document.createElement('table');
351 var tbl = document.createElement('table');
352 tbl.setAttribute('class','trending_language_tbl');
352 tbl.setAttribute('class','trending_language_tbl');
353 var cnt = 0;
353 var cnt = 0;
354 for (var i=0;i<data.length;i++){
354 for (var i=0;i<data.length;i++){
355 total+= data[i][1].count;
355 total+= data[i][1].count;
356 }
356 }
357 for (var i=0;i<data.length;i++){
357 for (var i=0;i<data.length;i++){
358 cnt += 1;
358 cnt += 1;
359 no_data = false;
359 no_data = false;
360
360
361 var hide = cnt>2;
361 var hide = cnt>2;
362 var tr = document.createElement('tr');
362 var tr = document.createElement('tr');
363 if (hide){
363 if (hide){
364 tr.setAttribute('style','display:none');
364 tr.setAttribute('style','display:none');
365 tr.setAttribute('class','stats_hidden');
365 tr.setAttribute('class','stats_hidden');
366 }
366 }
367 var k = data[i][0];
367 var k = data[i][0];
368 var obj = data[i][1];
368 var obj = data[i][1];
369 var percentage = Math.round((obj.count/total*100),2);
369 var percentage = Math.round((obj.count/total*100),2);
370
370
371 var td1 = document.createElement('td');
371 var td1 = document.createElement('td');
372 td1.width = 150;
372 td1.width = 150;
373 var trending_language_label = document.createElement('div');
373 var trending_language_label = document.createElement('div');
374 trending_language_label.innerHTML = obj.desc+" ("+k+")";
374 trending_language_label.innerHTML = obj.desc+" ("+k+")";
375 td1.appendChild(trending_language_label);
375 td1.appendChild(trending_language_label);
376
376
377 var td2 = document.createElement('td');
377 var td2 = document.createElement('td');
378 td2.setAttribute('style','padding-right:14px !important');
378 td2.setAttribute('style','padding-right:14px !important');
379 var trending_language = document.createElement('div');
379 var trending_language = document.createElement('div');
380 var nr_files = obj.count+" ${_('files')}";
380 var nr_files = obj.count+" ${_('files')}";
381
381
382 trending_language.title = k+" "+nr_files;
382 trending_language.title = k+" "+nr_files;
383
383
384 if (percentage>22){
384 if (percentage>22){
385 trending_language.innerHTML = "<b style='font-size:0.8em'>"+percentage+"% "+nr_files+ "</b>";
385 trending_language.innerHTML = "<b style='font-size:0.8em'>"+percentage+"% "+nr_files+ "</b>";
386 }
386 }
387 else{
387 else{
388 trending_language.innerHTML = "<b style='font-size:0.8em'>"+percentage+"%</b>";
388 trending_language.innerHTML = "<b style='font-size:0.8em'>"+percentage+"%</b>";
389 }
389 }
390
390
391 trending_language.setAttribute("class", 'trending_language top-right-rounded-corner bottom-right-rounded-corner');
391 trending_language.setAttribute("class", 'trending_language top-right-rounded-corner bottom-right-rounded-corner');
392 trending_language.style.width=percentage+"%";
392 trending_language.style.width=percentage+"%";
393 td2.appendChild(trending_language);
393 td2.appendChild(trending_language);
394
394
395 tr.appendChild(td1);
395 tr.appendChild(td1);
396 tr.appendChild(td2);
396 tr.appendChild(td2);
397 tbl.appendChild(tr);
397 tbl.appendChild(tr);
398 if(cnt == 3){
398 if(cnt == 3){
399 var show_more = document.createElement('tr');
399 var show_more = document.createElement('tr');
400 var td = document.createElement('td');
400 var td = document.createElement('td');
401 lnk = document.createElement('a');
401 lnk = document.createElement('a');
402
402
403 lnk.href='#';
403 lnk.href='#';
404 lnk.innerHTML = "${_('Show more')}";
404 lnk.innerHTML = "${_('Show more')}";
405 lnk.id='code_stats_show_more';
405 lnk.id='code_stats_show_more';
406 td.appendChild(lnk);
406 td.appendChild(lnk);
407
407
408 show_more.appendChild(td);
408 show_more.appendChild(td);
409 show_more.appendChild(document.createElement('td'));
409 show_more.appendChild(document.createElement('td'));
410 tbl.appendChild(show_more);
410 tbl.appendChild(show_more);
411 }
411 }
412
412
413 }
413 }
414
414
415 YUD.get('lang_stats').appendChild(tbl);
415 YUD.get('lang_stats').appendChild(tbl);
416 YUE.on('code_stats_show_more','click',function(){
416 YUE.on('code_stats_show_more','click',function(){
417 l = YUD.getElementsByClassName('stats_hidden')
417 l = YUD.getElementsByClassName('stats_hidden')
418 for (e in l){
418 for (e in l){
419 YUD.setStyle(l[e],'display','');
419 YUD.setStyle(l[e],'display','');
420 };
420 };
421 YUD.setStyle(YUD.get('code_stats_show_more'),
421 YUD.setStyle(YUD.get('code_stats_show_more'),
422 'display','none');
422 'display','none');
423 });
423 });
424 </script>
424 </script>
425 <script type="text/javascript">
425 <script type="text/javascript">
426 /**
426 /**
427 * Plots summary graph
427 * Plots summary graph
428 *
428 *
429 * @class SummaryPlot
429 * @class SummaryPlot
430 * @param {from} initial from for detailed graph
430 * @param {from} initial from for detailed graph
431 * @param {to} initial to for detailed graph
431 * @param {to} initial to for detailed graph
432 * @param {dataset}
432 * @param {dataset}
433 * @param {overview_dataset}
433 * @param {overview_dataset}
434 */
434 */
435 function SummaryPlot(from,to,dataset,overview_dataset) {
435 function SummaryPlot(from,to,dataset,overview_dataset) {
436 var initial_ranges = {
436 var initial_ranges = {
437 "xaxis":{
437 "xaxis":{
438 "from":from,
438 "from":from,
439 "to":to,
439 "to":to,
440 },
440 },
441 };
441 };
442 var dataset = dataset;
442 var dataset = dataset;
443 var overview_dataset = [overview_dataset];
443 var overview_dataset = [overview_dataset];
444 var choiceContainer = YUD.get("legend_choices");
444 var choiceContainer = YUD.get("legend_choices");
445 var choiceContainerTable = YUD.get("legend_choices_tables");
445 var choiceContainerTable = YUD.get("legend_choices_tables");
446 var plotContainer = YUD.get('commit_history');
446 var plotContainer = YUD.get('commit_history');
447 var overviewContainer = YUD.get('overview');
447 var overviewContainer = YUD.get('overview');
448
448
449 var plot_options = {
449 var plot_options = {
450 bars: {show:true,align:'center',lineWidth:4},
450 bars: {show:true,align:'center',lineWidth:4},
451 legend: {show:true, container:"legend_container"},
451 legend: {show:true, container:"legend_container"},
452 points: {show:true,radius:0,fill:false},
452 points: {show:true,radius:0,fill:false},
453 yaxis: {tickDecimals:0,},
453 yaxis: {tickDecimals:0,},
454 xaxis: {
454 xaxis: {
455 mode: "time",
455 mode: "time",
456 timeformat: "%d/%m",
456 timeformat: "%d/%m",
457 min:from,
457 min:from,
458 max:to,
458 max:to,
459 },
459 },
460 grid: {
460 grid: {
461 hoverable: true,
461 hoverable: true,
462 clickable: true,
462 clickable: true,
463 autoHighlight:true,
463 autoHighlight:true,
464 color: "#999"
464 color: "#999"
465 },
465 },
466 //selection: {mode: "x"}
466 //selection: {mode: "x"}
467 };
467 };
468 var overview_options = {
468 var overview_options = {
469 legend:{show:false},
469 legend:{show:false},
470 bars: {show:true,barWidth: 2,},
470 bars: {show:true,barWidth: 2,},
471 shadowSize: 0,
471 shadowSize: 0,
472 xaxis: {mode: "time", timeformat: "%d/%m/%y",},
472 xaxis: {mode: "time", timeformat: "%d/%m/%y",},
473 yaxis: {ticks: 3, min: 0,tickDecimals:0,},
473 yaxis: {ticks: 3, min: 0,tickDecimals:0,},
474 grid: {color: "#999",},
474 grid: {color: "#999",},
475 selection: {mode: "x"}
475 selection: {mode: "x"}
476 };
476 };
477
477
478 /**
478 /**
479 *get dummy data needed in few places
479 *get dummy data needed in few places
480 */
480 */
481 function getDummyData(label){
481 function getDummyData(label){
482 return {"label":label,
482 return {"label":label,
483 "data":[{"time":0,
483 "data":[{"time":0,
484 "commits":0,
484 "commits":0,
485 "added":0,
485 "added":0,
486 "changed":0,
486 "changed":0,
487 "removed":0,
487 "removed":0,
488 }],
488 }],
489 "schema":["commits"],
489 "schema":["commits"],
490 "color":'#ffffff',
490 "color":'#ffffff',
491 }
491 }
492 }
492 }
493
493
494 /**
494 /**
495 * generate checkboxes accordindly to data
495 * generate checkboxes accordindly to data
496 * @param keys
496 * @param keys
497 * @returns
497 * @returns
498 */
498 */
499 function generateCheckboxes(data) {
499 function generateCheckboxes(data) {
500 //append checkboxes
500 //append checkboxes
501 var i = 0;
501 var i = 0;
502 choiceContainerTable.innerHTML = '';
502 choiceContainerTable.innerHTML = '';
503 for(var pos in data) {
503 for(var pos in data) {
504
504
505 data[pos].color = i;
505 data[pos].color = i;
506 i++;
506 i++;
507 if(data[pos].label != ''){
507 if(data[pos].label != ''){
508 choiceContainerTable.innerHTML +=
508 choiceContainerTable.innerHTML +=
509 '<tr><td><input type="checkbox" id="id_user_{0}" name="{0}" checked="checked" /> \
509 '<tr><td><input type="checkbox" id="id_user_{0}" name="{0}" checked="checked" /> \
510 <label for="id_user_{0}">{0}</label></td></tr>'.format(data[pos].label);
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 * ToolTip show
516 * ToolTip show
517 */
517 */
518 function showTooltip(x, y, contents) {
518 function showTooltip(x, y, contents) {
519 var div=document.getElementById('tooltip');
519 var div=document.getElementById('tooltip');
520 if(!div) {
520 if(!div) {
521 div = document.createElement('div');
521 div = document.createElement('div');
522 div.id="tooltip";
522 div.id="tooltip";
523 div.style.position="absolute";
523 div.style.position="absolute";
524 div.style.border='1px solid #fdd';
524 div.style.border='1px solid #fdd';
525 div.style.padding='2px';
525 div.style.padding='2px';
526 div.style.backgroundColor='#fee';
526 div.style.backgroundColor='#fee';
527 document.body.appendChild(div);
527 document.body.appendChild(div);
528 }
528 }
529 YUD.setStyle(div, 'opacity', 0);
529 YUD.setStyle(div, 'opacity', 0);
530 div.innerHTML = contents;
530 div.innerHTML = contents;
531 div.style.top=(y + 5) + "px";
531 div.style.top=(y + 5) + "px";
532 div.style.left=(x + 5) + "px";
532 div.style.left=(x + 5) + "px";
533
533
534 var anim = new YAHOO.util.Anim(div, {opacity: {to: 0.8}}, 0.2);
534 var anim = new YAHOO.util.Anim(div, {opacity: {to: 0.8}}, 0.2);
535 anim.animate();
535 anim.animate();
536 }
536 }
537
537
538 /**
538 /**
539 * This function will detect if selected period has some changesets
539 * This function will detect if selected period has some changesets
540 for this user if it does this data is then pushed for displaying
540 for this user if it does this data is then pushed for displaying
541 Additionally it will only display users that are selected by the checkbox
541 Additionally it will only display users that are selected by the checkbox
542 */
542 */
543 function getDataAccordingToRanges(ranges) {
543 function getDataAccordingToRanges(ranges) {
544
544
545 var data = [];
545 var data = [];
546 var new_dataset = {};
546 var new_dataset = {};
547 var keys = [];
547 var keys = [];
548 var max_commits = 0;
548 var max_commits = 0;
549 for(var key in dataset){
549 for(var key in dataset){
550
550
551 for(var ds in dataset[key].data){
551 for(var ds in dataset[key].data){
552 commit_data = dataset[key].data[ds];
552 commit_data = dataset[key].data[ds];
553 if (commit_data.time >= ranges.xaxis.from && commit_data.time <= ranges.xaxis.to){
553 if (commit_data.time >= ranges.xaxis.from && commit_data.time <= ranges.xaxis.to){
554
554
555 if(new_dataset[key] === undefined){
555 if(new_dataset[key] === undefined){
556 new_dataset[key] = {data:[],schema:["commits"],label:key};
556 new_dataset[key] = {data:[],schema:["commits"],label:key};
557 }
557 }
558 new_dataset[key].data.push(commit_data);
558 new_dataset[key].data.push(commit_data);
559 }
559 }
560 }
560 }
561 if (new_dataset[key] !== undefined){
561 if (new_dataset[key] !== undefined){
562 data.push(new_dataset[key]);
562 data.push(new_dataset[key]);
563 }
563 }
564 }
564 }
565
565
566 if (data.length > 0){
566 if (data.length > 0){
567 return data;
567 return data;
568 }
568 }
569 else{
569 else{
570 //just return dummy data for graph to plot itself
570 //just return dummy data for graph to plot itself
571 return [getDummyData('')];
571 return [getDummyData('')];
572 }
572 }
573 }
573 }
574
574
575 /**
575 /**
576 * redraw using new checkbox data
576 * redraw using new checkbox data
577 */
577 */
578 function plotchoiced(e,args){
578 function plotchoiced(e,args){
579 var cur_data = args[0];
579 var cur_data = args[0];
580 var cur_ranges = args[1];
580 var cur_ranges = args[1];
581
581
582 var new_data = [];
582 var new_data = [];
583 var inputs = choiceContainer.getElementsByTagName("input");
583 var inputs = choiceContainer.getElementsByTagName("input");
584
584
585 //show only checked labels
585 //show only checked labels
586 for(var i=0; i<inputs.length; i++) {
586 for(var i=0; i<inputs.length; i++) {
587 var checkbox_key = inputs[i].name;
587 var checkbox_key = inputs[i].name;
588
588
589 if(inputs[i].checked){
589 if(inputs[i].checked){
590 for(var d in cur_data){
590 for(var d in cur_data){
591 if(cur_data[d].label == checkbox_key){
591 if(cur_data[d].label == checkbox_key){
592 new_data.push(cur_data[d]);
592 new_data.push(cur_data[d]);
593 }
593 }
594 }
594 }
595 }
595 }
596 else{
596 else{
597 //push dummy data to not hide the label
597 //push dummy data to not hide the label
598 new_data.push(getDummyData(checkbox_key));
598 new_data.push(getDummyData(checkbox_key));
599 }
599 }
600 }
600 }
601
601
602 var new_options = YAHOO.lang.merge(plot_options, {
602 var new_options = YAHOO.lang.merge(plot_options, {
603 xaxis: {
603 xaxis: {
604 min: cur_ranges.xaxis.from,
604 min: cur_ranges.xaxis.from,
605 max: cur_ranges.xaxis.to,
605 max: cur_ranges.xaxis.to,
606 mode:"time",
606 mode:"time",
607 timeformat: "%d/%m",
607 timeformat: "%d/%m",
608 },
608 },
609 });
609 });
610 if (!new_data){
610 if (!new_data){
611 new_data = [[0,1]];
611 new_data = [[0,1]];
612 }
612 }
613 // do the zooming
613 // do the zooming
614 plot = YAHOO.widget.Flot(plotContainer, new_data, new_options);
614 plot = YAHOO.widget.Flot(plotContainer, new_data, new_options);
615
615
616 plot.subscribe("plotselected", plotselected);
616 plot.subscribe("plotselected", plotselected);
617
617
618 //resubscribe plothover
618 //resubscribe plothover
619 plot.subscribe("plothover", plothover);
619 plot.subscribe("plothover", plothover);
620
620
621 // don't fire event on the overview to prevent eternal loop
621 // don't fire event on the overview to prevent eternal loop
622 overview.setSelection(cur_ranges, true);
622 overview.setSelection(cur_ranges, true);
623
623
624 }
624 }
625
625
626 /**
626 /**
627 * plot only selected items from overview
627 * plot only selected items from overview
628 * @param ranges
628 * @param ranges
629 * @returns
629 * @returns
630 */
630 */
631 function plotselected(ranges,cur_data) {
631 function plotselected(ranges,cur_data) {
632 //updates the data for new plot
632 //updates the data for new plot
633 var data = getDataAccordingToRanges(ranges);
633 var data = getDataAccordingToRanges(ranges);
634 generateCheckboxes(data);
634 generateCheckboxes(data);
635
635
636 var new_options = YAHOO.lang.merge(plot_options, {
636 var new_options = YAHOO.lang.merge(plot_options, {
637 xaxis: {
637 xaxis: {
638 min: ranges.xaxis.from,
638 min: ranges.xaxis.from,
639 max: ranges.xaxis.to,
639 max: ranges.xaxis.to,
640 mode:"time",
640 mode:"time",
641 timeformat: "%d/%m",
641 timeformat: "%d/%m",
642 },
642 },
643 });
643 });
644 // do the zooming
644 // do the zooming
645 plot = YAHOO.widget.Flot(plotContainer, data, new_options);
645 plot = YAHOO.widget.Flot(plotContainer, data, new_options);
646
646
647 plot.subscribe("plotselected", plotselected);
647 plot.subscribe("plotselected", plotselected);
648
648
649 //resubscribe plothover
649 //resubscribe plothover
650 plot.subscribe("plothover", plothover);
650 plot.subscribe("plothover", plothover);
651
651
652 // don't fire event on the overview to prevent eternal loop
652 // don't fire event on the overview to prevent eternal loop
653 overview.setSelection(ranges, true);
653 overview.setSelection(ranges, true);
654
654
655 //resubscribe choiced
655 //resubscribe choiced
656 YUE.on(choiceContainer.getElementsByTagName("input"), "click", plotchoiced, [data, ranges]);
656 YUE.on(choiceContainer.getElementsByTagName("input"), "click", plotchoiced, [data, ranges]);
657 }
657 }
658
658
659 var previousPoint = null;
659 var previousPoint = null;
660
660
661 function plothover(o) {
661 function plothover(o) {
662 var pos = o.pos;
662 var pos = o.pos;
663 var item = o.item;
663 var item = o.item;
664
664
665 //YUD.get("x").innerHTML = pos.x.toFixed(2);
665 //YUD.get("x").innerHTML = pos.x.toFixed(2);
666 //YUD.get("y").innerHTML = pos.y.toFixed(2);
666 //YUD.get("y").innerHTML = pos.y.toFixed(2);
667 if (item) {
667 if (item) {
668 if (previousPoint != item.datapoint) {
668 if (previousPoint != item.datapoint) {
669 previousPoint = item.datapoint;
669 previousPoint = item.datapoint;
670
670
671 var tooltip = YUD.get("tooltip");
671 var tooltip = YUD.get("tooltip");
672 if(tooltip) {
672 if(tooltip) {
673 tooltip.parentNode.removeChild(tooltip);
673 tooltip.parentNode.removeChild(tooltip);
674 }
674 }
675 var x = item.datapoint.x.toFixed(2);
675 var x = item.datapoint.x.toFixed(2);
676 var y = item.datapoint.y.toFixed(2);
676 var y = item.datapoint.y.toFixed(2);
677
677
678 if (!item.series.label){
678 if (!item.series.label){
679 item.series.label = 'commits';
679 item.series.label = 'commits';
680 }
680 }
681 var d = new Date(x*1000);
681 var d = new Date(x*1000);
682 var fd = d.toDateString()
682 var fd = d.toDateString()
683 var nr_commits = parseInt(y);
683 var nr_commits = parseInt(y);
684
684
685 var cur_data = dataset[item.series.label].data[item.dataIndex];
685 var cur_data = dataset[item.series.label].data[item.dataIndex];
686 var added = cur_data.added;
686 var added = cur_data.added;
687 var changed = cur_data.changed;
687 var changed = cur_data.changed;
688 var removed = cur_data.removed;
688 var removed = cur_data.removed;
689
689
690 var nr_commits_suffix = " ${_('commits')} ";
690 var nr_commits_suffix = " ${_('commits')} ";
691 var added_suffix = " ${_('files added')} ";
691 var added_suffix = " ${_('files added')} ";
692 var changed_suffix = " ${_('files changed')} ";
692 var changed_suffix = " ${_('files changed')} ";
693 var removed_suffix = " ${_('files removed')} ";
693 var removed_suffix = " ${_('files removed')} ";
694
694
695 if(nr_commits == 1){nr_commits_suffix = " ${_('commit')} ";}
695 if(nr_commits == 1){nr_commits_suffix = " ${_('commit')} ";}
696 if(added==1){added_suffix=" ${_('file added')} ";}
696 if(added==1){added_suffix=" ${_('file added')} ";}
697 if(changed==1){changed_suffix=" ${_('file changed')} ";}
697 if(changed==1){changed_suffix=" ${_('file changed')} ";}
698 if(removed==1){removed_suffix=" ${_('file removed')} ";}
698 if(removed==1){removed_suffix=" ${_('file removed')} ";}
699
699
700 showTooltip(item.pageX, item.pageY, item.series.label + " on " + fd
700 showTooltip(item.pageX, item.pageY, item.series.label + " on " + fd
701 +'<br/>'+
701 +'<br/>'+
702 nr_commits + nr_commits_suffix+'<br/>'+
702 nr_commits + nr_commits_suffix+'<br/>'+
703 added + added_suffix +'<br/>'+
703 added + added_suffix +'<br/>'+
704 changed + changed_suffix + '<br/>'+
704 changed + changed_suffix + '<br/>'+
705 removed + removed_suffix + '<br/>');
705 removed + removed_suffix + '<br/>');
706 }
706 }
707 }
707 }
708 else {
708 else {
709 var tooltip = YUD.get("tooltip");
709 var tooltip = YUD.get("tooltip");
710
710
711 if(tooltip) {
711 if(tooltip) {
712 tooltip.parentNode.removeChild(tooltip);
712 tooltip.parentNode.removeChild(tooltip);
713 }
713 }
714 previousPoint = null;
714 previousPoint = null;
715 }
715 }
716 }
716 }
717
717
718 /**
718 /**
719 * MAIN EXECUTION
719 * MAIN EXECUTION
720 */
720 */
721
721
722 var data = getDataAccordingToRanges(initial_ranges);
722 var data = getDataAccordingToRanges(initial_ranges);
723 generateCheckboxes(data);
723 generateCheckboxes(data);
724
724
725 //main plot
725 //main plot
726 var plot = YAHOO.widget.Flot(plotContainer,data,plot_options);
726 var plot = YAHOO.widget.Flot(plotContainer,data,plot_options);
727
727
728 //overview
728 //overview
729 var overview = YAHOO.widget.Flot(overviewContainer,
729 var overview = YAHOO.widget.Flot(overviewContainer,
730 overview_dataset, overview_options);
730 overview_dataset, overview_options);
731
731
732 //show initial selection on overview
732 //show initial selection on overview
733 overview.setSelection(initial_ranges);
733 overview.setSelection(initial_ranges);
734
734
735 plot.subscribe("plotselected", plotselected);
735 plot.subscribe("plotselected", plotselected);
736 plot.subscribe("plothover", plothover)
736 plot.subscribe("plothover", plothover)
737
737
738 overview.subscribe("plotselected", function (ranges) {
738 overview.subscribe("plotselected", function (ranges) {
739 plot.setSelection(ranges);
739 plot.setSelection(ranges);
740 });
740 });
741
741
742 // user choices on overview
742 // user choices on overview
743 YUE.on(choiceContainer.getElementsByTagName("input"), "click", plotchoiced, [data, initial_ranges]);
743 YUE.on(choiceContainer.getElementsByTagName("input"), "click", plotchoiced, [data, initial_ranges]);
744 }
744 }
745 SummaryPlot(${c.ts_min},${c.ts_max},${c.commit_data|n},${c.overview_data|n});
745 SummaryPlot(${c.ts_min},${c.ts_max},${c.commit_data|n},${c.overview_data|n});
746 </script>
746 </script>
747 %endif
747 %endif
748
748
749 </%def>
749 </%def>
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now