##// END OF EJS Templates
fixes for 1.2.1 release
marcink -
r1535:0b8fba8a rhodecode-0.0.1.2.1 default
parent child Browse files
Show More
@@ -1,339 +1,354
1 .. _changelog:
1 .. _changelog:
2
2
3 Changelog
3 Changelog
4 =========
4 =========
5
5
6 1.2.1 (**2011-10-08**)
7 ======================
8
9 news
10 ----
11
12
13 fixes
14 -----
15
16 - fixed problems with basic auth and push problems
17 - gui fixes
18 - fixed logger
19
20
6 1.2.0 (**2011-10-07**)
21 1.2.0 (**2011-10-07**)
7 ======================
22 ======================
8
23
9
24
10 news
25 news
11 ----
26 ----
12
27
13 - implemented #47 repository groups
28 - implemented #47 repository groups
14 - implemented #89 Can setup google analytics code from settings menu
29 - implemented #89 Can setup google analytics code from settings menu
15 - implemented #91 added nicer looking archive urls with more download options
30 - implemented #91 added nicer looking archive urls with more download options
16 like tags, branches
31 like tags, branches
17 - implemented #44 into file browsing, and added follow branch option
32 - implemented #44 into file browsing, and added follow branch option
18 - implemented #84 downloads can be enabled/disabled for each repository
33 - implemented #84 downloads can be enabled/disabled for each repository
19 - anonymous repository can be cloned without having to pass default:default
34 - anonymous repository can be cloned without having to pass default:default
20 into clone url
35 into clone url
21 - fixed #90 whoosh indexer can index chooses repositories passed in command
36 - fixed #90 whoosh indexer can index chooses repositories passed in command
22 line
37 line
23 - extended journal with day aggregates and paging
38 - extended journal with day aggregates and paging
24 - implemented #107 source code lines highlight ranges
39 - implemented #107 source code lines highlight ranges
25 - implemented #93 customizable changelog on combined revision ranges -
40 - implemented #93 customizable changelog on combined revision ranges -
26 equivalent of githubs compare view
41 equivalent of githubs compare view
27 - implemented #108 extended and more powerful LDAP configuration
42 - implemented #108 extended and more powerful LDAP configuration
28 - implemented #56 users groups
43 - implemented #56 users groups
29 - major code rewrites optimized codes for speed and memory usage
44 - major code rewrites optimized codes for speed and memory usage
30 - raw and diff downloads are now in git format
45 - raw and diff downloads are now in git format
31 - setup command checks for write access to given path
46 - setup command checks for write access to given path
32 - fixed many issues with international characters and unicode. It uses utf8
47 - fixed many issues with international characters and unicode. It uses utf8
33 decode with replace to provide less errors even with non utf8 encoded strings
48 decode with replace to provide less errors even with non utf8 encoded strings
34 - #125 added API KEY access to feeds
49 - #125 added API KEY access to feeds
35 - #109 Repository can be created from external Mercurial link (aka. remote
50 - #109 Repository can be created from external Mercurial link (aka. remote
36 repository, and manually updated (via pull) from admin panel
51 repository, and manually updated (via pull) from admin panel
37 - beta git support - push/pull server + basic view for git repos
52 - beta git support - push/pull server + basic view for git repos
38 - added followers page and forks page
53 - added followers page and forks page
39 - server side file creation (with binary file upload interface)
54 - server side file creation (with binary file upload interface)
40 and edition with commits powered by codemirror
55 and edition with commits powered by codemirror
41 - #111 file browser file finder, quick lookup files on whole file tree
56 - #111 file browser file finder, quick lookup files on whole file tree
42 - added quick login sliding menu into main page
57 - added quick login sliding menu into main page
43 - changelog uses lazy loading of affected files details, in some scenarios
58 - changelog uses lazy loading of affected files details, in some scenarios
44 this can improve speed of changelog page dramatically especially for
59 this can improve speed of changelog page dramatically especially for
45 larger repositories.
60 larger repositories.
46 - implements #214 added support for downloading subrepos in download menu.
61 - implements #214 added support for downloading subrepos in download menu.
47 - Added basic API for direct operations on rhodecode via JSON
62 - Added basic API for direct operations on rhodecode via JSON
48 - Implemented advanced hook management
63 - Implemented advanced hook management
49
64
50 fixes
65 fixes
51 -----
66 -----
52
67
53 - fixed file browser bug, when switching into given form revision the url was
68 - fixed file browser bug, when switching into given form revision the url was
54 not changing
69 not changing
55 - fixed propagation to error controller on simplehg and simplegit middlewares
70 - fixed propagation to error controller on simplehg and simplegit middlewares
56 - fixed error when trying to make a download on empty repository
71 - fixed error when trying to make a download on empty repository
57 - fixed problem with '[' chars in commit messages in journal
72 - fixed problem with '[' chars in commit messages in journal
58 - fixed #99 Unicode errors, on file node paths with non utf-8 characters
73 - fixed #99 Unicode errors, on file node paths with non utf-8 characters
59 - journal fork fixes
74 - journal fork fixes
60 - removed issue with space inside renamed repository after deletion
75 - removed issue with space inside renamed repository after deletion
61 - fixed strange issue on formencode imports
76 - fixed strange issue on formencode imports
62 - fixed #126 Deleting repository on Windows, rename used incompatible chars.
77 - fixed #126 Deleting repository on Windows, rename used incompatible chars.
63 - #150 fixes for errors on repositories mapped in db but corrupted in
78 - #150 fixes for errors on repositories mapped in db but corrupted in
64 filesystem
79 filesystem
65 - fixed problem with ascendant characters in realm #181
80 - fixed problem with ascendant characters in realm #181
66 - fixed problem with sqlite file based database connection pool
81 - fixed problem with sqlite file based database connection pool
67 - whoosh indexer and code stats share the same dynamic extensions map
82 - whoosh indexer and code stats share the same dynamic extensions map
68 - fixes #188 - relationship delete of repo_to_perm entry on user removal
83 - fixes #188 - relationship delete of repo_to_perm entry on user removal
69 - fixes issue #189 Trending source files shows "show more" when no more exist
84 - fixes issue #189 Trending source files shows "show more" when no more exist
70 - fixes issue #197 Relative paths for pidlocks
85 - fixes issue #197 Relative paths for pidlocks
71 - fixes issue #198 password will require only 3 chars now for login form
86 - fixes issue #198 password will require only 3 chars now for login form
72 - fixes issue #199 wrong redirection for non admin users after creating a repository
87 - fixes issue #199 wrong redirection for non admin users after creating a repository
73 - fixes issues #202, bad db constraint made impossible to attach same group
88 - fixes issues #202, bad db constraint made impossible to attach same group
74 more than one time. Affects only mysql/postgres
89 more than one time. Affects only mysql/postgres
75 - fixes #218 os.kill patch for windows was missing sig param
90 - fixes #218 os.kill patch for windows was missing sig param
76 - improved rendering of dag (they are not trimmed anymore when number of
91 - improved rendering of dag (they are not trimmed anymore when number of
77 heads exceeds 5)
92 heads exceeds 5)
78
93
79 1.1.8 (**2011-04-12**)
94 1.1.8 (**2011-04-12**)
80 ======================
95 ======================
81
96
82 news
97 news
83 ----
98 ----
84
99
85 - improved windows support
100 - improved windows support
86
101
87 fixes
102 fixes
88 -----
103 -----
89
104
90 - fixed #140 freeze of python dateutil library, since new version is python2.x
105 - fixed #140 freeze of python dateutil library, since new version is python2.x
91 incompatible
106 incompatible
92 - setup-app will check for write permission in given path
107 - setup-app will check for write permission in given path
93 - cleaned up license info issue #149
108 - cleaned up license info issue #149
94 - fixes for issues #137,#116 and problems with unicode and accented characters.
109 - fixes for issues #137,#116 and problems with unicode and accented characters.
95 - fixes crashes on gravatar, when passed in email as unicode
110 - fixes crashes on gravatar, when passed in email as unicode
96 - fixed tooltip flickering problems
111 - fixed tooltip flickering problems
97 - fixed came_from redirection on windows
112 - fixed came_from redirection on windows
98 - fixed logging modules, and sql formatters
113 - fixed logging modules, and sql formatters
99 - windows fixes for os.kill issue #133
114 - windows fixes for os.kill issue #133
100 - fixes path splitting for windows issues #148
115 - fixes path splitting for windows issues #148
101 - fixed issue #143 wrong import on migration to 1.1.X
116 - fixed issue #143 wrong import on migration to 1.1.X
102 - fixed problems with displaying binary files, thanks to Thomas Waldmann
117 - fixed problems with displaying binary files, thanks to Thomas Waldmann
103 - removed name from archive files since it's breaking ui for long repo names
118 - removed name from archive files since it's breaking ui for long repo names
104 - fixed issue with archive headers sent to browser, thanks to Thomas Waldmann
119 - fixed issue with archive headers sent to browser, thanks to Thomas Waldmann
105 - fixed compatibility for 1024px displays, and larger dpi settings, thanks to
120 - fixed compatibility for 1024px displays, and larger dpi settings, thanks to
106 Thomas Waldmann
121 Thomas Waldmann
107 - fixed issue #166 summary pager was skipping 10 revisions on second page
122 - fixed issue #166 summary pager was skipping 10 revisions on second page
108
123
109
124
110 1.1.7 (**2011-03-23**)
125 1.1.7 (**2011-03-23**)
111 ======================
126 ======================
112
127
113 news
128 news
114 ----
129 ----
115
130
116 fixes
131 fixes
117 -----
132 -----
118
133
119 - fixed (again) #136 installation support for FreeBSD
134 - fixed (again) #136 installation support for FreeBSD
120
135
121
136
122 1.1.6 (**2011-03-21**)
137 1.1.6 (**2011-03-21**)
123 ======================
138 ======================
124
139
125 news
140 news
126 ----
141 ----
127
142
128 fixes
143 fixes
129 -----
144 -----
130
145
131 - fixed #136 installation support for FreeBSD
146 - fixed #136 installation support for FreeBSD
132 - RhodeCode will check for python version during installation
147 - RhodeCode will check for python version during installation
133
148
134 1.1.5 (**2011-03-17**)
149 1.1.5 (**2011-03-17**)
135 ======================
150 ======================
136
151
137 news
152 news
138 ----
153 ----
139
154
140 - basic windows support, by exchanging pybcrypt into sha256 for windows only
155 - basic windows support, by exchanging pybcrypt into sha256 for windows only
141 highly inspired by idea of mantis406
156 highly inspired by idea of mantis406
142
157
143 fixes
158 fixes
144 -----
159 -----
145
160
146 - fixed sorting by author in main page
161 - fixed sorting by author in main page
147 - fixed crashes with diffs on binary files
162 - fixed crashes with diffs on binary files
148 - fixed #131 problem with boolean values for LDAP
163 - fixed #131 problem with boolean values for LDAP
149 - fixed #122 mysql problems thanks to striker69
164 - fixed #122 mysql problems thanks to striker69
150 - fixed problem with errors on calling raw/raw_files/annotate functions
165 - fixed problem with errors on calling raw/raw_files/annotate functions
151 with unknown revisions
166 with unknown revisions
152 - fixed returned rawfiles attachment names with international character
167 - fixed returned rawfiles attachment names with international character
153 - cleaned out docs, big thanks to Jason Harris
168 - cleaned out docs, big thanks to Jason Harris
154
169
155 1.1.4 (**2011-02-19**)
170 1.1.4 (**2011-02-19**)
156 ======================
171 ======================
157
172
158 news
173 news
159 ----
174 ----
160
175
161 fixes
176 fixes
162 -----
177 -----
163
178
164 - fixed formencode import problem on settings page, that caused server crash
179 - fixed formencode import problem on settings page, that caused server crash
165 when that page was accessed as first after server start
180 when that page was accessed as first after server start
166 - journal fixes
181 - journal fixes
167 - fixed option to access repository just by entering http://server/<repo_name>
182 - fixed option to access repository just by entering http://server/<repo_name>
168
183
169 1.1.3 (**2011-02-16**)
184 1.1.3 (**2011-02-16**)
170 ======================
185 ======================
171
186
172 news
187 news
173 ----
188 ----
174
189
175 - implemented #102 allowing the '.' character in username
190 - implemented #102 allowing the '.' character in username
176 - added option to access repository just by entering http://server/<repo_name>
191 - added option to access repository just by entering http://server/<repo_name>
177 - celery task ignores result for better performance
192 - celery task ignores result for better performance
178
193
179 fixes
194 fixes
180 -----
195 -----
181
196
182 - fixed ehlo command and non auth mail servers on smtp_lib. Thanks to
197 - fixed ehlo command and non auth mail servers on smtp_lib. Thanks to
183 apollo13 and Johan Walles
198 apollo13 and Johan Walles
184 - small fixes in journal
199 - small fixes in journal
185 - fixed problems with getting setting for celery from .ini files
200 - fixed problems with getting setting for celery from .ini files
186 - registration, password reset and login boxes share the same title as main
201 - registration, password reset and login boxes share the same title as main
187 application now
202 application now
188 - fixed #113: to high permissions to fork repository
203 - fixed #113: to high permissions to fork repository
189 - fixed problem with '[' chars in commit messages in journal
204 - fixed problem with '[' chars in commit messages in journal
190 - removed issue with space inside renamed repository after deletion
205 - removed issue with space inside renamed repository after deletion
191 - db transaction fixes when filesystem repository creation failed
206 - db transaction fixes when filesystem repository creation failed
192 - fixed #106 relation issues on databases different than sqlite
207 - fixed #106 relation issues on databases different than sqlite
193 - fixed static files paths links to use of url() method
208 - fixed static files paths links to use of url() method
194
209
195 1.1.2 (**2011-01-12**)
210 1.1.2 (**2011-01-12**)
196 ======================
211 ======================
197
212
198 news
213 news
199 ----
214 ----
200
215
201
216
202 fixes
217 fixes
203 -----
218 -----
204
219
205 - fixes #98 protection against float division of percentage stats
220 - fixes #98 protection against float division of percentage stats
206 - fixed graph bug
221 - fixed graph bug
207 - forced webhelpers version since it was making troubles during installation
222 - forced webhelpers version since it was making troubles during installation
208
223
209 1.1.1 (**2011-01-06**)
224 1.1.1 (**2011-01-06**)
210 ======================
225 ======================
211
226
212 news
227 news
213 ----
228 ----
214
229
215 - added force https option into ini files for easier https usage (no need to
230 - added force https option into ini files for easier https usage (no need to
216 set server headers with this options)
231 set server headers with this options)
217 - small css updates
232 - small css updates
218
233
219 fixes
234 fixes
220 -----
235 -----
221
236
222 - fixed #96 redirect loop on files view on repositories without changesets
237 - fixed #96 redirect loop on files view on repositories without changesets
223 - fixed #97 unicode string passed into server header in special cases (mod_wsgi)
238 - fixed #97 unicode string passed into server header in special cases (mod_wsgi)
224 and server crashed with errors
239 and server crashed with errors
225 - fixed large tooltips problems on main page
240 - fixed large tooltips problems on main page
226 - fixed #92 whoosh indexer is more error proof
241 - fixed #92 whoosh indexer is more error proof
227
242
228 1.1.0 (**2010-12-18**)
243 1.1.0 (**2010-12-18**)
229 ======================
244 ======================
230
245
231 news
246 news
232 ----
247 ----
233
248
234 - rewrite of internals for vcs >=0.1.10
249 - rewrite of internals for vcs >=0.1.10
235 - uses mercurial 1.7 with dotencode disabled for maintaining compatibility
250 - uses mercurial 1.7 with dotencode disabled for maintaining compatibility
236 with older clients
251 with older clients
237 - anonymous access, authentication via ldap
252 - anonymous access, authentication via ldap
238 - performance upgrade for cached repos list - each repository has it's own
253 - performance upgrade for cached repos list - each repository has it's own
239 cache that's invalidated when needed.
254 cache that's invalidated when needed.
240 - performance upgrades on repositories with large amount of commits (20K+)
255 - performance upgrades on repositories with large amount of commits (20K+)
241 - main page quick filter for filtering repositories
256 - main page quick filter for filtering repositories
242 - user dashboards with ability to follow chosen repositories actions
257 - user dashboards with ability to follow chosen repositories actions
243 - sends email to admin on new user registration
258 - sends email to admin on new user registration
244 - added cache/statistics reset options into repository settings
259 - added cache/statistics reset options into repository settings
245 - more detailed action logger (based on hooks) with pushed changesets lists
260 - more detailed action logger (based on hooks) with pushed changesets lists
246 and options to disable those hooks from admin panel
261 and options to disable those hooks from admin panel
247 - introduced new enhanced changelog for merges that shows more accurate results
262 - introduced new enhanced changelog for merges that shows more accurate results
248 - new improved and faster code stats (based on pygments lexers mapping tables,
263 - new improved and faster code stats (based on pygments lexers mapping tables,
249 showing up to 10 trending sources for each repository. Additionally stats
264 showing up to 10 trending sources for each repository. Additionally stats
250 can be disabled in repository settings.
265 can be disabled in repository settings.
251 - gui optimizations, fixed application width to 1024px
266 - gui optimizations, fixed application width to 1024px
252 - added cut off (for large files/changesets) limit into config files
267 - added cut off (for large files/changesets) limit into config files
253 - whoosh, celeryd, upgrade moved to paster command
268 - whoosh, celeryd, upgrade moved to paster command
254 - other than sqlite database backends can be used
269 - other than sqlite database backends can be used
255
270
256 fixes
271 fixes
257 -----
272 -----
258
273
259 - fixes #61 forked repo was showing only after cache expired
274 - fixes #61 forked repo was showing only after cache expired
260 - fixes #76 no confirmation on user deletes
275 - fixes #76 no confirmation on user deletes
261 - fixes #66 Name field misspelled
276 - fixes #66 Name field misspelled
262 - fixes #72 block user removal when he owns repositories
277 - fixes #72 block user removal when he owns repositories
263 - fixes #69 added password confirmation fields
278 - fixes #69 added password confirmation fields
264 - fixes #87 RhodeCode crashes occasionally on updating repository owner
279 - fixes #87 RhodeCode crashes occasionally on updating repository owner
265 - fixes #82 broken annotations on files with more than 1 blank line at the end
280 - fixes #82 broken annotations on files with more than 1 blank line at the end
266 - a lot of fixes and tweaks for file browser
281 - a lot of fixes and tweaks for file browser
267 - fixed detached session issues
282 - fixed detached session issues
268 - fixed when user had no repos he would see all repos listed in my account
283 - fixed when user had no repos he would see all repos listed in my account
269 - fixed ui() instance bug when global hgrc settings was loaded for server
284 - fixed ui() instance bug when global hgrc settings was loaded for server
270 instance and all hgrc options were merged with our db ui() object
285 instance and all hgrc options were merged with our db ui() object
271 - numerous small bugfixes
286 - numerous small bugfixes
272
287
273 (special thanks for TkSoh for detailed feedback)
288 (special thanks for TkSoh for detailed feedback)
274
289
275
290
276 1.0.2 (**2010-11-12**)
291 1.0.2 (**2010-11-12**)
277 ======================
292 ======================
278
293
279 news
294 news
280 ----
295 ----
281
296
282 - tested under python2.7
297 - tested under python2.7
283 - bumped sqlalchemy and celery versions
298 - bumped sqlalchemy and celery versions
284
299
285 fixes
300 fixes
286 -----
301 -----
287
302
288 - fixed #59 missing graph.js
303 - fixed #59 missing graph.js
289 - fixed repo_size crash when repository had broken symlinks
304 - fixed repo_size crash when repository had broken symlinks
290 - fixed python2.5 crashes.
305 - fixed python2.5 crashes.
291
306
292
307
293 1.0.1 (**2010-11-10**)
308 1.0.1 (**2010-11-10**)
294 ======================
309 ======================
295
310
296 news
311 news
297 ----
312 ----
298
313
299 - small css updated
314 - small css updated
300
315
301 fixes
316 fixes
302 -----
317 -----
303
318
304 - fixed #53 python2.5 incompatible enumerate calls
319 - fixed #53 python2.5 incompatible enumerate calls
305 - fixed #52 disable mercurial extension for web
320 - fixed #52 disable mercurial extension for web
306 - fixed #51 deleting repositories don't delete it's dependent objects
321 - fixed #51 deleting repositories don't delete it's dependent objects
307
322
308
323
309 1.0.0 (**2010-11-02**)
324 1.0.0 (**2010-11-02**)
310 ======================
325 ======================
311
326
312 - security bugfix simplehg wasn't checking for permissions on commands
327 - security bugfix simplehg wasn't checking for permissions on commands
313 other than pull or push.
328 other than pull or push.
314 - fixed doubled messages after push or pull in admin journal
329 - fixed doubled messages after push or pull in admin journal
315 - templating and css corrections, fixed repo switcher on chrome, updated titles
330 - templating and css corrections, fixed repo switcher on chrome, updated titles
316 - admin menu accessible from options menu on repository view
331 - admin menu accessible from options menu on repository view
317 - permissions cached queries
332 - permissions cached queries
318
333
319 1.0.0rc4 (**2010-10-12**)
334 1.0.0rc4 (**2010-10-12**)
320 ==========================
335 ==========================
321
336
322 - fixed python2.5 missing simplejson imports (thanks to Jens BΓ€ckman)
337 - fixed python2.5 missing simplejson imports (thanks to Jens BΓ€ckman)
323 - removed cache_manager settings from sqlalchemy meta
338 - removed cache_manager settings from sqlalchemy meta
324 - added sqlalchemy cache settings to ini files
339 - added sqlalchemy cache settings to ini files
325 - validated password length and added second try of failure on paster setup-app
340 - validated password length and added second try of failure on paster setup-app
326 - fixed setup database destroy prompt even when there was no db
341 - fixed setup database destroy prompt even when there was no db
327
342
328
343
329 1.0.0rc3 (**2010-10-11**)
344 1.0.0rc3 (**2010-10-11**)
330 =========================
345 =========================
331
346
332 - fixed i18n during installation.
347 - fixed i18n during installation.
333
348
334 1.0.0rc2 (**2010-10-11**)
349 1.0.0rc2 (**2010-10-11**)
335 =========================
350 =========================
336
351
337 - Disabled dirsize in file browser, it's causing nasty bug when dir renames
352 - Disabled dirsize in file browser, it's causing nasty bug when dir renames
338 occure. After vcs is fixed it'll be put back again.
353 occure. After vcs is fixed it'll be put back again.
339 - templating/css rewrites, optimized css. No newline at end of file
354 - templating/css rewrites, optimized css.
@@ -1,56 +1,56
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.__init__
3 rhodecode.__init__
4 ~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~
5
5
6 RhodeCode, a web based repository management based on pylons
6 RhodeCode, a web based repository management based on pylons
7 versioning implementation: http://semver.org/
7 versioning implementation: http://semver.org/
8
8
9 :created_on: Apr 9, 2010
9 :created_on: Apr 9, 2010
10 :author: marcink
10 :author: marcink
11 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
11 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
12 :license: GPLv3, see COPYING for more details.
12 :license: GPLv3, see COPYING for more details.
13 """
13 """
14 # This program is free software: you can redistribute it and/or modify
14 # This program is free software: you can redistribute it and/or modify
15 # it under the terms of the GNU General Public License as published by
15 # it under the terms of the GNU General Public License as published by
16 # the Free Software Foundation, either version 3 of the License, or
16 # the Free Software Foundation, either version 3 of the License, or
17 # (at your option) any later version.
17 # (at your option) any later version.
18 #
18 #
19 # This program is distributed in the hope that it will be useful,
19 # This program is distributed in the hope that it will be useful,
20 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # but WITHOUT ANY WARRANTY; without even the implied warranty of
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 # GNU General Public License for more details.
22 # GNU General Public License for more details.
23 #
23 #
24 # You should have received a copy of the GNU General Public License
24 # You should have received a copy of the GNU General Public License
25 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25 # along with this program. If not, see <http://www.gnu.org/licenses/>.
26 import platform
26 import platform
27
27
28 VERSION = (1, 2, 0)
28 VERSION = (1, 2, 1)
29 __version__ = '.'.join((str(each) for each in VERSION[:4]))
29 __version__ = '.'.join((str(each) for each in VERSION[:4]))
30 __dbversion__ = 3 #defines current db version for migrations
30 __dbversion__ = 3 #defines current db version for migrations
31 __platform__ = platform.system()
31 __platform__ = platform.system()
32 __license__ = 'GPLv3'
32 __license__ = 'GPLv3'
33
33
34 PLATFORM_WIN = ('Windows')
34 PLATFORM_WIN = ('Windows')
35 PLATFORM_OTHERS = ('Linux', 'Darwin', 'FreeBSD', 'OpenBSD', 'SunOS')
35 PLATFORM_OTHERS = ('Linux', 'Darwin', 'FreeBSD', 'OpenBSD', 'SunOS')
36
36
37 try:
37 try:
38 from rhodecode.lib.utils import get_current_revision
38 from rhodecode.lib.utils import get_current_revision
39 _rev = get_current_revision()
39 _rev = get_current_revision()
40 except ImportError:
40 except ImportError:
41 #this is needed when doing some setup.py operations
41 #this is needed when doing some setup.py operations
42 _rev = False
42 _rev = False
43
43
44 if len(VERSION) > 3 and _rev:
44 if len(VERSION) > 3 and _rev:
45 __version__ += ' [rev:%s]' % _rev[0]
45 __version__ += ' [rev:%s]' % _rev[0]
46
46
47
47
48 def get_version():
48 def get_version():
49 """Returns shorter version (digit parts only) as string."""
49 """Returns shorter version (digit parts only) as string."""
50
50
51 return '.'.join((str(each) for each in VERSION[:3]))
51 return '.'.join((str(each) for each in VERSION[:3]))
52
52
53 BACKENDS = {
53 BACKENDS = {
54 'hg': 'Mercurial repository',
54 'hg': 'Mercurial repository',
55 #'git': 'Git repository',
55 #'git': 'Git repository',
56 }
56 }
@@ -1,84 +1,84
1 """Pylons middleware initialization"""
1 """Pylons middleware initialization"""
2
2
3 from beaker.middleware import SessionMiddleware
3 from beaker.middleware import SessionMiddleware
4 from routes.middleware import RoutesMiddleware
4 from routes.middleware import RoutesMiddleware
5 from paste.cascade import Cascade
5 from paste.cascade import Cascade
6 from paste.registry import RegistryManager
6 from paste.registry import RegistryManager
7 from paste.urlparser import StaticURLParser
7 from paste.urlparser import StaticURLParser
8 from paste.deploy.converters import asbool
8 from paste.deploy.converters import asbool
9 from paste.gzipper import make_gzip_middleware
9 from paste.gzipper import make_gzip_middleware
10
10
11 from pylons.middleware import ErrorHandler, StatusCodeRedirect
11 from pylons.middleware import ErrorHandler, StatusCodeRedirect
12 from pylons.wsgiapp import PylonsApp
12 from pylons.wsgiapp import PylonsApp
13
13
14 from rhodecode.lib.middleware.simplehg import SimpleHg
14 from rhodecode.lib.middleware.simplehg import SimpleHg
15 from rhodecode.lib.middleware.simplegit import SimpleGit
15 from rhodecode.lib.middleware.simplegit import SimpleGit
16 from rhodecode.lib.middleware.https_fixup import HttpsFixup
16 from rhodecode.lib.middleware.https_fixup import HttpsFixup
17 from rhodecode.config.environment import load_environment
17 from rhodecode.config.environment import load_environment
18
18
19
19
20 def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
20 def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
21 """Create a Pylons WSGI application and return it
21 """Create a Pylons WSGI application and return it
22
22
23 ``global_conf``
23 ``global_conf``
24 The inherited configuration for this application. Normally from
24 The inherited configuration for this application. Normally from
25 the [DEFAULT] section of the Paste ini file.
25 the [DEFAULT] section of the Paste ini file.
26
26
27 ``full_stack``
27 ``full_stack``
28 Whether or not this application provides a full WSGI stack (by
28 Whether or not this application provides a full WSGI stack (by
29 default, meaning it handles its own exceptions and errors).
29 default, meaning it handles its own exceptions and errors).
30 Disable full_stack when this application is "managed" by
30 Disable full_stack when this application is "managed" by
31 another WSGI middleware.
31 another WSGI middleware.
32
32
33 ``app_conf``
33 ``app_conf``
34 The application's local configuration. Normally specified in
34 The application's local configuration. Normally specified in
35 the [app:<name>] section of the Paste ini file (where <name>
35 the [app:<name>] section of the Paste ini file (where <name>
36 defaults to main).
36 defaults to main).
37
37
38 """
38 """
39 # Configure the Pylons environment
39 # Configure the Pylons environment
40 config = load_environment(global_conf, app_conf)
40 config = load_environment(global_conf, app_conf)
41
41
42 # The Pylons WSGI app
42 # The Pylons WSGI app
43 app = PylonsApp(config=config)
43 app = PylonsApp(config=config)
44
44
45 # Routing/Session/Cache Middleware
45 # Routing/Session/Cache Middleware
46 app = RoutesMiddleware(app, config['routes.map'])
46 app = RoutesMiddleware(app, config['routes.map'])
47 app = SessionMiddleware(app, config)
47 app = SessionMiddleware(app, config)
48
48
49 # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
49 # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
50 if asbool(config['pdebug']):
50 if asbool(config['pdebug']):
51 from rhodecode.lib.profiler import ProfilingMiddleware
51 from rhodecode.lib.profiler import ProfilingMiddleware
52 app = ProfilingMiddleware(app)
52 app = ProfilingMiddleware(app)
53
53
54 # we want our low level middleware to get to the request ASAP. We don't
55 # need any pylons stack middleware in them
56 app = SimpleHg(app, config)
57 app = SimpleGit(app, config)
58
54 if asbool(full_stack):
59 if asbool(full_stack):
55 # Handle Python exceptions
60 # Handle Python exceptions
56 app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
61 app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
57
62
58 # Display error documents for 401, 403, 404 status codes (and
63 # Display error documents for 401, 403, 404 status codes (and
59 # 500 when debug is disabled)
64 # 500 when debug is disabled)
60 if asbool(config['debug']):
65 if asbool(config['debug']):
61 app = StatusCodeRedirect(app)
66 app = StatusCodeRedirect(app)
62 else:
67 else:
63 app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
68 app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
64
69
65 #enable https redirets based on HTTP_X_URL_SCHEME set by proxy
70 #enable https redirets based on HTTP_X_URL_SCHEME set by proxy
66 app = HttpsFixup(app, config)
71 app = HttpsFixup(app, config)
67
72
68 # Establish the Registry for this application
73 # Establish the Registry for this application
69 app = RegistryManager(app)
74 app = RegistryManager(app)
70
75
71 if asbool(static_files):
76 if asbool(static_files):
72 # Serve static files
77 # Serve static files
73 static_app = StaticURLParser(config['pylons.paths']['static_files'])
78 static_app = StaticURLParser(config['pylons.paths']['static_files'])
74 app = Cascade([static_app, app])
79 app = Cascade([static_app, app])
75 app = make_gzip_middleware(app, global_conf, compress_level=1)
80 app = make_gzip_middleware(app, global_conf, compress_level=1)
76
81
77 # we want our low level middleware to get to the request ASAP. We don't
78 # need any pylons stack middleware in them
79 app = SimpleHg(app, config)
80 app = SimpleGit(app, config)
81
82 app.config = config
82 app.config = config
83
83
84 return app
84 return app
@@ -1,611 +1,611
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.lib.utils
3 rhodecode.lib.utils
4 ~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~~
5
5
6 Utilities library for RhodeCode
6 Utilities library 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) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2009-2011 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 os
26 import os
27 import logging
27 import logging
28 import datetime
28 import datetime
29 import traceback
29 import traceback
30 import paste
30 import paste
31 import beaker
31 import beaker
32 from os.path import dirname as dn, join as jn
32 from os.path import dirname as dn, join as jn
33
33
34 from paste.script.command import Command, BadCommand
34 from paste.script.command import Command, BadCommand
35
35
36 from mercurial import ui, config
36 from mercurial import ui, config
37
37
38 from webhelpers.text import collapse, remove_formatting, strip_tags
38 from webhelpers.text import collapse, remove_formatting, strip_tags
39
39
40 from vcs import get_backend
40 from vcs import get_backend
41 from vcs.backends.base import BaseChangeset
41 from vcs.backends.base import BaseChangeset
42 from vcs.utils.lazy import LazyProperty
42 from vcs.utils.lazy import LazyProperty
43 from vcs.utils.helpers import get_scm
43 from vcs.utils.helpers import get_scm
44 from vcs.exceptions import VCSError
44 from vcs.exceptions import VCSError
45
45
46 from rhodecode.model import meta
46 from rhodecode.model import meta
47 from rhodecode.model.caching_query import FromCache
47 from rhodecode.model.caching_query import FromCache
48 from rhodecode.model.db import Repository, User, RhodeCodeUi, UserLog, Group, \
48 from rhodecode.model.db import Repository, User, RhodeCodeUi, UserLog, Group, \
49 RhodeCodeSettings
49 RhodeCodeSettings
50 from rhodecode.model.repo import RepoModel
50 from rhodecode.model.repo import RepoModel
51
51
52 log = logging.getLogger(__name__)
52 log = logging.getLogger(__name__)
53
53
54
54
55 def recursive_replace(str, replace=' '):
55 def recursive_replace(str, replace=' '):
56 """Recursive replace of given sign to just one instance
56 """Recursive replace of given sign to just one instance
57
57
58 :param str: given string
58 :param str: given string
59 :param replace: char to find and replace multiple instances
59 :param replace: char to find and replace multiple instances
60
60
61 Examples::
61 Examples::
62 >>> recursive_replace("Mighty---Mighty-Bo--sstones",'-')
62 >>> recursive_replace("Mighty---Mighty-Bo--sstones",'-')
63 'Mighty-Mighty-Bo-sstones'
63 'Mighty-Mighty-Bo-sstones'
64 """
64 """
65
65
66 if str.find(replace * 2) == -1:
66 if str.find(replace * 2) == -1:
67 return str
67 return str
68 else:
68 else:
69 str = str.replace(replace * 2, replace)
69 str = str.replace(replace * 2, replace)
70 return recursive_replace(str, replace)
70 return recursive_replace(str, replace)
71
71
72
72
73 def repo_name_slug(value):
73 def repo_name_slug(value):
74 """Return slug of name of repository
74 """Return slug of name of repository
75 This function is called on each creation/modification
75 This function is called on each creation/modification
76 of repository to prevent bad names in repo
76 of repository to prevent bad names in repo
77 """
77 """
78
78
79 slug = remove_formatting(value)
79 slug = remove_formatting(value)
80 slug = strip_tags(slug)
80 slug = strip_tags(slug)
81
81
82 for c in """=[]\;'"<>,/~!@#$%^&*()+{}|: """:
82 for c in """=[]\;'"<>,/~!@#$%^&*()+{}|: """:
83 slug = slug.replace(c, '-')
83 slug = slug.replace(c, '-')
84 slug = recursive_replace(slug, '-')
84 slug = recursive_replace(slug, '-')
85 slug = collapse(slug, '-')
85 slug = collapse(slug, '-')
86 return slug
86 return slug
87
87
88
88
89 def get_repo_slug(request):
89 def get_repo_slug(request):
90 return request.environ['pylons.routes_dict'].get('repo_name')
90 return request.environ['pylons.routes_dict'].get('repo_name')
91
91
92
92
93 def action_logger(user, action, repo, ipaddr='', sa=None):
93 def action_logger(user, action, repo, ipaddr='', sa=None):
94 """
94 """
95 Action logger for various actions made by users
95 Action logger for various actions made by users
96
96
97 :param user: user that made this action, can be a unique username string or
97 :param user: user that made this action, can be a unique username string or
98 object containing user_id attribute
98 object containing user_id attribute
99 :param action: action to log, should be on of predefined unique actions for
99 :param action: action to log, should be on of predefined unique actions for
100 easy translations
100 easy translations
101 :param repo: string name of repository or object containing repo_id,
101 :param repo: string name of repository or object containing repo_id,
102 that action was made on
102 that action was made on
103 :param ipaddr: optional ip address from what the action was made
103 :param ipaddr: optional ip address from what the action was made
104 :param sa: optional sqlalchemy session
104 :param sa: optional sqlalchemy session
105
105
106 """
106 """
107
107
108 if not sa:
108 if not sa:
109 sa = meta.Session()
109 sa = meta.Session()
110
110
111 try:
111 try:
112 if hasattr(user, 'user_id'):
112 if hasattr(user, 'user_id'):
113 user_obj = user
113 user_obj = user
114 elif isinstance(user, basestring):
114 elif isinstance(user, basestring):
115 user_obj = User.by_username(user, cache=False)
115 user_obj = User.by_username(user)
116 else:
116 else:
117 raise Exception('You have to provide user object or username')
117 raise Exception('You have to provide user object or username')
118
118
119 rm = RepoModel()
119 rm = RepoModel()
120 if hasattr(repo, 'repo_id'):
120 if hasattr(repo, 'repo_id'):
121 repo_obj = rm.get(repo.repo_id, cache=False)
121 repo_obj = rm.get(repo.repo_id, cache=False)
122 repo_name = repo_obj.repo_name
122 repo_name = repo_obj.repo_name
123 elif isinstance(repo, basestring):
123 elif isinstance(repo, basestring):
124 repo_name = repo.lstrip('/')
124 repo_name = repo.lstrip('/')
125 repo_obj = rm.get_by_repo_name(repo_name, cache=False)
125 repo_obj = rm.get_by_repo_name(repo_name, cache=False)
126 else:
126 else:
127 raise Exception('You have to provide repository to action logger')
127 raise Exception('You have to provide repository to action logger')
128
128
129 user_log = UserLog()
129 user_log = UserLog()
130 user_log.user_id = user_obj.user_id
130 user_log.user_id = user_obj.user_id
131 user_log.action = action
131 user_log.action = action
132
132
133 user_log.repository_id = repo_obj.repo_id
133 user_log.repository_id = repo_obj.repo_id
134 user_log.repository_name = repo_name
134 user_log.repository_name = repo_name
135
135
136 user_log.action_date = datetime.datetime.now()
136 user_log.action_date = datetime.datetime.now()
137 user_log.user_ip = ipaddr
137 user_log.user_ip = ipaddr
138 sa.add(user_log)
138 sa.add(user_log)
139 sa.commit()
139 sa.commit()
140
140
141 log.info('Adding user %s, action %s on %s', user_obj, action, repo)
141 log.info('Adding user %s, action %s on %s', user_obj, action, repo)
142 except:
142 except:
143 log.error(traceback.format_exc())
143 log.error(traceback.format_exc())
144 sa.rollback()
144 sa.rollback()
145
145
146
146
147 def get_repos(path, recursive=False):
147 def get_repos(path, recursive=False):
148 """
148 """
149 Scans given path for repos and return (name,(type,path)) tuple
149 Scans given path for repos and return (name,(type,path)) tuple
150
150
151 :param path: path to scann for repositories
151 :param path: path to scann for repositories
152 :param recursive: recursive search and return names with subdirs in front
152 :param recursive: recursive search and return names with subdirs in front
153 """
153 """
154 from vcs.utils.helpers import get_scm
154 from vcs.utils.helpers import get_scm
155 from vcs.exceptions import VCSError
155 from vcs.exceptions import VCSError
156
156
157 if path.endswith(os.sep):
157 if path.endswith(os.sep):
158 #remove ending slash for better results
158 #remove ending slash for better results
159 path = path[:-1]
159 path = path[:-1]
160
160
161 def _get_repos(p):
161 def _get_repos(p):
162 if not os.access(p, os.W_OK):
162 if not os.access(p, os.W_OK):
163 return
163 return
164 for dirpath in os.listdir(p):
164 for dirpath in os.listdir(p):
165 if os.path.isfile(os.path.join(p, dirpath)):
165 if os.path.isfile(os.path.join(p, dirpath)):
166 continue
166 continue
167 cur_path = os.path.join(p, dirpath)
167 cur_path = os.path.join(p, dirpath)
168 try:
168 try:
169 scm_info = get_scm(cur_path)
169 scm_info = get_scm(cur_path)
170 yield scm_info[1].split(path)[-1].lstrip(os.sep), scm_info
170 yield scm_info[1].split(path)[-1].lstrip(os.sep), scm_info
171 except VCSError:
171 except VCSError:
172 if not recursive:
172 if not recursive:
173 continue
173 continue
174 #check if this dir containts other repos for recursive scan
174 #check if this dir containts other repos for recursive scan
175 rec_path = os.path.join(p, dirpath)
175 rec_path = os.path.join(p, dirpath)
176 if os.path.isdir(rec_path):
176 if os.path.isdir(rec_path):
177 for inner_scm in _get_repos(rec_path):
177 for inner_scm in _get_repos(rec_path):
178 yield inner_scm
178 yield inner_scm
179
179
180 return _get_repos(path)
180 return _get_repos(path)
181
181
182
182
183 def is_valid_repo(repo_name, base_path):
183 def is_valid_repo(repo_name, base_path):
184 """
184 """
185 Returns True if given path is a valid repository False otherwise
185 Returns True if given path is a valid repository False otherwise
186 :param repo_name:
186 :param repo_name:
187 :param base_path:
187 :param base_path:
188
188
189 :return True: if given path is a valid repository
189 :return True: if given path is a valid repository
190 """
190 """
191 full_path = os.path.join(base_path, repo_name)
191 full_path = os.path.join(base_path, repo_name)
192
192
193 try:
193 try:
194 get_scm(full_path)
194 get_scm(full_path)
195 return True
195 return True
196 except VCSError:
196 except VCSError:
197 return False
197 return False
198
198
199 def is_valid_repos_group(repos_group_name, base_path):
199 def is_valid_repos_group(repos_group_name, base_path):
200 """
200 """
201 Returns True if given path is a repos group False otherwise
201 Returns True if given path is a repos group False otherwise
202
202
203 :param repo_name:
203 :param repo_name:
204 :param base_path:
204 :param base_path:
205 """
205 """
206 full_path = os.path.join(base_path, repos_group_name)
206 full_path = os.path.join(base_path, repos_group_name)
207
207
208 # check if it's not a repo
208 # check if it's not a repo
209 if is_valid_repo(repos_group_name, base_path):
209 if is_valid_repo(repos_group_name, base_path):
210 return False
210 return False
211
211
212 # check if it's a valid path
212 # check if it's a valid path
213 if os.path.isdir(full_path):
213 if os.path.isdir(full_path):
214 return True
214 return True
215
215
216 return False
216 return False
217
217
218 def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
218 def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
219 while True:
219 while True:
220 ok = raw_input(prompt)
220 ok = raw_input(prompt)
221 if ok in ('y', 'ye', 'yes'):
221 if ok in ('y', 'ye', 'yes'):
222 return True
222 return True
223 if ok in ('n', 'no', 'nop', 'nope'):
223 if ok in ('n', 'no', 'nop', 'nope'):
224 return False
224 return False
225 retries = retries - 1
225 retries = retries - 1
226 if retries < 0:
226 if retries < 0:
227 raise IOError
227 raise IOError
228 print complaint
228 print complaint
229
229
230 #propagated from mercurial documentation
230 #propagated from mercurial documentation
231 ui_sections = ['alias', 'auth',
231 ui_sections = ['alias', 'auth',
232 'decode/encode', 'defaults',
232 'decode/encode', 'defaults',
233 'diff', 'email',
233 'diff', 'email',
234 'extensions', 'format',
234 'extensions', 'format',
235 'merge-patterns', 'merge-tools',
235 'merge-patterns', 'merge-tools',
236 'hooks', 'http_proxy',
236 'hooks', 'http_proxy',
237 'smtp', 'patch',
237 'smtp', 'patch',
238 'paths', 'profiling',
238 'paths', 'profiling',
239 'server', 'trusted',
239 'server', 'trusted',
240 'ui', 'web', ]
240 'ui', 'web', ]
241
241
242
242
243 def make_ui(read_from='file', path=None, checkpaths=True):
243 def make_ui(read_from='file', path=None, checkpaths=True):
244 """A function that will read python rc files or database
244 """A function that will read python rc files or database
245 and make an mercurial ui object from read options
245 and make an mercurial ui object from read options
246
246
247 :param path: path to mercurial config file
247 :param path: path to mercurial config file
248 :param checkpaths: check the path
248 :param checkpaths: check the path
249 :param read_from: read from 'file' or 'db'
249 :param read_from: read from 'file' or 'db'
250 """
250 """
251
251
252 baseui = ui.ui()
252 baseui = ui.ui()
253
253
254 #clean the baseui object
254 #clean the baseui object
255 baseui._ocfg = config.config()
255 baseui._ocfg = config.config()
256 baseui._ucfg = config.config()
256 baseui._ucfg = config.config()
257 baseui._tcfg = config.config()
257 baseui._tcfg = config.config()
258
258
259 if read_from == 'file':
259 if read_from == 'file':
260 if not os.path.isfile(path):
260 if not os.path.isfile(path):
261 log.warning('Unable to read config file %s' % path)
261 log.warning('Unable to read config file %s' % path)
262 return False
262 return False
263 log.debug('reading hgrc from %s', path)
263 log.debug('reading hgrc from %s', path)
264 cfg = config.config()
264 cfg = config.config()
265 cfg.read(path)
265 cfg.read(path)
266 for section in ui_sections:
266 for section in ui_sections:
267 for k, v in cfg.items(section):
267 for k, v in cfg.items(section):
268 log.debug('settings ui from file[%s]%s:%s', section, k, v)
268 log.debug('settings ui from file[%s]%s:%s', section, k, v)
269 baseui.setconfig(section, k, v)
269 baseui.setconfig(section, k, v)
270
270
271 elif read_from == 'db':
271 elif read_from == 'db':
272 sa = meta.Session()
272 sa = meta.Session()
273 ret = sa.query(RhodeCodeUi)\
273 ret = sa.query(RhodeCodeUi)\
274 .options(FromCache("sql_cache_short",
274 .options(FromCache("sql_cache_short",
275 "get_hg_ui_settings")).all()
275 "get_hg_ui_settings")).all()
276
276
277 hg_ui = ret
277 hg_ui = ret
278 for ui_ in hg_ui:
278 for ui_ in hg_ui:
279 if ui_.ui_active:
279 if ui_.ui_active:
280 log.debug('settings ui from db[%s]%s:%s', ui_.ui_section,
280 log.debug('settings ui from db[%s]%s:%s', ui_.ui_section,
281 ui_.ui_key, ui_.ui_value)
281 ui_.ui_key, ui_.ui_value)
282 baseui.setconfig(ui_.ui_section, ui_.ui_key, ui_.ui_value)
282 baseui.setconfig(ui_.ui_section, ui_.ui_key, ui_.ui_value)
283
283
284 meta.Session.remove()
284 meta.Session.remove()
285 return baseui
285 return baseui
286
286
287
287
288 def set_rhodecode_config(config):
288 def set_rhodecode_config(config):
289 """Updates pylons config with new settings from database
289 """Updates pylons config with new settings from database
290
290
291 :param config:
291 :param config:
292 """
292 """
293 hgsettings = RhodeCodeSettings.get_app_settings()
293 hgsettings = RhodeCodeSettings.get_app_settings()
294
294
295 for k, v in hgsettings.items():
295 for k, v in hgsettings.items():
296 config[k] = v
296 config[k] = v
297
297
298
298
299 def invalidate_cache(cache_key, *args):
299 def invalidate_cache(cache_key, *args):
300 """Puts cache invalidation task into db for
300 """Puts cache invalidation task into db for
301 further global cache invalidation
301 further global cache invalidation
302 """
302 """
303
303
304 from rhodecode.model.scm import ScmModel
304 from rhodecode.model.scm import ScmModel
305
305
306 if cache_key.startswith('get_repo_cached_'):
306 if cache_key.startswith('get_repo_cached_'):
307 name = cache_key.split('get_repo_cached_')[-1]
307 name = cache_key.split('get_repo_cached_')[-1]
308 ScmModel().mark_for_invalidation(name)
308 ScmModel().mark_for_invalidation(name)
309
309
310
310
311 class EmptyChangeset(BaseChangeset):
311 class EmptyChangeset(BaseChangeset):
312 """
312 """
313 An dummy empty changeset. It's possible to pass hash when creating
313 An dummy empty changeset. It's possible to pass hash when creating
314 an EmptyChangeset
314 an EmptyChangeset
315 """
315 """
316
316
317 def __init__(self, cs='0' * 40, repo=None, requested_revision=None, alias=None):
317 def __init__(self, cs='0' * 40, repo=None, requested_revision=None, alias=None):
318 self._empty_cs = cs
318 self._empty_cs = cs
319 self.revision = -1
319 self.revision = -1
320 self.message = ''
320 self.message = ''
321 self.author = ''
321 self.author = ''
322 self.date = ''
322 self.date = ''
323 self.repository = repo
323 self.repository = repo
324 self.requested_revision = requested_revision
324 self.requested_revision = requested_revision
325 self.alias = alias
325 self.alias = alias
326
326
327 @LazyProperty
327 @LazyProperty
328 def raw_id(self):
328 def raw_id(self):
329 """Returns raw string identifying this changeset, useful for web
329 """Returns raw string identifying this changeset, useful for web
330 representation.
330 representation.
331 """
331 """
332
332
333 return self._empty_cs
333 return self._empty_cs
334
334
335 @LazyProperty
335 @LazyProperty
336 def branch(self):
336 def branch(self):
337 return get_backend(self.alias).DEFAULT_BRANCH_NAME
337 return get_backend(self.alias).DEFAULT_BRANCH_NAME
338
338
339 @LazyProperty
339 @LazyProperty
340 def short_id(self):
340 def short_id(self):
341 return self.raw_id[:12]
341 return self.raw_id[:12]
342
342
343 def get_file_changeset(self, path):
343 def get_file_changeset(self, path):
344 return self
344 return self
345
345
346 def get_file_content(self, path):
346 def get_file_content(self, path):
347 return u''
347 return u''
348
348
349 def get_file_size(self, path):
349 def get_file_size(self, path):
350 return 0
350 return 0
351
351
352
352
353 def map_groups(groups):
353 def map_groups(groups):
354 """Checks for groups existence, and creates groups structures.
354 """Checks for groups existence, and creates groups structures.
355 It returns last group in structure
355 It returns last group in structure
356
356
357 :param groups: list of groups structure
357 :param groups: list of groups structure
358 """
358 """
359 sa = meta.Session()
359 sa = meta.Session()
360
360
361 parent = None
361 parent = None
362 group = None
362 group = None
363 for lvl, group_name in enumerate(groups[:-1]):
363 for lvl, group_name in enumerate(groups[:-1]):
364 group = sa.query(Group).filter(Group.group_name == group_name).scalar()
364 group = sa.query(Group).filter(Group.group_name == group_name).scalar()
365
365
366 if group is None:
366 if group is None:
367 group = Group(group_name, parent)
367 group = Group(group_name, parent)
368 sa.add(group)
368 sa.add(group)
369 sa.commit()
369 sa.commit()
370
370
371 parent = group
371 parent = group
372
372
373 return group
373 return group
374
374
375
375
376 def repo2db_mapper(initial_repo_list, remove_obsolete=False):
376 def repo2db_mapper(initial_repo_list, remove_obsolete=False):
377 """maps all repos given in initial_repo_list, non existing repositories
377 """maps all repos given in initial_repo_list, non existing repositories
378 are created, if remove_obsolete is True it also check for db entries
378 are created, if remove_obsolete is True it also check for db entries
379 that are not in initial_repo_list and removes them.
379 that are not in initial_repo_list and removes them.
380
380
381 :param initial_repo_list: list of repositories found by scanning methods
381 :param initial_repo_list: list of repositories found by scanning methods
382 :param remove_obsolete: check for obsolete entries in database
382 :param remove_obsolete: check for obsolete entries in database
383 """
383 """
384
384
385 sa = meta.Session()
385 sa = meta.Session()
386 rm = RepoModel()
386 rm = RepoModel()
387 user = sa.query(User).filter(User.admin == True).first()
387 user = sa.query(User).filter(User.admin == True).first()
388 added = []
388 added = []
389 for name, repo in initial_repo_list.items():
389 for name, repo in initial_repo_list.items():
390 group = map_groups(name.split(os.sep))
390 group = map_groups(name.split(os.sep))
391 if not rm.get_by_repo_name(name, cache=False):
391 if not rm.get_by_repo_name(name, cache=False):
392 log.info('repository %s not found creating default', name)
392 log.info('repository %s not found creating default', name)
393 added.append(name)
393 added.append(name)
394 form_data = {
394 form_data = {
395 'repo_name': name,
395 'repo_name': name,
396 'repo_name_full': name,
396 'repo_name_full': name,
397 'repo_type': repo.alias,
397 'repo_type': repo.alias,
398 'description': repo.description \
398 'description': repo.description \
399 if repo.description != 'unknown' else \
399 if repo.description != 'unknown' else \
400 '%s repository' % name,
400 '%s repository' % name,
401 'private': False,
401 'private': False,
402 'group_id': getattr(group, 'group_id', None)
402 'group_id': getattr(group, 'group_id', None)
403 }
403 }
404 rm.create(form_data, user, just_db=True)
404 rm.create(form_data, user, just_db=True)
405
405
406 removed = []
406 removed = []
407 if remove_obsolete:
407 if remove_obsolete:
408 #remove from database those repositories that are not in the filesystem
408 #remove from database those repositories that are not in the filesystem
409 for repo in sa.query(Repository).all():
409 for repo in sa.query(Repository).all():
410 if repo.repo_name not in initial_repo_list.keys():
410 if repo.repo_name not in initial_repo_list.keys():
411 removed.append(repo.repo_name)
411 removed.append(repo.repo_name)
412 sa.delete(repo)
412 sa.delete(repo)
413 sa.commit()
413 sa.commit()
414
414
415 return added, removed
415 return added, removed
416
416
417 #set cache regions for beaker so celery can utilise it
417 #set cache regions for beaker so celery can utilise it
418 def add_cache(settings):
418 def add_cache(settings):
419 cache_settings = {'regions': None}
419 cache_settings = {'regions': None}
420 for key in settings.keys():
420 for key in settings.keys():
421 for prefix in ['beaker.cache.', 'cache.']:
421 for prefix in ['beaker.cache.', 'cache.']:
422 if key.startswith(prefix):
422 if key.startswith(prefix):
423 name = key.split(prefix)[1].strip()
423 name = key.split(prefix)[1].strip()
424 cache_settings[name] = settings[key].strip()
424 cache_settings[name] = settings[key].strip()
425 if cache_settings['regions']:
425 if cache_settings['regions']:
426 for region in cache_settings['regions'].split(','):
426 for region in cache_settings['regions'].split(','):
427 region = region.strip()
427 region = region.strip()
428 region_settings = {}
428 region_settings = {}
429 for key, value in cache_settings.items():
429 for key, value in cache_settings.items():
430 if key.startswith(region):
430 if key.startswith(region):
431 region_settings[key.split('.')[1]] = value
431 region_settings[key.split('.')[1]] = value
432 region_settings['expire'] = int(region_settings.get('expire',
432 region_settings['expire'] = int(region_settings.get('expire',
433 60))
433 60))
434 region_settings.setdefault('lock_dir',
434 region_settings.setdefault('lock_dir',
435 cache_settings.get('lock_dir'))
435 cache_settings.get('lock_dir'))
436 region_settings.setdefault('data_dir',
436 region_settings.setdefault('data_dir',
437 cache_settings.get('data_dir'))
437 cache_settings.get('data_dir'))
438
438
439 if 'type' not in region_settings:
439 if 'type' not in region_settings:
440 region_settings['type'] = cache_settings.get('type',
440 region_settings['type'] = cache_settings.get('type',
441 'memory')
441 'memory')
442 beaker.cache.cache_regions[region] = region_settings
442 beaker.cache.cache_regions[region] = region_settings
443
443
444
444
445 def get_current_revision():
445 def get_current_revision():
446 """Returns tuple of (number, id) from repository containing this package
446 """Returns tuple of (number, id) from repository containing this package
447 or None if repository could not be found.
447 or None if repository could not be found.
448 """
448 """
449
449
450 try:
450 try:
451 from vcs import get_repo
451 from vcs import get_repo
452 from vcs.utils.helpers import get_scm
452 from vcs.utils.helpers import get_scm
453 from vcs.exceptions import RepositoryError, VCSError
453 from vcs.exceptions import RepositoryError, VCSError
454 repopath = os.path.join(os.path.dirname(__file__), '..', '..')
454 repopath = os.path.join(os.path.dirname(__file__), '..', '..')
455 scm = get_scm(repopath)[0]
455 scm = get_scm(repopath)[0]
456 repo = get_repo(path=repopath, alias=scm)
456 repo = get_repo(path=repopath, alias=scm)
457 tip = repo.get_changeset()
457 tip = repo.get_changeset()
458 return (tip.revision, tip.short_id)
458 return (tip.revision, tip.short_id)
459 except (ImportError, RepositoryError, VCSError), err:
459 except (ImportError, RepositoryError, VCSError), err:
460 logging.debug("Cannot retrieve rhodecode's revision. Original error "
460 logging.debug("Cannot retrieve rhodecode's revision. Original error "
461 "was: %s" % err)
461 "was: %s" % err)
462 return None
462 return None
463
463
464
464
465 #==============================================================================
465 #==============================================================================
466 # TEST FUNCTIONS AND CREATORS
466 # TEST FUNCTIONS AND CREATORS
467 #==============================================================================
467 #==============================================================================
468 def create_test_index(repo_location, config, full_index):
468 def create_test_index(repo_location, config, full_index):
469 """
469 """
470 Makes default test index
470 Makes default test index
471
471
472 :param config: test config
472 :param config: test config
473 :param full_index:
473 :param full_index:
474 """
474 """
475
475
476 from rhodecode.lib.indexers.daemon import WhooshIndexingDaemon
476 from rhodecode.lib.indexers.daemon import WhooshIndexingDaemon
477 from rhodecode.lib.pidlock import DaemonLock, LockHeld
477 from rhodecode.lib.pidlock import DaemonLock, LockHeld
478
478
479 repo_location = repo_location
479 repo_location = repo_location
480
480
481 index_location = os.path.join(config['app_conf']['index_dir'])
481 index_location = os.path.join(config['app_conf']['index_dir'])
482 if not os.path.exists(index_location):
482 if not os.path.exists(index_location):
483 os.makedirs(index_location)
483 os.makedirs(index_location)
484
484
485 try:
485 try:
486 l = DaemonLock(file=jn(dn(index_location), 'make_index.lock'))
486 l = DaemonLock(file=jn(dn(index_location), 'make_index.lock'))
487 WhooshIndexingDaemon(index_location=index_location,
487 WhooshIndexingDaemon(index_location=index_location,
488 repo_location=repo_location)\
488 repo_location=repo_location)\
489 .run(full_index=full_index)
489 .run(full_index=full_index)
490 l.release()
490 l.release()
491 except LockHeld:
491 except LockHeld:
492 pass
492 pass
493
493
494
494
495 def create_test_env(repos_test_path, config):
495 def create_test_env(repos_test_path, config):
496 """Makes a fresh database and
496 """Makes a fresh database and
497 install test repository into tmp dir
497 install test repository into tmp dir
498 """
498 """
499 from rhodecode.lib.db_manage import DbManage
499 from rhodecode.lib.db_manage import DbManage
500 from rhodecode.tests import HG_REPO, GIT_REPO, NEW_HG_REPO, NEW_GIT_REPO, \
500 from rhodecode.tests import HG_REPO, GIT_REPO, NEW_HG_REPO, NEW_GIT_REPO, \
501 HG_FORK, GIT_FORK, TESTS_TMP_PATH
501 HG_FORK, GIT_FORK, TESTS_TMP_PATH
502 import tarfile
502 import tarfile
503 import shutil
503 import shutil
504 from os.path import abspath
504 from os.path import abspath
505
505
506 # PART ONE create db
506 # PART ONE create db
507 dbconf = config['sqlalchemy.db1.url']
507 dbconf = config['sqlalchemy.db1.url']
508 log.debug('making test db %s', dbconf)
508 log.debug('making test db %s', dbconf)
509
509
510 # create test dir if it doesn't exist
510 # create test dir if it doesn't exist
511 if not os.path.isdir(repos_test_path):
511 if not os.path.isdir(repos_test_path):
512 log.debug('Creating testdir %s' % repos_test_path)
512 log.debug('Creating testdir %s' % repos_test_path)
513 os.makedirs(repos_test_path)
513 os.makedirs(repos_test_path)
514
514
515 dbmanage = DbManage(log_sql=True, dbconf=dbconf, root=config['here'],
515 dbmanage = DbManage(log_sql=True, dbconf=dbconf, root=config['here'],
516 tests=True)
516 tests=True)
517 dbmanage.create_tables(override=True)
517 dbmanage.create_tables(override=True)
518 dbmanage.create_settings(dbmanage.config_prompt(repos_test_path))
518 dbmanage.create_settings(dbmanage.config_prompt(repos_test_path))
519 dbmanage.create_default_user()
519 dbmanage.create_default_user()
520 dbmanage.admin_prompt()
520 dbmanage.admin_prompt()
521 dbmanage.create_permissions()
521 dbmanage.create_permissions()
522 dbmanage.populate_default_permissions()
522 dbmanage.populate_default_permissions()
523
523
524 # PART TWO make test repo
524 # PART TWO make test repo
525 log.debug('making test vcs repositories')
525 log.debug('making test vcs repositories')
526
526
527 idx_path = config['app_conf']['index_dir']
527 idx_path = config['app_conf']['index_dir']
528 data_path = config['app_conf']['cache_dir']
528 data_path = config['app_conf']['cache_dir']
529
529
530 #clean index and data
530 #clean index and data
531 if idx_path and os.path.exists(idx_path):
531 if idx_path and os.path.exists(idx_path):
532 log.debug('remove %s' % idx_path)
532 log.debug('remove %s' % idx_path)
533 shutil.rmtree(idx_path)
533 shutil.rmtree(idx_path)
534
534
535 if data_path and os.path.exists(data_path):
535 if data_path and os.path.exists(data_path):
536 log.debug('remove %s' % data_path)
536 log.debug('remove %s' % data_path)
537 shutil.rmtree(data_path)
537 shutil.rmtree(data_path)
538
538
539 #CREATE DEFAULT HG REPOSITORY
539 #CREATE DEFAULT HG REPOSITORY
540 cur_dir = dn(dn(abspath(__file__)))
540 cur_dir = dn(dn(abspath(__file__)))
541 tar = tarfile.open(jn(cur_dir, 'tests', "vcs_test_hg.tar.gz"))
541 tar = tarfile.open(jn(cur_dir, 'tests', "vcs_test_hg.tar.gz"))
542 tar.extractall(jn(TESTS_TMP_PATH, HG_REPO))
542 tar.extractall(jn(TESTS_TMP_PATH, HG_REPO))
543 tar.close()
543 tar.close()
544
544
545
545
546 #==============================================================================
546 #==============================================================================
547 # PASTER COMMANDS
547 # PASTER COMMANDS
548 #==============================================================================
548 #==============================================================================
549 class BasePasterCommand(Command):
549 class BasePasterCommand(Command):
550 """
550 """
551 Abstract Base Class for paster commands.
551 Abstract Base Class for paster commands.
552
552
553 The celery commands are somewhat aggressive about loading
553 The celery commands are somewhat aggressive about loading
554 celery.conf, and since our module sets the `CELERY_LOADER`
554 celery.conf, and since our module sets the `CELERY_LOADER`
555 environment variable to our loader, we have to bootstrap a bit and
555 environment variable to our loader, we have to bootstrap a bit and
556 make sure we've had a chance to load the pylons config off of the
556 make sure we've had a chance to load the pylons config off of the
557 command line, otherwise everything fails.
557 command line, otherwise everything fails.
558 """
558 """
559 min_args = 1
559 min_args = 1
560 min_args_error = "Please provide a paster config file as an argument."
560 min_args_error = "Please provide a paster config file as an argument."
561 takes_config_file = 1
561 takes_config_file = 1
562 requires_config_file = True
562 requires_config_file = True
563
563
564 def notify_msg(self, msg, log=False):
564 def notify_msg(self, msg, log=False):
565 """Make a notification to user, additionally if logger is passed
565 """Make a notification to user, additionally if logger is passed
566 it logs this action using given logger
566 it logs this action using given logger
567
567
568 :param msg: message that will be printed to user
568 :param msg: message that will be printed to user
569 :param log: logging instance, to use to additionally log this message
569 :param log: logging instance, to use to additionally log this message
570
570
571 """
571 """
572 if log and isinstance(log, logging):
572 if log and isinstance(log, logging):
573 log(msg)
573 log(msg)
574
574
575 def run(self, args):
575 def run(self, args):
576 """
576 """
577 Overrides Command.run
577 Overrides Command.run
578
578
579 Checks for a config file argument and loads it.
579 Checks for a config file argument and loads it.
580 """
580 """
581 if len(args) < self.min_args:
581 if len(args) < self.min_args:
582 raise BadCommand(
582 raise BadCommand(
583 self.min_args_error % {'min_args': self.min_args,
583 self.min_args_error % {'min_args': self.min_args,
584 'actual_args': len(args)})
584 'actual_args': len(args)})
585
585
586 # Decrement because we're going to lob off the first argument.
586 # Decrement because we're going to lob off the first argument.
587 # @@ This is hacky
587 # @@ This is hacky
588 self.min_args -= 1
588 self.min_args -= 1
589 self.bootstrap_config(args[0])
589 self.bootstrap_config(args[0])
590 self.update_parser()
590 self.update_parser()
591 return super(BasePasterCommand, self).run(args[1:])
591 return super(BasePasterCommand, self).run(args[1:])
592
592
593 def update_parser(self):
593 def update_parser(self):
594 """
594 """
595 Abstract method. Allows for the class's parser to be updated
595 Abstract method. Allows for the class's parser to be updated
596 before the superclass's `run` method is called. Necessary to
596 before the superclass's `run` method is called. Necessary to
597 allow options/arguments to be passed through to the underlying
597 allow options/arguments to be passed through to the underlying
598 celery command.
598 celery command.
599 """
599 """
600 raise NotImplementedError("Abstract Method.")
600 raise NotImplementedError("Abstract Method.")
601
601
602 def bootstrap_config(self, conf):
602 def bootstrap_config(self, conf):
603 """
603 """
604 Loads the pylons configuration.
604 Loads the pylons configuration.
605 """
605 """
606 from pylons import config as pylonsconfig
606 from pylons import config as pylonsconfig
607
607
608 path_to_ini_file = os.path.realpath(conf)
608 path_to_ini_file = os.path.realpath(conf)
609 conf = paste.deploy.appconfig('config:' + path_to_ini_file)
609 conf = paste.deploy.appconfig('config:' + path_to_ini_file)
610 pylonsconfig.init_app(conf.global_conf, conf.local_conf)
610 pylonsconfig.init_app(conf.global_conf, conf.local_conf)
611
611
@@ -1,2749 +1,2749
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, Lucida Sans Unicode, Arial, sans-serif;
15 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
16 font-size:12px;
16 font-size:12px;
17 color:#000;
17 color:#000;
18 margin:0;
18 margin:0;
19 padding:0;
19 padding:0;
20 }
20 }
21
21
22 ol,ul {
22 ol,ul {
23 list-style:none;
23 list-style:none;
24 }
24 }
25
25
26 blockquote,q {
26 blockquote,q {
27 quotes:none;
27 quotes:none;
28 }
28 }
29
29
30 blockquote:before,blockquote:after,q:before,q:after {
30 blockquote:before,blockquote:after,q:before,q:after {
31 content:none;
31 content:none;
32 }
32 }
33
33
34 :focus {
34 :focus {
35 outline:0;
35 outline:0;
36 }
36 }
37
37
38 del {
38 del {
39 text-decoration:line-through;
39 text-decoration:line-through;
40 }
40 }
41
41
42 table {
42 table {
43 border-collapse:collapse;
43 border-collapse:collapse;
44 border-spacing:0;
44 border-spacing:0;
45 }
45 }
46
46
47 html {
47 html {
48 height:100%;
48 height:100%;
49 }
49 }
50
50
51 a {
51 a {
52 color:#003367;
52 color:#003367;
53 text-decoration:none;
53 text-decoration:none;
54 cursor:pointer;
54 cursor:pointer;
55 }
55 }
56
56
57 a:hover {
57 a:hover {
58 color:#316293;
58 color:#316293;
59 text-decoration:underline;
59 text-decoration:underline;
60 }
60 }
61
61
62 h1,h2,h3,h4,h5,h6 {
62 h1,h2,h3,h4,h5,h6 {
63 color:#292929;
63 color:#292929;
64 font-weight:700;
64 font-weight:700;
65 }
65 }
66
66
67 h1 {
67 h1 {
68 font-size:22px;
68 font-size:22px;
69 }
69 }
70
70
71 h2 {
71 h2 {
72 font-size:20px;
72 font-size:20px;
73 }
73 }
74
74
75 h3 {
75 h3 {
76 font-size:18px;
76 font-size:18px;
77 }
77 }
78
78
79 h4 {
79 h4 {
80 font-size:16px;
80 font-size:16px;
81 }
81 }
82
82
83 h5 {
83 h5 {
84 font-size:14px;
84 font-size:14px;
85 }
85 }
86
86
87 h6 {
87 h6 {
88 font-size:11px;
88 font-size:11px;
89 }
89 }
90
90
91 ul.circle {
91 ul.circle {
92 list-style-type:circle;
92 list-style-type:circle;
93 }
93 }
94
94
95 ul.disc {
95 ul.disc {
96 list-style-type:disc;
96 list-style-type:disc;
97 }
97 }
98
98
99 ul.square {
99 ul.square {
100 list-style-type:square;
100 list-style-type:square;
101 }
101 }
102
102
103 ol.lower-roman {
103 ol.lower-roman {
104 list-style-type:lower-roman;
104 list-style-type:lower-roman;
105 }
105 }
106
106
107 ol.upper-roman {
107 ol.upper-roman {
108 list-style-type:upper-roman;
108 list-style-type:upper-roman;
109 }
109 }
110
110
111 ol.lower-alpha {
111 ol.lower-alpha {
112 list-style-type:lower-alpha;
112 list-style-type:lower-alpha;
113 }
113 }
114
114
115 ol.upper-alpha {
115 ol.upper-alpha {
116 list-style-type:upper-alpha;
116 list-style-type:upper-alpha;
117 }
117 }
118
118
119 ol.decimal {
119 ol.decimal {
120 list-style-type:decimal;
120 list-style-type:decimal;
121 }
121 }
122
122
123 div.color {
123 div.color {
124 clear:both;
124 clear:both;
125 overflow:hidden;
125 overflow:hidden;
126 position:absolute;
126 position:absolute;
127 background:#FFF;
127 background:#FFF;
128 margin:7px 0 0 60px;
128 margin:7px 0 0 60px;
129 padding:1px 1px 1px 0;
129 padding:1px 1px 1px 0;
130 }
130 }
131
131
132 div.color a {
132 div.color a {
133 width:15px;
133 width:15px;
134 height:15px;
134 height:15px;
135 display:block;
135 display:block;
136 float:left;
136 float:left;
137 margin:0 0 0 1px;
137 margin:0 0 0 1px;
138 padding:0;
138 padding:0;
139 }
139 }
140
140
141 div.options {
141 div.options {
142 clear:both;
142 clear:both;
143 overflow:hidden;
143 overflow:hidden;
144 position:absolute;
144 position:absolute;
145 background:#FFF;
145 background:#FFF;
146 margin:7px 0 0 162px;
146 margin:7px 0 0 162px;
147 padding:0;
147 padding:0;
148 }
148 }
149
149
150 div.options a {
150 div.options a {
151 height:1%;
151 height:1%;
152 display:block;
152 display:block;
153 text-decoration:none;
153 text-decoration:none;
154 margin:0;
154 margin:0;
155 padding:3px 8px;
155 padding:3px 8px;
156 }
156 }
157
157
158 .top-left-rounded-corner {
158 .top-left-rounded-corner {
159 -webkit-border-top-left-radius: 8px;
159 -webkit-border-top-left-radius: 8px;
160 -khtml-border-radius-topleft: 8px;
160 -khtml-border-radius-topleft: 8px;
161 -moz-border-radius-topleft: 8px;
161 -moz-border-radius-topleft: 8px;
162 border-top-left-radius: 8px;
162 border-top-left-radius: 8px;
163 }
163 }
164
164
165 .top-right-rounded-corner {
165 .top-right-rounded-corner {
166 -webkit-border-top-right-radius: 8px;
166 -webkit-border-top-right-radius: 8px;
167 -khtml-border-radius-topright: 8px;
167 -khtml-border-radius-topright: 8px;
168 -moz-border-radius-topright: 8px;
168 -moz-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 -moz-border-radius-bottomleft: 8px;
175 -moz-border-radius-bottomleft: 8px;
176 border-bottom-left-radius: 8px;
176 border-bottom-left-radius: 8px;
177 }
177 }
178
178
179 .bottom-right-rounded-corner {
179 .bottom-right-rounded-corner {
180 -webkit-border-bottom-right-radius: 8px;
180 -webkit-border-bottom-right-radius: 8px;
181 -khtml-border-radius-bottomright: 8px;
181 -khtml-border-radius-bottomright: 8px;
182 -moz-border-radius-bottomright: 8px;
182 -moz-border-radius-bottomright: 8px;
183 border-bottom-right-radius: 8px;
183 border-bottom-right-radius: 8px;
184 }
184 }
185
185
186
186
187 #header {
187 #header {
188 margin:0;
188 margin:0;
189 padding:0 10px;
189 padding:0 10px;
190 }
190 }
191
191
192
192
193 #header ul#logged-user{
193 #header ul#logged-user{
194 margin-bottom:5px !important;
194 margin-bottom:5px !important;
195 -webkit-border-radius: 0px 0px 8px 8px;
195 -webkit-border-radius: 0px 0px 8px 8px;
196 -khtml-border-radius: 0px 0px 8px 8px;
196 -khtml-border-radius: 0px 0px 8px 8px;
197 -moz-border-radius: 0px 0px 8px 8px;
197 -moz-border-radius: 0px 0px 8px 8px;
198 border-radius: 0px 0px 8px 8px;
198 border-radius: 0px 0px 8px 8px;
199 height:37px;
199 height:37px;
200 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
200 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
201 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
201 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
202 }
202 }
203
203
204 #header ul#logged-user li {
204 #header ul#logged-user li {
205 list-style:none;
205 list-style:none;
206 float:left;
206 float:left;
207 margin:8px 0 0;
207 margin:8px 0 0;
208 padding:4px 12px;
208 padding:4px 12px;
209 border-left: 1px solid #316293;
209 border-left: 1px solid #316293;
210 }
210 }
211
211
212 #header ul#logged-user li.first {
212 #header ul#logged-user li.first {
213 border-left:none;
213 border-left:none;
214 margin:4px;
214 margin:4px;
215 }
215 }
216
216
217 #header ul#logged-user li.first div.gravatar {
217 #header ul#logged-user li.first div.gravatar {
218 margin-top:-2px;
218 margin-top:-2px;
219 }
219 }
220
220
221 #header ul#logged-user li.first div.account {
221 #header ul#logged-user li.first div.account {
222 padding-top:4px;
222 padding-top:4px;
223 float:left;
223 float:left;
224 }
224 }
225
225
226 #header ul#logged-user li.last {
226 #header ul#logged-user li.last {
227 border-right:none;
227 border-right:none;
228 }
228 }
229
229
230 #header ul#logged-user li a {
230 #header ul#logged-user li a {
231 color:#fff;
231 color:#fff;
232 font-weight:700;
232 font-weight:700;
233 text-decoration:none;
233 text-decoration:none;
234 }
234 }
235
235
236 #header ul#logged-user li a:hover {
236 #header ul#logged-user li a:hover {
237 text-decoration:underline;
237 text-decoration:underline;
238 }
238 }
239
239
240 #header ul#logged-user li.highlight a {
240 #header ul#logged-user li.highlight a {
241 color:#fff;
241 color:#fff;
242 }
242 }
243
243
244 #header ul#logged-user li.highlight a:hover {
244 #header ul#logged-user li.highlight a:hover {
245 color:#FFF;
245 color:#FFF;
246 }
246 }
247
247
248 #header #header-inner {
248 #header #header-inner {
249 height:40px;
249 height:40px;
250 clear:both;
250 clear:both;
251 position:relative;
251 position:relative;
252 background:#003367 url("../images/header_inner.png") repeat-x;
252 background:#003367 url("../images/header_inner.png") repeat-x;
253 margin:0;
253 margin:0;
254 padding:0;
254 padding: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 -webkit-border-radius: 4px 4px 4px 4px;
256 -webkit-border-radius: 4px 4px 4px 4px;
257 -khtml-border-radius: 4px 4px 4px 4px;
257 -khtml-border-radius: 4px 4px 4px 4px;
258 -moz-border-radius: 4px 4px 4px 4px;
258 -moz-border-radius: 4px 4px 4px 4px;
259 border-radius: 4px 4px 4px 4px;
259 border-radius: 4px 4px 4px 4px;
260 }
260 }
261
261
262 #header #header-inner #home a {
262 #header #header-inner #home a {
263 height:40px;
263 height:40px;
264 width:46px;
264 width:46px;
265 display:block;
265 display:block;
266 background:url("../images/button_home.png");
266 background:url("../images/button_home.png");
267 background-position:0 0;
267 background-position:0 0;
268 margin:0;
268 margin:0;
269 padding:0;
269 padding:0;
270 }
270 }
271
271
272 #header #header-inner #home a:hover {
272 #header #header-inner #home a:hover {
273 background-position:0 -40px;
273 background-position:0 -40px;
274 }
274 }
275
275
276 #header #header-inner #logo h1 {
276 #header #header-inner #logo h1 {
277 color:#FFF;
277 color:#FFF;
278 font-size:18px;
278 font-size:18px;
279 margin:10px 0 0 13px;
279 margin:10px 0 0 13px;
280 padding:0;
280 padding:0;
281 }
281 }
282
282
283 #header #header-inner #logo a {
283 #header #header-inner #logo a {
284 color:#fff;
284 color:#fff;
285 text-decoration:none;
285 text-decoration:none;
286 }
286 }
287
287
288 #header #header-inner #logo a:hover {
288 #header #header-inner #logo a:hover {
289 color:#bfe3ff;
289 color:#bfe3ff;
290 }
290 }
291
291
292 #header #header-inner #quick,#header #header-inner #quick ul {
292 #header #header-inner #quick,#header #header-inner #quick ul {
293 position:relative;
293 position:relative;
294 float:right;
294 float:right;
295 list-style-type:none;
295 list-style-type:none;
296 list-style-position:outside;
296 list-style-position:outside;
297 margin:6px 5px 0 0;
297 margin:6px 5px 0 0;
298 padding:0;
298 padding:0;
299 }
299 }
300
300
301 #header #header-inner #quick li {
301 #header #header-inner #quick li {
302 position:relative;
302 position:relative;
303 float:left;
303 float:left;
304 margin:0 5px 0 0;
304 margin:0 5px 0 0;
305 padding:0;
305 padding:0;
306 }
306 }
307
307
308 #header #header-inner #quick li a {
308 #header #header-inner #quick li a {
309 top:0;
309 top:0;
310 left:0;
310 left:0;
311 height:1%;
311 height:1%;
312 display:block;
312 display:block;
313 clear:both;
313 clear:both;
314 overflow:hidden;
314 overflow:hidden;
315 color:#FFF;
315 color:#FFF;
316 font-weight:700;
316 font-weight:700;
317 text-decoration:none;
317 text-decoration:none;
318 background:#369;
318 background:#369;
319 padding:0;
319 padding:0;
320 -webkit-border-radius: 4px 4px 4px 4px;
320 -webkit-border-radius: 4px 4px 4px 4px;
321 -khtml-border-radius: 4px 4px 4px 4px;
321 -khtml-border-radius: 4px 4px 4px 4px;
322 -moz-border-radius: 4px 4px 4px 4px;
322 -moz-border-radius: 4px 4px 4px 4px;
323 border-radius: 4px 4px 4px 4px;
323 border-radius: 4px 4px 4px 4px;
324 }
324 }
325
325
326 #header #header-inner #quick li span.short {
326 #header #header-inner #quick li span.short {
327 padding:9px 6px 8px 6px;
327 padding:9px 6px 8px 6px;
328 }
328 }
329
329
330 #header #header-inner #quick li span {
330 #header #header-inner #quick li span {
331 top:0;
331 top:0;
332 right:0;
332 right:0;
333 height:1%;
333 height:1%;
334 display:block;
334 display:block;
335 float:left;
335 float:left;
336 border-left:1px solid #3f6f9f;
336 border-left:1px solid #3f6f9f;
337 margin:0;
337 margin:0;
338 padding:10px 12px 8px 10px;
338 padding:10px 12px 8px 10px;
339 }
339 }
340
340
341 #header #header-inner #quick li span.normal {
341 #header #header-inner #quick li span.normal {
342 border:none;
342 border:none;
343 padding:10px 12px 8px;
343 padding:10px 12px 8px;
344 }
344 }
345
345
346 #header #header-inner #quick li span.icon {
346 #header #header-inner #quick li span.icon {
347 top:0;
347 top:0;
348 left:0;
348 left:0;
349 border-left:none;
349 border-left:none;
350 border-right:1px solid #2e5c89;
350 border-right:1px solid #2e5c89;
351 padding:8px 8px 4px;
351 padding:8px 8px 4px;
352 }
352 }
353
353
354 #header #header-inner #quick li span.icon_short {
354 #header #header-inner #quick li span.icon_short {
355 top:0;
355 top:0;
356 left:0;
356 left:0;
357 border-left:none;
357 border-left:none;
358 border-right:1px solid #2e5c89;
358 border-right:1px solid #2e5c89;
359 padding:9px 4px 4px;
359 padding:9px 4px 4px;
360 }
360 }
361
361
362 #header #header-inner #quick li a:hover {
362 #header #header-inner #quick li a:hover {
363 background:#4e4e4e no-repeat top left;
363 background:#4e4e4e no-repeat top left;
364 }
364 }
365
365
366 #header #header-inner #quick li a:hover span {
366 #header #header-inner #quick li a:hover span {
367 border-left:1px solid #545454;
367 border-left:1px solid #545454;
368 }
368 }
369
369
370 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short {
370 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short {
371 border-left:none;
371 border-left:none;
372 border-right:1px solid #464646;
372 border-right:1px solid #464646;
373 }
373 }
374
374
375 #header #header-inner #quick ul {
375 #header #header-inner #quick ul {
376 top:29px;
376 top:29px;
377 right:0;
377 right:0;
378 min-width:200px;
378 min-width:200px;
379 display:none;
379 display:none;
380 position:absolute;
380 position:absolute;
381 background:#FFF;
381 background:#FFF;
382 border:1px solid #666;
382 border:1px solid #666;
383 border-top:1px solid #003367;
383 border-top:1px solid #003367;
384 z-index:100;
384 z-index:100;
385 margin:0;
385 margin:0;
386 padding:0;
386 padding:0;
387 }
387 }
388
388
389 #header #header-inner #quick ul.repo_switcher {
389 #header #header-inner #quick ul.repo_switcher {
390 max-height:275px;
390 max-height:275px;
391 overflow-x:hidden;
391 overflow-x:hidden;
392 overflow-y:auto;
392 overflow-y:auto;
393 }
393 }
394 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
394 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
395 float:none;
395 float:none;
396 margin:0;
396 margin:0;
397 border-bottom:2px solid #003367;
397 border-bottom:2px solid #003367;
398 }
398 }
399
399
400
400
401 #header #header-inner #quick .repo_switcher_type{
401 #header #header-inner #quick .repo_switcher_type{
402 position:absolute;
402 position:absolute;
403 left:0;
403 left:0;
404 top:9px;
404 top:9px;
405
405
406 }
406 }
407 #header #header-inner #quick li ul li {
407 #header #header-inner #quick li ul li {
408 border-bottom:1px solid #ddd;
408 border-bottom:1px solid #ddd;
409 }
409 }
410
410
411 #header #header-inner #quick li ul li a {
411 #header #header-inner #quick li ul li a {
412 width:182px;
412 width:182px;
413 height:auto;
413 height:auto;
414 display:block;
414 display:block;
415 float:left;
415 float:left;
416 background:#FFF;
416 background:#FFF;
417 color:#003367;
417 color:#003367;
418 font-weight:400;
418 font-weight:400;
419 margin:0;
419 margin:0;
420 padding:7px 9px;
420 padding:7px 9px;
421 }
421 }
422
422
423 #header #header-inner #quick li ul li a:hover {
423 #header #header-inner #quick li ul li a:hover {
424 color:#000;
424 color:#000;
425 background:#FFF;
425 background:#FFF;
426 }
426 }
427
427
428 #header #header-inner #quick ul ul {
428 #header #header-inner #quick ul ul {
429 top:auto;
429 top:auto;
430 }
430 }
431
431
432 #header #header-inner #quick li ul ul {
432 #header #header-inner #quick li ul ul {
433 right:200px;
433 right:200px;
434 max-height:275px;
434 max-height:275px;
435 overflow:auto;
435 overflow:auto;
436 overflow-x:hidden;
436 overflow-x:hidden;
437 white-space:normal;
437 white-space:normal;
438 }
438 }
439
439
440 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover {
440 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover {
441 background:url("../images/icons/book.png") no-repeat scroll 4px 9px #FFF;
441 background:url("../images/icons/book.png") no-repeat scroll 4px 9px #FFF;
442 width:167px;
442 width:167px;
443 margin:0;
443 margin:0;
444 padding:12px 9px 7px 24px;
444 padding:12px 9px 7px 24px;
445 }
445 }
446
446
447 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover {
447 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover {
448 background:url("../images/icons/lock.png") no-repeat scroll 4px 9px #FFF;
448 background:url("../images/icons/lock.png") no-repeat scroll 4px 9px #FFF;
449 min-width:167px;
449 min-width:167px;
450 margin:0;
450 margin:0;
451 padding:12px 9px 7px 24px;
451 padding:12px 9px 7px 24px;
452 }
452 }
453
453
454 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover {
454 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover {
455 background:url("../images/icons/lock_open.png") no-repeat scroll 4px 9px #FFF;
455 background:url("../images/icons/lock_open.png") no-repeat scroll 4px 9px #FFF;
456 min-width:167px;
456 min-width:167px;
457 margin:0;
457 margin:0;
458 padding:12px 9px 7px 24px;
458 padding:12px 9px 7px 24px;
459 }
459 }
460
460
461 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover {
461 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover {
462 background:url("../images/icons/hgicon.png") no-repeat scroll 4px 9px #FFF;
462 background:url("../images/icons/hgicon.png") no-repeat scroll 4px 9px #FFF;
463 min-width:167px;
463 min-width:167px;
464 margin:0 0 0 14px;
464 margin:0 0 0 14px;
465 padding:12px 9px 7px 24px;
465 padding:12px 9px 7px 24px;
466 }
466 }
467
467
468 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover {
468 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover {
469 background:url("../images/icons/giticon.png") no-repeat scroll 4px 9px #FFF;
469 background:url("../images/icons/giticon.png") no-repeat scroll 4px 9px #FFF;
470 min-width:167px;
470 min-width:167px;
471 margin:0 0 0 14px;
471 margin:0 0 0 14px;
472 padding:12px 9px 7px 24px;
472 padding:12px 9px 7px 24px;
473 }
473 }
474
474
475 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover {
475 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover {
476 background:url("../images/icons/database_edit.png") no-repeat scroll 4px 9px #FFF;
476 background:url("../images/icons/database_edit.png") no-repeat scroll 4px 9px #FFF;
477 width:167px;
477 width:167px;
478 margin:0;
478 margin:0;
479 padding:12px 9px 7px 24px;
479 padding:12px 9px 7px 24px;
480 }
480 }
481
481
482 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover {
482 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover {
483 background:url("../images/icons/database_link.png") no-repeat scroll 4px 9px #FFF;
483 background:url("../images/icons/database_link.png") no-repeat scroll 4px 9px #FFF;
484 width:167px;
484 width:167px;
485 margin:0;
485 margin:0;
486 padding:12px 9px 7px 24px;
486 padding:12px 9px 7px 24px;
487 }
487 }
488
488
489 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover {
489 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover {
490 background:#FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
490 background:#FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
491 width:167px;
491 width:167px;
492 margin:0;
492 margin:0;
493 padding:12px 9px 7px 24px;
493 padding:12px 9px 7px 24px;
494 }
494 }
495
495
496 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover {
496 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover {
497 background:#FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
497 background:#FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
498 width:167px;
498 width:167px;
499 margin:0;
499 margin:0;
500 padding:12px 9px 7px 24px;
500 padding:12px 9px 7px 24px;
501 }
501 }
502
502
503 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover {
503 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover {
504 background:#FFF url("../images/icons/cog.png") no-repeat 4px 9px;
504 background:#FFF url("../images/icons/cog.png") no-repeat 4px 9px;
505 width:167px;
505 width:167px;
506 margin:0;
506 margin:0;
507 padding:12px 9px 7px 24px;
507 padding:12px 9px 7px 24px;
508 }
508 }
509
509
510 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover {
510 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover {
511 background:#FFF url("../images/icons/key.png") no-repeat 4px 9px;
511 background:#FFF url("../images/icons/key.png") no-repeat 4px 9px;
512 width:167px;
512 width:167px;
513 margin:0;
513 margin:0;
514 padding:12px 9px 7px 24px;
514 padding:12px 9px 7px 24px;
515 }
515 }
516
516
517 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover {
517 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover {
518 background:#FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
518 background:#FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
519 width:167px;
519 width:167px;
520 margin:0;
520 margin:0;
521 padding:12px 9px 7px 24px;
521 padding:12px 9px 7px 24px;
522 }
522 }
523
523
524 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover {
524 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover {
525 background:#FFF url("../images/icons/arrow_divide.png") no-repeat 4px 9px;
525 background:#FFF url("../images/icons/arrow_divide.png") no-repeat 4px 9px;
526 width:167px;
526 width:167px;
527 margin:0;
527 margin:0;
528 padding:12px 9px 7px 24px;
528 padding:12px 9px 7px 24px;
529 }
529 }
530
530
531 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover {
531 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover {
532 background:#FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
532 background:#FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
533 width:167px;
533 width:167px;
534 margin:0;
534 margin:0;
535 padding:12px 9px 7px 24px;
535 padding:12px 9px 7px 24px;
536 }
536 }
537
537
538 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover {
538 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover {
539 background:#FFF url("../images/icons/delete.png") no-repeat 4px 9px;
539 background:#FFF url("../images/icons/delete.png") no-repeat 4px 9px;
540 width:167px;
540 width:167px;
541 margin:0;
541 margin:0;
542 padding:12px 9px 7px 24px;
542 padding:12px 9px 7px 24px;
543 }
543 }
544
544
545 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover {
545 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover {
546 background:#FFF url("../images/icons/arrow_branch.png") no-repeat 4px 9px;
546 background:#FFF url("../images/icons/arrow_branch.png") no-repeat 4px 9px;
547 width:167px;
547 width:167px;
548 margin:0;
548 margin:0;
549 padding:12px 9px 7px 24px;
549 padding:12px 9px 7px 24px;
550 }
550 }
551
551
552 #header #header-inner #quick li ul li a.tags,#header #header-inner #quick li ul li a.tags:hover {
552 #header #header-inner #quick li ul li a.tags,#header #header-inner #quick li ul li a.tags:hover {
553 background:#FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
553 background:#FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
554 width:167px;
554 width:167px;
555 margin:0;
555 margin:0;
556 padding:12px 9px 7px 24px;
556 padding:12px 9px 7px 24px;
557 }
557 }
558
558
559 #header #header-inner #quick li ul li a.admin,#header #header-inner #quick li ul li a.admin:hover {
559 #header #header-inner #quick li ul li a.admin,#header #header-inner #quick li ul li a.admin:hover {
560 background:#FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
560 background:#FFF url("../images/icons/cog_edit.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
566
567 .quick_repo_menu{
567 .quick_repo_menu{
568 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
568 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
569 cursor: pointer;
569 cursor: pointer;
570 width: 8px;
570 width: 8px;
571 }
571 }
572 .quick_repo_menu.active{
572 .quick_repo_menu.active{
573 background: #FFF url("../images/horizontal-indicator.png") 4px 50% no-repeat !important;
573 background: #FFF url("../images/horizontal-indicator.png") 4px 50% no-repeat !important;
574 cursor: pointer;
574 cursor: pointer;
575 }
575 }
576 .quick_repo_menu .menu_items{
576 .quick_repo_menu .menu_items{
577 margin-top:6px;
577 margin-top:6px;
578 width:150px;
578 width:150px;
579 position: absolute;
579 position: absolute;
580 background-color:#FFF;
580 background-color:#FFF;
581 background: none repeat scroll 0 0 #FFFFFF;
581 background: none repeat scroll 0 0 #FFFFFF;
582 border-color: #003367 #666666 #666666;
582 border-color: #003367 #666666 #666666;
583 border-right: 1px solid #666666;
583 border-right: 1px solid #666666;
584 border-style: solid;
584 border-style: solid;
585 border-width: 1px;
585 border-width: 1px;
586 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
586 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
587 }
587 }
588 .quick_repo_menu .menu_items li{
588 .quick_repo_menu .menu_items li{
589 padding:0 !important;
589 padding:0 !important;
590 }
590 }
591 .quick_repo_menu .menu_items a{
591 .quick_repo_menu .menu_items a{
592 display: block;
592 display: block;
593 padding: 4px 12px 4px 8px;
593 padding: 4px 12px 4px 8px;
594 }
594 }
595 .quick_repo_menu .menu_items a:hover{
595 .quick_repo_menu .menu_items a:hover{
596 background-color: #EEE;
596 background-color: #EEE;
597 text-decoration: none;
597 text-decoration: none;
598
598
599 }
599 }
600 .quick_repo_menu .menu_items .icon img{
600 .quick_repo_menu .menu_items .icon img{
601 margin-bottom:-2px;
601 margin-bottom:-2px;
602 }
602 }
603 .quick_repo_menu .menu_items.hidden{
603 .quick_repo_menu .menu_items.hidden{
604 display: none;
604 display: none;
605 }
605 }
606
606
607 #content #left {
607 #content #left {
608 left:0;
608 left:0;
609 width:280px;
609 width:280px;
610 position:absolute;
610 position:absolute;
611 }
611 }
612
612
613 #content #right {
613 #content #right {
614 margin:0 60px 10px 290px;
614 margin:0 60px 10px 290px;
615 }
615 }
616
616
617 #content div.box {
617 #content div.box {
618 clear:both;
618 clear:both;
619 overflow:hidden;
619 overflow:hidden;
620 background:#fff;
620 background:#fff;
621 margin:0 0 10px;
621 margin:0 0 10px;
622 padding:0 0 10px;
622 padding:0 0 10px;
623 -webkit-border-radius: 4px 4px 4px 4px;
623 -webkit-border-radius: 4px 4px 4px 4px;
624 -khtml-border-radius: 4px 4px 4px 4px;
624 -khtml-border-radius: 4px 4px 4px 4px;
625 -moz-border-radius: 4px 4px 4px 4px;
625 -moz-border-radius: 4px 4px 4px 4px;
626 border-radius: 4px 4px 4px 4px;
626 border-radius: 4px 4px 4px 4px;
627 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
627 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
628
628
629 }
629 }
630
630
631 #content div.box-left {
631 #content div.box-left {
632 width:49%;
632 width:49%;
633 clear:none;
633 clear:none;
634 float:left;
634 float:left;
635 margin:0 0 10px;
635 margin:0 0 10px;
636 }
636 }
637
637
638 #content div.box-right {
638 #content div.box-right {
639 width:49%;
639 width:49%;
640 clear:none;
640 clear:none;
641 float:right;
641 float:right;
642 margin:0 0 10px;
642 margin:0 0 10px;
643 }
643 }
644
644
645 #content div.box div.title {
645 #content div.box div.title {
646 clear:both;
646 clear:both;
647 overflow:hidden;
647 overflow:hidden;
648 background:#369 url("../images/header_inner.png") repeat-x;
648 background:#369 url("../images/header_inner.png") repeat-x;
649 margin:0 0 20px;
649 margin:0 0 20px;
650 padding:0;
650 padding:0;
651 }
651 }
652
652
653 #content div.box div.title h5 {
653 #content div.box div.title h5 {
654 float:left;
654 float:left;
655 border:none;
655 border:none;
656 color:#fff;
656 color:#fff;
657 text-transform:uppercase;
657 text-transform:uppercase;
658 margin:0;
658 margin:0;
659 padding:11px 0 11px 10px;
659 padding:11px 0 11px 10px;
660 }
660 }
661
661
662 #content div.box div.title ul.links li {
662 #content div.box div.title ul.links li {
663 list-style:none;
663 list-style:none;
664 float:left;
664 float:left;
665 margin:0;
665 margin:0;
666 padding:0;
666 padding:0;
667 }
667 }
668
668
669 #content div.box div.title ul.links li a {
669 #content div.box div.title ul.links li a {
670 border-left: 1px solid #316293;
670 border-left: 1px solid #316293;
671 color: #FFFFFF;
671 color: #FFFFFF;
672 display: block;
672 display: block;
673 float: left;
673 float: left;
674 font-size: 13px;
674 font-size: 13px;
675 font-weight: 700;
675 font-weight: 700;
676 height: 1%;
676 height: 1%;
677 margin: 0;
677 margin: 0;
678 padding: 11px 22px 12px;
678 padding: 11px 22px 12px;
679 text-decoration: none;
679 text-decoration: none;
680 }
680 }
681
681
682 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6 {
682 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6 {
683 clear:both;
683 clear:both;
684 overflow:hidden;
684 overflow:hidden;
685 border-bottom:1px solid #DDD;
685 border-bottom:1px solid #DDD;
686 margin:10px 20px;
686 margin:10px 20px;
687 padding:0 0 15px;
687 padding:0 0 15px;
688 }
688 }
689
689
690 #content div.box p {
690 #content div.box p {
691 color:#5f5f5f;
691 color:#5f5f5f;
692 font-size:12px;
692 font-size:12px;
693 line-height:150%;
693 line-height:150%;
694 margin:0 24px 10px;
694 margin:0 24px 10px;
695 padding:0;
695 padding:0;
696 }
696 }
697
697
698 #content div.box blockquote {
698 #content div.box blockquote {
699 border-left:4px solid #DDD;
699 border-left:4px solid #DDD;
700 color:#5f5f5f;
700 color:#5f5f5f;
701 font-size:11px;
701 font-size:11px;
702 line-height:150%;
702 line-height:150%;
703 margin:0 34px;
703 margin:0 34px;
704 padding:0 0 0 14px;
704 padding:0 0 0 14px;
705 }
705 }
706
706
707 #content div.box blockquote p {
707 #content div.box blockquote p {
708 margin:10px 0;
708 margin:10px 0;
709 padding:0;
709 padding:0;
710 }
710 }
711
711
712 #content div.box dl {
712 #content div.box dl {
713 margin:10px 24px;
713 margin:10px 24px;
714 }
714 }
715
715
716 #content div.box dt {
716 #content div.box dt {
717 font-size:12px;
717 font-size:12px;
718 margin:0;
718 margin:0;
719 }
719 }
720
720
721 #content div.box dd {
721 #content div.box dd {
722 font-size:12px;
722 font-size:12px;
723 margin:0;
723 margin:0;
724 padding:8px 0 8px 15px;
724 padding:8px 0 8px 15px;
725 }
725 }
726
726
727 #content div.box li {
727 #content div.box li {
728 font-size:12px;
728 font-size:12px;
729 padding:4px 0;
729 padding:4px 0;
730 }
730 }
731
731
732 #content div.box ul.disc,#content div.box ul.circle {
732 #content div.box ul.disc,#content div.box ul.circle {
733 margin:10px 24px 10px 38px;
733 margin:10px 24px 10px 38px;
734 }
734 }
735
735
736 #content div.box ul.square {
736 #content div.box ul.square {
737 margin:10px 24px 10px 40px;
737 margin:10px 24px 10px 40px;
738 }
738 }
739
739
740 #content div.box img.left {
740 #content div.box img.left {
741 border:none;
741 border:none;
742 float:left;
742 float:left;
743 margin:10px 10px 10px 0;
743 margin:10px 10px 10px 0;
744 }
744 }
745
745
746 #content div.box img.right {
746 #content div.box img.right {
747 border:none;
747 border:none;
748 float:right;
748 float:right;
749 margin:10px 0 10px 10px;
749 margin:10px 0 10px 10px;
750 }
750 }
751
751
752 #content div.box div.messages {
752 #content div.box div.messages {
753 clear:both;
753 clear:both;
754 overflow:hidden;
754 overflow:hidden;
755 margin:0 20px;
755 margin:0 20px;
756 padding:0;
756 padding:0;
757 }
757 }
758
758
759 #content div.box div.message {
759 #content div.box div.message {
760 clear:both;
760 clear:both;
761 overflow:hidden;
761 overflow:hidden;
762 margin:0;
762 margin:0;
763 padding:10px 0;
763 padding:10px 0;
764 }
764 }
765
765
766 #content div.box div.message a {
766 #content div.box div.message a {
767 font-weight:400 !important;
767 font-weight:400 !important;
768 }
768 }
769
769
770 #content div.box div.message div.image {
770 #content div.box div.message div.image {
771 float:left;
771 float:left;
772 margin:9px 0 0 5px;
772 margin:9px 0 0 5px;
773 padding:6px;
773 padding:6px;
774 }
774 }
775
775
776 #content div.box div.message div.image img {
776 #content div.box div.message div.image img {
777 vertical-align:middle;
777 vertical-align:middle;
778 margin:0;
778 margin:0;
779 }
779 }
780
780
781 #content div.box div.message div.text {
781 #content div.box div.message div.text {
782 float:left;
782 float:left;
783 margin:0;
783 margin:0;
784 padding:9px 6px;
784 padding:9px 6px;
785 }
785 }
786
786
787 #content div.box div.message div.dismiss a {
787 #content div.box div.message div.dismiss a {
788 height:16px;
788 height:16px;
789 width:16px;
789 width:16px;
790 display:block;
790 display:block;
791 background:url("../images/icons/cross.png") no-repeat;
791 background:url("../images/icons/cross.png") no-repeat;
792 margin:15px 14px 0 0;
792 margin:15px 14px 0 0;
793 padding:0;
793 padding:0;
794 }
794 }
795
795
796 #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 {
796 #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 {
797 border:none;
797 border:none;
798 margin:0;
798 margin:0;
799 padding:0;
799 padding:0;
800 }
800 }
801
801
802 #content div.box div.message div.text span {
802 #content div.box div.message div.text span {
803 height:1%;
803 height:1%;
804 display:block;
804 display:block;
805 margin:0;
805 margin:0;
806 padding:5px 0 0;
806 padding:5px 0 0;
807 }
807 }
808
808
809 #content div.box div.message-error {
809 #content div.box div.message-error {
810 height:1%;
810 height:1%;
811 clear:both;
811 clear:both;
812 overflow:hidden;
812 overflow:hidden;
813 background:#FBE3E4;
813 background:#FBE3E4;
814 border:1px solid #FBC2C4;
814 border:1px solid #FBC2C4;
815 color:#860006;
815 color:#860006;
816 }
816 }
817
817
818 #content div.box div.message-error h6 {
818 #content div.box div.message-error h6 {
819 color:#860006;
819 color:#860006;
820 }
820 }
821
821
822 #content div.box div.message-warning {
822 #content div.box div.message-warning {
823 height:1%;
823 height:1%;
824 clear:both;
824 clear:both;
825 overflow:hidden;
825 overflow:hidden;
826 background:#FFF6BF;
826 background:#FFF6BF;
827 border:1px solid #FFD324;
827 border:1px solid #FFD324;
828 color:#5f5200;
828 color:#5f5200;
829 }
829 }
830
830
831 #content div.box div.message-warning h6 {
831 #content div.box div.message-warning h6 {
832 color:#5f5200;
832 color:#5f5200;
833 }
833 }
834
834
835 #content div.box div.message-notice {
835 #content div.box div.message-notice {
836 height:1%;
836 height:1%;
837 clear:both;
837 clear:both;
838 overflow:hidden;
838 overflow:hidden;
839 background:#8FBDE0;
839 background:#8FBDE0;
840 border:1px solid #6BACDE;
840 border:1px solid #6BACDE;
841 color:#003863;
841 color:#003863;
842 }
842 }
843
843
844 #content div.box div.message-notice h6 {
844 #content div.box div.message-notice h6 {
845 color:#003863;
845 color:#003863;
846 }
846 }
847
847
848 #content div.box div.message-success {
848 #content div.box div.message-success {
849 height:1%;
849 height:1%;
850 clear:both;
850 clear:both;
851 overflow:hidden;
851 overflow:hidden;
852 background:#E6EFC2;
852 background:#E6EFC2;
853 border:1px solid #C6D880;
853 border:1px solid #C6D880;
854 color:#4e6100;
854 color:#4e6100;
855 }
855 }
856
856
857 #content div.box div.message-success h6 {
857 #content div.box div.message-success h6 {
858 color:#4e6100;
858 color:#4e6100;
859 }
859 }
860
860
861 #content div.box div.form div.fields div.field {
861 #content div.box div.form div.fields div.field {
862 height:1%;
862 height:1%;
863 border-bottom:1px solid #DDD;
863 border-bottom:1px solid #DDD;
864 clear:both;
864 clear:both;
865 margin:0;
865 margin:0;
866 padding:10px 0;
866 padding:10px 0;
867 }
867 }
868
868
869 #content div.box div.form div.fields div.field-first {
869 #content div.box div.form div.fields div.field-first {
870 padding:0 0 10px;
870 padding:0 0 10px;
871 }
871 }
872
872
873 #content div.box div.form div.fields div.field-noborder {
873 #content div.box div.form div.fields div.field-noborder {
874 border-bottom:0 !important;
874 border-bottom:0 !important;
875 }
875 }
876
876
877 #content div.box div.form div.fields div.field span.error-message {
877 #content div.box div.form div.fields div.field span.error-message {
878 height:1%;
878 height:1%;
879 display:inline-block;
879 display:inline-block;
880 color:red;
880 color:red;
881 margin:8px 0 0 4px;
881 margin:8px 0 0 4px;
882 padding:0;
882 padding:0;
883 }
883 }
884
884
885 #content div.box div.form div.fields div.field span.success {
885 #content div.box div.form div.fields div.field span.success {
886 height:1%;
886 height:1%;
887 display:block;
887 display:block;
888 color:#316309;
888 color:#316309;
889 margin:8px 0 0;
889 margin:8px 0 0;
890 padding:0;
890 padding:0;
891 }
891 }
892
892
893 #content div.box div.form div.fields div.field div.label {
893 #content div.box div.form div.fields div.field div.label {
894 left:70px;
894 left:70px;
895 width:155px;
895 width:155px;
896 position:absolute;
896 position:absolute;
897 margin:0;
897 margin:0;
898 padding:8px 0 0 5px;
898 padding:8px 0 0 5px;
899 }
899 }
900
900
901 #content div.box-left div.form div.fields div.field div.label,#content div.box-right div.form div.fields div.field div.label {
901 #content div.box-left div.form div.fields div.field div.label,#content div.box-right div.form div.fields div.field div.label {
902 clear:both;
902 clear:both;
903 overflow:hidden;
903 overflow:hidden;
904 left:0;
904 left:0;
905 width:auto;
905 width:auto;
906 position:relative;
906 position:relative;
907 margin:0;
907 margin:0;
908 padding:0 0 8px;
908 padding:0 0 8px;
909 }
909 }
910
910
911 #content div.box div.form div.fields div.field div.label-select {
911 #content div.box div.form div.fields div.field div.label-select {
912 padding:5px 0 0 5px;
912 padding:5px 0 0 5px;
913 }
913 }
914
914
915 #content div.box-left div.form div.fields div.field div.label-select,#content div.box-right div.form div.fields div.field div.label-select {
915 #content div.box-left div.form div.fields div.field div.label-select,#content div.box-right div.form div.fields div.field div.label-select {
916 padding:0 0 8px;
916 padding:0 0 8px;
917 }
917 }
918
918
919 #content div.box-left div.form div.fields div.field div.label-textarea,#content div.box-right div.form div.fields div.field div.label-textarea {
919 #content div.box-left div.form div.fields div.field div.label-textarea,#content div.box-right div.form div.fields div.field div.label-textarea {
920 padding:0 0 8px !important;
920 padding:0 0 8px !important;
921 }
921 }
922
922
923 #content div.box div.form div.fields div.field div.label label, div.label label{
923 #content div.box div.form div.fields div.field div.label label, div.label label{
924 color:#393939;
924 color:#393939;
925 font-weight:700;
925 font-weight:700;
926 }
926 }
927
927
928 #content div.box div.form div.fields div.field div.input {
928 #content div.box div.form div.fields div.field div.input {
929 margin:0 0 0 200px;
929 margin:0 0 0 200px;
930 }
930 }
931 #content div.box div.form div.fields div.field div.file {
931 #content div.box div.form div.fields div.field div.file {
932 margin:0 0 0 200px;
932 margin:0 0 0 200px;
933 }
933 }
934 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input {
934 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input {
935 margin:0 0 0 0px;
935 margin:0 0 0 0px;
936 }
936 }
937
937
938 #content div.box div.form div.fields div.field div.input input {
938 #content div.box div.form div.fields div.field div.input input {
939 background:#FFF;
939 background:#FFF;
940 border-top:1px solid #b3b3b3;
940 border-top:1px solid #b3b3b3;
941 border-left:1px solid #b3b3b3;
941 border-left:1px solid #b3b3b3;
942 border-right:1px solid #eaeaea;
942 border-right:1px solid #eaeaea;
943 border-bottom:1px solid #eaeaea;
943 border-bottom:1px solid #eaeaea;
944 color:#000;
944 color:#000;
945 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
945 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
946 font-size:11px;
946 font-size:11px;
947 margin:0;
947 margin:0;
948 padding:7px 7px 6px;
948 padding:7px 7px 6px;
949 }
949 }
950
950
951 #content div.box div.form div.fields div.field div.file input {
951 #content div.box div.form div.fields div.field div.file input {
952 background: none repeat scroll 0 0 #FFFFFF;
952 background: none repeat scroll 0 0 #FFFFFF;
953 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
953 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
954 border-style: solid;
954 border-style: solid;
955 border-width: 1px;
955 border-width: 1px;
956 color: #000000;
956 color: #000000;
957 font-family: Lucida Grande,Verdana,Lucida Sans Regular,Lucida Sans Unicode,Arial,sans-serif;
957 font-family: Lucida Grande,Verdana,Lucida Sans Regular,Lucida Sans Unicode,Arial,sans-serif;
958 font-size: 11px;
958 font-size: 11px;
959 margin: 0;
959 margin: 0;
960 padding: 7px 7px 6px;
960 padding: 7px 7px 6px;
961 }
961 }
962
962
963
963
964 #content div.box div.form div.fields div.field div.input input.small {
964 #content div.box div.form div.fields div.field div.input input.small {
965 width:30%;
965 width:30%;
966 }
966 }
967
967
968 #content div.box div.form div.fields div.field div.input input.medium {
968 #content div.box div.form div.fields div.field div.input input.medium {
969 width:55%;
969 width:55%;
970 }
970 }
971
971
972 #content div.box div.form div.fields div.field div.input input.large {
972 #content div.box div.form div.fields div.field div.input input.large {
973 width:85%;
973 width:85%;
974 }
974 }
975
975
976 #content div.box div.form div.fields div.field div.input input.date {
976 #content div.box div.form div.fields div.field div.input input.date {
977 width:177px;
977 width:177px;
978 }
978 }
979
979
980 #content div.box div.form div.fields div.field div.input input.button {
980 #content div.box div.form div.fields div.field div.input input.button {
981 background:#D4D0C8;
981 background:#D4D0C8;
982 border-top:1px solid #FFF;
982 border-top:1px solid #FFF;
983 border-left:1px solid #FFF;
983 border-left:1px solid #FFF;
984 border-right:1px solid #404040;
984 border-right:1px solid #404040;
985 border-bottom:1px solid #404040;
985 border-bottom:1px solid #404040;
986 color:#000;
986 color:#000;
987 margin:0;
987 margin:0;
988 padding:4px 8px;
988 padding:4px 8px;
989 }
989 }
990
990
991 #content div.box div.form div.fields div.field div.textarea {
991 #content div.box div.form div.fields div.field div.textarea {
992 border-top:1px solid #b3b3b3;
992 border-top:1px solid #b3b3b3;
993 border-left:1px solid #b3b3b3;
993 border-left:1px solid #b3b3b3;
994 border-right:1px solid #eaeaea;
994 border-right:1px solid #eaeaea;
995 border-bottom:1px solid #eaeaea;
995 border-bottom:1px solid #eaeaea;
996 margin:0 0 0 200px;
996 margin:0 0 0 200px;
997 padding:10px;
997 padding:10px;
998 }
998 }
999
999
1000 #content div.box div.form div.fields div.field div.textarea-editor {
1000 #content div.box div.form div.fields div.field div.textarea-editor {
1001 border:1px solid #ddd;
1001 border:1px solid #ddd;
1002 padding:0;
1002 padding:0;
1003 }
1003 }
1004
1004
1005 #content div.box div.form div.fields div.field div.textarea textarea {
1005 #content div.box div.form div.fields div.field div.textarea textarea {
1006 width:100%;
1006 width:100%;
1007 height:220px;
1007 height:220px;
1008 overflow:hidden;
1008 overflow:hidden;
1009 background:#FFF;
1009 background:#FFF;
1010 color:#000;
1010 color:#000;
1011 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1011 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1012 font-size:11px;
1012 font-size:11px;
1013 outline:none;
1013 outline:none;
1014 border-width:0;
1014 border-width:0;
1015 margin:0;
1015 margin:0;
1016 padding:0;
1016 padding:0;
1017 }
1017 }
1018
1018
1019 #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 {
1019 #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 {
1020 width:100%;
1020 width:100%;
1021 height:100px;
1021 height:100px;
1022 }
1022 }
1023
1023
1024 #content div.box div.form div.fields div.field div.textarea table {
1024 #content div.box div.form div.fields div.field div.textarea table {
1025 width:100%;
1025 width:100%;
1026 border:none;
1026 border:none;
1027 margin:0;
1027 margin:0;
1028 padding:0;
1028 padding:0;
1029 }
1029 }
1030
1030
1031 #content div.box div.form div.fields div.field div.textarea table td {
1031 #content div.box div.form div.fields div.field div.textarea table td {
1032 background:#DDD;
1032 background:#DDD;
1033 border:none;
1033 border:none;
1034 padding:0;
1034 padding:0;
1035 }
1035 }
1036
1036
1037 #content div.box div.form div.fields div.field div.textarea table td table {
1037 #content div.box div.form div.fields div.field div.textarea table td table {
1038 width:auto;
1038 width:auto;
1039 border:none;
1039 border:none;
1040 margin:0;
1040 margin:0;
1041 padding:0;
1041 padding:0;
1042 }
1042 }
1043
1043
1044 #content div.box div.form div.fields div.field div.textarea table td table td {
1044 #content div.box div.form div.fields div.field div.textarea table td table td {
1045 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1045 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1046 font-size:11px;
1046 font-size:11px;
1047 padding:5px 5px 5px 0;
1047 padding:5px 5px 5px 0;
1048 }
1048 }
1049
1049
1050 #content div.box div.form div.fields div.field input[type=text]:focus,#content div.box div.form div.fields div.field input[type=password]:focus,#content div.box div.form div.fields div.field input[type=file]:focus,#content div.box div.form div.fields div.field textarea:focus,#content div.box div.form div.fields div.field select:focus {
1050 #content div.box div.form div.fields div.field input[type=text]:focus,#content div.box div.form div.fields div.field input[type=password]:focus,#content div.box div.form div.fields div.field input[type=file]:focus,#content div.box div.form div.fields div.field textarea:focus,#content div.box div.form div.fields div.field select:focus {
1051 background:#f6f6f6;
1051 background:#f6f6f6;
1052 border-color:#666;
1052 border-color:#666;
1053 }
1053 }
1054
1054
1055 div.form div.fields div.field div.button {
1055 div.form div.fields div.field div.button {
1056 margin:0;
1056 margin:0;
1057 padding:0 0 0 8px;
1057 padding:0 0 0 8px;
1058 }
1058 }
1059
1059
1060
1060
1061 #content div.box table {
1061 #content div.box table {
1062 width:100%;
1062 width:100%;
1063 border-collapse:collapse;
1063 border-collapse:collapse;
1064 margin:0;
1064 margin:0;
1065 padding:0;
1065 padding:0;
1066 border: 1px solid #eee;
1066 border: 1px solid #eee;
1067 }
1067 }
1068
1068
1069 #content div.box table th {
1069 #content div.box table th {
1070 background:#eee;
1070 background:#eee;
1071 border-bottom:1px solid #ddd;
1071 border-bottom:1px solid #ddd;
1072 padding:5px 0px 5px 5px;
1072 padding:5px 0px 5px 5px;
1073 }
1073 }
1074
1074
1075 #content div.box table th.left {
1075 #content div.box table th.left {
1076 text-align:left;
1076 text-align:left;
1077 }
1077 }
1078
1078
1079 #content div.box table th.right {
1079 #content div.box table th.right {
1080 text-align:right;
1080 text-align:right;
1081 }
1081 }
1082
1082
1083 #content div.box table th.center {
1083 #content div.box table th.center {
1084 text-align:center;
1084 text-align:center;
1085 }
1085 }
1086
1086
1087 #content div.box table th.selected {
1087 #content div.box table th.selected {
1088 vertical-align:middle;
1088 vertical-align:middle;
1089 padding:0;
1089 padding:0;
1090 }
1090 }
1091
1091
1092 #content div.box table td {
1092 #content div.box table td {
1093 background:#fff;
1093 background:#fff;
1094 border-bottom:1px solid #cdcdcd;
1094 border-bottom:1px solid #cdcdcd;
1095 vertical-align:middle;
1095 vertical-align:middle;
1096 padding:5px;
1096 padding:5px;
1097 }
1097 }
1098
1098
1099 #content div.box table tr.selected td {
1099 #content div.box table tr.selected td {
1100 background:#FFC;
1100 background:#FFC;
1101 }
1101 }
1102
1102
1103 #content div.box table td.selected {
1103 #content div.box table td.selected {
1104 width:3%;
1104 width:3%;
1105 text-align:center;
1105 text-align:center;
1106 vertical-align:middle;
1106 vertical-align:middle;
1107 padding:0;
1107 padding:0;
1108 }
1108 }
1109
1109
1110 #content div.box table td.action {
1110 #content div.box table td.action {
1111 width:45%;
1111 width:45%;
1112 text-align:left;
1112 text-align:left;
1113 }
1113 }
1114
1114
1115 #content div.box table td.date {
1115 #content div.box table td.date {
1116 width:33%;
1116 width:33%;
1117 text-align:center;
1117 text-align:center;
1118 }
1118 }
1119
1119
1120 #content div.box div.action {
1120 #content div.box div.action {
1121 float:right;
1121 float:right;
1122 background:#FFF;
1122 background:#FFF;
1123 text-align:right;
1123 text-align:right;
1124 margin:10px 0 0;
1124 margin:10px 0 0;
1125 padding:0;
1125 padding:0;
1126 }
1126 }
1127
1127
1128 #content div.box div.action select {
1128 #content div.box div.action select {
1129 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1129 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1130 font-size:11px;
1130 font-size:11px;
1131 margin:0;
1131 margin:0;
1132 }
1132 }
1133
1133
1134 #content div.box div.action .ui-selectmenu {
1134 #content div.box div.action .ui-selectmenu {
1135 margin:0;
1135 margin:0;
1136 padding:0;
1136 padding:0;
1137 }
1137 }
1138
1138
1139 #content div.box div.pagination {
1139 #content div.box div.pagination {
1140 height:1%;
1140 height:1%;
1141 clear:both;
1141 clear:both;
1142 overflow:hidden;
1142 overflow:hidden;
1143 margin:10px 0 0;
1143 margin:10px 0 0;
1144 padding:0;
1144 padding:0;
1145 }
1145 }
1146
1146
1147 #content div.box div.pagination ul.pager {
1147 #content div.box div.pagination ul.pager {
1148 float:right;
1148 float:right;
1149 text-align:right;
1149 text-align:right;
1150 margin:0;
1150 margin:0;
1151 padding:0;
1151 padding:0;
1152 }
1152 }
1153
1153
1154 #content div.box div.pagination ul.pager li {
1154 #content div.box div.pagination ul.pager li {
1155 height:1%;
1155 height:1%;
1156 float:left;
1156 float:left;
1157 list-style:none;
1157 list-style:none;
1158 background:#ebebeb url("../images/pager.png") repeat-x;
1158 background:#ebebeb url("../images/pager.png") repeat-x;
1159 border-top:1px solid #dedede;
1159 border-top:1px solid #dedede;
1160 border-left:1px solid #cfcfcf;
1160 border-left:1px solid #cfcfcf;
1161 border-right:1px solid #c4c4c4;
1161 border-right:1px solid #c4c4c4;
1162 border-bottom:1px solid #c4c4c4;
1162 border-bottom:1px solid #c4c4c4;
1163 color:#4A4A4A;
1163 color:#4A4A4A;
1164 font-weight:700;
1164 font-weight:700;
1165 margin:0 0 0 4px;
1165 margin:0 0 0 4px;
1166 padding:0;
1166 padding:0;
1167 }
1167 }
1168
1168
1169 #content div.box div.pagination ul.pager li.separator {
1169 #content div.box div.pagination ul.pager li.separator {
1170 padding:6px;
1170 padding:6px;
1171 }
1171 }
1172
1172
1173 #content div.box div.pagination ul.pager li.current {
1173 #content div.box div.pagination ul.pager li.current {
1174 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1174 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1175 border-top:1px solid #ccc;
1175 border-top:1px solid #ccc;
1176 border-left:1px solid #bebebe;
1176 border-left:1px solid #bebebe;
1177 border-right:1px solid #b1b1b1;
1177 border-right:1px solid #b1b1b1;
1178 border-bottom:1px solid #afafaf;
1178 border-bottom:1px solid #afafaf;
1179 color:#515151;
1179 color:#515151;
1180 padding:6px;
1180 padding:6px;
1181 }
1181 }
1182
1182
1183 #content div.box div.pagination ul.pager li a {
1183 #content div.box div.pagination ul.pager li a {
1184 height:1%;
1184 height:1%;
1185 display:block;
1185 display:block;
1186 float:left;
1186 float:left;
1187 color:#515151;
1187 color:#515151;
1188 text-decoration:none;
1188 text-decoration:none;
1189 margin:0;
1189 margin:0;
1190 padding:6px;
1190 padding:6px;
1191 }
1191 }
1192
1192
1193 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active {
1193 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active {
1194 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1194 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1195 border-top:1px solid #ccc;
1195 border-top:1px solid #ccc;
1196 border-left:1px solid #bebebe;
1196 border-left:1px solid #bebebe;
1197 border-right:1px solid #b1b1b1;
1197 border-right:1px solid #b1b1b1;
1198 border-bottom:1px solid #afafaf;
1198 border-bottom:1px solid #afafaf;
1199 margin:-1px;
1199 margin:-1px;
1200 }
1200 }
1201
1201
1202 #content div.box div.pagination-wh {
1202 #content div.box div.pagination-wh {
1203 height:1%;
1203 height:1%;
1204 clear:both;
1204 clear:both;
1205 overflow:hidden;
1205 overflow:hidden;
1206 text-align:right;
1206 text-align:right;
1207 margin:10px 0 0;
1207 margin:10px 0 0;
1208 padding:0;
1208 padding:0;
1209 }
1209 }
1210
1210
1211 #content div.box div.pagination-right {
1211 #content div.box div.pagination-right {
1212 float:right;
1212 float:right;
1213 }
1213 }
1214
1214
1215 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot {
1215 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot {
1216 height:1%;
1216 height:1%;
1217 float:left;
1217 float:left;
1218 background:#ebebeb url("../images/pager.png") repeat-x;
1218 background:#ebebeb url("../images/pager.png") repeat-x;
1219 border-top:1px solid #dedede;
1219 border-top:1px solid #dedede;
1220 border-left:1px solid #cfcfcf;
1220 border-left:1px solid #cfcfcf;
1221 border-right:1px solid #c4c4c4;
1221 border-right:1px solid #c4c4c4;
1222 border-bottom:1px solid #c4c4c4;
1222 border-bottom:1px solid #c4c4c4;
1223 color:#4A4A4A;
1223 color:#4A4A4A;
1224 font-weight:700;
1224 font-weight:700;
1225 margin:0 0 0 4px;
1225 margin:0 0 0 4px;
1226 padding:6px;
1226 padding:6px;
1227 }
1227 }
1228
1228
1229 #content div.box div.pagination-wh span.pager_curpage {
1229 #content div.box div.pagination-wh span.pager_curpage {
1230 height:1%;
1230 height:1%;
1231 float:left;
1231 float:left;
1232 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1232 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1233 border-top:1px solid #ccc;
1233 border-top:1px solid #ccc;
1234 border-left:1px solid #bebebe;
1234 border-left:1px solid #bebebe;
1235 border-right:1px solid #b1b1b1;
1235 border-right:1px solid #b1b1b1;
1236 border-bottom:1px solid #afafaf;
1236 border-bottom:1px solid #afafaf;
1237 color:#515151;
1237 color:#515151;
1238 font-weight:700;
1238 font-weight:700;
1239 margin:0 0 0 4px;
1239 margin:0 0 0 4px;
1240 padding:6px;
1240 padding:6px;
1241 }
1241 }
1242
1242
1243 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active {
1243 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active {
1244 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1244 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1245 border-top:1px solid #ccc;
1245 border-top:1px solid #ccc;
1246 border-left:1px solid #bebebe;
1246 border-left:1px solid #bebebe;
1247 border-right:1px solid #b1b1b1;
1247 border-right:1px solid #b1b1b1;
1248 border-bottom:1px solid #afafaf;
1248 border-bottom:1px solid #afafaf;
1249 text-decoration:none;
1249 text-decoration:none;
1250 }
1250 }
1251
1251
1252 #content div.box div.traffic div.legend {
1252 #content div.box div.traffic div.legend {
1253 clear:both;
1253 clear:both;
1254 overflow:hidden;
1254 overflow:hidden;
1255 border-bottom:1px solid #ddd;
1255 border-bottom:1px solid #ddd;
1256 margin:0 0 10px;
1256 margin:0 0 10px;
1257 padding:0 0 10px;
1257 padding:0 0 10px;
1258 }
1258 }
1259
1259
1260 #content div.box div.traffic div.legend h6 {
1260 #content div.box div.traffic div.legend h6 {
1261 float:left;
1261 float:left;
1262 border:none;
1262 border:none;
1263 margin:0;
1263 margin:0;
1264 padding:0;
1264 padding:0;
1265 }
1265 }
1266
1266
1267 #content div.box div.traffic div.legend li {
1267 #content div.box div.traffic div.legend li {
1268 list-style:none;
1268 list-style:none;
1269 float:left;
1269 float:left;
1270 font-size:11px;
1270 font-size:11px;
1271 margin:0;
1271 margin:0;
1272 padding:0 8px 0 4px;
1272 padding:0 8px 0 4px;
1273 }
1273 }
1274
1274
1275 #content div.box div.traffic div.legend li.visits {
1275 #content div.box div.traffic div.legend li.visits {
1276 border-left:12px solid #edc240;
1276 border-left:12px solid #edc240;
1277 }
1277 }
1278
1278
1279 #content div.box div.traffic div.legend li.pageviews {
1279 #content div.box div.traffic div.legend li.pageviews {
1280 border-left:12px solid #afd8f8;
1280 border-left:12px solid #afd8f8;
1281 }
1281 }
1282
1282
1283 #content div.box div.traffic table {
1283 #content div.box div.traffic table {
1284 width:auto;
1284 width:auto;
1285 }
1285 }
1286
1286
1287 #content div.box div.traffic table td {
1287 #content div.box div.traffic table td {
1288 background:transparent;
1288 background:transparent;
1289 border:none;
1289 border:none;
1290 padding:2px 3px 3px;
1290 padding:2px 3px 3px;
1291 }
1291 }
1292
1292
1293 #content div.box div.traffic table td.legendLabel {
1293 #content div.box div.traffic table td.legendLabel {
1294 padding:0 3px 2px;
1294 padding:0 3px 2px;
1295 }
1295 }
1296
1296
1297 #summary{
1297 #summary{
1298
1298
1299 }
1299 }
1300
1300
1301 #summary .desc{
1301 #summary .desc{
1302 white-space: pre;
1302 white-space: pre;
1303 width: 100%;
1303 width: 100%;
1304 }
1304 }
1305
1305
1306 #summary .repo_name{
1306 #summary .repo_name{
1307 font-size: 1.6em;
1307 font-size: 1.6em;
1308 font-weight: bold;
1308 font-weight: bold;
1309 vertical-align: baseline;
1309 vertical-align: baseline;
1310 clear:right
1310 clear:right
1311 }
1311 }
1312
1312
1313
1313
1314 #footer {
1314 #footer {
1315 clear:both;
1315 clear:both;
1316 overflow:hidden;
1316 overflow:hidden;
1317 text-align:right;
1317 text-align:right;
1318 margin:0;
1318 margin:0;
1319 padding:0 10px 4px;
1319 padding:0 10px 4px;
1320 margin:-10px 0 0;
1320 margin:-10px 0 0;
1321 }
1321 }
1322
1322
1323 #footer div#footer-inner {
1323 #footer div#footer-inner {
1324 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
1324 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
1325 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1325 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1326 -webkit-border-radius: 4px 4px 4px 4px;
1326 -webkit-border-radius: 4px 4px 4px 4px;
1327 -khtml-border-radius: 4px 4px 4px 4px;
1327 -khtml-border-radius: 4px 4px 4px 4px;
1328 -moz-border-radius: 4px 4px 4px 4px;
1328 -moz-border-radius: 4px 4px 4px 4px;
1329 border-radius: 4px 4px 4px 4px;
1329 border-radius: 4px 4px 4px 4px;
1330 }
1330 }
1331
1331
1332 #footer div#footer-inner p {
1332 #footer div#footer-inner p {
1333 padding:15px 25px 15px 0;
1333 padding:15px 25px 15px 0;
1334 color:#FFF;
1334 color:#FFF;
1335 font-weight:700;
1335 font-weight:700;
1336 }
1336 }
1337 #footer div#footer-inner .footer-link {
1337 #footer div#footer-inner .footer-link {
1338 float:left;
1338 float:left;
1339 padding-left:10px;
1339 padding-left:10px;
1340 }
1340 }
1341 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a {
1341 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a {
1342 color:#FFF;
1342 color:#FFF;
1343 }
1343 }
1344
1344
1345 #login div.title {
1345 #login div.title {
1346 width:420px;
1346 width:420px;
1347 clear:both;
1347 clear:both;
1348 overflow:hidden;
1348 overflow:hidden;
1349 position:relative;
1349 position:relative;
1350 background:#003367 url("../images/header_inner.png") repeat-x;
1350 background:#003367 url("../images/header_inner.png") repeat-x;
1351 margin:0 auto;
1351 margin:0 auto;
1352 padding:0;
1352 padding:0;
1353 }
1353 }
1354
1354
1355 #login div.inner {
1355 #login div.inner {
1356 width:380px;
1356 width:380px;
1357 background:#FFF url("../images/login.png") no-repeat top left;
1357 background:#FFF url("../images/login.png") no-repeat top left;
1358 border-top:none;
1358 border-top:none;
1359 border-bottom:none;
1359 border-bottom:none;
1360 margin:0 auto;
1360 margin:0 auto;
1361 padding:20px;
1361 padding:20px;
1362 }
1362 }
1363
1363
1364 #login div.form div.fields div.field div.label {
1364 #login div.form div.fields div.field div.label {
1365 width:173px;
1365 width:173px;
1366 float:left;
1366 float:left;
1367 text-align:right;
1367 text-align:right;
1368 margin:2px 10px 0 0;
1368 margin:2px 10px 0 0;
1369 padding:5px 0 0 5px;
1369 padding:5px 0 0 5px;
1370 }
1370 }
1371
1371
1372 #login div.form div.fields div.field div.input input {
1372 #login div.form div.fields div.field div.input input {
1373 width:176px;
1373 width:176px;
1374 background:#FFF;
1374 background:#FFF;
1375 border-top:1px solid #b3b3b3;
1375 border-top:1px solid #b3b3b3;
1376 border-left:1px solid #b3b3b3;
1376 border-left:1px solid #b3b3b3;
1377 border-right:1px solid #eaeaea;
1377 border-right:1px solid #eaeaea;
1378 border-bottom:1px solid #eaeaea;
1378 border-bottom:1px solid #eaeaea;
1379 color:#000;
1379 color:#000;
1380 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1380 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1381 font-size:11px;
1381 font-size:11px;
1382 margin:0;
1382 margin:0;
1383 padding:7px 7px 6px;
1383 padding:7px 7px 6px;
1384 }
1384 }
1385
1385
1386 #login div.form div.fields div.buttons {
1386 #login div.form div.fields div.buttons {
1387 clear:both;
1387 clear:both;
1388 overflow:hidden;
1388 overflow:hidden;
1389 border-top:1px solid #DDD;
1389 border-top:1px solid #DDD;
1390 text-align:right;
1390 text-align:right;
1391 margin:0;
1391 margin:0;
1392 padding:10px 0 0;
1392 padding:10px 0 0;
1393 }
1393 }
1394
1394
1395 #login div.form div.links {
1395 #login div.form div.links {
1396 clear:both;
1396 clear:both;
1397 overflow:hidden;
1397 overflow:hidden;
1398 margin:10px 0 0;
1398 margin:10px 0 0;
1399 padding:0 0 2px;
1399 padding:0 0 2px;
1400 }
1400 }
1401
1401
1402 #quick_login{
1402 #quick_login{
1403 top: 31px;
1403 top: 31px;
1404 background-color: rgb(0, 51, 103);
1404 background-color: rgb(0, 51, 103);
1405 z-index: 999;
1405 z-index: 999;
1406 height: 150px;
1406 height: 150px;
1407 position: absolute;
1407 position: absolute;
1408 margin-left: -16px;
1408 margin-left: -16px;
1409 width: 281px;
1409 width: 281px;
1410 -webkit-border-radius: 0px 0px 4px 4px;
1410 -webkit-border-radius: 0px 0px 4px 4px;
1411 -khtml-border-radius: 0px 0px 4px 4px;
1411 -khtml-border-radius: 0px 0px 4px 4px;
1412 -moz-border-radius: 0px 0px 4px 4px;
1412 -moz-border-radius: 0px 0px 4px 4px;
1413 border-radius: 0px 0px 4px 4px;
1413 border-radius: 0px 0px 4px 4px;
1414
1414
1415 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1415 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1416 }
1416 }
1417
1417
1418 #quick_login .password_forgoten{
1418 #quick_login .password_forgoten{
1419 padding-right:10px;
1419 padding-right:10px;
1420 padding-top:0px;
1420 padding-top:0px;
1421 float:left;
1421 float:left;
1422 }
1422 }
1423 #quick_login .password_forgoten a{
1423 #quick_login .password_forgoten a{
1424 font-size: 10px
1424 font-size: 10px
1425 }
1425 }
1426
1426
1427 #quick_login .register{
1427 #quick_login .register{
1428 padding-right:10px;
1428 padding-right:10px;
1429 padding-top:5px;
1429 padding-top:5px;
1430 float:left;
1430 float:left;
1431 }
1431 }
1432
1432
1433 #quick_login .register a{
1433 #quick_login .register a{
1434 font-size: 10px
1434 font-size: 10px
1435 }
1435 }
1436 #quick_login div.form div.fields{
1436 #quick_login div.form div.fields{
1437 padding-top: 2px;
1437 padding-top: 2px;
1438 padding-left:10px;
1438 padding-left:10px;
1439 }
1439 }
1440
1440
1441 #quick_login div.form div.fields div.field{
1441 #quick_login div.form div.fields div.field{
1442 padding: 5px;
1442 padding: 5px;
1443 }
1443 }
1444
1444
1445 #quick_login div.form div.fields div.field div.label label{
1445 #quick_login div.form div.fields div.field div.label label{
1446 color:#fff;
1446 color:#fff;
1447 padding-bottom: 3px;
1447 padding-bottom: 3px;
1448 }
1448 }
1449
1449
1450 #quick_login div.form div.fields div.field div.input input {
1450 #quick_login div.form div.fields div.field div.input input {
1451 width:236px;
1451 width:236px;
1452 background:#FFF;
1452 background:#FFF;
1453 border-top:1px solid #b3b3b3;
1453 border-top:1px solid #b3b3b3;
1454 border-left:1px solid #b3b3b3;
1454 border-left:1px solid #b3b3b3;
1455 border-right:1px solid #eaeaea;
1455 border-right:1px solid #eaeaea;
1456 border-bottom:1px solid #eaeaea;
1456 border-bottom:1px solid #eaeaea;
1457 color:#000;
1457 color:#000;
1458 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1458 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1459 font-size:11px;
1459 font-size:11px;
1460 margin:0;
1460 margin:0;
1461 padding:5px 7px 4px;
1461 padding:5px 7px 4px;
1462 }
1462 }
1463
1463
1464 #quick_login div.form div.fields div.buttons {
1464 #quick_login div.form div.fields div.buttons {
1465 clear:both;
1465 clear:both;
1466 overflow:hidden;
1466 overflow:hidden;
1467 text-align:right;
1467 text-align:right;
1468 margin:0;
1468 margin:0;
1469 padding:10px 14px 3px 5px;
1469 padding:10px 14px 0px 5px;
1470 }
1470 }
1471
1471
1472 #quick_login div.form div.links {
1472 #quick_login div.form div.links {
1473 clear:both;
1473 clear:both;
1474 overflow:hidden;
1474 overflow:hidden;
1475 margin:10px 0 0;
1475 margin:10px 0 0;
1476 padding:0 0 2px;
1476 padding:0 0 2px;
1477 }
1477 }
1478
1478
1479 #register div.title {
1479 #register div.title {
1480 clear:both;
1480 clear:both;
1481 overflow:hidden;
1481 overflow:hidden;
1482 position:relative;
1482 position:relative;
1483 background:#003367 url("../images/header_inner.png") repeat-x;
1483 background:#003367 url("../images/header_inner.png") repeat-x;
1484 margin:0 auto;
1484 margin:0 auto;
1485 padding:0;
1485 padding:0;
1486 }
1486 }
1487
1487
1488 #register div.inner {
1488 #register div.inner {
1489 background:#FFF;
1489 background:#FFF;
1490 border-top:none;
1490 border-top:none;
1491 border-bottom:none;
1491 border-bottom:none;
1492 margin:0 auto;
1492 margin:0 auto;
1493 padding:20px;
1493 padding:20px;
1494 }
1494 }
1495
1495
1496 #register div.form div.fields div.field div.label {
1496 #register div.form div.fields div.field div.label {
1497 width:135px;
1497 width:135px;
1498 float:left;
1498 float:left;
1499 text-align:right;
1499 text-align:right;
1500 margin:2px 10px 0 0;
1500 margin:2px 10px 0 0;
1501 padding:5px 0 0 5px;
1501 padding:5px 0 0 5px;
1502 }
1502 }
1503
1503
1504 #register div.form div.fields div.field div.input input {
1504 #register div.form div.fields div.field div.input input {
1505 width:300px;
1505 width:300px;
1506 background:#FFF;
1506 background:#FFF;
1507 border-top:1px solid #b3b3b3;
1507 border-top:1px solid #b3b3b3;
1508 border-left:1px solid #b3b3b3;
1508 border-left:1px solid #b3b3b3;
1509 border-right:1px solid #eaeaea;
1509 border-right:1px solid #eaeaea;
1510 border-bottom:1px solid #eaeaea;
1510 border-bottom:1px solid #eaeaea;
1511 color:#000;
1511 color:#000;
1512 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1512 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1513 font-size:11px;
1513 font-size:11px;
1514 margin:0;
1514 margin:0;
1515 padding:7px 7px 6px;
1515 padding:7px 7px 6px;
1516 }
1516 }
1517
1517
1518 #register div.form div.fields div.buttons {
1518 #register div.form div.fields div.buttons {
1519 clear:both;
1519 clear:both;
1520 overflow:hidden;
1520 overflow:hidden;
1521 border-top:1px solid #DDD;
1521 border-top:1px solid #DDD;
1522 text-align:left;
1522 text-align:left;
1523 margin:0;
1523 margin:0;
1524 padding:10px 0 0 150px;
1524 padding:10px 0 0 150px;
1525 }
1525 }
1526
1526
1527
1527
1528 #register div.form div.activation_msg {
1528 #register div.form div.activation_msg {
1529 padding-top:4px;
1529 padding-top:4px;
1530 padding-bottom:4px;
1530 padding-bottom:4px;
1531 }
1531 }
1532
1532
1533 #journal .journal_day{
1533 #journal .journal_day{
1534 font-size:20px;
1534 font-size:20px;
1535 padding:10px 0px;
1535 padding:10px 0px;
1536 border-bottom:2px solid #DDD;
1536 border-bottom:2px solid #DDD;
1537 margin-left:10px;
1537 margin-left:10px;
1538 margin-right:10px;
1538 margin-right:10px;
1539 }
1539 }
1540
1540
1541 #journal .journal_container{
1541 #journal .journal_container{
1542 padding:5px;
1542 padding:5px;
1543 clear:both;
1543 clear:both;
1544 margin:0px 5px 0px 10px;
1544 margin:0px 5px 0px 10px;
1545 }
1545 }
1546
1546
1547 #journal .journal_action_container{
1547 #journal .journal_action_container{
1548 padding-left:38px;
1548 padding-left:38px;
1549 }
1549 }
1550
1550
1551 #journal .journal_user{
1551 #journal .journal_user{
1552 color: #747474;
1552 color: #747474;
1553 font-size: 14px;
1553 font-size: 14px;
1554 font-weight: bold;
1554 font-weight: bold;
1555 height: 30px;
1555 height: 30px;
1556 }
1556 }
1557 #journal .journal_icon{
1557 #journal .journal_icon{
1558 clear: both;
1558 clear: both;
1559 float: left;
1559 float: left;
1560 padding-right: 4px;
1560 padding-right: 4px;
1561 padding-top: 3px;
1561 padding-top: 3px;
1562 }
1562 }
1563 #journal .journal_action{
1563 #journal .journal_action{
1564 padding-top:4px;
1564 padding-top:4px;
1565 min-height:2px;
1565 min-height:2px;
1566 float:left
1566 float:left
1567 }
1567 }
1568 #journal .journal_action_params{
1568 #journal .journal_action_params{
1569 clear: left;
1569 clear: left;
1570 padding-left: 22px;
1570 padding-left: 22px;
1571 }
1571 }
1572 #journal .journal_repo{
1572 #journal .journal_repo{
1573 float: left;
1573 float: left;
1574 margin-left: 6px;
1574 margin-left: 6px;
1575 padding-top: 3px;
1575 padding-top: 3px;
1576 }
1576 }
1577 #journal .date{
1577 #journal .date{
1578 clear: both;
1578 clear: both;
1579 color: #777777;
1579 color: #777777;
1580 font-size: 11px;
1580 font-size: 11px;
1581 padding-left: 22px;
1581 padding-left: 22px;
1582 }
1582 }
1583 #journal .journal_repo .journal_repo_name{
1583 #journal .journal_repo .journal_repo_name{
1584 font-weight: bold;
1584 font-weight: bold;
1585 font-size: 1.1em;
1585 font-size: 1.1em;
1586 }
1586 }
1587 #journal .compare_view{
1587 #journal .compare_view{
1588 padding: 5px 0px 5px 0px;
1588 padding: 5px 0px 5px 0px;
1589 width: 95px;
1589 width: 95px;
1590 }
1590 }
1591 .journal_highlight{
1591 .journal_highlight{
1592 font-weight: bold;
1592 font-weight: bold;
1593 padding: 0 2px;
1593 padding: 0 2px;
1594 vertical-align: bottom;
1594 vertical-align: bottom;
1595 }
1595 }
1596 .trending_language_tbl,.trending_language_tbl td {
1596 .trending_language_tbl,.trending_language_tbl td {
1597 border:0 !important;
1597 border:0 !important;
1598 margin:0 !important;
1598 margin:0 !important;
1599 padding:0 !important;
1599 padding:0 !important;
1600 }
1600 }
1601
1601
1602 .trending_language {
1602 .trending_language {
1603 background-color:#003367;
1603 background-color:#003367;
1604 color:#FFF;
1604 color:#FFF;
1605 display:block;
1605 display:block;
1606 min-width:20px;
1606 min-width:20px;
1607 text-decoration:none;
1607 text-decoration:none;
1608 height:12px;
1608 height:12px;
1609 margin-bottom:4px;
1609 margin-bottom:4px;
1610 margin-left:5px;
1610 margin-left:5px;
1611 white-space:pre;
1611 white-space:pre;
1612 padding:3px;
1612 padding:3px;
1613 }
1613 }
1614
1614
1615 h3.files_location {
1615 h3.files_location {
1616 font-size:1.8em;
1616 font-size:1.8em;
1617 font-weight:700;
1617 font-weight:700;
1618 border-bottom:none !important;
1618 border-bottom:none !important;
1619 margin:10px 0 !important;
1619 margin:10px 0 !important;
1620 }
1620 }
1621
1621
1622 #files_data dl dt {
1622 #files_data dl dt {
1623 float:left;
1623 float:left;
1624 width:115px;
1624 width:115px;
1625 margin:0 !important;
1625 margin:0 !important;
1626 padding:5px;
1626 padding:5px;
1627 }
1627 }
1628
1628
1629 #files_data dl dd {
1629 #files_data dl dd {
1630 margin:0 !important;
1630 margin:0 !important;
1631 padding:5px !important;
1631 padding:5px !important;
1632 }
1632 }
1633
1633
1634 #changeset_content {
1634 #changeset_content {
1635 border:1px solid #CCC;
1635 border:1px solid #CCC;
1636 padding:5px;
1636 padding:5px;
1637 }
1637 }
1638 #changeset_compare_view_content{
1638 #changeset_compare_view_content{
1639 border:1px solid #CCC;
1639 border:1px solid #CCC;
1640 padding:5px;
1640 padding:5px;
1641 }
1641 }
1642
1642
1643 #changeset_content .container {
1643 #changeset_content .container {
1644 min-height:120px;
1644 min-height:120px;
1645 font-size:1.2em;
1645 font-size:1.2em;
1646 overflow:hidden;
1646 overflow:hidden;
1647 }
1647 }
1648
1648
1649 #changeset_compare_view_content .compare_view_commits{
1649 #changeset_compare_view_content .compare_view_commits{
1650 width: auto !important;
1650 width: auto !important;
1651 }
1651 }
1652
1652
1653 #changeset_compare_view_content .compare_view_commits td{
1653 #changeset_compare_view_content .compare_view_commits td{
1654 padding:0px 0px 0px 12px !important;
1654 padding:0px 0px 0px 12px !important;
1655 }
1655 }
1656
1656
1657 #changeset_content .container .right {
1657 #changeset_content .container .right {
1658 float:right;
1658 float:right;
1659 width:25%;
1659 width:25%;
1660 text-align:right;
1660 text-align:right;
1661 }
1661 }
1662
1662
1663 #changeset_content .container .left .message {
1663 #changeset_content .container .left .message {
1664 font-style:italic;
1664 font-style:italic;
1665 color:#556CB5;
1665 color:#556CB5;
1666 white-space:pre-wrap;
1666 white-space:pre-wrap;
1667 }
1667 }
1668
1668
1669 .cs_files .cur_cs{
1669 .cs_files .cur_cs{
1670 margin:10px 2px;
1670 margin:10px 2px;
1671 font-weight: bold;
1671 font-weight: bold;
1672 }
1672 }
1673
1673
1674 .cs_files .node{
1674 .cs_files .node{
1675 float: left;
1675 float: left;
1676 }
1676 }
1677 .cs_files .changes{
1677 .cs_files .changes{
1678 float: right;
1678 float: right;
1679 }
1679 }
1680 .cs_files .changes .added{
1680 .cs_files .changes .added{
1681 background-color: #BBFFBB;
1681 background-color: #BBFFBB;
1682 float: left;
1682 float: left;
1683 text-align: center;
1683 text-align: center;
1684 font-size: 90%;
1684 font-size: 90%;
1685 }
1685 }
1686 .cs_files .changes .deleted{
1686 .cs_files .changes .deleted{
1687 background-color: #FF8888;
1687 background-color: #FF8888;
1688 float: left;
1688 float: left;
1689 text-align: center;
1689 text-align: center;
1690 font-size: 90%;
1690 font-size: 90%;
1691 }
1691 }
1692 .cs_files .cs_added {
1692 .cs_files .cs_added {
1693 background:url("../images/icons/page_white_add.png") no-repeat scroll 3px;
1693 background:url("../images/icons/page_white_add.png") no-repeat scroll 3px;
1694 height:16px;
1694 height:16px;
1695 padding-left:20px;
1695 padding-left:20px;
1696 margin-top:7px;
1696 margin-top:7px;
1697 text-align:left;
1697 text-align:left;
1698 }
1698 }
1699
1699
1700 .cs_files .cs_changed {
1700 .cs_files .cs_changed {
1701 background:url("../images/icons/page_white_edit.png") no-repeat scroll 3px;
1701 background:url("../images/icons/page_white_edit.png") no-repeat scroll 3px;
1702 height:16px;
1702 height:16px;
1703 padding-left:20px;
1703 padding-left:20px;
1704 margin-top:7px;
1704 margin-top:7px;
1705 text-align:left;
1705 text-align:left;
1706 }
1706 }
1707
1707
1708 .cs_files .cs_removed {
1708 .cs_files .cs_removed {
1709 background:url("../images/icons/page_white_delete.png") no-repeat scroll 3px;
1709 background:url("../images/icons/page_white_delete.png") no-repeat scroll 3px;
1710 height:16px;
1710 height:16px;
1711 padding-left:20px;
1711 padding-left:20px;
1712 margin-top:7px;
1712 margin-top:7px;
1713 text-align:left;
1713 text-align:left;
1714 }
1714 }
1715
1715
1716 #graph {
1716 #graph {
1717 overflow:hidden;
1717 overflow:hidden;
1718 }
1718 }
1719
1719
1720 #graph_nodes {
1720 #graph_nodes {
1721 float: left;
1721 float: left;
1722 margin-right: -6px;
1722 margin-right: -6px;
1723 margin-top: -4px;
1723 margin-top: -4px;
1724 }
1724 }
1725
1725
1726 #graph_content {
1726 #graph_content {
1727 width:800px;
1727 width:800px;
1728 float:left;
1728 float:left;
1729
1729
1730 }
1730 }
1731
1731
1732 #graph_content .container_header {
1732 #graph_content .container_header {
1733 border:1px solid #CCC;
1733 border:1px solid #CCC;
1734 padding:10px;
1734 padding:10px;
1735 }
1735 }
1736 #graph_content #rev_range_container{
1736 #graph_content #rev_range_container{
1737 padding:10px 0px;
1737 padding:10px 0px;
1738 }
1738 }
1739 #graph_content .container {
1739 #graph_content .container {
1740 border-bottom:1px solid #CCC;
1740 border-bottom:1px solid #CCC;
1741 border-left:1px solid #CCC;
1741 border-left:1px solid #CCC;
1742 border-right:1px solid #CCC;
1742 border-right:1px solid #CCC;
1743 min-height:70px;
1743 min-height:70px;
1744 overflow:hidden;
1744 overflow:hidden;
1745 font-size:1.2em;
1745 font-size:1.2em;
1746 }
1746 }
1747
1747
1748 #graph_content .container .right {
1748 #graph_content .container .right {
1749 float:right;
1749 float:right;
1750 width:28%;
1750 width:28%;
1751 text-align:right;
1751 text-align:right;
1752 padding-bottom:5px;
1752 padding-bottom:5px;
1753 }
1753 }
1754
1754
1755 #graph_content .container .left .date {
1755 #graph_content .container .left .date {
1756 font-weight:700;
1756 font-weight:700;
1757 padding-bottom:5px;
1757 padding-bottom:5px;
1758 }
1758 }
1759 #graph_content .container .left .date span{
1759 #graph_content .container .left .date span{
1760 vertical-align: text-top;
1760 vertical-align: text-top;
1761 }
1761 }
1762
1762
1763 #graph_content .container .left .author{
1763 #graph_content .container .left .author{
1764 height: 22px;
1764 height: 22px;
1765 }
1765 }
1766 #graph_content .container .left .author .user{
1766 #graph_content .container .left .author .user{
1767 color: #444444;
1767 color: #444444;
1768 float: left;
1768 float: left;
1769 font-size: 12px;
1769 font-size: 12px;
1770 margin-left: -4px;
1770 margin-left: -4px;
1771 margin-top: 4px;
1771 margin-top: 4px;
1772 }
1772 }
1773
1773
1774 #graph_content .container .left .message {
1774 #graph_content .container .left .message {
1775 font-size:100%;
1775 font-size:100%;
1776 padding-top:3px;
1776 padding-top:3px;
1777 white-space:pre-wrap;
1777 white-space:pre-wrap;
1778 }
1778 }
1779
1779
1780 .right div {
1780 .right div {
1781 clear:both;
1781 clear:both;
1782 }
1782 }
1783
1783
1784 .right .changes .changed_total{
1784 .right .changes .changed_total{
1785 border:1px solid #DDD;
1785 border:1px solid #DDD;
1786 display:block;
1786 display:block;
1787 float:right;
1787 float:right;
1788 text-align:center;
1788 text-align:center;
1789 min-width:45px;
1789 min-width:45px;
1790 cursor: pointer;
1790 cursor: pointer;
1791 background:#FD8;
1791 background:#FD8;
1792 font-weight: bold;
1792 font-weight: bold;
1793 }
1793 }
1794 .right .changes .added,.changed,.removed {
1794 .right .changes .added,.changed,.removed {
1795 border:1px solid #DDD;
1795 border:1px solid #DDD;
1796 display:block;
1796 display:block;
1797 float:right;
1797 float:right;
1798 text-align:center;
1798 text-align:center;
1799 min-width:15px;
1799 min-width:15px;
1800 cursor: help;
1800 cursor: help;
1801 }
1801 }
1802 .right .changes .large {
1802 .right .changes .large {
1803 border:1px solid #DDD;
1803 border:1px solid #DDD;
1804 display:block;
1804 display:block;
1805 float:right;
1805 float:right;
1806 text-align:center;
1806 text-align:center;
1807 min-width:45px;
1807 min-width:45px;
1808 cursor: help;
1808 cursor: help;
1809 background: #54A9F7;
1809 background: #54A9F7;
1810 }
1810 }
1811
1811
1812 .right .changes .added {
1812 .right .changes .added {
1813 background:#BFB;
1813 background:#BFB;
1814 }
1814 }
1815
1815
1816 .right .changes .changed {
1816 .right .changes .changed {
1817 background:#FD8;
1817 background:#FD8;
1818 }
1818 }
1819
1819
1820 .right .changes .removed {
1820 .right .changes .removed {
1821 background:#F88;
1821 background:#F88;
1822 }
1822 }
1823
1823
1824 .right .merge {
1824 .right .merge {
1825 vertical-align:top;
1825 vertical-align:top;
1826 font-size:0.75em;
1826 font-size:0.75em;
1827 font-weight:700;
1827 font-weight:700;
1828 }
1828 }
1829
1829
1830 .right .parent {
1830 .right .parent {
1831 font-size:90%;
1831 font-size:90%;
1832 font-family:monospace;
1832 font-family:monospace;
1833 }
1833 }
1834
1834
1835 .right .logtags .branchtag {
1835 .right .logtags .branchtag {
1836 background:#FFF url("../images/icons/arrow_branch.png") no-repeat right 6px;
1836 background:#FFF url("../images/icons/arrow_branch.png") no-repeat right 6px;
1837 display:block;
1837 display:block;
1838 font-size:0.8em;
1838 font-size:0.8em;
1839 padding:11px 16px 0 0;
1839 padding:11px 16px 0 0;
1840 }
1840 }
1841
1841
1842 .right .logtags .tagtag {
1842 .right .logtags .tagtag {
1843 background:#FFF url("../images/icons/tag_blue.png") no-repeat right 6px;
1843 background:#FFF url("../images/icons/tag_blue.png") no-repeat right 6px;
1844 display:block;
1844 display:block;
1845 font-size:0.8em;
1845 font-size:0.8em;
1846 padding:11px 16px 0 0;
1846 padding:11px 16px 0 0;
1847 }
1847 }
1848
1848
1849 div.browserblock {
1849 div.browserblock {
1850 overflow:hidden;
1850 overflow:hidden;
1851 border:1px solid #ccc;
1851 border:1px solid #ccc;
1852 background:#f8f8f8;
1852 background:#f8f8f8;
1853 font-size:100%;
1853 font-size:100%;
1854 line-height:125%;
1854 line-height:125%;
1855 padding:0;
1855 padding:0;
1856 }
1856 }
1857
1857
1858 div.browserblock .browser-header {
1858 div.browserblock .browser-header {
1859 background:#FFF;
1859 background:#FFF;
1860 padding:10px 0px 15px 0px;
1860 padding:10px 0px 15px 0px;
1861 width: 100%;
1861 width: 100%;
1862 }
1862 }
1863 div.browserblock .browser-nav {
1863 div.browserblock .browser-nav {
1864 float:left
1864 float:left
1865 }
1865 }
1866
1866
1867 div.browserblock .browser-branch {
1867 div.browserblock .browser-branch {
1868 float:left;
1868 float:left;
1869 }
1869 }
1870
1870
1871 div.browserblock .browser-branch label {
1871 div.browserblock .browser-branch label {
1872 color:#4A4A4A;
1872 color:#4A4A4A;
1873 vertical-align:text-top;
1873 vertical-align:text-top;
1874 }
1874 }
1875
1875
1876 div.browserblock .browser-header span {
1876 div.browserblock .browser-header span {
1877 margin-left:5px;
1877 margin-left:5px;
1878 font-weight:700;
1878 font-weight:700;
1879 }
1879 }
1880
1880
1881 div.browserblock .browser-search{
1881 div.browserblock .browser-search{
1882 clear:both;
1882 clear:both;
1883 padding:8px 8px 0px 5px;
1883 padding:8px 8px 0px 5px;
1884 height: 20px;
1884 height: 20px;
1885 }
1885 }
1886 div.browserblock #node_filter_box {
1886 div.browserblock #node_filter_box {
1887 }
1887 }
1888
1888
1889 div.browserblock .search_activate{
1889 div.browserblock .search_activate{
1890 float: left
1890 float: left
1891 }
1891 }
1892
1892
1893 div.browserblock .add_node{
1893 div.browserblock .add_node{
1894 float: left;
1894 float: left;
1895 padding-left: 5px;
1895 padding-left: 5px;
1896 }
1896 }
1897
1897
1898 div.browserblock .search_activate #filter_activate,div.browserblock .add_node a{
1898 div.browserblock .search_activate #filter_activate,div.browserblock .add_node a{
1899 vertical-align: sub;
1899 vertical-align: sub;
1900 border: 1px solid;
1900 border: 1px solid;
1901 padding:2px;
1901 padding:2px;
1902 -webkit-border-radius: 4px 4px 4px 4px;
1902 -webkit-border-radius: 4px 4px 4px 4px;
1903 -khtml-border-radius: 4px 4px 4px 4px;
1903 -khtml-border-radius: 4px 4px 4px 4px;
1904 -moz-border-radius: 4px 4px 4px 4px;
1904 -moz-border-radius: 4px 4px 4px 4px;
1905 border-radius: 4px 4px 4px 4px;
1905 border-radius: 4px 4px 4px 4px;
1906 background: url("../images/button.png") repeat-x scroll 0 0 #E5E3E3;
1906 background: url("../images/button.png") repeat-x scroll 0 0 #E5E3E3;
1907 border-color: #DDDDDD #DDDDDD #C6C6C6 #C6C6C6;
1907 border-color: #DDDDDD #DDDDDD #C6C6C6 #C6C6C6;
1908 color: #515151;
1908 color: #515151;
1909 }
1909 }
1910
1910
1911 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover{
1911 div.browserblock .search_activate a:hover,div.browserblock .add_node a:hover{
1912 text-decoration: none !important;
1912 text-decoration: none !important;
1913 }
1913 }
1914
1914
1915 div.browserblock .browser-body {
1915 div.browserblock .browser-body {
1916 background:#EEE;
1916 background:#EEE;
1917 border-top:1px solid #CCC;
1917 border-top:1px solid #CCC;
1918 }
1918 }
1919
1919
1920 table.code-browser {
1920 table.code-browser {
1921 border-collapse:collapse;
1921 border-collapse:collapse;
1922 width:100%;
1922 width:100%;
1923 }
1923 }
1924
1924
1925 table.code-browser tr {
1925 table.code-browser tr {
1926 margin:3px;
1926 margin:3px;
1927 }
1927 }
1928
1928
1929 table.code-browser thead th {
1929 table.code-browser thead th {
1930 background-color:#EEE;
1930 background-color:#EEE;
1931 height:20px;
1931 height:20px;
1932 font-size:1.1em;
1932 font-size:1.1em;
1933 font-weight:700;
1933 font-weight:700;
1934 text-align:left;
1934 text-align:left;
1935 padding-left:10px;
1935 padding-left:10px;
1936 }
1936 }
1937
1937
1938 table.code-browser tbody td {
1938 table.code-browser tbody td {
1939 padding-left:10px;
1939 padding-left:10px;
1940 height:20px;
1940 height:20px;
1941 }
1941 }
1942
1942
1943 table.code-browser .browser-file {
1943 table.code-browser .browser-file {
1944 background:url("../images/icons/document_16.png") no-repeat scroll 3px;
1944 background:url("../images/icons/document_16.png") no-repeat scroll 3px;
1945 height:16px;
1945 height:16px;
1946 padding-left:20px;
1946 padding-left:20px;
1947 text-align:left;
1947 text-align:left;
1948 }
1948 }
1949 .diffblock .changeset_file{
1949 .diffblock .changeset_file{
1950 background:url("../images/icons/file.png") no-repeat scroll 3px;
1950 background:url("../images/icons/file.png") no-repeat scroll 3px;
1951 height:16px;
1951 height:16px;
1952 padding-left:22px;
1952 padding-left:22px;
1953 text-align:left;
1953 text-align:left;
1954 font-size: 14px;
1954 font-size: 14px;
1955 }
1955 }
1956
1956
1957 .diffblock .changeset_header{
1957 .diffblock .changeset_header{
1958 margin-left: 6px !important;
1958 margin-left: 6px !important;
1959 }
1959 }
1960
1960
1961 table.code-browser .browser-dir {
1961 table.code-browser .browser-dir {
1962 background:url("../images/icons/folder_16.png") no-repeat scroll 3px;
1962 background:url("../images/icons/folder_16.png") no-repeat scroll 3px;
1963 height:16px;
1963 height:16px;
1964 padding-left:20px;
1964 padding-left:20px;
1965 text-align:left;
1965 text-align:left;
1966 }
1966 }
1967
1967
1968 .box .search {
1968 .box .search {
1969 clear:both;
1969 clear:both;
1970 overflow:hidden;
1970 overflow:hidden;
1971 margin:0;
1971 margin:0;
1972 padding:0 20px 10px;
1972 padding:0 20px 10px;
1973 }
1973 }
1974
1974
1975 .box .search div.search_path {
1975 .box .search div.search_path {
1976 background:none repeat scroll 0 0 #EEE;
1976 background:none repeat scroll 0 0 #EEE;
1977 border:1px solid #CCC;
1977 border:1px solid #CCC;
1978 color:blue;
1978 color:blue;
1979 margin-bottom:10px;
1979 margin-bottom:10px;
1980 padding:10px 0;
1980 padding:10px 0;
1981 }
1981 }
1982
1982
1983 .box .search div.search_path div.link {
1983 .box .search div.search_path div.link {
1984 font-weight:700;
1984 font-weight:700;
1985 margin-left:25px;
1985 margin-left:25px;
1986 }
1986 }
1987
1987
1988 .box .search div.search_path div.link a {
1988 .box .search div.search_path div.link a {
1989 color:#003367;
1989 color:#003367;
1990 cursor:pointer;
1990 cursor:pointer;
1991 text-decoration:none;
1991 text-decoration:none;
1992 }
1992 }
1993
1993
1994 #path_unlock {
1994 #path_unlock {
1995 color:red;
1995 color:red;
1996 font-size:1.2em;
1996 font-size:1.2em;
1997 padding-left:4px;
1997 padding-left:4px;
1998 }
1998 }
1999
1999
2000 .info_box span {
2000 .info_box span {
2001 margin-left:3px;
2001 margin-left:3px;
2002 margin-right:3px;
2002 margin-right:3px;
2003 }
2003 }
2004
2004
2005 .info_box .rev {
2005 .info_box .rev {
2006 color: #003367;
2006 color: #003367;
2007 font-size: 1.6em;
2007 font-size: 1.6em;
2008 font-weight: bold;
2008 font-weight: bold;
2009 vertical-align: sub;
2009 vertical-align: sub;
2010 }
2010 }
2011
2011
2012
2012
2013 .info_box input#at_rev,.info_box input#size {
2013 .info_box input#at_rev,.info_box input#size {
2014 background:#FFF;
2014 background:#FFF;
2015 border-top:1px solid #b3b3b3;
2015 border-top:1px solid #b3b3b3;
2016 border-left:1px solid #b3b3b3;
2016 border-left:1px solid #b3b3b3;
2017 border-right:1px solid #eaeaea;
2017 border-right:1px solid #eaeaea;
2018 border-bottom:1px solid #eaeaea;
2018 border-bottom:1px solid #eaeaea;
2019 color:#000;
2019 color:#000;
2020 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2020 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2021 font-size:12px;
2021 font-size:12px;
2022 margin:0;
2022 margin:0;
2023 padding:1px 5px 1px;
2023 padding:1px 5px 1px;
2024 }
2024 }
2025
2025
2026 .info_box input#view {
2026 .info_box input#view {
2027 text-align:center;
2027 text-align:center;
2028 padding:4px 3px 2px 2px;
2028 padding:4px 3px 2px 2px;
2029 }
2029 }
2030
2030
2031 .yui-overlay,.yui-panel-container {
2031 .yui-overlay,.yui-panel-container {
2032 visibility:hidden;
2032 visibility:hidden;
2033 position:absolute;
2033 position:absolute;
2034 z-index:2;
2034 z-index:2;
2035 }
2035 }
2036
2036
2037 .yui-tt {
2037 .yui-tt {
2038 visibility:hidden;
2038 visibility:hidden;
2039 position:absolute;
2039 position:absolute;
2040 color:#666;
2040 color:#666;
2041 background-color:#FFF;
2041 background-color:#FFF;
2042 font-family:arial, helvetica, verdana, sans-serif;
2042 font-family:arial, helvetica, verdana, sans-serif;
2043 border:2px solid #003367;
2043 border:2px solid #003367;
2044 font:100% sans-serif;
2044 font:100% sans-serif;
2045 width:auto;
2045 width:auto;
2046 opacity:1px;
2046 opacity:1px;
2047 padding:8px;
2047 padding:8px;
2048 white-space: pre-wrap;
2048 white-space: pre-wrap;
2049 -webkit-border-radius: 8px 8px 8px 8px;
2049 -webkit-border-radius: 8px 8px 8px 8px;
2050 -khtml-border-radius: 8px 8px 8px 8px;
2050 -khtml-border-radius: 8px 8px 8px 8px;
2051 -moz-border-radius: 8px 8px 8px 8px;
2051 -moz-border-radius: 8px 8px 8px 8px;
2052 border-radius: 8px 8px 8px 8px;
2052 border-radius: 8px 8px 8px 8px;
2053 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2053 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2054 }
2054 }
2055
2055
2056 .ac {
2056 .ac {
2057 vertical-align:top;
2057 vertical-align:top;
2058 }
2058 }
2059
2059
2060 .ac .yui-ac {
2060 .ac .yui-ac {
2061 position:relative;
2061 position:relative;
2062 font-family:arial;
2062 font-family:arial;
2063 font-size:100%;
2063 font-size:100%;
2064 }
2064 }
2065
2065
2066 .ac .perm_ac {
2066 .ac .perm_ac {
2067 width:15em;
2067 width:15em;
2068 }
2068 }
2069
2069
2070 .ac .yui-ac-input {
2070 .ac .yui-ac-input {
2071 width:100%;
2071 width:100%;
2072 }
2072 }
2073
2073
2074 .ac .yui-ac-container {
2074 .ac .yui-ac-container {
2075 position:absolute;
2075 position:absolute;
2076 top:1.6em;
2076 top:1.6em;
2077 width:100%;
2077 width:100%;
2078 }
2078 }
2079
2079
2080 .ac .yui-ac-content {
2080 .ac .yui-ac-content {
2081 position:absolute;
2081 position:absolute;
2082 width:100%;
2082 width:100%;
2083 border:1px solid gray;
2083 border:1px solid gray;
2084 background:#fff;
2084 background:#fff;
2085 overflow:hidden;
2085 overflow:hidden;
2086 z-index:9050;
2086 z-index:9050;
2087 }
2087 }
2088
2088
2089 .ac .yui-ac-shadow {
2089 .ac .yui-ac-shadow {
2090 position:absolute;
2090 position:absolute;
2091 width:100%;
2091 width:100%;
2092 background:#000;
2092 background:#000;
2093 -moz-opacity:0.1px;
2093 -moz-opacity:0.1px;
2094 opacity:.10;
2094 opacity:.10;
2095 filter:alpha(opacity = 10);
2095 filter:alpha(opacity = 10);
2096 z-index:9049;
2096 z-index:9049;
2097 margin:.3em;
2097 margin:.3em;
2098 }
2098 }
2099
2099
2100 .ac .yui-ac-content ul {
2100 .ac .yui-ac-content ul {
2101 width:100%;
2101 width:100%;
2102 margin:0;
2102 margin:0;
2103 padding:0;
2103 padding:0;
2104 }
2104 }
2105
2105
2106 .ac .yui-ac-content li {
2106 .ac .yui-ac-content li {
2107 cursor:default;
2107 cursor:default;
2108 white-space:nowrap;
2108 white-space:nowrap;
2109 margin:0;
2109 margin:0;
2110 padding:2px 5px;
2110 padding:2px 5px;
2111 }
2111 }
2112
2112
2113 .ac .yui-ac-content li.yui-ac-prehighlight {
2113 .ac .yui-ac-content li.yui-ac-prehighlight {
2114 background:#B3D4FF;
2114 background:#B3D4FF;
2115 }
2115 }
2116
2116
2117 .ac .yui-ac-content li.yui-ac-highlight {
2117 .ac .yui-ac-content li.yui-ac-highlight {
2118 background:#556CB5;
2118 background:#556CB5;
2119 color:#FFF;
2119 color:#FFF;
2120 }
2120 }
2121
2121
2122
2122
2123 .follow{
2123 .follow{
2124 background:url("../images/icons/heart_add.png") no-repeat scroll 3px;
2124 background:url("../images/icons/heart_add.png") no-repeat scroll 3px;
2125 height: 16px;
2125 height: 16px;
2126 width: 20px;
2126 width: 20px;
2127 cursor: pointer;
2127 cursor: pointer;
2128 display: block;
2128 display: block;
2129 float: right;
2129 float: right;
2130 margin-top: 2px;
2130 margin-top: 2px;
2131 }
2131 }
2132
2132
2133 .following{
2133 .following{
2134 background:url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2134 background:url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2135 height: 16px;
2135 height: 16px;
2136 width: 20px;
2136 width: 20px;
2137 cursor: pointer;
2137 cursor: pointer;
2138 display: block;
2138 display: block;
2139 float: right;
2139 float: right;
2140 margin-top: 2px;
2140 margin-top: 2px;
2141 }
2141 }
2142
2142
2143 .currently_following{
2143 .currently_following{
2144 padding-left: 10px;
2144 padding-left: 10px;
2145 padding-bottom:5px;
2145 padding-bottom:5px;
2146 }
2146 }
2147
2147
2148 .add_icon {
2148 .add_icon {
2149 background:url("../images/icons/add.png") no-repeat scroll 3px;
2149 background:url("../images/icons/add.png") no-repeat scroll 3px;
2150 padding-left:20px;
2150 padding-left:20px;
2151 padding-top:0px;
2151 padding-top:0px;
2152 text-align:left;
2152 text-align:left;
2153 }
2153 }
2154
2154
2155 .edit_icon {
2155 .edit_icon {
2156 background:url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2156 background:url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2157 padding-left:20px;
2157 padding-left:20px;
2158 padding-top:0px;
2158 padding-top:0px;
2159 text-align:left;
2159 text-align:left;
2160 }
2160 }
2161
2161
2162 .delete_icon {
2162 .delete_icon {
2163 background:url("../images/icons/delete.png") no-repeat scroll 3px;
2163 background:url("../images/icons/delete.png") no-repeat scroll 3px;
2164 padding-left:20px;
2164 padding-left:20px;
2165 padding-top:0px;
2165 padding-top:0px;
2166 text-align:left;
2166 text-align:left;
2167 }
2167 }
2168
2168
2169 .refresh_icon {
2169 .refresh_icon {
2170 background:url("../images/icons/arrow_refresh.png") no-repeat scroll 3px;
2170 background:url("../images/icons/arrow_refresh.png") no-repeat scroll 3px;
2171 padding-left:20px;
2171 padding-left:20px;
2172 padding-top:0px;
2172 padding-top:0px;
2173 text-align:left;
2173 text-align:left;
2174 }
2174 }
2175
2175
2176 .pull_icon {
2176 .pull_icon {
2177 background:url("../images/icons/connect.png") no-repeat scroll 3px;
2177 background:url("../images/icons/connect.png") no-repeat scroll 3px;
2178 padding-left:20px;
2178 padding-left:20px;
2179 padding-top:0px;
2179 padding-top:0px;
2180 text-align:left;
2180 text-align:left;
2181 }
2181 }
2182
2182
2183 .rss_icon {
2183 .rss_icon {
2184 background:url("../images/icons/rss_16.png") no-repeat scroll 3px;
2184 background:url("../images/icons/rss_16.png") no-repeat scroll 3px;
2185 padding-left:20px;
2185 padding-left:20px;
2186 padding-top:0px;
2186 padding-top:0px;
2187 text-align:left;
2187 text-align:left;
2188 }
2188 }
2189
2189
2190 .atom_icon {
2190 .atom_icon {
2191 background:url("../images/icons/atom.png") no-repeat scroll 3px;
2191 background:url("../images/icons/atom.png") no-repeat scroll 3px;
2192 padding-left:20px;
2192 padding-left:20px;
2193 padding-top:0px;
2193 padding-top:0px;
2194 text-align:left;
2194 text-align:left;
2195 }
2195 }
2196
2196
2197 .archive_icon {
2197 .archive_icon {
2198 background:url("../images/icons/compress.png") no-repeat scroll 3px;
2198 background:url("../images/icons/compress.png") no-repeat scroll 3px;
2199 padding-left:20px;
2199 padding-left:20px;
2200 text-align:left;
2200 text-align:left;
2201 padding-top:1px;
2201 padding-top:1px;
2202 }
2202 }
2203
2203
2204 .start_following_icon {
2204 .start_following_icon {
2205 background:url("../images/icons/heart_add.png") no-repeat scroll 3px;
2205 background:url("../images/icons/heart_add.png") no-repeat scroll 3px;
2206 padding-left:20px;
2206 padding-left:20px;
2207 text-align:left;
2207 text-align:left;
2208 padding-top:0px;
2208 padding-top:0px;
2209 }
2209 }
2210
2210
2211 .stop_following_icon {
2211 .stop_following_icon {
2212 background:url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2212 background:url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2213 padding-left:20px;
2213 padding-left:20px;
2214 text-align:left;
2214 text-align:left;
2215 padding-top:0px;
2215 padding-top:0px;
2216 }
2216 }
2217
2217
2218 .action_button {
2218 .action_button {
2219 border:0;
2219 border:0;
2220 display:inline;
2220 display:inline;
2221 }
2221 }
2222
2222
2223 .action_button:hover {
2223 .action_button:hover {
2224 border:0;
2224 border:0;
2225 text-decoration:underline;
2225 text-decoration:underline;
2226 cursor:pointer;
2226 cursor:pointer;
2227 }
2227 }
2228
2228
2229 #switch_repos {
2229 #switch_repos {
2230 position:absolute;
2230 position:absolute;
2231 height:25px;
2231 height:25px;
2232 z-index:1;
2232 z-index:1;
2233 }
2233 }
2234
2234
2235 #switch_repos select {
2235 #switch_repos select {
2236 min-width:150px;
2236 min-width:150px;
2237 max-height:250px;
2237 max-height:250px;
2238 z-index:1;
2238 z-index:1;
2239 }
2239 }
2240
2240
2241 .breadcrumbs {
2241 .breadcrumbs {
2242 border:medium none;
2242 border:medium none;
2243 color:#FFF;
2243 color:#FFF;
2244 float:left;
2244 float:left;
2245 text-transform:uppercase;
2245 text-transform:uppercase;
2246 font-weight:700;
2246 font-weight:700;
2247 font-size:14px;
2247 font-size:14px;
2248 margin:0;
2248 margin:0;
2249 padding:11px 0 11px 10px;
2249 padding:11px 0 11px 10px;
2250 }
2250 }
2251
2251
2252 .breadcrumbs a {
2252 .breadcrumbs a {
2253 color:#FFF;
2253 color:#FFF;
2254 }
2254 }
2255
2255
2256 .flash_msg ul {
2256 .flash_msg ul {
2257 margin:0;
2257 margin:0;
2258 padding:0 0 10px;
2258 padding:0 0 10px;
2259 }
2259 }
2260
2260
2261 .error_msg {
2261 .error_msg {
2262 background-color:#FFCFCF;
2262 background-color:#FFCFCF;
2263 background-image:url("../images/icons/error_msg.png");
2263 background-image:url("../images/icons/error_msg.png");
2264 border:1px solid #FF9595;
2264 border:1px solid #FF9595;
2265 color:#C30;
2265 color:#C30;
2266 }
2266 }
2267
2267
2268 .warning_msg {
2268 .warning_msg {
2269 background-color:#FFFBCC;
2269 background-color:#FFFBCC;
2270 background-image:url("../images/icons/warning_msg.png");
2270 background-image:url("../images/icons/warning_msg.png");
2271 border:1px solid #FFF35E;
2271 border:1px solid #FFF35E;
2272 color:#C69E00;
2272 color:#C69E00;
2273 }
2273 }
2274
2274
2275 .success_msg {
2275 .success_msg {
2276 background-color:#D5FFCF;
2276 background-color:#D5FFCF;
2277 background-image:url("../images/icons/success_msg.png");
2277 background-image:url("../images/icons/success_msg.png");
2278 border:1px solid #97FF88;
2278 border:1px solid #97FF88;
2279 color:#090;
2279 color:#090;
2280 }
2280 }
2281
2281
2282 .notice_msg {
2282 .notice_msg {
2283 background-color:#DCE3FF;
2283 background-color:#DCE3FF;
2284 background-image:url("../images/icons/notice_msg.png");
2284 background-image:url("../images/icons/notice_msg.png");
2285 border:1px solid #93A8FF;
2285 border:1px solid #93A8FF;
2286 color:#556CB5;
2286 color:#556CB5;
2287 }
2287 }
2288
2288
2289 .success_msg,.error_msg,.notice_msg,.warning_msg {
2289 .success_msg,.error_msg,.notice_msg,.warning_msg {
2290 background-position:10px center;
2290 background-position:10px center;
2291 background-repeat:no-repeat;
2291 background-repeat:no-repeat;
2292 font-size:12px;
2292 font-size:12px;
2293 font-weight:700;
2293 font-weight:700;
2294 min-height:14px;
2294 min-height:14px;
2295 line-height:14px;
2295 line-height:14px;
2296 margin-bottom:0;
2296 margin-bottom:0;
2297 margin-top:0;
2297 margin-top:0;
2298 display:block;
2298 display:block;
2299 overflow:auto;
2299 overflow:auto;
2300 padding:6px 10px 6px 40px;
2300 padding:6px 10px 6px 40px;
2301 }
2301 }
2302
2302
2303 #msg_close {
2303 #msg_close {
2304 background:transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
2304 background:transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
2305 cursor:pointer;
2305 cursor:pointer;
2306 height:16px;
2306 height:16px;
2307 position:absolute;
2307 position:absolute;
2308 right:5px;
2308 right:5px;
2309 top:5px;
2309 top:5px;
2310 width:16px;
2310 width:16px;
2311 }
2311 }
2312
2312
2313 div#legend_container table,div#legend_choices table {
2313 div#legend_container table,div#legend_choices table {
2314 width:auto !important;
2314 width:auto !important;
2315 }
2315 }
2316
2316
2317 table#permissions_manage {
2317 table#permissions_manage {
2318 width:0 !important;
2318 width:0 !important;
2319 }
2319 }
2320
2320
2321 table#permissions_manage span.private_repo_msg {
2321 table#permissions_manage span.private_repo_msg {
2322 font-size:0.8em;
2322 font-size:0.8em;
2323 opacity:0.6px;
2323 opacity:0.6px;
2324 }
2324 }
2325
2325
2326 table#permissions_manage td.private_repo_msg {
2326 table#permissions_manage td.private_repo_msg {
2327 font-size:0.8em;
2327 font-size:0.8em;
2328 }
2328 }
2329
2329
2330 table#permissions_manage tr#add_perm_input td {
2330 table#permissions_manage tr#add_perm_input td {
2331 vertical-align:middle;
2331 vertical-align:middle;
2332 }
2332 }
2333
2333
2334 div.gravatar {
2334 div.gravatar {
2335 background-color:#FFF;
2335 background-color:#FFF;
2336 border:1px solid #D0D0D0;
2336 border:1px solid #D0D0D0;
2337 float:left;
2337 float:left;
2338 margin-right:0.7em;
2338 margin-right:0.7em;
2339 padding:2px 2px 0;
2339 padding:2px 2px 0;
2340
2340
2341 -webkit-border-radius: 6px;
2341 -webkit-border-radius: 6px;
2342 -khtml-border-radius: 6px;
2342 -khtml-border-radius: 6px;
2343 -moz-border-radius: 6px;
2343 -moz-border-radius: 6px;
2344 border-radius: 6px;
2344 border-radius: 6px;
2345
2345
2346 }
2346 }
2347
2347
2348 div.gravatar img {
2348 div.gravatar img {
2349 -webkit-border-radius: 4px;
2349 -webkit-border-radius: 4px;
2350 -khtml-border-radius: 4px;
2350 -khtml-border-radius: 4px;
2351 -moz-border-radius: 4px;
2351 -moz-border-radius: 4px;
2352 border-radius: 4px;
2352 border-radius: 4px;
2353 }
2353 }
2354
2354
2355 #header,#content,#footer {
2355 #header,#content,#footer {
2356 min-width:978px;
2356 min-width:978px;
2357 }
2357 }
2358
2358
2359 #content {
2359 #content {
2360 clear:both;
2360 clear:both;
2361 overflow:hidden;
2361 overflow:hidden;
2362 padding:14px 10px;
2362 padding:14px 10px;
2363 }
2363 }
2364
2364
2365 #content div.box div.title div.search {
2365 #content div.box div.title div.search {
2366 background:url("../images/title_link.png") no-repeat top left;
2366 background:url("../images/title_link.png") no-repeat top left;
2367 border-left:1px solid #316293;
2367 border-left:1px solid #316293;
2368 }
2368 }
2369
2369
2370 #content div.box div.title div.search div.input input {
2370 #content div.box div.title div.search div.input input {
2371 border:1px solid #316293;
2371 border:1px solid #316293;
2372 }
2372 }
2373
2373
2374
2374
2375 input.ui-button-small {
2375 input.ui-button-small {
2376 background:#e5e3e3 url("../images/button.png") repeat-x !important;
2376 background:#e5e3e3 url("../images/button.png") repeat-x !important;
2377 border-top:1px solid #DDD !important;
2377 border-top:1px solid #DDD !important;
2378 border-left:1px solid #c6c6c6 !important;
2378 border-left:1px solid #c6c6c6 !important;
2379 border-right:1px solid #DDD !important;
2379 border-right:1px solid #DDD !important;
2380 border-bottom:1px solid #c6c6c6 !important;
2380 border-bottom:1px solid #c6c6c6 !important;
2381 color:#515151 !important;
2381 color:#515151 !important;
2382 outline:none !important;
2382 outline:none !important;
2383 margin:0 !important;
2383 margin:0 !important;
2384 -webkit-border-radius: 4px 4px 4px 4px !important;
2384 -webkit-border-radius: 4px 4px 4px 4px !important;
2385 -khtml-border-radius: 4px 4px 4px 4px !important;
2385 -khtml-border-radius: 4px 4px 4px 4px !important;
2386 -moz-border-radius: 4px 4px 4px 4px !important;
2386 -moz-border-radius: 4px 4px 4px 4px !important;
2387 border-radius: 4px 4px 4px 4px !important;
2387 border-radius: 4px 4px 4px 4px !important;
2388 box-shadow: 0 1px 0 #ececec !important;
2388 box-shadow: 0 1px 0 #ececec !important;
2389 cursor: pointer !important;
2389 cursor: pointer !important;
2390 }
2390 }
2391
2391
2392 input.ui-button-small:hover {
2392 input.ui-button-small:hover {
2393 background:#b4b4b4 url("../images/button_selected.png") repeat-x !important;
2393 background:#b4b4b4 url("../images/button_selected.png") repeat-x !important;
2394 border-top:1px solid #ccc !important;
2394 border-top:1px solid #ccc !important;
2395 border-left:1px solid #bebebe !important;
2395 border-left:1px solid #bebebe !important;
2396 border-right:1px solid #b1b1b1 !important;
2396 border-right:1px solid #b1b1b1 !important;
2397 border-bottom:1px solid #afafaf !important;
2397 border-bottom:1px solid #afafaf !important;
2398 }
2398 }
2399
2399
2400 input.ui-button-small-blue {
2400 input.ui-button-small-blue {
2401 background:#4e85bb url("../images/button_highlight.png") repeat-x;
2401 background:#4e85bb url("../images/button_highlight.png") repeat-x;
2402 border-top:1px solid #5c91a4;
2402 border-top:1px solid #5c91a4;
2403 border-left:1px solid #2a6f89;
2403 border-left:1px solid #2a6f89;
2404 border-right:1px solid #2b7089;
2404 border-right:1px solid #2b7089;
2405 border-bottom:1px solid #1a6480;
2405 border-bottom:1px solid #1a6480;
2406 color:#fff;
2406 color:#fff;
2407 -webkit-border-radius: 4px 4px 4px 4px;
2407 -webkit-border-radius: 4px 4px 4px 4px;
2408 -khtml-border-radius: 4px 4px 4px 4px;
2408 -khtml-border-radius: 4px 4px 4px 4px;
2409 -moz-border-radius: 4px 4px 4px 4px;
2409 -moz-border-radius: 4px 4px 4px 4px;
2410 border-radius: 4px 4px 4px 4px;
2410 border-radius: 4px 4px 4px 4px;
2411 box-shadow: 0 1px 0 #ececec;
2411 box-shadow: 0 1px 0 #ececec;
2412 cursor: pointer;
2412 cursor: pointer;
2413 }
2413 }
2414
2414
2415 input.ui-button-small-blue:hover {
2415 input.ui-button-small-blue:hover {
2416
2416
2417 }
2417 }
2418
2418
2419
2419
2420 ins,div.options a:hover {
2420 ins,div.options a:hover {
2421 text-decoration:none;
2421 text-decoration:none;
2422 }
2422 }
2423
2423
2424 img,#header #header-inner #quick li a:hover span.normal,#header #header-inner #quick li ul li.last,#content div.box div.form div.fields div.field div.textarea table td table td a,#clone_url {
2424 img,#header #header-inner #quick li a:hover span.normal,#header #header-inner #quick li ul li.last,#content div.box div.form div.fields div.field div.textarea table td table td a,#clone_url {
2425 border:none;
2425 border:none;
2426 }
2426 }
2427
2427
2428 img.icon,.right .merge img {
2428 img.icon,.right .merge img {
2429 vertical-align:bottom;
2429 vertical-align:bottom;
2430 }
2430 }
2431
2431
2432 #header ul#logged-user,#content div.box div.title ul.links,#content div.box div.message div.dismiss,#content div.box div.traffic div.legend ul {
2432 #header ul#logged-user,#content div.box div.title ul.links,#content div.box div.message div.dismiss,#content div.box div.traffic div.legend ul {
2433 float:right;
2433 float:right;
2434 margin:0;
2434 margin:0;
2435 padding:0;
2435 padding:0;
2436 }
2436 }
2437
2437
2438
2438
2439 #header #header-inner #home,#header #header-inner #logo,#content div.box ul.left,#content div.box ol.left,#content div.box div.pagination-left,div#commit_history,div#legend_data,div#legend_container,div#legend_choices {
2439 #header #header-inner #home,#header #header-inner #logo,#content div.box ul.left,#content div.box ol.left,#content div.box div.pagination-left,div#commit_history,div#legend_data,div#legend_container,div#legend_choices {
2440 float:left;
2440 float:left;
2441 }
2441 }
2442
2442
2443 #header #header-inner #quick li:hover ul ul,#header #header-inner #quick li:hover ul ul ul,#header #header-inner #quick li:hover ul ul ul ul,#content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow {
2443 #header #header-inner #quick li:hover ul ul,#header #header-inner #quick li:hover ul ul ul,#header #header-inner #quick li:hover ul ul ul ul,#content #left #menu ul.closed,#content #left #menu li ul.collapsed,.yui-tt-shadow {
2444 display:none;
2444 display:none;
2445 }
2445 }
2446
2446
2447 #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 {
2447 #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 {
2448 display:block;
2448 display:block;
2449 }
2449 }
2450
2450
2451 #content div.graph{
2451 #content div.graph{
2452 padding:0 10px 10px;
2452 padding:0 10px 10px;
2453 }
2453 }
2454
2454
2455 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a {
2455 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a {
2456 color:#bfe3ff;
2456 color:#bfe3ff;
2457 }
2457 }
2458
2458
2459 #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 {
2459 #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 {
2460 margin:10px 24px 10px 44px;
2460 margin:10px 24px 10px 44px;
2461 }
2461 }
2462
2462
2463 #content div.box div.form,#content div.box div.table,#content div.box div.traffic {
2463 #content div.box div.form,#content div.box div.table,#content div.box div.traffic {
2464 clear:both;
2464 clear:both;
2465 overflow:hidden;
2465 overflow:hidden;
2466 margin:0;
2466 margin:0;
2467 padding:0 20px 10px;
2467 padding:0 20px 10px;
2468 }
2468 }
2469
2469
2470 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields {
2470 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields {
2471 clear:both;
2471 clear:both;
2472 overflow:hidden;
2472 overflow:hidden;
2473 margin:0;
2473 margin:0;
2474 padding:0;
2474 padding:0;
2475 }
2475 }
2476
2476
2477 #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 {
2477 #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 {
2478 height:1%;
2478 height:1%;
2479 display:block;
2479 display:block;
2480 color:#363636;
2480 color:#363636;
2481 margin:0;
2481 margin:0;
2482 padding:2px 0 0;
2482 padding:2px 0 0;
2483 }
2483 }
2484
2484
2485 #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 {
2485 #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 {
2486 background:#FBE3E4;
2486 background:#FBE3E4;
2487 border-top:1px solid #e1b2b3;
2487 border-top:1px solid #e1b2b3;
2488 border-left:1px solid #e1b2b3;
2488 border-left:1px solid #e1b2b3;
2489 border-right:1px solid #FBC2C4;
2489 border-right:1px solid #FBC2C4;
2490 border-bottom:1px solid #FBC2C4;
2490 border-bottom:1px solid #FBC2C4;
2491 }
2491 }
2492
2492
2493 #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 {
2493 #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 {
2494 background:#E6EFC2;
2494 background:#E6EFC2;
2495 border-top:1px solid #cebb98;
2495 border-top:1px solid #cebb98;
2496 border-left:1px solid #cebb98;
2496 border-left:1px solid #cebb98;
2497 border-right:1px solid #c6d880;
2497 border-right:1px solid #c6d880;
2498 border-bottom:1px solid #c6d880;
2498 border-bottom:1px solid #c6d880;
2499 }
2499 }
2500
2500
2501 #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 {
2501 #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 {
2502 margin:0;
2502 margin:0;
2503 }
2503 }
2504
2504
2505 #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{
2505 #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{
2506 margin:0 0 0 0px !important;
2506 margin:0 0 0 0px !important;
2507 padding:0;
2507 padding:0;
2508 }
2508 }
2509
2509
2510 #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 {
2510 #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 {
2511 margin:0 0 0 200px;
2511 margin:0 0 0 200px;
2512 padding:0;
2512 padding:0;
2513 }
2513 }
2514
2514
2515
2515
2516 #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 {
2516 #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 {
2517 color:#000;
2517 color:#000;
2518 text-decoration:none;
2518 text-decoration:none;
2519 }
2519 }
2520
2520
2521 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus {
2521 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus {
2522 border:1px solid #666;
2522 border:1px solid #666;
2523 }
2523 }
2524
2524
2525 #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 {
2525 #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 {
2526 clear:both;
2526 clear:both;
2527 overflow:hidden;
2527 overflow:hidden;
2528 margin:0;
2528 margin:0;
2529 padding:8px 0 2px;
2529 padding:8px 0 2px;
2530 }
2530 }
2531
2531
2532 #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 {
2532 #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 {
2533 float:left;
2533 float:left;
2534 margin:0;
2534 margin:0;
2535 }
2535 }
2536
2536
2537 #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 {
2537 #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 {
2538 height:1%;
2538 height:1%;
2539 display:block;
2539 display:block;
2540 float:left;
2540 float:left;
2541 margin:2px 0 0 4px;
2541 margin:2px 0 0 4px;
2542 }
2542 }
2543
2543
2544 div.form div.fields div.field div.button input,#content div.box div.form div.fields div.buttons input,div.form div.fields div.buttons input,#content div.box div.action div.button input {
2544 div.form div.fields div.field div.button input,#content div.box div.form div.fields div.buttons input,div.form div.fields div.buttons input,#content div.box div.action div.button input {
2545 color:#000;
2545 color:#000;
2546 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2546 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2547 font-size:11px;
2547 font-size:11px;
2548 font-weight:700;
2548 font-weight:700;
2549 margin:0;
2549 margin:0;
2550 }
2550 }
2551
2551
2552 input.ui-button {
2552 input.ui-button {
2553 background:#e5e3e3 url("../images/button.png") repeat-x;
2553 background:#e5e3e3 url("../images/button.png") repeat-x;
2554 border-top:1px solid #DDD;
2554 border-top:1px solid #DDD;
2555 border-left:1px solid #c6c6c6;
2555 border-left:1px solid #c6c6c6;
2556 border-right:1px solid #DDD;
2556 border-right:1px solid #DDD;
2557 border-bottom:1px solid #c6c6c6;
2557 border-bottom:1px solid #c6c6c6;
2558 color:#515151;
2558 color:#515151 !important;
2559 outline:none;
2559 outline:none;
2560 margin:0;
2560 margin:0;
2561 padding:6px 12px;
2561 padding:6px 12px;
2562 -webkit-border-radius: 4px 4px 4px 4px;
2562 -webkit-border-radius: 4px 4px 4px 4px;
2563 -khtml-border-radius: 4px 4px 4px 4px;
2563 -khtml-border-radius: 4px 4px 4px 4px;
2564 -moz-border-radius: 4px 4px 4px 4px;
2564 -moz-border-radius: 4px 4px 4px 4px;
2565 border-radius: 4px 4px 4px 4px;
2565 border-radius: 4px 4px 4px 4px;
2566 box-shadow: 0 1px 0 #ececec;
2566 box-shadow: 0 1px 0 #ececec;
2567 cursor: pointer;
2567 cursor: pointer;
2568 }
2568 }
2569
2569
2570 input.ui-button:hover {
2570 input.ui-button:hover {
2571 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2571 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2572 border-top:1px solid #ccc;
2572 border-top:1px solid #ccc;
2573 border-left:1px solid #bebebe;
2573 border-left:1px solid #bebebe;
2574 border-right:1px solid #b1b1b1;
2574 border-right:1px solid #b1b1b1;
2575 border-bottom:1px solid #afafaf;
2575 border-bottom:1px solid #afafaf;
2576 }
2576 }
2577
2577
2578 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight {
2578 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight {
2579 display:inline;
2579 display:inline;
2580 }
2580 }
2581
2581
2582 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons {
2582 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons {
2583 margin:10px 0 0 200px;
2583 margin:10px 0 0 200px;
2584 padding:0;
2584 padding:0;
2585 }
2585 }
2586
2586
2587 #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 {
2587 #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 {
2588 margin:10px 0 0;
2588 margin:10px 0 0;
2589 }
2589 }
2590
2590
2591 #content div.box table td.user,#content div.box table td.address {
2591 #content div.box table td.user,#content div.box table td.address {
2592 width:10%;
2592 width:10%;
2593 text-align:center;
2593 text-align:center;
2594 }
2594 }
2595
2595
2596 #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 {
2596 #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 {
2597 text-align:right;
2597 text-align:right;
2598 margin:6px 0 0;
2598 margin:6px 0 0;
2599 padding:0;
2599 padding:0;
2600 }
2600 }
2601
2601
2602
2602
2603 #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 {
2603 #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 {
2604 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2604 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2605 border-top:1px solid #ccc;
2605 border-top:1px solid #ccc;
2606 border-left:1px solid #bebebe;
2606 border-left:1px solid #bebebe;
2607 border-right:1px solid #b1b1b1;
2607 border-right:1px solid #b1b1b1;
2608 border-bottom:1px solid #afafaf;
2608 border-bottom:1px solid #afafaf;
2609 color:#515151;
2609 color:#515151;
2610 margin:0;
2610 margin:0;
2611 padding:6px 12px;
2611 padding:6px 12px;
2612 }
2612 }
2613
2613
2614 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results {
2614 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results {
2615 text-align:left;
2615 text-align:left;
2616 float:left;
2616 float:left;
2617 margin:0;
2617 margin:0;
2618 padding:0;
2618 padding:0;
2619 }
2619 }
2620
2620
2621 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span {
2621 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span {
2622 height:1%;
2622 height:1%;
2623 display:block;
2623 display:block;
2624 float:left;
2624 float:left;
2625 background:#ebebeb url("../images/pager.png") repeat-x;
2625 background:#ebebeb url("../images/pager.png") repeat-x;
2626 border-top:1px solid #dedede;
2626 border-top:1px solid #dedede;
2627 border-left:1px solid #cfcfcf;
2627 border-left:1px solid #cfcfcf;
2628 border-right:1px solid #c4c4c4;
2628 border-right:1px solid #c4c4c4;
2629 border-bottom:1px solid #c4c4c4;
2629 border-bottom:1px solid #c4c4c4;
2630 color:#4A4A4A;
2630 color:#4A4A4A;
2631 font-weight:700;
2631 font-weight:700;
2632 margin:0;
2632 margin:0;
2633 padding:6px 8px;
2633 padding:6px 8px;
2634 }
2634 }
2635
2635
2636 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled {
2636 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled {
2637 color:#B4B4B4;
2637 color:#B4B4B4;
2638 padding:6px;
2638 padding:6px;
2639 }
2639 }
2640
2640
2641 #login,#register {
2641 #login,#register {
2642 width:520px;
2642 width:520px;
2643 margin:10% auto 0;
2643 margin:10% auto 0;
2644 padding:0;
2644 padding:0;
2645 }
2645 }
2646
2646
2647 #login div.color,#register div.color {
2647 #login div.color,#register div.color {
2648 clear:both;
2648 clear:both;
2649 overflow:hidden;
2649 overflow:hidden;
2650 background:#FFF;
2650 background:#FFF;
2651 margin:10px auto 0;
2651 margin:10px auto 0;
2652 padding:3px 3px 3px 0;
2652 padding:3px 3px 3px 0;
2653 }
2653 }
2654
2654
2655 #login div.color a,#register div.color a {
2655 #login div.color a,#register div.color a {
2656 width:20px;
2656 width:20px;
2657 height:20px;
2657 height:20px;
2658 display:block;
2658 display:block;
2659 float:left;
2659 float:left;
2660 margin:0 0 0 3px;
2660 margin:0 0 0 3px;
2661 padding:0;
2661 padding:0;
2662 }
2662 }
2663
2663
2664 #login div.title h5,#register div.title h5 {
2664 #login div.title h5,#register div.title h5 {
2665 color:#fff;
2665 color:#fff;
2666 margin:10px;
2666 margin:10px;
2667 padding:0;
2667 padding:0;
2668 }
2668 }
2669
2669
2670 #login div.form div.fields div.field,#register div.form div.fields div.field {
2670 #login div.form div.fields div.field,#register div.form div.fields div.field {
2671 clear:both;
2671 clear:both;
2672 overflow:hidden;
2672 overflow:hidden;
2673 margin:0;
2673 margin:0;
2674 padding:0 0 10px;
2674 padding:0 0 10px;
2675 }
2675 }
2676
2676
2677 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message {
2677 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message {
2678 height:1%;
2678 height:1%;
2679 display:block;
2679 display:block;
2680 color:red;
2680 color:red;
2681 margin:8px 0 0;
2681 margin:8px 0 0;
2682 padding:0;
2682 padding:0;
2683 max-width: 320px;
2683 max-width: 320px;
2684 }
2684 }
2685
2685
2686 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label {
2686 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label {
2687 color:#000;
2687 color:#000;
2688 font-weight:700;
2688 font-weight:700;
2689 }
2689 }
2690
2690
2691 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input {
2691 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input {
2692 float:left;
2692 float:left;
2693 margin:0;
2693 margin:0;
2694 padding:0;
2694 padding:0;
2695 }
2695 }
2696
2696
2697 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox {
2697 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox {
2698 margin:0 0 0 184px;
2698 margin:0 0 0 184px;
2699 padding:0;
2699 padding:0;
2700 }
2700 }
2701
2701
2702 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label {
2702 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label {
2703 color:#565656;
2703 color:#565656;
2704 font-weight:700;
2704 font-weight:700;
2705 }
2705 }
2706
2706
2707 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input {
2707 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input {
2708 color:#000;
2708 color:#000;
2709 font-size:1em;
2709 font-size:1em;
2710 font-weight:700;
2710 font-weight:700;
2711 font-family:Verdana, Helvetica, Sans-Serif;
2711 font-family:Verdana, Helvetica, Sans-Serif;
2712 margin:0;
2712 margin:0;
2713 }
2713 }
2714
2714
2715 #changeset_content .container .wrapper,#graph_content .container .wrapper {
2715 #changeset_content .container .wrapper,#graph_content .container .wrapper {
2716 width:600px;
2716 width:600px;
2717 }
2717 }
2718
2718
2719 #changeset_content .container .left,#graph_content .container .left {
2719 #changeset_content .container .left,#graph_content .container .left {
2720 float:left;
2720 float:left;
2721 width:70%;
2721 width:70%;
2722 padding-left:5px;
2722 padding-left:5px;
2723 }
2723 }
2724
2724
2725 #changeset_content .container .left .date,.ac .match {
2725 #changeset_content .container .left .date,.ac .match {
2726 font-weight:700;
2726 font-weight:700;
2727 padding-top: 5px;
2727 padding-top: 5px;
2728 padding-bottom:5px;
2728 padding-bottom:5px;
2729 }
2729 }
2730
2730
2731 div#legend_container table td,div#legend_choices table td {
2731 div#legend_container table td,div#legend_choices table td {
2732 border:none !important;
2732 border:none !important;
2733 height:20px !important;
2733 height:20px !important;
2734 padding:0 !important;
2734 padding:0 !important;
2735 }
2735 }
2736
2736
2737 #q_filter{
2737 #q_filter{
2738 border:0 none;
2738 border:0 none;
2739 color:#AAAAAA;
2739 color:#AAAAAA;
2740 margin-bottom:-4px;
2740 margin-bottom:-4px;
2741 margin-top:-4px;
2741 margin-top:-4px;
2742 padding-left:3px;
2742 padding-left:3px;
2743 }
2743 }
2744
2744
2745 #node_filter{
2745 #node_filter{
2746 border:0px solid #545454;
2746 border:0px solid #545454;
2747 color:#AAAAAA;
2747 color:#AAAAAA;
2748 padding-left:3px;
2748 padding-left:3px;
2749 }
2749 }
General Comments 0
You need to be logged in to leave comments. Login now