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