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