##// END OF EJS Templates
Merged pt_BR localization
Augusto Herrmann -
r1473:123139d8 merge beta
parent child Browse files
Show More
@@ -1,339 +1,340
1 1 .. _changelog:
2 2
3 3 Changelog
4 4 =========
5 5
6 6 1.2.0 (**2011-XX-XX**)
7 7 ======================
8 8
9 9 :status: in-progress
10 10 :branch: beta
11 11
12 12 news
13 13 ----
14 14
15 15 - implemented #47 repository groups
16 16 - implemented #89 Can setup google analytics code from settings menu
17 17 - implemented #91 added nicer looking archive urls with more download options
18 18 like tags, branches
19 19 - implemented #44 into file browsing, and added follow branch option
20 20 - implemented #84 downloads can be enabled/disabled for each repository
21 21 - anonymous repository can be cloned without having to pass default:default
22 22 into clone url
23 23 - fixed #90 whoosh indexer can index chooses repositories passed in command
24 24 line
25 25 - extended journal with day aggregates and paging
26 26 - implemented #107 source code lines highlight ranges
27 27 - implemented #93 customizable changelog on combined revision ranges -
28 28 equivalent of githubs compare view
29 29 - implemented #108 extended and more powerful LDAP configuration
30 30 - implemented #56 users groups
31 31 - major code rewrites optimized codes for speed and memory usage
32 32 - raw and diff downloads are now in git format
33 33 - setup command checks for write access to given path
34 34 - fixed many issues with international characters and unicode. It uses utf8
35 35 decode with replace to provide less errors even with non utf8 encoded strings
36 36 - #125 added API KEY access to feeds
37 37 - #109 Repository can be created from external Mercurial link (aka. remote
38 38 repository, and manually updated (via pull) from admin panel
39 39 - beta git support - push/pull server + basic view for git repos
40 40 - added followers page and forks page
41 41 - server side file edition with commits powered by codemirror
42 42 - #111 file browser file finder, quick lookup files on whole file tree
43 43 - added quick login sliding menu into main page
44 44 - changelog uses lazy loading of affected files details, in some scenarios
45 45 this can improve speed of changelog page dramatically especially for
46 46 larger repositories.
47 47 - implements #214 added support for downloading subrepos in download menu.
48 48 - Added basic API for direct operations on rhodecode via JSON
49 - Implemented advanced hook management
49 50
50 51 fixes
51 52 -----
52 53
53 54 - fixed file browser bug, when switching into given form revision the url was
54 55 not changing
55 56 - fixed propagation to error controller on simplehg and simplegit middlewares
56 57 - fixed error when trying to make a download on empty repository
57 58 - fixed problem with '[' chars in commit messages in journal
58 59 - fixed #99 Unicode errors, on file node paths with non utf-8 characters
59 60 - journal fork fixes
60 61 - removed issue with space inside renamed repository after deletion
61 62 - fixed strange issue on formencode imports
62 63 - fixed #126 Deleting repository on Windows, rename used incompatible chars.
63 64 - #150 fixes for errors on repositories mapped in db but corrupted in
64 65 filesystem
65 66 - fixed problem with ascendant characters in realm #181
66 67 - fixed problem with sqlite file based database connection pool
67 68 - whoosh indexer and code stats share the same dynamic extensions map
68 69 - fixes #188 - relationship delete of repo_to_perm entry on user removal
69 70 - fixes issue #189 Trending source files shows "show more" when no more exist
70 71 - fixes issue #197 Relative paths for pidlocks
71 72 - fixes issue #198 password will require only 3 chars now for login form
72 73 - fixes issue #199 wrong redirection for non admin users after creating a repository
73 74 - fixes issues #202, bad db constraint made impossible to attach same group
74 75 more than one time. Affects only mysql/postgres
75 76 - fixes #218 os.kill patch for windows was missing sig param
76 77 - improved rendering of dag (they are not trimmed anymore when number of
77 78 heads exceeds 5)
78 79
79 80 1.1.8 (**2011-04-12**)
80 81 ======================
81 82
82 83 news
83 84 ----
84 85
85 86 - improved windows support
86 87
87 88 fixes
88 89 -----
89 90
90 91 - fixed #140 freeze of python dateutil library, since new version is python2.x
91 92 incompatible
92 93 - setup-app will check for write permission in given path
93 94 - cleaned up license info issue #149
94 95 - fixes for issues #137,#116 and problems with unicode and accented characters.
95 96 - fixes crashes on gravatar, when passed in email as unicode
96 97 - fixed tooltip flickering problems
97 98 - fixed came_from redirection on windows
98 99 - fixed logging modules, and sql formatters
99 100 - windows fixes for os.kill issue #133
100 101 - fixes path splitting for windows issues #148
101 102 - fixed issue #143 wrong import on migration to 1.1.X
102 103 - fixed problems with displaying binary files, thanks to Thomas Waldmann
103 104 - removed name from archive files since it's breaking ui for long repo names
104 105 - fixed issue with archive headers sent to browser, thanks to Thomas Waldmann
105 106 - fixed compatibility for 1024px displays, and larger dpi settings, thanks to
106 107 Thomas Waldmann
107 108 - fixed issue #166 summary pager was skipping 10 revisions on second page
108 109
109 110
110 111 1.1.7 (**2011-03-23**)
111 112 ======================
112 113
113 114 news
114 115 ----
115 116
116 117 fixes
117 118 -----
118 119
119 120 - fixed (again) #136 installation support for FreeBSD
120 121
121 122
122 123 1.1.6 (**2011-03-21**)
123 124 ======================
124 125
125 126 news
126 127 ----
127 128
128 129 fixes
129 130 -----
130 131
131 132 - fixed #136 installation support for FreeBSD
132 133 - RhodeCode will check for python version during installation
133 134
134 135 1.1.5 (**2011-03-17**)
135 136 ======================
136 137
137 138 news
138 139 ----
139 140
140 141 - basic windows support, by exchanging pybcrypt into sha256 for windows only
141 142 highly inspired by idea of mantis406
142 143
143 144 fixes
144 145 -----
145 146
146 147 - fixed sorting by author in main page
147 148 - fixed crashes with diffs on binary files
148 149 - fixed #131 problem with boolean values for LDAP
149 150 - fixed #122 mysql problems thanks to striker69
150 151 - fixed problem with errors on calling raw/raw_files/annotate functions
151 152 with unknown revisions
152 153 - fixed returned rawfiles attachment names with international character
153 154 - cleaned out docs, big thanks to Jason Harris
154 155
155 156 1.1.4 (**2011-02-19**)
156 157 ======================
157 158
158 159 news
159 160 ----
160 161
161 162 fixes
162 163 -----
163 164
164 165 - fixed formencode import problem on settings page, that caused server crash
165 166 when that page was accessed as first after server start
166 167 - journal fixes
167 168 - fixed option to access repository just by entering http://server/<repo_name>
168 169
169 170 1.1.3 (**2011-02-16**)
170 171 ======================
171 172
172 173 news
173 174 ----
174 175
175 176 - implemented #102 allowing the '.' character in username
176 177 - added option to access repository just by entering http://server/<repo_name>
177 178 - celery task ignores result for better performance
178 179
179 180 fixes
180 181 -----
181 182
182 183 - fixed ehlo command and non auth mail servers on smtp_lib. Thanks to
183 184 apollo13 and Johan Walles
184 185 - small fixes in journal
185 186 - fixed problems with getting setting for celery from .ini files
186 187 - registration, password reset and login boxes share the same title as main
187 188 application now
188 189 - fixed #113: to high permissions to fork repository
189 190 - fixed problem with '[' chars in commit messages in journal
190 191 - removed issue with space inside renamed repository after deletion
191 192 - db transaction fixes when filesystem repository creation failed
192 193 - fixed #106 relation issues on databases different than sqlite
193 194 - fixed static files paths links to use of url() method
194 195
195 196 1.1.2 (**2011-01-12**)
196 197 ======================
197 198
198 199 news
199 200 ----
200 201
201 202
202 203 fixes
203 204 -----
204 205
205 206 - fixes #98 protection against float division of percentage stats
206 207 - fixed graph bug
207 208 - forced webhelpers version since it was making troubles during installation
208 209
209 210 1.1.1 (**2011-01-06**)
210 211 ======================
211 212
212 213 news
213 214 ----
214 215
215 216 - added force https option into ini files for easier https usage (no need to
216 217 set server headers with this options)
217 218 - small css updates
218 219
219 220 fixes
220 221 -----
221 222
222 223 - fixed #96 redirect loop on files view on repositories without changesets
223 224 - fixed #97 unicode string passed into server header in special cases (mod_wsgi)
224 225 and server crashed with errors
225 226 - fixed large tooltips problems on main page
226 227 - fixed #92 whoosh indexer is more error proof
227 228
228 229 1.1.0 (**2010-12-18**)
229 230 ======================
230 231
231 232 news
232 233 ----
233 234
234 235 - rewrite of internals for vcs >=0.1.10
235 236 - uses mercurial 1.7 with dotencode disabled for maintaining compatibility
236 237 with older clients
237 238 - anonymous access, authentication via ldap
238 239 - performance upgrade for cached repos list - each repository has it's own
239 240 cache that's invalidated when needed.
240 241 - performance upgrades on repositories with large amount of commits (20K+)
241 242 - main page quick filter for filtering repositories
242 243 - user dashboards with ability to follow chosen repositories actions
243 244 - sends email to admin on new user registration
244 245 - added cache/statistics reset options into repository settings
245 246 - more detailed action logger (based on hooks) with pushed changesets lists
246 247 and options to disable those hooks from admin panel
247 248 - introduced new enhanced changelog for merges that shows more accurate results
248 249 - new improved and faster code stats (based on pygments lexers mapping tables,
249 250 showing up to 10 trending sources for each repository. Additionally stats
250 251 can be disabled in repository settings.
251 252 - gui optimizations, fixed application width to 1024px
252 253 - added cut off (for large files/changesets) limit into config files
253 254 - whoosh, celeryd, upgrade moved to paster command
254 255 - other than sqlite database backends can be used
255 256
256 257 fixes
257 258 -----
258 259
259 260 - fixes #61 forked repo was showing only after cache expired
260 261 - fixes #76 no confirmation on user deletes
261 262 - fixes #66 Name field misspelled
262 263 - fixes #72 block user removal when he owns repositories
263 264 - fixes #69 added password confirmation fields
264 265 - fixes #87 RhodeCode crashes occasionally on updating repository owner
265 266 - fixes #82 broken annotations on files with more than 1 blank line at the end
266 267 - a lot of fixes and tweaks for file browser
267 268 - fixed detached session issues
268 269 - fixed when user had no repos he would see all repos listed in my account
269 270 - fixed ui() instance bug when global hgrc settings was loaded for server
270 271 instance and all hgrc options were merged with our db ui() object
271 272 - numerous small bugfixes
272 273
273 274 (special thanks for TkSoh for detailed feedback)
274 275
275 276
276 277 1.0.2 (**2010-11-12**)
277 278 ======================
278 279
279 280 news
280 281 ----
281 282
282 283 - tested under python2.7
283 284 - bumped sqlalchemy and celery versions
284 285
285 286 fixes
286 287 -----
287 288
288 289 - fixed #59 missing graph.js
289 290 - fixed repo_size crash when repository had broken symlinks
290 291 - fixed python2.5 crashes.
291 292
292 293
293 294 1.0.1 (**2010-11-10**)
294 295 ======================
295 296
296 297 news
297 298 ----
298 299
299 300 - small css updated
300 301
301 302 fixes
302 303 -----
303 304
304 305 - fixed #53 python2.5 incompatible enumerate calls
305 306 - fixed #52 disable mercurial extension for web
306 307 - fixed #51 deleting repositories don't delete it's dependent objects
307 308
308 309
309 310 1.0.0 (**2010-11-02**)
310 311 ======================
311 312
312 313 - security bugfix simplehg wasn't checking for permissions on commands
313 314 other than pull or push.
314 315 - fixed doubled messages after push or pull in admin journal
315 316 - templating and css corrections, fixed repo switcher on chrome, updated titles
316 317 - admin menu accessible from options menu on repository view
317 318 - permissions cached queries
318 319
319 320 1.0.0rc4 (**2010-10-12**)
320 321 ==========================
321 322
322 323 - fixed python2.5 missing simplejson imports (thanks to Jens Bäckman)
323 324 - removed cache_manager settings from sqlalchemy meta
324 325 - added sqlalchemy cache settings to ini files
325 326 - validated password length and added second try of failure on paster setup-app
326 327 - fixed setup database destroy prompt even when there was no db
327 328
328 329
329 330 1.0.0rc3 (**2010-10-11**)
330 331 =========================
331 332
332 333 - fixed i18n during installation.
333 334
334 335 1.0.0rc2 (**2010-10-11**)
335 336 =========================
336 337
337 338 - Disabled dirsize in file browser, it's causing nasty bug when dir renames
338 339 occure. After vcs is fixed it'll be put back again.
339 340 - templating/css rewrites, optimized css. No newline at end of file
@@ -1,557 +1,573
1 1 .. _setup:
2 2
3 3 Setup
4 4 =====
5 5
6 6
7 7 Setting up RhodeCode
8 8 --------------------
9 9
10 10 First, you will need to create a RhodeCode configuration file. Run the
11 11 following command to do this::
12 12
13 13 paster make-config RhodeCode production.ini
14 14
15 15 - This will create the file `production.ini` in the current directory. This
16 16 configuration file contains the various settings for RhodeCode, e.g proxy
17 17 port, email settings, usage of static files, cache, celery settings and
18 18 logging.
19 19
20 20
21 21 Next, you need to create the databases used by RhodeCode. I recommend that you
22 22 use sqlite (default) or postgresql. If you choose a database other than the
23 23 default ensure you properly adjust the db url in your production.ini
24 24 configuration file to use this other database. Create the databases by running
25 25 the following command::
26 26
27 27 paster setup-app production.ini
28 28
29 29 This will prompt you for a "root" path. This "root" path is the location where
30 30 RhodeCode will store all of its repositories on the current machine. After
31 31 entering this "root" path ``setup-app`` will also prompt you for a username
32 32 and password for the initial admin account which ``setup-app`` sets up for you.
33 33
34 34 - The ``setup-app`` command will create all of the needed tables and an admin
35 35 account. When choosing a root path you can either use a new empty location,
36 36 or a location which already contains existing repositories. If you choose a
37 37 location which contains existing repositories RhodeCode will simply add all
38 38 of the repositories at the chosen location to it's database. (Note: make
39 39 sure you specify the correct path to the root).
40 40 - Note: the given path for mercurial_ repositories **must** be write accessible
41 41 for the application. It's very important since the RhodeCode web interface
42 42 will work without write access, but when trying to do a push it will
43 43 eventually fail with permission denied errors unless it has write access.
44 44
45 45 You are now ready to use RhodeCode, to run it simply execute::
46 46
47 47 paster serve production.ini
48 48
49 49 - This command runs the RhodeCode server. The web app should be available at the
50 50 127.0.0.1:5000. This ip and port is configurable via the production.ini
51 51 file created in previous step
52 52 - Use the admin account you created above when running ``setup-app`` to login
53 53 to the web app.
54 54 - The default permissions on each repository is read, and the owner is admin.
55 55 Remember to update these if needed.
56 56 - In the admin panel you can toggle ldap, anonymous, permissions settings. As
57 57 well as edit more advanced options on users and repositories
58 58
59 59 Try copying your own mercurial repository into the "root" directory you are
60 60 using, then from within the RhodeCode web application choose Admin >
61 61 repositories. Then choose Add New Repository. Add the repository you copied
62 62 into the root. Test that you can browse your repository from within RhodeCode
63 63 and then try cloning your repository from RhodeCode with::
64 64
65 65 hg clone http://127.0.0.1:5000/<repository name>
66 66
67 67 where *repository name* is replaced by the name of your repository.
68 68
69 69 Using RhodeCode with SSH
70 70 ------------------------
71 71
72 72 RhodeCode currently only hosts repositories using http and https. (The addition
73 73 of ssh hosting is a planned future feature.) However you can easily use ssh in
74 74 parallel with RhodeCode. (Repository access via ssh is a standard "out of
75 75 the box" feature of mercurial_ and you can use this to access any of the
76 76 repositories that RhodeCode is hosting. See PublishingRepositories_)
77 77
78 78 RhodeCode repository structures are kept in directories with the same name
79 79 as the project. When using repository groups, each group is a subdirectory.
80 80 This allows you to easily use ssh for accessing repositories.
81 81
82 82 In order to use ssh you need to make sure that your web-server and the users
83 83 login accounts have the correct permissions set on the appropriate directories.
84 84 (Note that these permissions are independent of any permissions you have set up
85 85 using the RhodeCode web interface.)
86 86
87 87 If your main directory (the same as set in RhodeCode settings) is for example
88 88 set to **/home/hg** and the repository you are using is named `rhodecode`, then
89 89 to clone via ssh you should run::
90 90
91 91 hg clone ssh://user@server.com/home/hg/rhodecode
92 92
93 93 Using other external tools such as mercurial-server_ or using ssh key based
94 94 authentication is fully supported.
95 95
96 96 Note: In an advanced setup, in order for your ssh access to use the same
97 97 permissions as set up via the RhodeCode web interface, you can create an
98 98 authentication hook to connect to the rhodecode db and runs check functions for
99 99 permissions against that.
100 100
101 101 Setting up Whoosh full text search
102 102 ----------------------------------
103 103
104 104 Starting from version 1.1 the whoosh index can be build by using the paster
105 105 command ``make-index``. To use ``make-index`` you must specify the configuration
106 106 file that stores the location of the index. You may specify the location of the
107 107 repositories (`--repo-location`). If not specified, this value is retrieved
108 108 from the RhodeCode database. This was required prior to 1.2. Starting from
109 109 version 1.2 it is also possible to specify a comma separated list of
110 110 repositories (`--index-only`) to build index only on chooses repositories
111 111 skipping any other found in repos location
112 112
113 113 You may optionally pass the option `-f` to enable a full index rebuild. Without
114 114 the `-f` option, indexing will run always in "incremental" mode.
115 115
116 116 For an incremental index build use::
117 117
118 118 paster make-index production.ini
119 119
120 120 For a full index rebuild use::
121 121
122 122 paster make-index production.ini -f
123 123
124 124
125 125 building index just for chosen repositories is possible with such command::
126 126
127 127 paster make-index production.ini --index-only=vcs,rhodecode
128 128
129 129
130 130 In order to do periodical index builds and keep your index always up to date.
131 131 It's recommended to do a crontab entry for incremental indexing.
132 132 An example entry might look like this::
133 133
134 134 /path/to/python/bin/paster make-index /path/to/rhodecode/production.ini
135 135
136 136 When using incremental mode (the default) whoosh will check the last
137 137 modification date of each file and add it to be reindexed if a newer file is
138 138 available. The indexing daemon checks for any removed files and removes them
139 139 from index.
140 140
141 141 If you want to rebuild index from scratch, you can use the `-f` flag as above,
142 142 or in the admin panel you can check `build from scratch` flag.
143 143
144 144
145 145 Setting up LDAP support
146 146 -----------------------
147 147
148 148 RhodeCode starting from version 1.1 supports ldap authentication. In order
149 149 to use LDAP, you have to install the python-ldap_ package. This package is
150 150 available via pypi, so you can install it by running
151 151
152 152 using easy_install::
153 153
154 154 easy_install python-ldap
155 155
156 156 using pip::
157 157
158 158 pip install python-ldap
159 159
160 160 .. note::
161 161 python-ldap requires some certain libs on your system, so before installing
162 162 it check that you have at least `openldap`, and `sasl` libraries.
163 163
164 164 LDAP settings are located in admin->ldap section,
165 165
166 166 Here's a typical ldap setup::
167 167
168 168 Connection settings
169 169 Enable LDAP = checked
170 170 Host = host.example.org
171 171 Port = 389
172 172 Account = <account>
173 173 Password = <password>
174 174 Connection Security = LDAPS connection
175 175 Certificate Checks = DEMAND
176 176
177 177 Search settings
178 178 Base DN = CN=users,DC=host,DC=example,DC=org
179 179 LDAP Filter = (&(objectClass=user)(!(objectClass=computer)))
180 180 LDAP Search Scope = SUBTREE
181 181
182 182 Attribute mappings
183 183 Login Attribute = uid
184 184 First Name Attribute = firstName
185 185 Last Name Attribute = lastName
186 186 E-mail Attribute = mail
187 187
188 188 .. _enable_ldap:
189 189
190 190 Enable LDAP : required
191 191 Whether to use LDAP for authenticating users.
192 192
193 193 .. _ldap_host:
194 194
195 195 Host : required
196 196 LDAP server hostname or IP address.
197 197
198 198 .. _Port:
199 199
200 200 Port : required
201 201 389 for un-encrypted LDAP, 636 for SSL-encrypted LDAP.
202 202
203 203 .. _ldap_account:
204 204
205 205 Account : optional
206 206 Only required if the LDAP server does not allow anonymous browsing of
207 207 records. This should be a special account for record browsing. This
208 208 will require `LDAP Password`_ below.
209 209
210 210 .. _LDAP Password:
211 211
212 212 Password : optional
213 213 Only required if the LDAP server does not allow anonymous browsing of
214 214 records.
215 215
216 216 .. _Enable LDAPS:
217 217
218 218 Connection Security : required
219 219 Defines the connection to LDAP server
220 220
221 221 No encryption
222 222 Plain non encrypted connection
223 223
224 224 LDAPS connection
225 225 Enable ldaps connection. It will likely require `Port`_ to be set to
226 226 a different value (standard LDAPS port is 636). When LDAPS is enabled
227 227 then `Certificate Checks`_ is required.
228 228
229 229 START_TLS on LDAP connection
230 230 START TLS connection
231 231
232 232 .. _Certificate Checks:
233 233
234 234 Certificate Checks : optional
235 235 How SSL certificates verification is handled - this is only useful when
236 236 `Enable LDAPS`_ is enabled. Only DEMAND or HARD offer full SSL security
237 237 while the other options are susceptible to man-in-the-middle attacks. SSL
238 238 certificates can be installed to /etc/openldap/cacerts so that the
239 239 DEMAND or HARD options can be used with self-signed certificates or
240 240 certificates that do not have traceable certificates of authority.
241 241
242 242 NEVER
243 243 A serve certificate will never be requested or checked.
244 244
245 245 ALLOW
246 246 A server certificate is requested. Failure to provide a
247 247 certificate or providing a bad certificate will not terminate the
248 248 session.
249 249
250 250 TRY
251 251 A server certificate is requested. Failure to provide a
252 252 certificate does not halt the session; providing a bad certificate
253 253 halts the session.
254 254
255 255 DEMAND
256 256 A server certificate is requested and must be provided and
257 257 authenticated for the session to proceed.
258 258
259 259 HARD
260 260 The same as DEMAND.
261 261
262 262 .. _Base DN:
263 263
264 264 Base DN : required
265 265 The Distinguished Name (DN) where searches for users will be performed.
266 266 Searches can be controlled by `LDAP Filter`_ and `LDAP Search Scope`_.
267 267
268 268 .. _LDAP Filter:
269 269
270 270 LDAP Filter : optional
271 271 A LDAP filter defined by RFC 2254. This is more useful when `LDAP
272 272 Search Scope`_ is set to SUBTREE. The filter is useful for limiting
273 273 which LDAP objects are identified as representing Users for
274 274 authentication. The filter is augmented by `Login Attribute`_ below.
275 275 This can commonly be left blank.
276 276
277 277 .. _LDAP Search Scope:
278 278
279 279 LDAP Search Scope : required
280 280 This limits how far LDAP will search for a matching object.
281 281
282 282 BASE
283 283 Only allows searching of `Base DN`_ and is usually not what you
284 284 want.
285 285
286 286 ONELEVEL
287 287 Searches all entries under `Base DN`_, but not Base DN itself.
288 288
289 289 SUBTREE
290 290 Searches all entries below `Base DN`_, but not Base DN itself.
291 291 When using SUBTREE `LDAP Filter`_ is useful to limit object
292 292 location.
293 293
294 294 .. _Login Attribute:
295 295
296 296 Login Attribute : required
297 297 The LDAP record attribute that will be matched as the USERNAME or
298 298 ACCOUNT used to connect to RhodeCode. This will be added to `LDAP
299 299 Filter`_ for locating the User object. If `LDAP Filter`_ is specified as
300 300 "LDAPFILTER", `Login Attribute`_ is specified as "uid" and the user has
301 301 connected as "jsmith" then the `LDAP Filter`_ will be augmented as below
302 302 ::
303 303
304 304 (&(LDAPFILTER)(uid=jsmith))
305 305
306 306 .. _ldap_attr_firstname:
307 307
308 308 First Name Attribute : required
309 309 The LDAP record attribute which represents the user's first name.
310 310
311 311 .. _ldap_attr_lastname:
312 312
313 313 Last Name Attribute : required
314 314 The LDAP record attribute which represents the user's last name.
315 315
316 316 .. _ldap_attr_email:
317 317
318 318 Email Attribute : required
319 319 The LDAP record attribute which represents the user's email address.
320 320
321 321 If all data are entered correctly, and python-ldap_ is properly installed
322 322 users should be granted access to RhodeCode with ldap accounts. At this
323 323 time user information is copied from LDAP into the RhodeCode user database.
324 324 This means that updates of an LDAP user object may not be reflected as a
325 325 user update in RhodeCode.
326 326
327 327 If You have problems with LDAP access and believe You entered correct
328 328 information check out the RhodeCode logs, any error messages sent from LDAP
329 329 will be saved there.
330 330
331 331 Active Directory
332 332 ''''''''''''''''
333 333
334 334 RhodeCode can use Microsoft Active Directory for user authentication. This
335 335 is done through an LDAP or LDAPS connection to Active Directory. The
336 336 following LDAP configuration settings are typical for using Active
337 337 Directory ::
338 338
339 339 Base DN = OU=SBSUsers,OU=Users,OU=MyBusiness,DC=v3sys,DC=local
340 340 Login Attribute = sAMAccountName
341 341 First Name Attribute = givenName
342 342 Last Name Attribute = sn
343 343 E-mail Attribute = mail
344 344
345 345 All other LDAP settings will likely be site-specific and should be
346 346 appropriately configured.
347 347
348
349
350 Hook management
351 ---------------
352
353 Hooks can be managed in similar way to this used in .hgrc files.
354 To access hooks setting click `advanced setup` on Hooks section of Mercurial
355 Settings in Admin.
356
357 There are 4 built in hooks that cannot be changed (only enable/disable by
358 checkboxes on previos section).
359 To add another custom hook simply fill in first section with
360 <name>.<hook_type> and the second one with hook path. Example hooks
361 can be found at *rhodecode.lib.hooks*.
362
363
348 364 Setting Up Celery
349 365 -----------------
350 366
351 367 Since version 1.1 celery is configured by the rhodecode ini configuration files.
352 368 Simply set use_celery=true in the ini file then add / change the configuration
353 369 variables inside the ini file.
354 370
355 371 Remember that the ini files use the format with '.' not with '_' like celery.
356 372 So for example setting `BROKER_HOST` in celery means setting `broker.host` in
357 373 the config file.
358 374
359 375 In order to start using celery run::
360 376
361 377 paster celeryd <configfile.ini>
362 378
363 379
364 380 .. note::
365 381 Make sure you run this command from the same virtualenv, and with the same
366 382 user that rhodecode runs.
367 383
368 384 HTTPS support
369 385 -------------
370 386
371 387 There are two ways to enable https:
372 388
373 389 - Set HTTP_X_URL_SCHEME in your http server headers, than rhodecode will
374 390 recognize this headers and make proper https redirections
375 391 - Alternatively, change the `force_https = true` flag in the ini configuration
376 392 to force using https, no headers are needed than to enable https
377 393
378 394
379 395 Nginx virtual host example
380 396 --------------------------
381 397
382 398 Sample config for nginx using proxy::
383 399
384 400 server {
385 401 listen 80;
386 402 server_name hg.myserver.com;
387 403 access_log /var/log/nginx/rhodecode.access.log;
388 404 error_log /var/log/nginx/rhodecode.error.log;
389 405 location / {
390 406 root /var/www/rhodecode/rhodecode/public/;
391 407 if (!-f $request_filename){
392 408 proxy_pass http://127.0.0.1:5000;
393 409 }
394 410 #this is important if you want to use https !!!
395 411 proxy_set_header X-Url-Scheme $scheme;
396 412 include /etc/nginx/proxy.conf;
397 413 }
398 414 }
399 415
400 416 Here's the proxy.conf. It's tuned so it will not timeout on long
401 417 pushes or large pushes::
402 418
403 419 proxy_redirect off;
404 420 proxy_set_header Host $host;
405 421 proxy_set_header X-Host $http_host;
406 422 proxy_set_header X-Real-IP $remote_addr;
407 423 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
408 424 proxy_set_header Proxy-host $proxy_host;
409 425 client_max_body_size 400m;
410 426 client_body_buffer_size 128k;
411 427 proxy_buffering off;
412 428 proxy_connect_timeout 7200;
413 429 proxy_send_timeout 7200;
414 430 proxy_read_timeout 7200;
415 431 proxy_buffers 8 32k;
416 432
417 433 Also, when using root path with nginx you might set the static files to false
418 434 in the production.ini file::
419 435
420 436 [app:main]
421 437 use = egg:rhodecode
422 438 full_stack = true
423 439 static_files = false
424 440 lang=en
425 441 cache_dir = %(here)s/data
426 442
427 443 In order to not have the statics served by the application. This improves speed.
428 444
429 445
430 446 Apache virtual host example
431 447 ---------------------------
432 448
433 449 Here is a sample configuration file for apache using proxy::
434 450
435 451 <VirtualHost *:80>
436 452 ServerName hg.myserver.com
437 453 ServerAlias hg.myserver.com
438 454
439 455 <Proxy *>
440 456 Order allow,deny
441 457 Allow from all
442 458 </Proxy>
443 459
444 460 #important !
445 461 #Directive to properly generate url (clone url) for pylons
446 462 ProxyPreserveHost On
447 463
448 464 #rhodecode instance
449 465 ProxyPass / http://127.0.0.1:5000/
450 466 ProxyPassReverse / http://127.0.0.1:5000/
451 467
452 468 #to enable https use line below
453 469 #SetEnvIf X-Url-Scheme https HTTPS=1
454 470
455 471 </VirtualHost>
456 472
457 473
458 474 Additional tutorial
459 475 http://wiki.pylonshq.com/display/pylonscookbook/Apache+as+a+reverse+proxy+for+Pylons
460 476
461 477
462 478 Apache as subdirectory
463 479 ----------------------
464 480
465 481 Apache subdirectory part::
466 482
467 483 <Location /<someprefix> >
468 484 ProxyPass http://127.0.0.1:5000/<someprefix>
469 485 ProxyPassReverse http://127.0.0.1:5000/<someprefix>
470 486 SetEnvIf X-Url-Scheme https HTTPS=1
471 487 </Location>
472 488
473 489 Besides the regular apache setup you will need to add the following line
474 490 into [app:main] section of your .ini file::
475 491
476 492 filter-with = proxy-prefix
477 493
478 494 Add the following at the end of the .ini file::
479 495
480 496 [filter:proxy-prefix]
481 497 use = egg:PasteDeploy#prefix
482 498 prefix = /<someprefix>
483 499
484 500
485 501 then change <someprefix> into your choosen prefix
486 502
487 503 Apache's WSGI config
488 504 --------------------
489 505
490 506
491 507 Example wsgi dispatch script::
492 508
493 509 import os
494 510 os.environ["HGENCODING"] = "UTF-8"
495 511 os.environ['PYTHON_EGG_CACHE'] = '/home/web/rhodecode/.egg-cache'
496 512
497 513 # sometimes it's needed to set the curent dir
498 514 os.chdir('/home/web/rhodecode/')
499 515
500 516 from paste.deploy import loadapp
501 517 from paste.script.util.logging_config import fileConfig
502 518
503 519 fileConfig('/home/web/rhodecode/production.ini')
504 520 application = loadapp('config:/home/web/rhodecode/production.ini')
505 521
506 522
507 523 Other configuration files
508 524 -------------------------
509 525
510 526 Some example init.d scripts can be found here, for debian and gentoo:
511 527
512 528 https://rhodecode.org/rhodecode/files/tip/init.d
513 529
514 530
515 531 Troubleshooting
516 532 ---------------
517 533
518 534 :Q: **Missing static files?**
519 535 :A: Make sure either to set the `static_files = true` in the .ini file or
520 536 double check the root path for your http setup. It should point to
521 537 for example:
522 538 /home/my-virtual-python/lib/python2.6/site-packages/rhodecode/public
523 539
524 540 |
525 541
526 542 :Q: **Can't install celery/rabbitmq**
527 543 :A: Don't worry RhodeCode works without them too. No extra setup is required.
528 544
529 545 |
530 546
531 547 :Q: **Long lasting push timeouts?**
532 548 :A: Make sure you set a longer timeouts in your proxy/fcgi settings, timeouts
533 549 are caused by https server and not RhodeCode.
534 550
535 551 |
536 552
537 553 :Q: **Large pushes timeouts?**
538 554 :A: Make sure you set a proper max_body_size for the http server.
539 555
540 556 |
541 557
542 558 :Q: **Apache doesn't pass basicAuth on pull/push?**
543 559 :A: Make sure you added `WSGIPassAuthorization true`.
544 560
545 561 For further questions search the `Issues tracker`_, or post a message in the
546 562 `google group rhodecode`_
547 563
548 564 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
549 565 .. _python: http://www.python.org/
550 566 .. _mercurial: http://mercurial.selenic.com/
551 567 .. _celery: http://celeryproject.org/
552 568 .. _rabbitmq: http://www.rabbitmq.com/
553 569 .. _python-ldap: http://www.python-ldap.org/
554 570 .. _mercurial-server: http://www.lshift.net/mercurial-server.html
555 571 .. _PublishingRepositories: http://mercurial.selenic.com/wiki/PublishingRepositories
556 572 .. _Issues tracker: https://bitbucket.org/marcinkuzminski/rhodecode/issues
557 573 .. _google group rhodecode: http://groups.google.com/group/rhodecode
@@ -1,2770 +1,2724
1 1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
2 2 border:0;
3 3 outline:0;
4 4 font-size:100%;
5 5 vertical-align:baseline;
6 6 background:transparent;
7 7 margin:0;
8 8 padding:0;
9 9 }
10 10
11 11 body {
12 12 line-height:1;
13 13 height:100%;
14 14 background:url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 15 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
16 16 font-size:12px;
17 17 color:#000;
18 18 margin:0;
19 19 padding:0;
20 20 }
21 21
22 22 ol,ul {
23 23 list-style:none;
24 24 }
25 25
26 26 blockquote,q {
27 27 quotes:none;
28 28 }
29 29
30 30 blockquote:before,blockquote:after,q:before,q:after {
31 31 content:none;
32 32 }
33 33
34 34 :focus {
35 35 outline:0;
36 36 }
37 37
38 38 del {
39 39 text-decoration:line-through;
40 40 }
41 41
42 42 table {
43 43 border-collapse:collapse;
44 44 border-spacing:0;
45 45 }
46 46
47 47 html {
48 48 height:100%;
49 49 }
50 50
51 51 a {
52 52 color:#003367;
53 53 text-decoration:none;
54 54 cursor:pointer;
55 55 }
56 56
57 57 a:hover {
58 58 color:#316293;
59 59 text-decoration:underline;
60 60 }
61 61
62 62 h1,h2,h3,h4,h5,h6 {
63 63 color:#292929;
64 64 font-weight:700;
65 65 }
66 66
67 67 h1 {
68 68 font-size:22px;
69 69 }
70 70
71 71 h2 {
72 72 font-size:20px;
73 73 }
74 74
75 75 h3 {
76 76 font-size:18px;
77 77 }
78 78
79 79 h4 {
80 80 font-size:16px;
81 81 }
82 82
83 83 h5 {
84 84 font-size:14px;
85 85 }
86 86
87 87 h6 {
88 88 font-size:11px;
89 89 }
90 90
91 91 ul.circle {
92 92 list-style-type:circle;
93 93 }
94 94
95 95 ul.disc {
96 96 list-style-type:disc;
97 97 }
98 98
99 99 ul.square {
100 100 list-style-type:square;
101 101 }
102 102
103 103 ol.lower-roman {
104 104 list-style-type:lower-roman;
105 105 }
106 106
107 107 ol.upper-roman {
108 108 list-style-type:upper-roman;
109 109 }
110 110
111 111 ol.lower-alpha {
112 112 list-style-type:lower-alpha;
113 113 }
114 114
115 115 ol.upper-alpha {
116 116 list-style-type:upper-alpha;
117 117 }
118 118
119 119 ol.decimal {
120 120 list-style-type:decimal;
121 121 }
122 122
123 123 div.color {
124 124 clear:both;
125 125 overflow:hidden;
126 126 position:absolute;
127 127 background:#FFF;
128 128 margin:7px 0 0 60px;
129 129 padding:1px 1px 1px 0;
130 130 }
131 131
132 132 div.color a {
133 133 width:15px;
134 134 height:15px;
135 135 display:block;
136 136 float:left;
137 137 margin:0 0 0 1px;
138 138 padding:0;
139 139 }
140 140
141 141 div.options {
142 142 clear:both;
143 143 overflow:hidden;
144 144 position:absolute;
145 145 background:#FFF;
146 146 margin:7px 0 0 162px;
147 147 padding:0;
148 148 }
149 149
150 150 div.options a {
151 151 height:1%;
152 152 display:block;
153 153 text-decoration:none;
154 154 margin:0;
155 155 padding:3px 8px;
156 156 }
157 157
158 158 .top-left-rounded-corner {
159 159 -webkit-border-top-left-radius: 8px;
160 160 -khtml-border-radius-topleft: 8px;
161 161 -moz-border-radius-topleft: 8px;
162 162 border-top-left-radius: 8px;
163 163 }
164 164
165 165 .top-right-rounded-corner {
166 166 -webkit-border-top-right-radius: 8px;
167 167 -khtml-border-radius-topright: 8px;
168 168 -moz-border-radius-topright: 8px;
169 169 border-top-right-radius: 8px;
170 170 }
171 171
172 172 .bottom-left-rounded-corner {
173 173 -webkit-border-bottom-left-radius: 8px;
174 174 -khtml-border-radius-bottomleft: 8px;
175 175 -moz-border-radius-bottomleft: 8px;
176 176 border-bottom-left-radius: 8px;
177 177 }
178 178
179 179 .bottom-right-rounded-corner {
180 180 -webkit-border-bottom-right-radius: 8px;
181 181 -khtml-border-radius-bottomright: 8px;
182 182 -moz-border-radius-bottomright: 8px;
183 183 border-bottom-right-radius: 8px;
184 184 }
185 185
186 186
187 187 #header {
188 188 margin:0;
189 189 padding:0 10px;
190 190 }
191 191
192 192
193 193 #header ul#logged-user{
194 194 margin-bottom:5px !important;
195 195 -webkit-border-radius: 0px 0px 8px 8px;
196 196 -khtml-border-radius: 0px 0px 8px 8px;
197 197 -moz-border-radius: 0px 0px 8px 8px;
198 198 border-radius: 0px 0px 8px 8px;
199 199 height:37px;
200 200 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
201 201 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
202 202 }
203 203
204 204 #header ul#logged-user li {
205 205 list-style:none;
206 206 float:left;
207 207 margin:8px 0 0;
208 208 padding:4px 12px;
209 209 border-left: 1px solid #316293;
210 210 }
211 211
212 212 #header ul#logged-user li.first {
213 213 border-left:none;
214 214 margin:4px;
215 215 }
216 216
217 217 #header ul#logged-user li.first div.gravatar {
218 218 margin-top:-2px;
219 219 }
220 220
221 221 #header ul#logged-user li.first div.account {
222 222 padding-top:4px;
223 223 float:left;
224 224 }
225 225
226 226 #header ul#logged-user li.last {
227 227 border-right:none;
228 228 }
229 229
230 230 #header ul#logged-user li a {
231 231 color:#fff;
232 232 font-weight:700;
233 233 text-decoration:none;
234 234 }
235 235
236 236 #header ul#logged-user li a:hover {
237 237 text-decoration:underline;
238 238 }
239 239
240 240 #header ul#logged-user li.highlight a {
241 241 color:#fff;
242 242 }
243 243
244 244 #header ul#logged-user li.highlight a:hover {
245 245 color:#FFF;
246 246 }
247 247
248 248 #header #header-inner {
249 249 height:40px;
250 250 clear:both;
251 251 position:relative;
252 252 background:#003367 url("../images/header_inner.png") repeat-x;
253 border-bottom:2px solid #fff;
254 253 margin:0;
255 254 padding:0;
255 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
256 -webkit-border-radius: 4px 4px 4px 4px;
257 -khtml-border-radius: 4px 4px 4px 4px;
258 -moz-border-radius: 4px 4px 4px 4px;
259 border-radius: 4px 4px 4px 4px;
256 260 }
257 261
258 262 #header #header-inner #home a {
259 263 height:40px;
260 264 width:46px;
261 265 display:block;
262 266 background:url("../images/button_home.png");
263 267 background-position:0 0;
264 268 margin:0;
265 269 padding:0;
266 270 }
267 271
268 272 #header #header-inner #home a:hover {
269 273 background-position:0 -40px;
270 274 }
271 275
272 276 #header #header-inner #logo h1 {
273 277 color:#FFF;
274 278 font-size:18px;
275 279 margin:10px 0 0 13px;
276 280 padding:0;
277 281 }
278 282
279 283 #header #header-inner #logo a {
280 284 color:#fff;
281 285 text-decoration:none;
282 286 }
283 287
284 288 #header #header-inner #logo a:hover {
285 289 color:#bfe3ff;
286 290 }
287 291
288 292 #header #header-inner #quick,#header #header-inner #quick ul {
289 293 position:relative;
290 294 float:right;
291 295 list-style-type:none;
292 296 list-style-position:outside;
293 margin:10px 5px 0 0;
297 margin:6px 5px 0 0;
294 298 padding:0;
295 299 }
296 300
297 301 #header #header-inner #quick li {
298 302 position:relative;
299 303 float:left;
300 304 margin:0 5px 0 0;
301 305 padding:0;
302 306 }
303 307
304 308 #header #header-inner #quick li a {
305 309 top:0;
306 310 left:0;
307 311 height:1%;
308 312 display:block;
309 313 clear:both;
310 314 overflow:hidden;
311 315 color:#FFF;
312 316 font-weight:700;
313 317 text-decoration:none;
314 background:#369 url("../images/quick_l.png") no-repeat top left;
318 background:#369;
315 319 padding:0;
320 -webkit-border-radius: 4px 4px 4px 4px;
321 -khtml-border-radius: 4px 4px 4px 4px;
322 -moz-border-radius: 4px 4px 4px 4px;
323 border-radius: 4px 4px 4px 4px;
316 324 }
317 325
318 326 #header #header-inner #quick li span.short {
319 327 padding:9px 6px 8px 6px;
320 328 }
321 329
322 330 #header #header-inner #quick li span {
323 331 top:0;
324 332 right:0;
325 333 height:1%;
326 334 display:block;
327 335 float:left;
328 background:url("../images/quick_r.png") no-repeat top right;
329 336 border-left:1px solid #3f6f9f;
330 337 margin:0;
331 338 padding:10px 12px 8px 10px;
332 339 }
333 340
334 341 #header #header-inner #quick li span.normal {
335 342 border:none;
336 343 padding:10px 12px 8px;
337 344 }
338 345
339 346 #header #header-inner #quick li span.icon {
340 347 top:0;
341 348 left:0;
342 349 border-left:none;
343 background:url("../images/quick_l.png") no-repeat top left;
344 350 border-right:1px solid #2e5c89;
345 351 padding:8px 8px 4px;
346 352 }
347 353
348 354 #header #header-inner #quick li span.icon_short {
349 355 top:0;
350 356 left:0;
351 357 border-left:none;
352 358 background:url("../images/quick_l.png") no-repeat top left;
353 359 border-right:1px solid #2e5c89;
354 360 padding:9px 4px 4px;
355 361 }
356 362
357 363 #header #header-inner #quick li a:hover {
358 background:#4e4e4e url("../images/quick_l_selected.png") no-repeat top left;
364 background:#4e4e4e no-repeat top left;
359 365 }
360 366
361 367 #header #header-inner #quick li a:hover span {
362 368 border-left:1px solid #545454;
363 background:url("../images/quick_r_selected.png") no-repeat top right;
364 369 }
365 370
366 371 #header #header-inner #quick li a:hover span.icon,#header #header-inner #quick li a:hover span.icon_short {
367 372 border-left:none;
368 373 border-right:1px solid #464646;
369 background:url("../images/quick_l_selected.png") no-repeat top left;
370 374 }
371 375
372 376 #header #header-inner #quick ul {
373 377 top:29px;
374 378 right:0;
375 379 min-width:200px;
376 380 display:none;
377 381 position:absolute;
378 382 background:#FFF;
379 383 border:1px solid #666;
380 384 border-top:1px solid #003367;
381 385 z-index:100;
382 386 margin:0;
383 387 padding:0;
384 388 }
385 389
386 390 #header #header-inner #quick ul.repo_switcher {
387 391 max-height:275px;
388 392 overflow-x:hidden;
389 393 overflow-y:auto;
390 394 }
391 395 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
392 396 float:none;
393 397 margin:0;
394 398 border-bottom:2px solid #003367;
395 399 }
396 400
397 401
398 402 #header #header-inner #quick .repo_switcher_type{
399 403 position:absolute;
400 404 left:0;
401 405 top:9px;
402 406
403 407 }
404 408 #header #header-inner #quick li ul li {
405 409 border-bottom:1px solid #ddd;
406 410 }
407 411
408 412 #header #header-inner #quick li ul li a {
409 413 width:182px;
410 414 height:auto;
411 415 display:block;
412 416 float:left;
413 417 background:#FFF;
414 418 color:#003367;
415 419 font-weight:400;
416 420 margin:0;
417 421 padding:7px 9px;
418 422 }
419 423
420 424 #header #header-inner #quick li ul li a:hover {
421 425 color:#000;
422 426 background:#FFF;
423 427 }
424 428
425 429 #header #header-inner #quick ul ul {
426 430 top:auto;
427 431 }
428 432
429 433 #header #header-inner #quick li ul ul {
430 434 right:200px;
431 435 max-height:275px;
432 436 overflow:auto;
433 437 overflow-x:hidden;
434 438 white-space:normal;
435 439 }
436 440
437 441 #header #header-inner #quick li ul li a.journal,#header #header-inner #quick li ul li a.journal:hover {
438 442 background:url("../images/icons/book.png") no-repeat scroll 4px 9px #FFF;
439 443 width:167px;
440 444 margin:0;
441 445 padding:12px 9px 7px 24px;
442 446 }
443 447
444 448 #header #header-inner #quick li ul li a.private_repo,#header #header-inner #quick li ul li a.private_repo:hover {
445 449 background:url("../images/icons/lock.png") no-repeat scroll 4px 9px #FFF;
446 450 min-width:167px;
447 451 margin:0;
448 452 padding:12px 9px 7px 24px;
449 453 }
450 454
451 455 #header #header-inner #quick li ul li a.public_repo,#header #header-inner #quick li ul li a.public_repo:hover {
452 456 background:url("../images/icons/lock_open.png") no-repeat scroll 4px 9px #FFF;
453 457 min-width:167px;
454 458 margin:0;
455 459 padding:12px 9px 7px 24px;
456 460 }
457 461
458 462 #header #header-inner #quick li ul li a.hg,#header #header-inner #quick li ul li a.hg:hover {
459 463 background:url("../images/icons/hgicon.png") no-repeat scroll 4px 9px #FFF;
460 464 min-width:167px;
461 465 margin:0 0 0 14px;
462 466 padding:12px 9px 7px 24px;
463 467 }
464 468
465 469 #header #header-inner #quick li ul li a.git,#header #header-inner #quick li ul li a.git:hover {
466 470 background:url("../images/icons/giticon.png") no-repeat scroll 4px 9px #FFF;
467 471 min-width:167px;
468 472 margin:0 0 0 14px;
469 473 padding:12px 9px 7px 24px;
470 474 }
471 475
472 476 #header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover {
473 477 background:url("../images/icons/database_edit.png") no-repeat scroll 4px 9px #FFF;
474 478 width:167px;
475 479 margin:0;
476 480 padding:12px 9px 7px 24px;
477 481 }
478 482
479 483 #header #header-inner #quick li ul li a.repos_groups,#header #header-inner #quick li ul li a.repos_groups:hover {
480 484 background:url("../images/icons/database_link.png") no-repeat scroll 4px 9px #FFF;
481 485 width:167px;
482 486 margin:0;
483 487 padding:12px 9px 7px 24px;
484 488 }
485 489
486 490 #header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover {
487 491 background:#FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
488 492 width:167px;
489 493 margin:0;
490 494 padding:12px 9px 7px 24px;
491 495 }
492 496
493 497 #header #header-inner #quick li ul li a.groups,#header #header-inner #quick li ul li a.groups:hover {
494 498 background:#FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
495 499 width:167px;
496 500 margin:0;
497 501 padding:12px 9px 7px 24px;
498 502 }
499 503
500 504 #header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover {
501 505 background:#FFF url("../images/icons/cog.png") no-repeat 4px 9px;
502 506 width:167px;
503 507 margin:0;
504 508 padding:12px 9px 7px 24px;
505 509 }
506 510
507 511 #header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover {
508 512 background:#FFF url("../images/icons/key.png") no-repeat 4px 9px;
509 513 width:167px;
510 514 margin:0;
511 515 padding:12px 9px 7px 24px;
512 516 }
513 517
514 518 #header #header-inner #quick li ul li a.ldap,#header #header-inner #quick li ul li a.ldap:hover {
515 519 background:#FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
516 520 width:167px;
517 521 margin:0;
518 522 padding:12px 9px 7px 24px;
519 523 }
520 524
521 525 #header #header-inner #quick li ul li a.fork,#header #header-inner #quick li ul li a.fork:hover {
522 526 background:#FFF url("../images/icons/arrow_divide.png") no-repeat 4px 9px;
523 527 width:167px;
524 528 margin:0;
525 529 padding:12px 9px 7px 24px;
526 530 }
527 531
528 532 #header #header-inner #quick li ul li a.search,#header #header-inner #quick li ul li a.search:hover {
529 533 background:#FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
530 534 width:167px;
531 535 margin:0;
532 536 padding:12px 9px 7px 24px;
533 537 }
534 538
535 539 #header #header-inner #quick li ul li a.delete,#header #header-inner #quick li ul li a.delete:hover {
536 540 background:#FFF url("../images/icons/delete.png") no-repeat 4px 9px;
537 541 width:167px;
538 542 margin:0;
539 543 padding:12px 9px 7px 24px;
540 544 }
541 545
542 546 #header #header-inner #quick li ul li a.branches,#header #header-inner #quick li ul li a.branches:hover {
543 547 background:#FFF url("../images/icons/arrow_branch.png") no-repeat 4px 9px;
544 548 width:167px;
545 549 margin:0;
546 550 padding:12px 9px 7px 24px;
547 551 }
548 552
549 553 #header #header-inner #quick li ul li a.tags,#header #header-inner #quick li ul li a.tags:hover {
550 554 background:#FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
551 555 width:167px;
552 556 margin:0;
553 557 padding:12px 9px 7px 24px;
554 558 }
555 559
556 560 #header #header-inner #quick li ul li a.admin,#header #header-inner #quick li ul li a.admin:hover {
557 561 background:#FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
558 562 width:167px;
559 563 margin:0;
560 564 padding:12px 9px 7px 24px;
561 565 }
562 566
563 567
564 568 .quick_repo_menu{
565 569 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
566 570 cursor: pointer;
567 571 width: 8px;
568 572 }
569 573 .quick_repo_menu.active{
570 574 background: #FFF url("../images/horizontal-indicator.png") 4px 50% no-repeat !important;
571 575 cursor: pointer;
572 576 }
573 577 .quick_repo_menu .menu_items{
574 578 margin-top:6px;
575 579 width:150px;
576 580 position: absolute;
577 581 background-color:#FFF;
578 582 background: none repeat scroll 0 0 #FFFFFF;
579 583 border-color: #003367 #666666 #666666;
580 584 border-right: 1px solid #666666;
581 585 border-style: solid;
582 586 border-width: 1px;
583 587 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
584 588 }
585 589 .quick_repo_menu .menu_items li{
586 590 padding:0 !important;
587 591 }
588 592 .quick_repo_menu .menu_items a{
589 593 display: block;
590 594 padding: 4px 12px 4px 8px;
591 595 }
592 596 .quick_repo_menu .menu_items a:hover{
593 597 background-color: #EEE;
594 598 text-decoration: none;
595 599
596 600 }
597 601 .quick_repo_menu .menu_items .icon img{
598 602 margin-bottom:-2px;
599 603 }
600 604 .quick_repo_menu .menu_items.hidden{
601 605 display: none;
602 606 }
603 607
604 608 #content #left {
605 609 left:0;
606 610 width:280px;
607 611 position:absolute;
608 612 }
609 613
610 614 #content #right {
611 615 margin:0 60px 10px 290px;
612 616 }
613 617
614 618 #content div.box {
615 619 clear:both;
616 620 overflow:hidden;
617 621 background:#fff;
618 622 margin:0 0 10px;
619 623 padding:0 0 10px;
624 -webkit-border-radius: 4px 4px 4px 4px;
625 -khtml-border-radius: 4px 4px 4px 4px;
626 -moz-border-radius: 4px 4px 4px 4px;
627 border-radius: 4px 4px 4px 4px;
628 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
629
620 630 }
621 631
622 632 #content div.box-left {
623 633 width:49%;
624 634 clear:none;
625 635 float:left;
626 636 margin:0 0 10px;
627 637 }
628 638
629 639 #content div.box-right {
630 640 width:49%;
631 641 clear:none;
632 642 float:right;
633 643 margin:0 0 10px;
634 644 }
635 645
636 646 #content div.box div.title {
637 647 clear:both;
638 648 overflow:hidden;
639 649 background:#369 url("../images/header_inner.png") repeat-x;
640 650 margin:0 0 20px;
641 651 padding:0;
642 652 }
643 653
644 654 #content div.box div.title h5 {
645 655 float:left;
646 656 border:none;
647 657 color:#fff;
648 658 text-transform:uppercase;
649 659 margin:0;
650 660 padding:11px 0 11px 10px;
651 661 }
652 662
653 663 #content div.box div.title ul.links li {
654 664 list-style:none;
655 665 float:left;
656 666 margin:0;
657 667 padding:0;
658 668 }
659 669
660 670 #content div.box div.title ul.links li a {
661 671 border-left: 1px solid #316293;
662 672 color: #FFFFFF;
663 673 display: block;
664 674 float: left;
665 675 font-size: 13px;
666 676 font-weight: 700;
667 677 height: 1%;
668 678 margin: 0;
669 679 padding: 11px 22px 12px;
670 680 text-decoration: none;
671 681 }
672 682
673 683 #content div.box h1,#content div.box h2,#content div.box h3,#content div.box h4,#content div.box h5,#content div.box h6 {
674 684 clear:both;
675 685 overflow:hidden;
676 686 border-bottom:1px solid #DDD;
677 687 margin:10px 20px;
678 688 padding:0 0 15px;
679 689 }
680 690
681 691 #content div.box p {
682 692 color:#5f5f5f;
683 693 font-size:12px;
684 694 line-height:150%;
685 695 margin:0 24px 10px;
686 696 padding:0;
687 697 }
688 698
689 699 #content div.box blockquote {
690 700 border-left:4px solid #DDD;
691 701 color:#5f5f5f;
692 702 font-size:11px;
693 703 line-height:150%;
694 704 margin:0 34px;
695 705 padding:0 0 0 14px;
696 706 }
697 707
698 708 #content div.box blockquote p {
699 709 margin:10px 0;
700 710 padding:0;
701 711 }
702 712
703 713 #content div.box dl {
704 714 margin:10px 24px;
705 715 }
706 716
707 717 #content div.box dt {
708 718 font-size:12px;
709 719 margin:0;
710 720 }
711 721
712 722 #content div.box dd {
713 723 font-size:12px;
714 724 margin:0;
715 725 padding:8px 0 8px 15px;
716 726 }
717 727
718 728 #content div.box li {
719 729 font-size:12px;
720 730 padding:4px 0;
721 731 }
722 732
723 733 #content div.box ul.disc,#content div.box ul.circle {
724 734 margin:10px 24px 10px 38px;
725 735 }
726 736
727 737 #content div.box ul.square {
728 738 margin:10px 24px 10px 40px;
729 739 }
730 740
731 741 #content div.box img.left {
732 742 border:none;
733 743 float:left;
734 744 margin:10px 10px 10px 0;
735 745 }
736 746
737 747 #content div.box img.right {
738 748 border:none;
739 749 float:right;
740 750 margin:10px 0 10px 10px;
741 751 }
742 752
743 753 #content div.box div.messages {
744 754 clear:both;
745 755 overflow:hidden;
746 756 margin:0 20px;
747 757 padding:0;
748 758 }
749 759
750 760 #content div.box div.message {
751 761 clear:both;
752 762 overflow:hidden;
753 763 margin:0;
754 764 padding:10px 0;
755 765 }
756 766
757 767 #content div.box div.message a {
758 768 font-weight:400 !important;
759 769 }
760 770
761 771 #content div.box div.message div.image {
762 772 float:left;
763 773 margin:9px 0 0 5px;
764 774 padding:6px;
765 775 }
766 776
767 777 #content div.box div.message div.image img {
768 778 vertical-align:middle;
769 779 margin:0;
770 780 }
771 781
772 782 #content div.box div.message div.text {
773 783 float:left;
774 784 margin:0;
775 785 padding:9px 6px;
776 786 }
777 787
778 788 #content div.box div.message div.dismiss a {
779 789 height:16px;
780 790 width:16px;
781 791 display:block;
782 792 background:url("../images/icons/cross.png") no-repeat;
783 793 margin:15px 14px 0 0;
784 794 padding:0;
785 795 }
786 796
787 797 #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 {
788 798 border:none;
789 799 margin:0;
790 800 padding:0;
791 801 }
792 802
793 803 #content div.box div.message div.text span {
794 804 height:1%;
795 805 display:block;
796 806 margin:0;
797 807 padding:5px 0 0;
798 808 }
799 809
800 810 #content div.box div.message-error {
801 811 height:1%;
802 812 clear:both;
803 813 overflow:hidden;
804 814 background:#FBE3E4;
805 815 border:1px solid #FBC2C4;
806 816 color:#860006;
807 817 }
808 818
809 819 #content div.box div.message-error h6 {
810 820 color:#860006;
811 821 }
812 822
813 823 #content div.box div.message-warning {
814 824 height:1%;
815 825 clear:both;
816 826 overflow:hidden;
817 827 background:#FFF6BF;
818 828 border:1px solid #FFD324;
819 829 color:#5f5200;
820 830 }
821 831
822 832 #content div.box div.message-warning h6 {
823 833 color:#5f5200;
824 834 }
825 835
826 836 #content div.box div.message-notice {
827 837 height:1%;
828 838 clear:both;
829 839 overflow:hidden;
830 840 background:#8FBDE0;
831 841 border:1px solid #6BACDE;
832 842 color:#003863;
833 843 }
834 844
835 845 #content div.box div.message-notice h6 {
836 846 color:#003863;
837 847 }
838 848
839 849 #content div.box div.message-success {
840 850 height:1%;
841 851 clear:both;
842 852 overflow:hidden;
843 853 background:#E6EFC2;
844 854 border:1px solid #C6D880;
845 855 color:#4e6100;
846 856 }
847 857
848 858 #content div.box div.message-success h6 {
849 859 color:#4e6100;
850 860 }
851 861
852 862 #content div.box div.form div.fields div.field {
853 863 height:1%;
854 864 border-bottom:1px solid #DDD;
855 865 clear:both;
856 866 margin:0;
857 867 padding:10px 0;
858 868 }
859 869
860 870 #content div.box div.form div.fields div.field-first {
861 871 padding:0 0 10px;
862 872 }
863 873
864 874 #content div.box div.form div.fields div.field-noborder {
865 875 border-bottom:0 !important;
866 876 }
867 877
868 878 #content div.box div.form div.fields div.field span.error-message {
869 879 height:1%;
870 880 display:inline-block;
871 881 color:red;
872 882 margin:8px 0 0 4px;
873 883 padding:0;
874 884 }
875 885
876 886 #content div.box div.form div.fields div.field span.success {
877 887 height:1%;
878 888 display:block;
879 889 color:#316309;
880 890 margin:8px 0 0;
881 891 padding:0;
882 892 }
883 893
884 894 #content div.box div.form div.fields div.field div.label {
885 895 left:70px;
886 896 width:155px;
887 897 position:absolute;
888 898 margin:0;
889 899 padding:8px 0 0 5px;
890 900 }
891 901
892 902 #content div.box-left div.form div.fields div.field div.label,#content div.box-right div.form div.fields div.field div.label {
893 903 clear:both;
894 904 overflow:hidden;
895 905 left:0;
896 906 width:auto;
897 907 position:relative;
898 908 margin:0;
899 909 padding:0 0 8px;
900 910 }
901 911
902 912 #content div.box div.form div.fields div.field div.label-select {
903 913 padding:5px 0 0 5px;
904 914 }
905 915
906 916 #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 {
907 917 padding:0 0 8px;
908 918 }
909 919
910 920 #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 {
911 921 padding:0 0 8px !important;
912 922 }
913 923
914 924 #content div.box div.form div.fields div.field div.label label, div.label label{
915 925 color:#393939;
916 926 font-weight:700;
917 927 }
918 928
919 929 #content div.box div.form div.fields div.field div.input {
920 930 margin:0 0 0 200px;
921 931 }
922 932 #content div.box-left div.form div.fields div.field div.input,#content div.box-right div.form div.fields div.field div.input {
923 933 margin:0 0 0 0px;
924 934 }
925 935
926 936 #content div.box div.form div.fields div.field div.input input {
927 937 background:#FFF;
928 938 border-top:1px solid #b3b3b3;
929 939 border-left:1px solid #b3b3b3;
930 940 border-right:1px solid #eaeaea;
931 941 border-bottom:1px solid #eaeaea;
932 942 color:#000;
933 943 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
934 944 font-size:11px;
935 945 margin:0;
936 946 padding:7px 7px 6px;
937 947 }
938 948
939 949
940 950
941 951 #content div.box div.form div.fields div.field div.input input.small {
942 952 width:30%;
943 953 }
944 954
945 955 #content div.box div.form div.fields div.field div.input input.medium {
946 956 width:55%;
947 957 }
948 958
949 959 #content div.box div.form div.fields div.field div.input input.large {
950 960 width:85%;
951 961 }
952 962
953 963 #content div.box div.form div.fields div.field div.input input.date {
954 964 width:177px;
955 965 }
956 966
957 967 #content div.box div.form div.fields div.field div.input input.button {
958 968 background:#D4D0C8;
959 969 border-top:1px solid #FFF;
960 970 border-left:1px solid #FFF;
961 971 border-right:1px solid #404040;
962 972 border-bottom:1px solid #404040;
963 973 color:#000;
964 974 margin:0;
965 975 padding:4px 8px;
966 976 }
967 977
968 978 #content div.box div.form div.fields div.field div.textarea {
969 979 border-top:1px solid #b3b3b3;
970 980 border-left:1px solid #b3b3b3;
971 981 border-right:1px solid #eaeaea;
972 982 border-bottom:1px solid #eaeaea;
973 983 margin:0 0 0 200px;
974 984 padding:10px;
975 985 }
976 986
977 987 #content div.box div.form div.fields div.field div.textarea-editor {
978 988 border:1px solid #ddd;
979 989 padding:0;
980 990 }
981 991
982 992 #content div.box div.form div.fields div.field div.textarea textarea {
983 993 width:100%;
984 994 height:220px;
985 995 overflow:hidden;
986 996 background:#FFF;
987 997 color:#000;
988 998 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
989 999 font-size:11px;
990 1000 outline:none;
991 1001 border-width:0;
992 1002 margin:0;
993 1003 padding:0;
994 1004 }
995 1005
996 1006 #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 {
997 1007 width:100%;
998 1008 height:100px;
999 1009 }
1000 1010
1001 1011 #content div.box div.form div.fields div.field div.textarea table {
1002 1012 width:100%;
1003 1013 border:none;
1004 1014 margin:0;
1005 1015 padding:0;
1006 1016 }
1007 1017
1008 1018 #content div.box div.form div.fields div.field div.textarea table td {
1009 1019 background:#DDD;
1010 1020 border:none;
1011 1021 padding:0;
1012 1022 }
1013 1023
1014 1024 #content div.box div.form div.fields div.field div.textarea table td table {
1015 1025 width:auto;
1016 1026 border:none;
1017 1027 margin:0;
1018 1028 padding:0;
1019 1029 }
1020 1030
1021 1031 #content div.box div.form div.fields div.field div.textarea table td table td {
1022 1032 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1023 1033 font-size:11px;
1024 1034 padding:5px 5px 5px 0;
1025 1035 }
1026 1036
1027 1037 #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 {
1028 1038 background:#f6f6f6;
1029 1039 border-color:#666;
1030 1040 }
1031 1041
1032 1042 div.form div.fields div.field div.button {
1033 1043 margin:0;
1034 1044 padding:0 0 0 8px;
1035 1045 }
1036 1046
1037 div.form div.fields div.field div.highlight .ui-button {
1038 background:#4e85bb url("../images/button_highlight.png") repeat-x;
1039 border-top:1px solid #5c91a4;
1040 border-left:1px solid #2a6f89;
1041 border-right:1px solid #2b7089;
1042 border-bottom:1px solid #1a6480;
1043 color:#FFF;
1044 margin:0;
1045 padding:6px 12px;
1046 }
1047
1048 div.form div.fields div.field div.highlight .ui-state-hover {
1049 background:#46a0c1 url("../images/button_highlight_selected.png") repeat-x;
1050 border-top:1px solid #78acbf;
1051 border-left:1px solid #34819e;
1052 border-right:1px solid #35829f;
1053 border-bottom:1px solid #257897;
1054 color:#FFF;
1055 margin:0;
1056 padding:6px 12px;
1057 }
1058
1059 #content div.box div.form div.fields div.buttons div.highlight input.ui-button {
1060 background:#4e85bb url("../images/button_highlight.png") repeat-x;
1061 border-top:1px solid #5c91a4;
1062 border-left:1px solid #2a6f89;
1063 border-right:1px solid #2b7089;
1064 border-bottom:1px solid #1a6480;
1065 color:#fff;
1066 margin:0;
1067 padding:6px 12px;
1068 }
1069
1070 #content div.box div.form div.fields div.buttons div.highlight input.ui-state-hover {
1071 background:#46a0c1 url("../images/button_highlight_selected.png") repeat-x;
1072 border-top:1px solid #78acbf;
1073 border-left:1px solid #34819e;
1074 border-right:1px solid #35829f;
1075 border-bottom:1px solid #257897;
1076 color:#fff;
1077 margin:0;
1078 padding:6px 12px;
1079 }
1080 1047
1081 1048 #content div.box table {
1082 1049 width:100%;
1083 1050 border-collapse:collapse;
1084 1051 margin:0;
1085 1052 padding:0;
1053 border: 1px solid #eee;
1086 1054 }
1087 1055
1088 1056 #content div.box table th {
1089 1057 background:#eee;
1090 1058 border-bottom:1px solid #ddd;
1091 1059 padding:5px 0px 5px 5px;
1092 1060 }
1093 1061
1094 1062 #content div.box table th.left {
1095 1063 text-align:left;
1096 1064 }
1097 1065
1098 1066 #content div.box table th.right {
1099 1067 text-align:right;
1100 1068 }
1101 1069
1102 1070 #content div.box table th.center {
1103 1071 text-align:center;
1104 1072 }
1105 1073
1106 1074 #content div.box table th.selected {
1107 1075 vertical-align:middle;
1108 1076 padding:0;
1109 1077 }
1110 1078
1111 1079 #content div.box table td {
1112 1080 background:#fff;
1113 1081 border-bottom:1px solid #cdcdcd;
1114 1082 vertical-align:middle;
1115 1083 padding:5px;
1116 1084 }
1117 1085
1118 1086 #content div.box table tr.selected td {
1119 1087 background:#FFC;
1120 1088 }
1121 1089
1122 1090 #content div.box table td.selected {
1123 1091 width:3%;
1124 1092 text-align:center;
1125 1093 vertical-align:middle;
1126 1094 padding:0;
1127 1095 }
1128 1096
1129 1097 #content div.box table td.action {
1130 1098 width:45%;
1131 1099 text-align:left;
1132 1100 }
1133 1101
1134 1102 #content div.box table td.date {
1135 1103 width:33%;
1136 1104 text-align:center;
1137 1105 }
1138 1106
1139 1107 #content div.box div.action {
1140 1108 float:right;
1141 1109 background:#FFF;
1142 1110 text-align:right;
1143 1111 margin:10px 0 0;
1144 1112 padding:0;
1145 1113 }
1146 1114
1147 1115 #content div.box div.action select {
1148 1116 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1149 1117 font-size:11px;
1150 1118 margin:0;
1151 1119 }
1152 1120
1153 1121 #content div.box div.action .ui-selectmenu {
1154 1122 margin:0;
1155 1123 padding:0;
1156 1124 }
1157 1125
1158 1126 #content div.box div.pagination {
1159 1127 height:1%;
1160 1128 clear:both;
1161 1129 overflow:hidden;
1162 1130 margin:10px 0 0;
1163 1131 padding:0;
1164 1132 }
1165 1133
1166 1134 #content div.box div.pagination ul.pager {
1167 1135 float:right;
1168 1136 text-align:right;
1169 1137 margin:0;
1170 1138 padding:0;
1171 1139 }
1172 1140
1173 1141 #content div.box div.pagination ul.pager li {
1174 1142 height:1%;
1175 1143 float:left;
1176 1144 list-style:none;
1177 1145 background:#ebebeb url("../images/pager.png") repeat-x;
1178 1146 border-top:1px solid #dedede;
1179 1147 border-left:1px solid #cfcfcf;
1180 1148 border-right:1px solid #c4c4c4;
1181 1149 border-bottom:1px solid #c4c4c4;
1182 1150 color:#4A4A4A;
1183 1151 font-weight:700;
1184 1152 margin:0 0 0 4px;
1185 1153 padding:0;
1186 1154 }
1187 1155
1188 1156 #content div.box div.pagination ul.pager li.separator {
1189 1157 padding:6px;
1190 1158 }
1191 1159
1192 1160 #content div.box div.pagination ul.pager li.current {
1193 1161 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1194 1162 border-top:1px solid #ccc;
1195 1163 border-left:1px solid #bebebe;
1196 1164 border-right:1px solid #b1b1b1;
1197 1165 border-bottom:1px solid #afafaf;
1198 1166 color:#515151;
1199 1167 padding:6px;
1200 1168 }
1201 1169
1202 1170 #content div.box div.pagination ul.pager li a {
1203 1171 height:1%;
1204 1172 display:block;
1205 1173 float:left;
1206 1174 color:#515151;
1207 1175 text-decoration:none;
1208 1176 margin:0;
1209 1177 padding:6px;
1210 1178 }
1211 1179
1212 1180 #content div.box div.pagination ul.pager li a:hover,#content div.box div.pagination ul.pager li a:active {
1213 1181 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1214 1182 border-top:1px solid #ccc;
1215 1183 border-left:1px solid #bebebe;
1216 1184 border-right:1px solid #b1b1b1;
1217 1185 border-bottom:1px solid #afafaf;
1218 1186 margin:-1px;
1219 1187 }
1220 1188
1221 1189 #content div.box div.pagination-wh {
1222 1190 height:1%;
1223 1191 clear:both;
1224 1192 overflow:hidden;
1225 1193 text-align:right;
1226 1194 margin:10px 0 0;
1227 1195 padding:0;
1228 1196 }
1229 1197
1230 1198 #content div.box div.pagination-right {
1231 1199 float:right;
1232 1200 }
1233 1201
1234 1202 #content div.box div.pagination-wh a,#content div.box div.pagination-wh span.pager_dotdot {
1235 1203 height:1%;
1236 1204 float:left;
1237 1205 background:#ebebeb url("../images/pager.png") repeat-x;
1238 1206 border-top:1px solid #dedede;
1239 1207 border-left:1px solid #cfcfcf;
1240 1208 border-right:1px solid #c4c4c4;
1241 1209 border-bottom:1px solid #c4c4c4;
1242 1210 color:#4A4A4A;
1243 1211 font-weight:700;
1244 1212 margin:0 0 0 4px;
1245 1213 padding:6px;
1246 1214 }
1247 1215
1248 1216 #content div.box div.pagination-wh span.pager_curpage {
1249 1217 height:1%;
1250 1218 float:left;
1251 1219 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1252 1220 border-top:1px solid #ccc;
1253 1221 border-left:1px solid #bebebe;
1254 1222 border-right:1px solid #b1b1b1;
1255 1223 border-bottom:1px solid #afafaf;
1256 1224 color:#515151;
1257 1225 font-weight:700;
1258 1226 margin:0 0 0 4px;
1259 1227 padding:6px;
1260 1228 }
1261 1229
1262 1230 #content div.box div.pagination-wh a:hover,#content div.box div.pagination-wh a:active {
1263 1231 background:#b4b4b4 url("../images/pager_selected.png") repeat-x;
1264 1232 border-top:1px solid #ccc;
1265 1233 border-left:1px solid #bebebe;
1266 1234 border-right:1px solid #b1b1b1;
1267 1235 border-bottom:1px solid #afafaf;
1268 1236 text-decoration:none;
1269 1237 }
1270 1238
1271 1239 #content div.box div.traffic div.legend {
1272 1240 clear:both;
1273 1241 overflow:hidden;
1274 1242 border-bottom:1px solid #ddd;
1275 1243 margin:0 0 10px;
1276 1244 padding:0 0 10px;
1277 1245 }
1278 1246
1279 1247 #content div.box div.traffic div.legend h6 {
1280 1248 float:left;
1281 1249 border:none;
1282 1250 margin:0;
1283 1251 padding:0;
1284 1252 }
1285 1253
1286 1254 #content div.box div.traffic div.legend li {
1287 1255 list-style:none;
1288 1256 float:left;
1289 1257 font-size:11px;
1290 1258 margin:0;
1291 1259 padding:0 8px 0 4px;
1292 1260 }
1293 1261
1294 1262 #content div.box div.traffic div.legend li.visits {
1295 1263 border-left:12px solid #edc240;
1296 1264 }
1297 1265
1298 1266 #content div.box div.traffic div.legend li.pageviews {
1299 1267 border-left:12px solid #afd8f8;
1300 1268 }
1301 1269
1302 1270 #content div.box div.traffic table {
1303 1271 width:auto;
1304 1272 }
1305 1273
1306 1274 #content div.box div.traffic table td {
1307 1275 background:transparent;
1308 1276 border:none;
1309 1277 padding:2px 3px 3px;
1310 1278 }
1311 1279
1312 1280 #content div.box div.traffic table td.legendLabel {
1313 1281 padding:0 3px 2px;
1314 1282 }
1315 1283
1316 1284 #summary{
1317 1285
1318 1286 }
1319 1287
1320 1288 #summary .desc{
1321 1289 white-space: pre;
1322 1290 width: 100%;
1323 1291 }
1324 1292
1325 1293 #summary .repo_name{
1326 1294 font-size: 1.6em;
1327 1295 font-weight: bold;
1328 1296 vertical-align: baseline;
1329 1297 clear:right
1330 1298 }
1331 1299
1332 1300
1333 1301 #footer {
1334 1302 clear:both;
1335 1303 overflow:hidden;
1336 1304 text-align:right;
1337 1305 margin:0;
1338 1306 padding:0 10px 4px;
1339 1307 margin:-10px 0 0;
1340 1308 }
1341 1309
1342 1310 #footer div#footer-inner {
1343 1311 background:url("../images/header_inner.png") repeat-x scroll 0 0 #003367;
1344 border-top:2px solid #FFFFFF;
1312 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1313 -webkit-border-radius: 4px 4px 4px 4px;
1314 -khtml-border-radius: 4px 4px 4px 4px;
1315 -moz-border-radius: 4px 4px 4px 4px;
1316 border-radius: 4px 4px 4px 4px;
1345 1317 }
1346 1318
1347 1319 #footer div#footer-inner p {
1348 1320 padding:15px 25px 15px 0;
1349 1321 color:#FFF;
1350 1322 font-weight:700;
1351 1323 }
1352 1324 #footer div#footer-inner .footer-link {
1353 1325 float:left;
1354 1326 padding-left:10px;
1355 1327 }
1356 1328 #footer div#footer-inner .footer-link a,#footer div#footer-inner .footer-link-right a {
1357 1329 color:#FFF;
1358 1330 }
1359 1331
1360 1332 #login div.title {
1361 1333 width:420px;
1362 1334 clear:both;
1363 1335 overflow:hidden;
1364 1336 position:relative;
1365 1337 background:#003367 url("../images/header_inner.png") repeat-x;
1366 1338 margin:0 auto;
1367 1339 padding:0;
1368 1340 }
1369 1341
1370 1342 #login div.inner {
1371 1343 width:380px;
1372 1344 background:#FFF url("../images/login.png") no-repeat top left;
1373 1345 border-top:none;
1374 1346 border-bottom:none;
1375 1347 margin:0 auto;
1376 1348 padding:20px;
1377 1349 }
1378 1350
1379 1351 #login div.form div.fields div.field div.label {
1380 1352 width:173px;
1381 1353 float:left;
1382 1354 text-align:right;
1383 1355 margin:2px 10px 0 0;
1384 1356 padding:5px 0 0 5px;
1385 1357 }
1386 1358
1387 1359 #login div.form div.fields div.field div.input input {
1388 1360 width:176px;
1389 1361 background:#FFF;
1390 1362 border-top:1px solid #b3b3b3;
1391 1363 border-left:1px solid #b3b3b3;
1392 1364 border-right:1px solid #eaeaea;
1393 1365 border-bottom:1px solid #eaeaea;
1394 1366 color:#000;
1395 1367 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1396 1368 font-size:11px;
1397 1369 margin:0;
1398 1370 padding:7px 7px 6px;
1399 1371 }
1400 1372
1401 1373 #login div.form div.fields div.buttons {
1402 1374 clear:both;
1403 1375 overflow:hidden;
1404 1376 border-top:1px solid #DDD;
1405 1377 text-align:right;
1406 1378 margin:0;
1407 1379 padding:10px 0 0;
1408 1380 }
1409 1381
1410 1382 #login div.form div.links {
1411 1383 clear:both;
1412 1384 overflow:hidden;
1413 1385 margin:10px 0 0;
1414 1386 padding:0 0 2px;
1415 1387 }
1416 1388
1417 1389 #quick_login{
1418 1390 top: 31px;
1419 1391 background-color: rgb(0, 51, 103);
1420 1392 z-index: 999;
1421 1393 height: 150px;
1422 1394 position: absolute;
1423 1395 margin-left: -16px;
1424 1396 width: 281px;
1425 border-radius: 0 0 8px 8px;
1397 -webkit-border-radius: 0px 0px 4px 4px;
1398 -khtml-border-radius: 0px 0px 4px 4px;
1399 -moz-border-radius: 0px 0px 4px 4px;
1400 border-radius: 0px 0px 4px 4px;
1401
1426 1402 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1427 1403 }
1428 1404
1429 1405 #quick_login .password_forgoten{
1430 1406 padding-right:10px;
1431 padding-top:10px;
1407 padding-top:0px;
1432 1408 float:left;
1433 1409 }
1434
1410 #quick_login .password_forgoten a{
1411 font-size: 10px
1412 }
1413
1414 #quick_login .register{
1415 padding-right:10px;
1416 padding-top:5px;
1417 float:left;
1418 }
1419
1420 #quick_login .register a{
1421 font-size: 10px
1422 }
1435 1423 #quick_login div.form div.fields{
1436 1424 padding-top: 2px;
1437 1425 padding-left:10px;
1438 1426 }
1439 1427
1440 1428 #quick_login div.form div.fields div.field{
1441 1429 padding: 5px;
1442 1430 }
1443 1431
1444 1432 #quick_login div.form div.fields div.field div.label label{
1445 1433 color:#fff;
1446 1434 padding-bottom: 3px;
1447 1435 }
1448 1436
1449 1437 #quick_login div.form div.fields div.field div.input input {
1450 1438 width:236px;
1451 1439 background:#FFF;
1452 1440 border-top:1px solid #b3b3b3;
1453 1441 border-left:1px solid #b3b3b3;
1454 1442 border-right:1px solid #eaeaea;
1455 1443 border-bottom:1px solid #eaeaea;
1456 1444 color:#000;
1457 1445 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1458 1446 font-size:11px;
1459 1447 margin:0;
1460 1448 padding:5px 7px 4px;
1461 1449 }
1462 1450
1463 1451 #quick_login div.form div.fields div.buttons {
1464 1452 clear:both;
1465 1453 overflow:hidden;
1466 1454 text-align:right;
1467 1455 margin:0;
1468 padding:10px 14px 0;
1469 }
1470
1471 #quick_login div.form div.fields div.buttons input.ui-button{
1472 background:#e5e3e3 url("../images/button.png") repeat-x;
1473 border-top:1px solid #DDD;
1474 border-left:1px solid #c6c6c6;
1475 border-right:1px solid #DDD;
1476 border-bottom:1px solid #c6c6c6;
1477 color:#515151;
1478 margin:0;
1479 padding:4px 10px;
1456 padding:10px 14px 3px 5px;
1480 1457 }
1481 1458
1482 1459 #quick_login div.form div.links {
1483 1460 clear:both;
1484 1461 overflow:hidden;
1485 1462 margin:10px 0 0;
1486 1463 padding:0 0 2px;
1487 1464 }
1488 1465
1489 1466 #register div.title {
1490 1467 clear:both;
1491 1468 overflow:hidden;
1492 1469 position:relative;
1493 1470 background:#003367 url("../images/header_inner.png") repeat-x;
1494 1471 margin:0 auto;
1495 1472 padding:0;
1496 1473 }
1497 1474
1498 1475 #register div.inner {
1499 1476 background:#FFF;
1500 1477 border-top:none;
1501 1478 border-bottom:none;
1502 1479 margin:0 auto;
1503 1480 padding:20px;
1504 1481 }
1505 1482
1506 1483 #register div.form div.fields div.field div.label {
1507 1484 width:135px;
1508 1485 float:left;
1509 1486 text-align:right;
1510 1487 margin:2px 10px 0 0;
1511 1488 padding:5px 0 0 5px;
1512 1489 }
1513 1490
1514 1491 #register div.form div.fields div.field div.input input {
1515 1492 width:300px;
1516 1493 background:#FFF;
1517 1494 border-top:1px solid #b3b3b3;
1518 1495 border-left:1px solid #b3b3b3;
1519 1496 border-right:1px solid #eaeaea;
1520 1497 border-bottom:1px solid #eaeaea;
1521 1498 color:#000;
1522 1499 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
1523 1500 font-size:11px;
1524 1501 margin:0;
1525 1502 padding:7px 7px 6px;
1526 1503 }
1527 1504
1528 1505 #register div.form div.fields div.buttons {
1529 1506 clear:both;
1530 1507 overflow:hidden;
1531 1508 border-top:1px solid #DDD;
1532 1509 text-align:left;
1533 1510 margin:0;
1534 1511 padding:10px 0 0 150px;
1535 1512 }
1536 1513
1537 #register div.form div.fields div.buttons div.highlight input.ui-button {
1538 background:url("../images/button_highlight.png") repeat-x scroll 0 0 #4E85BB;
1539 color:#FFF;
1540 border-color:#5C91A4 #2B7089 #1A6480 #2A6F89;
1541 border-style:solid;
1542 border-width:1px;
1543 }
1544 1514
1545 1515 #register div.form div.activation_msg {
1546 1516 padding-top:4px;
1547 1517 padding-bottom:4px;
1548 1518 }
1549 1519
1550 1520 #journal .journal_day{
1551 1521 font-size:20px;
1552 1522 padding:10px 0px;
1553 1523 border-bottom:2px solid #DDD;
1554 1524 margin-left:10px;
1555 1525 margin-right:10px;
1556 1526 }
1557 1527
1558 1528 #journal .journal_container{
1559 1529 padding:5px;
1560 1530 clear:both;
1561 1531 margin:0px 5px 0px 10px;
1562 1532 }
1563 1533
1564 1534 #journal .journal_action_container{
1565 1535 padding-left:38px;
1566 1536 }
1567 1537
1568 1538 #journal .journal_user{
1569 1539 color: #747474;
1570 1540 font-size: 14px;
1571 1541 font-weight: bold;
1572 1542 height: 30px;
1573 1543 }
1574 1544 #journal .journal_icon{
1575 1545 clear: both;
1576 1546 float: left;
1577 1547 padding-right: 4px;
1578 1548 padding-top: 3px;
1579 1549 }
1580 1550 #journal .journal_action{
1581 1551 padding-top:4px;
1582 1552 min-height:2px;
1583 1553 float:left
1584 1554 }
1585 1555 #journal .journal_action_params{
1586 1556 clear: left;
1587 1557 padding-left: 22px;
1588 1558 }
1589 1559 #journal .journal_repo{
1590 1560 float: left;
1591 1561 margin-left: 6px;
1592 1562 padding-top: 3px;
1593 1563 }
1594 1564 #journal .date{
1595 1565 clear: both;
1596 1566 color: #777777;
1597 1567 font-size: 11px;
1598 1568 padding-left: 22px;
1599 1569 }
1600 1570 #journal .journal_repo .journal_repo_name{
1601 1571 font-weight: bold;
1602 1572 font-size: 1.1em;
1603 1573 }
1604 1574 #journal .compare_view{
1605 1575 padding: 5px 0px 5px 0px;
1606 1576 width: 95px;
1607 1577 }
1608 1578 .journal_highlight{
1609 1579 font-weight: bold;
1610 1580 padding: 0 2px;
1611 1581 vertical-align: bottom;
1612 1582 }
1613 1583 .trending_language_tbl,.trending_language_tbl td {
1614 1584 border:0 !important;
1615 1585 margin:0 !important;
1616 1586 padding:0 !important;
1617 1587 }
1618 1588
1619 1589 .trending_language {
1620 1590 background-color:#003367;
1621 1591 color:#FFF;
1622 1592 display:block;
1623 1593 min-width:20px;
1624 1594 text-decoration:none;
1625 1595 height:12px;
1626 1596 margin-bottom:4px;
1627 1597 margin-left:5px;
1628 1598 white-space:pre;
1629 1599 padding:3px;
1630 1600 }
1631 1601
1632 1602 h3.files_location {
1633 1603 font-size:1.8em;
1634 1604 font-weight:700;
1635 1605 border-bottom:none !important;
1636 1606 margin:10px 0 !important;
1637 1607 }
1638 1608
1639 1609 #files_data dl dt {
1640 1610 float:left;
1641 1611 width:115px;
1642 1612 margin:0 !important;
1643 1613 padding:5px;
1644 1614 }
1645 1615
1646 1616 #files_data dl dd {
1647 1617 margin:0 !important;
1648 1618 padding:5px !important;
1649 1619 }
1650 1620
1651 1621 #changeset_content {
1652 1622 border:1px solid #CCC;
1653 1623 padding:5px;
1654 1624 }
1655 1625 #changeset_compare_view_content{
1656 1626 border:1px solid #CCC;
1657 1627 padding:5px;
1658 1628 }
1659 1629
1660 1630 #changeset_content .container {
1661 1631 min-height:120px;
1662 1632 font-size:1.2em;
1663 1633 overflow:hidden;
1664 1634 }
1665 1635
1666 1636 #changeset_compare_view_content .compare_view_commits{
1667 1637 width: auto !important;
1668 1638 }
1669 1639
1670 1640 #changeset_compare_view_content .compare_view_commits td{
1671 1641 padding:0px 0px 0px 12px !important;
1672 1642 }
1673 1643
1674 1644 #changeset_content .container .right {
1675 1645 float:right;
1676 1646 width:25%;
1677 1647 text-align:right;
1678 1648 }
1679 1649
1680 1650 #changeset_content .container .left .message {
1681 1651 font-style:italic;
1682 1652 color:#556CB5;
1683 1653 white-space:pre-wrap;
1684 1654 }
1685 1655
1686 1656 .cs_files .cur_cs{
1687 1657 margin:10px 2px;
1688 1658 font-weight: bold;
1689 1659 }
1690 1660
1691 1661 .cs_files .node{
1692 1662 float: left;
1693 1663 }
1694 1664 .cs_files .changes{
1695 1665 float: right;
1696 1666 }
1697 1667 .cs_files .changes .added{
1698 1668 background-color: #BBFFBB;
1699 1669 float: left;
1700 1670 text-align: center;
1701 1671 font-size: 90%;
1702 1672 }
1703 1673 .cs_files .changes .deleted{
1704 1674 background-color: #FF8888;
1705 1675 float: left;
1706 1676 text-align: center;
1707 1677 font-size: 90%;
1708 1678 }
1709 1679 .cs_files .cs_added {
1710 1680 background:url("../images/icons/page_white_add.png") no-repeat scroll 3px;
1711 1681 height:16px;
1712 1682 padding-left:20px;
1713 1683 margin-top:7px;
1714 1684 text-align:left;
1715 1685 }
1716 1686
1717 1687 .cs_files .cs_changed {
1718 1688 background:url("../images/icons/page_white_edit.png") no-repeat scroll 3px;
1719 1689 height:16px;
1720 1690 padding-left:20px;
1721 1691 margin-top:7px;
1722 1692 text-align:left;
1723 1693 }
1724 1694
1725 1695 .cs_files .cs_removed {
1726 1696 background:url("../images/icons/page_white_delete.png") no-repeat scroll 3px;
1727 1697 height:16px;
1728 1698 padding-left:20px;
1729 1699 margin-top:7px;
1730 1700 text-align:left;
1731 1701 }
1732 1702
1733 1703 #graph {
1734 1704 overflow:hidden;
1735 1705 }
1736 1706
1737 1707 #graph_nodes {
1738 1708 float: left;
1739 1709 margin-right: -6px;
1740 1710 margin-top: -4px;
1741 1711 }
1742 1712
1743 1713 #graph_content {
1744 1714 width:800px;
1745 1715 float:left;
1746 1716
1747 1717 }
1748 1718
1749 1719 #graph_content .container_header {
1750 1720 border:1px solid #CCC;
1751 1721 padding:10px;
1752 1722 }
1753 1723 #graph_content #rev_range_container{
1754 1724 padding:10px 0px;
1755 1725 }
1756 1726 #graph_content .container {
1757 1727 border-bottom:1px solid #CCC;
1758 1728 border-left:1px solid #CCC;
1759 1729 border-right:1px solid #CCC;
1760 1730 min-height:70px;
1761 1731 overflow:hidden;
1762 1732 font-size:1.2em;
1763 1733 }
1764 1734
1765 1735 #graph_content .container .right {
1766 1736 float:right;
1767 1737 width:28%;
1768 1738 text-align:right;
1769 1739 padding-bottom:5px;
1770 1740 }
1771 1741
1772 1742 #graph_content .container .left .date {
1773 1743 font-weight:700;
1774 1744 padding-bottom:5px;
1775 1745 }
1776 1746 #graph_content .container .left .date span{
1777 1747 vertical-align: text-top;
1778 1748 }
1779 1749
1780 1750 #graph_content .container .left .author{
1781 1751 height: 22px;
1782 1752 }
1783 1753 #graph_content .container .left .author .user{
1784 1754 color: #444444;
1785 1755 float: left;
1786 1756 font-size: 12px;
1787 1757 margin-left: -4px;
1788 1758 margin-top: 4px;
1789 1759 }
1790 1760
1791 1761 #graph_content .container .left .message {
1792 1762 font-size:100%;
1793 1763 padding-top:3px;
1794 1764 white-space:pre-wrap;
1795 1765 }
1796 1766
1797 1767 .right div {
1798 1768 clear:both;
1799 1769 }
1800 1770
1801 1771 .right .changes .changed_total{
1802 1772 border:1px solid #DDD;
1803 1773 display:block;
1804 1774 float:right;
1805 1775 text-align:center;
1806 1776 min-width:45px;
1807 1777 cursor: pointer;
1808 1778 background:#FD8;
1809 1779 font-weight: bold;
1810 1780 }
1811 1781 .right .changes .added,.changed,.removed {
1812 1782 border:1px solid #DDD;
1813 1783 display:block;
1814 1784 float:right;
1815 1785 text-align:center;
1816 1786 min-width:15px;
1817 1787 cursor: help;
1818 1788 }
1819 1789 .right .changes .large {
1820 1790 border:1px solid #DDD;
1821 1791 display:block;
1822 1792 float:right;
1823 1793 text-align:center;
1824 1794 min-width:45px;
1825 1795 cursor: help;
1826 1796 background: #54A9F7;
1827 1797 }
1828 1798
1829 1799 .right .changes .added {
1830 1800 background:#BFB;
1831 1801 }
1832 1802
1833 1803 .right .changes .changed {
1834 1804 background:#FD8;
1835 1805 }
1836 1806
1837 1807 .right .changes .removed {
1838 1808 background:#F88;
1839 1809 }
1840 1810
1841 1811 .right .merge {
1842 1812 vertical-align:top;
1843 1813 font-size:0.75em;
1844 1814 font-weight:700;
1845 1815 }
1846 1816
1847 1817 .right .parent {
1848 1818 font-size:90%;
1849 1819 font-family:monospace;
1850 1820 }
1851 1821
1852 1822 .right .logtags .branchtag {
1853 1823 background:#FFF url("../images/icons/arrow_branch.png") no-repeat right 6px;
1854 1824 display:block;
1855 1825 font-size:0.8em;
1856 1826 padding:11px 16px 0 0;
1857 1827 }
1858 1828
1859 1829 .right .logtags .tagtag {
1860 1830 background:#FFF url("../images/icons/tag_blue.png") no-repeat right 6px;
1861 1831 display:block;
1862 1832 font-size:0.8em;
1863 1833 padding:11px 16px 0 0;
1864 1834 }
1865 1835
1866 1836 div.browserblock {
1867 1837 overflow:hidden;
1868 1838 border:1px solid #ccc;
1869 1839 background:#f8f8f8;
1870 1840 font-size:100%;
1871 1841 line-height:125%;
1872 1842 padding:0;
1873 1843 }
1874 1844
1875 1845 div.browserblock .browser-header {
1876 1846 background:#FFF;
1877 1847 padding:10px 0px 15px 0px;
1878 1848 width: 100%;
1879 1849 }
1880 1850 div.browserblock .browser-nav {
1881 1851 float:left
1882 1852 }
1883 1853
1884 1854 div.browserblock .browser-branch {
1885 1855 float:left;
1886 1856 }
1887 1857
1888 1858 div.browserblock .browser-branch label {
1889 1859 color:#4A4A4A;
1890 1860 vertical-align:text-top;
1891 1861 }
1892 1862
1893 1863 div.browserblock .browser-header span {
1894 1864 margin-left:5px;
1895 1865 font-weight:700;
1896 1866 }
1897 1867
1898 1868 div.browserblock .browser-search{
1899 1869 clear:both;
1900 1870 padding:8px 8px 0px 5px;
1901 1871 }
1902 1872
1903 1873 div.browserblock .search_activate #filter_activate{
1904 1874 vertical-align: sub;
1905 1875 border: 1px solid;
1906 1876 padding:2px;
1877 -webkit-border-radius: 4px 4px 4px 4px;
1878 -khtml-border-radius: 4px 4px 4px 4px;
1879 -moz-border-radius: 4px 4px 4px 4px;
1907 1880 border-radius: 4px 4px 4px 4px;
1908 1881 background: url("../images/button.png") repeat-x scroll 0 0 #E5E3E3;
1909 1882 border-color: #DDDDDD #DDDDDD #C6C6C6 #C6C6C6;
1910 1883 color: #515151;
1911 1884 }
1912 1885
1913 1886 div.browserblock .search_activate a:hover{
1914 1887 text-decoration: none !important;
1915 1888 }
1916 1889
1917 1890 div.browserblock .browser-body {
1918 1891 background:#EEE;
1919 1892 border-top:1px solid #CCC;
1920 1893 }
1921 1894
1922 1895 table.code-browser {
1923 1896 border-collapse:collapse;
1924 1897 width:100%;
1925 1898 }
1926 1899
1927 1900 table.code-browser tr {
1928 1901 margin:3px;
1929 1902 }
1930 1903
1931 1904 table.code-browser thead th {
1932 1905 background-color:#EEE;
1933 1906 height:20px;
1934 1907 font-size:1.1em;
1935 1908 font-weight:700;
1936 1909 text-align:left;
1937 1910 padding-left:10px;
1938 1911 }
1939 1912
1940 1913 table.code-browser tbody td {
1941 1914 padding-left:10px;
1942 1915 height:20px;
1943 1916 }
1944 1917
1945 1918 table.code-browser .browser-file {
1946 1919 background:url("../images/icons/document_16.png") no-repeat scroll 3px;
1947 1920 height:16px;
1948 1921 padding-left:20px;
1949 1922 text-align:left;
1950 1923 }
1951 1924 .diffblock .changeset_file{
1952 1925 background:url("../images/icons/file.png") no-repeat scroll 3px;
1953 1926 height:16px;
1954 1927 padding-left:22px;
1955 1928 text-align:left;
1956 1929 font-size: 14px;
1957 1930 }
1958 1931
1959 1932 .diffblock .changeset_header{
1960 1933 margin-left: 6px !important;
1961 1934 }
1962 1935
1963 1936 table.code-browser .browser-dir {
1964 1937 background:url("../images/icons/folder_16.png") no-repeat scroll 3px;
1965 1938 height:16px;
1966 1939 padding-left:20px;
1967 1940 text-align:left;
1968 1941 }
1969 1942
1970 1943 .box .search {
1971 1944 clear:both;
1972 1945 overflow:hidden;
1973 1946 margin:0;
1974 1947 padding:0 20px 10px;
1975 1948 }
1976 1949
1977 1950 .box .search div.search_path {
1978 1951 background:none repeat scroll 0 0 #EEE;
1979 1952 border:1px solid #CCC;
1980 1953 color:blue;
1981 1954 margin-bottom:10px;
1982 1955 padding:10px 0;
1983 1956 }
1984 1957
1985 1958 .box .search div.search_path div.link {
1986 1959 font-weight:700;
1987 1960 margin-left:25px;
1988 1961 }
1989 1962
1990 1963 .box .search div.search_path div.link a {
1991 1964 color:#003367;
1992 1965 cursor:pointer;
1993 1966 text-decoration:none;
1994 1967 }
1995 1968
1996 1969 #path_unlock {
1997 1970 color:red;
1998 1971 font-size:1.2em;
1999 1972 padding-left:4px;
2000 1973 }
2001 1974
2002 1975 .info_box span {
2003 1976 margin-left:3px;
2004 1977 margin-right:3px;
2005 1978 }
2006 1979
2007 1980 .info_box .rev {
2008 1981 color: #003367;
2009 1982 font-size: 1.6em;
2010 1983 font-weight: bold;
2011 1984 vertical-align: sub;
2012 1985 }
2013 1986
2014 1987
2015 1988 .info_box input#at_rev,.info_box input#size {
2016 1989 background:#FFF;
2017 1990 border-top:1px solid #b3b3b3;
2018 1991 border-left:1px solid #b3b3b3;
2019 1992 border-right:1px solid #eaeaea;
2020 1993 border-bottom:1px solid #eaeaea;
2021 1994 color:#000;
2022 1995 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2023 1996 font-size:12px;
2024 1997 margin:0;
2025 1998 padding:1px 5px 1px;
2026 1999 }
2027 2000
2028 2001 .info_box input#view {
2029 2002 text-align:center;
2030 2003 padding:4px 3px 2px 2px;
2031 2004 }
2032 2005
2033 2006 .yui-overlay,.yui-panel-container {
2034 2007 visibility:hidden;
2035 2008 position:absolute;
2036 2009 z-index:2;
2037 2010 }
2038 2011
2039 2012 .yui-tt {
2040 2013 visibility:hidden;
2041 2014 position:absolute;
2042 2015 color:#666;
2043 2016 background-color:#FFF;
2044 2017 font-family:arial, helvetica, verdana, sans-serif;
2045 2018 border:2px solid #003367;
2046 2019 font:100% sans-serif;
2047 2020 width:auto;
2048 2021 opacity:1px;
2049 2022 padding:8px;
2050 2023 white-space: pre-wrap;
2051 2024 -webkit-border-radius: 8px 8px 8px 8px;
2052 2025 -khtml-border-radius: 8px 8px 8px 8px;
2053 2026 -moz-border-radius: 8px 8px 8px 8px;
2054 2027 border-radius: 8px 8px 8px 8px;
2055 2028 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
2056 2029 }
2057 2030
2058 2031 .ac {
2059 2032 vertical-align:top;
2060 2033 }
2061 2034
2062 2035 .ac .yui-ac {
2063 2036 position:relative;
2064 2037 font-family:arial;
2065 2038 font-size:100%;
2066 2039 }
2067 2040
2068 2041 .ac .perm_ac {
2069 2042 width:15em;
2070 2043 }
2071 2044
2072 2045 .ac .yui-ac-input {
2073 2046 width:100%;
2074 2047 }
2075 2048
2076 2049 .ac .yui-ac-container {
2077 2050 position:absolute;
2078 2051 top:1.6em;
2079 2052 width:100%;
2080 2053 }
2081 2054
2082 2055 .ac .yui-ac-content {
2083 2056 position:absolute;
2084 2057 width:100%;
2085 2058 border:1px solid gray;
2086 2059 background:#fff;
2087 2060 overflow:hidden;
2088 2061 z-index:9050;
2089 2062 }
2090 2063
2091 2064 .ac .yui-ac-shadow {
2092 2065 position:absolute;
2093 2066 width:100%;
2094 2067 background:#000;
2095 2068 -moz-opacity:0.1px;
2096 2069 opacity:.10;
2097 2070 filter:alpha(opacity = 10);
2098 2071 z-index:9049;
2099 2072 margin:.3em;
2100 2073 }
2101 2074
2102 2075 .ac .yui-ac-content ul {
2103 2076 width:100%;
2104 2077 margin:0;
2105 2078 padding:0;
2106 2079 }
2107 2080
2108 2081 .ac .yui-ac-content li {
2109 2082 cursor:default;
2110 2083 white-space:nowrap;
2111 2084 margin:0;
2112 2085 padding:2px 5px;
2113 2086 }
2114 2087
2115 2088 .ac .yui-ac-content li.yui-ac-prehighlight {
2116 2089 background:#B3D4FF;
2117 2090 }
2118 2091
2119 2092 .ac .yui-ac-content li.yui-ac-highlight {
2120 2093 background:#556CB5;
2121 2094 color:#FFF;
2122 2095 }
2123 2096
2124 2097
2125 2098 .follow{
2126 2099 background:url("../images/icons/heart_add.png") no-repeat scroll 3px;
2127 2100 height: 16px;
2128 2101 width: 20px;
2129 2102 cursor: pointer;
2130 2103 display: block;
2131 2104 float: right;
2132 2105 margin-top: 2px;
2133 2106 }
2134 2107
2135 2108 .following{
2136 2109 background:url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2137 2110 height: 16px;
2138 2111 width: 20px;
2139 2112 cursor: pointer;
2140 2113 display: block;
2141 2114 float: right;
2142 2115 margin-top: 2px;
2143 2116 }
2144 2117
2145 2118 .currently_following{
2146 2119 padding-left: 10px;
2147 2120 padding-bottom:5px;
2148 2121 }
2149 2122
2150 2123 .add_icon {
2151 2124 background:url("../images/icons/add.png") no-repeat scroll 3px;
2152 2125 padding-left:20px;
2153 2126 padding-top:0px;
2154 2127 text-align:left;
2155 2128 }
2156 2129
2157 2130 .edit_icon {
2158 2131 background:url("../images/icons/folder_edit.png") no-repeat scroll 3px;
2159 2132 padding-left:20px;
2160 2133 padding-top:0px;
2161 2134 text-align:left;
2162 2135 }
2163 2136
2164 2137 .delete_icon {
2165 2138 background:url("../images/icons/delete.png") no-repeat scroll 3px;
2166 2139 padding-left:20px;
2167 2140 padding-top:0px;
2168 2141 text-align:left;
2169 2142 }
2170 2143
2171 2144 .refresh_icon {
2172 2145 background:url("../images/icons/arrow_refresh.png") no-repeat scroll 3px;
2173 2146 padding-left:20px;
2174 2147 padding-top:0px;
2175 2148 text-align:left;
2176 2149 }
2177 2150
2178 2151 .pull_icon {
2179 2152 background:url("../images/icons/connect.png") no-repeat scroll 3px;
2180 2153 padding-left:20px;
2181 2154 padding-top:0px;
2182 2155 text-align:left;
2183 2156 }
2184 2157
2185 2158 .rss_icon {
2186 2159 background:url("../images/icons/rss_16.png") no-repeat scroll 3px;
2187 2160 padding-left:20px;
2188 2161 padding-top:0px;
2189 2162 text-align:left;
2190 2163 }
2191 2164
2192 2165 .atom_icon {
2193 2166 background:url("../images/icons/atom.png") no-repeat scroll 3px;
2194 2167 padding-left:20px;
2195 2168 padding-top:0px;
2196 2169 text-align:left;
2197 2170 }
2198 2171
2199 2172 .archive_icon {
2200 2173 background:url("../images/icons/compress.png") no-repeat scroll 3px;
2201 2174 padding-left:20px;
2202 2175 text-align:left;
2203 2176 padding-top:1px;
2204 2177 }
2205 2178
2206 2179 .start_following_icon {
2207 2180 background:url("../images/icons/heart_add.png") no-repeat scroll 3px;
2208 2181 padding-left:20px;
2209 2182 text-align:left;
2210 2183 padding-top:0px;
2211 2184 }
2212 2185
2213 2186 .stop_following_icon {
2214 2187 background:url("../images/icons/heart_delete.png") no-repeat scroll 3px;
2215 2188 padding-left:20px;
2216 2189 text-align:left;
2217 2190 padding-top:0px;
2218 2191 }
2219 2192
2220 2193 .action_button {
2221 2194 border:0;
2222 2195 display:inline;
2223 2196 }
2224 2197
2225 2198 .action_button:hover {
2226 2199 border:0;
2227 2200 text-decoration:underline;
2228 2201 cursor:pointer;
2229 2202 }
2230 2203
2231 2204 #switch_repos {
2232 2205 position:absolute;
2233 2206 height:25px;
2234 2207 z-index:1;
2235 2208 }
2236 2209
2237 2210 #switch_repos select {
2238 2211 min-width:150px;
2239 2212 max-height:250px;
2240 2213 z-index:1;
2241 2214 }
2242 2215
2243 2216 .breadcrumbs {
2244 2217 border:medium none;
2245 2218 color:#FFF;
2246 2219 float:left;
2247 2220 text-transform:uppercase;
2248 2221 font-weight:700;
2249 2222 font-size:14px;
2250 2223 margin:0;
2251 2224 padding:11px 0 11px 10px;
2252 2225 }
2253 2226
2254 2227 .breadcrumbs a {
2255 2228 color:#FFF;
2256 2229 }
2257 2230
2258 2231 .flash_msg ul {
2259 2232 margin:0;
2260 2233 padding:0 0 10px;
2261 2234 }
2262 2235
2263 2236 .error_msg {
2264 2237 background-color:#FFCFCF;
2265 2238 background-image:url("../images/icons/error_msg.png");
2266 2239 border:1px solid #FF9595;
2267 2240 color:#C30;
2268 2241 }
2269 2242
2270 2243 .warning_msg {
2271 2244 background-color:#FFFBCC;
2272 2245 background-image:url("../images/icons/warning_msg.png");
2273 2246 border:1px solid #FFF35E;
2274 2247 color:#C69E00;
2275 2248 }
2276 2249
2277 2250 .success_msg {
2278 2251 background-color:#D5FFCF;
2279 2252 background-image:url("../images/icons/success_msg.png");
2280 2253 border:1px solid #97FF88;
2281 2254 color:#090;
2282 2255 }
2283 2256
2284 2257 .notice_msg {
2285 2258 background-color:#DCE3FF;
2286 2259 background-image:url("../images/icons/notice_msg.png");
2287 2260 border:1px solid #93A8FF;
2288 2261 color:#556CB5;
2289 2262 }
2290 2263
2291 2264 .success_msg,.error_msg,.notice_msg,.warning_msg {
2292 2265 background-position:10px center;
2293 2266 background-repeat:no-repeat;
2294 2267 font-size:12px;
2295 2268 font-weight:700;
2296 2269 min-height:14px;
2297 2270 line-height:14px;
2298 2271 margin-bottom:0;
2299 2272 margin-top:0;
2300 2273 display:block;
2301 2274 overflow:auto;
2302 2275 padding:6px 10px 6px 40px;
2303 2276 }
2304 2277
2305 2278 #msg_close {
2306 2279 background:transparent url("../icons/cross_grey_small.png") no-repeat scroll 0 0;
2307 2280 cursor:pointer;
2308 2281 height:16px;
2309 2282 position:absolute;
2310 2283 right:5px;
2311 2284 top:5px;
2312 2285 width:16px;
2313 2286 }
2314 2287
2315 2288 div#legend_container table,div#legend_choices table {
2316 2289 width:auto !important;
2317 2290 }
2318 2291
2319 2292 table#permissions_manage {
2320 2293 width:0 !important;
2321 2294 }
2322 2295
2323 2296 table#permissions_manage span.private_repo_msg {
2324 2297 font-size:0.8em;
2325 2298 opacity:0.6px;
2326 2299 }
2327 2300
2328 2301 table#permissions_manage td.private_repo_msg {
2329 2302 font-size:0.8em;
2330 2303 }
2331 2304
2332 2305 table#permissions_manage tr#add_perm_input td {
2333 2306 vertical-align:middle;
2334 2307 }
2335 2308
2336 2309 div.gravatar {
2337 2310 background-color:#FFF;
2338 2311 border:1px solid #D0D0D0;
2339 2312 float:left;
2340 2313 margin-right:0.7em;
2341 2314 padding:2px 2px 0;
2342 2315
2343 2316 -webkit-border-radius: 6px;
2344 2317 -khtml-border-radius: 6px;
2345 2318 -moz-border-radius: 6px;
2346 borderradius: 6px;
2319 border-radius: 6px;
2347 2320
2348 2321 }
2349 2322
2350 2323 div.gravatar img {
2351 2324 -webkit-border-radius: 4px;
2352 2325 -khtml-border-radius: 4px;
2353 2326 -moz-border-radius: 4px;
2354 borderradius: 4px;
2327 border-radius: 4px;
2355 2328 }
2356 2329
2357 2330 #header,#content,#footer {
2358 2331 min-width:978px;
2359 2332 }
2360 2333
2361 2334 #content {
2362 min-height:100%;
2363 2335 clear:both;
2364 2336 overflow:hidden;
2365 2337 padding:14px 10px;
2366 2338 }
2367 2339
2368 2340 #content div.box div.title div.search {
2369 2341 background:url("../images/title_link.png") no-repeat top left;
2370 2342 border-left:1px solid #316293;
2371 2343 }
2372 2344
2373 2345 #content div.box div.title div.search div.input input {
2374 2346 border:1px solid #316293;
2375 2347 }
2376 2348
2377 #content div.box div.title div.search div.button input.ui-button {
2378 background:#4e85bb url("../images/button_highlight.png") repeat-x;
2379 border:1px solid #316293;
2380 border-left:none;
2381 color:#FFF;
2382 }
2383
2384 #content div.box input.ui-button-small {
2349
2350 input.ui-button-small {
2385 2351 background:#e5e3e3 url("../images/button.png") repeat-x;
2386 2352 border-top:1px solid #DDD;
2387 2353 border-left:1px solid #c6c6c6;
2388 2354 border-right:1px solid #DDD;
2389 2355 border-bottom:1px solid #c6c6c6;
2390 2356 color:#515151;
2391 2357 outline:none;
2392 2358 margin:0;
2393 }
2394
2395 #content div.box input.ui-button-small-blue {
2359 -webkit-border-radius: 4px 4px 4px 4px;
2360 -khtml-border-radius: 4px 4px 4px 4px;
2361 -moz-border-radius: 4px 4px 4px 4px;
2362 border-radius: 4px 4px 4px 4px;
2363 box-shadow: 0 1px 0 #ececec;
2364 cursor: pointer;
2365 }
2366
2367 input.ui-button-small:hover {
2368 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2369 border-top:1px solid #ccc;
2370 border-left:1px solid #bebebe;
2371 border-right:1px solid #b1b1b1;
2372 border-bottom:1px solid #afafaf;
2373 }
2374
2375 input.ui-button-small-blue {
2396 2376 background:#4e85bb url("../images/button_highlight.png") repeat-x;
2397 2377 border-top:1px solid #5c91a4;
2398 2378 border-left:1px solid #2a6f89;
2399 2379 border-right:1px solid #2b7089;
2400 2380 border-bottom:1px solid #1a6480;
2401 2381 color:#fff;
2402 }
2403
2404 #content div.box input.ui-button-small submit,button{
2382 -webkit-border-radius: 4px 4px 4px 4px;
2383 -khtml-border-radius: 4px 4px 4px 4px;
2384 -moz-border-radius: 4px 4px 4px 4px;
2385 border-radius: 4px 4px 4px 4px;
2386 box-shadow: 0 1px 0 #ececec;
2405 2387 cursor: pointer;
2406 2388 }
2407 2389
2408 #content div.box div.title div.search div.button input.ui-state-hover {
2409 background:#46a0c1 url("../images/button_highlight_selected.png") repeat-x;
2410 border:1px solid #316293;
2411 border-left:none;
2412 color:#FFF;
2413 }
2414
2415 #content div.box div.form div.fields div.field div.highlight .ui-button {
2416 background:#4e85bb url("../images/button_highlight.png") repeat-x;
2417 border-top:1px solid #5c91a4;
2418 border-left:1px solid #2a6f89;
2419 border-right:1px solid #2b7089;
2420 border-bottom:1px solid #1a6480;
2421 color:#fff;
2422 }
2423
2424 #content div.box div.form div.fields div.field div.highlight .ui-state-hover {
2425 background:#46a0c1 url("../images/button_highlight_selected.png") repeat-x;
2426 border-top:1px solid #78acbf;
2427 border-left:1px solid #34819e;
2428 border-right:1px solid #35829f;
2429 border-bottom:1px solid #257897;
2430 color:#fff;
2431 }
2390 input.ui-button-small-blue:hover {
2391
2392 }
2393
2432 2394
2433 2395 ins,div.options a:hover {
2434 2396 text-decoration:none;
2435 2397 }
2436 2398
2437 2399 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 {
2438 2400 border:none;
2439 2401 }
2440 2402
2441 2403 img.icon,.right .merge img {
2442 2404 vertical-align:bottom;
2443 2405 }
2444 2406
2445 2407 #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 {
2446 2408 float:right;
2447 2409 margin:0;
2448 2410 padding:0;
2449 2411 }
2450 2412
2451 2413
2452 2414 #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 {
2453 2415 float:left;
2454 2416 }
2455 2417
2456 2418 #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 {
2457 2419 display:none;
2458 2420 }
2459 2421
2460 2422 #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 {
2461 2423 display:block;
2462 2424 }
2463 2425
2464 2426 #content div.graph{
2465 2427 padding:0 10px 10px;
2466 2428 }
2467 2429
2468 2430 #content div.box div.title ul.links li a:hover,#content div.box div.title ul.links li.ui-tabs-selected a {
2469 2431 color:#bfe3ff;
2470 2432 }
2471 2433
2472 2434 #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 {
2473 2435 margin:10px 24px 10px 44px;
2474 2436 }
2475 2437
2476 2438 #content div.box div.form,#content div.box div.table,#content div.box div.traffic {
2477 2439 clear:both;
2478 2440 overflow:hidden;
2479 2441 margin:0;
2480 2442 padding:0 20px 10px;
2481 2443 }
2482 2444
2483 2445 #content div.box div.form div.fields,#login div.form,#login div.form div.fields,#register div.form,#register div.form div.fields {
2484 2446 clear:both;
2485 2447 overflow:hidden;
2486 2448 margin:0;
2487 2449 padding:0;
2488 2450 }
2489 2451
2490 2452 #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 {
2491 2453 height:1%;
2492 2454 display:block;
2493 2455 color:#363636;
2494 2456 margin:0;
2495 2457 padding:2px 0 0;
2496 2458 }
2497 2459
2498 2460 #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 {
2499 2461 background:#FBE3E4;
2500 2462 border-top:1px solid #e1b2b3;
2501 2463 border-left:1px solid #e1b2b3;
2502 2464 border-right:1px solid #FBC2C4;
2503 2465 border-bottom:1px solid #FBC2C4;
2504 2466 }
2505 2467
2506 2468 #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 {
2507 2469 background:#E6EFC2;
2508 2470 border-top:1px solid #cebb98;
2509 2471 border-left:1px solid #cebb98;
2510 2472 border-right:1px solid #c6d880;
2511 2473 border-bottom:1px solid #c6d880;
2512 2474 }
2513 2475
2514 2476 #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 {
2515 2477 margin:0;
2516 2478 }
2517 2479
2518 2480 #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{
2519 2481 margin:0 0 0 0px !important;
2520 2482 padding:0;
2521 2483 }
2522 2484
2523 2485 #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 {
2524 2486 margin:0 0 0 200px;
2525 2487 padding:0;
2526 2488 }
2527 2489
2528 2490
2529 2491 #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 {
2530 2492 color:#000;
2531 2493 text-decoration:none;
2532 2494 }
2533 2495
2534 2496 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus,#content div.box div.action a.ui-selectmenu-focus {
2535 2497 border:1px solid #666;
2536 2498 }
2537 2499
2538 2500 #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 {
2539 2501 clear:both;
2540 2502 overflow:hidden;
2541 2503 margin:0;
2542 2504 padding:8px 0 2px;
2543 2505 }
2544 2506
2545 2507 #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 {
2546 2508 float:left;
2547 2509 margin:0;
2548 2510 }
2549 2511
2550 2512 #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 {
2551 2513 height:1%;
2552 2514 display:block;
2553 2515 float:left;
2554 2516 margin:2px 0 0 4px;
2555 2517 }
2556 2518
2557 2519 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 {
2558 2520 color:#000;
2559 2521 font-family:Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
2560 2522 font-size:11px;
2561 2523 font-weight:700;
2562 2524 margin:0;
2563 2525 }
2564 2526
2565 div.form div.fields div.field div.button .ui-button,#content div.box div.form div.fields div.buttons input.ui-button {
2527 input.ui-button {
2566 2528 background:#e5e3e3 url("../images/button.png") repeat-x;
2567 2529 border-top:1px solid #DDD;
2568 2530 border-left:1px solid #c6c6c6;
2569 2531 border-right:1px solid #DDD;
2570 2532 border-bottom:1px solid #c6c6c6;
2571 2533 color:#515151;
2572 2534 outline:none;
2573 2535 margin:0;
2574 2536 padding:6px 12px;
2575 }
2576
2577 div.form div.fields div.field div.button .ui-state-hover,#content div.box div.form div.fields div.buttons input.ui-state-hover {
2537 -webkit-border-radius: 4px 4px 4px 4px;
2538 -khtml-border-radius: 4px 4px 4px 4px;
2539 -moz-border-radius: 4px 4px 4px 4px;
2540 border-radius: 4px 4px 4px 4px;
2541 box-shadow: 0 1px 0 #ececec;
2542 cursor: pointer;
2543 }
2544
2545 input.ui-button:hover {
2578 2546 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2579 2547 border-top:1px solid #ccc;
2580 2548 border-left:1px solid #bebebe;
2581 2549 border-right:1px solid #b1b1b1;
2582 2550 border-bottom:1px solid #afafaf;
2583 color:#515151;
2584 outline:none;
2585 margin:0;
2586 padding:6px 12px;
2587 2551 }
2588 2552
2589 2553 div.form div.fields div.field div.highlight,#content div.box div.form div.fields div.buttons div.highlight {
2590 2554 display:inline;
2591 2555 }
2592 2556
2593 2557 #content div.box div.form div.fields div.buttons,div.form div.fields div.buttons {
2594 2558 margin:10px 0 0 200px;
2595 2559 padding:0;
2596 2560 }
2597 2561
2598 2562 #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 {
2599 2563 margin:10px 0 0;
2600 2564 }
2601 2565
2602 2566 #content div.box table td.user,#content div.box table td.address {
2603 2567 width:10%;
2604 2568 text-align:center;
2605 2569 }
2606 2570
2607 2571 #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 {
2608 2572 text-align:right;
2609 2573 margin:6px 0 0;
2610 2574 padding:0;
2611 2575 }
2612 2576
2613 #content div.box div.action div.button input.ui-button,#login div.form div.fields div.buttons input.ui-button,#register div.form div.fields div.buttons input.ui-button {
2614 background:#e5e3e3 url("../images/button.png") repeat-x;
2615 border-top:1px solid #DDD;
2616 border-left:1px solid #c6c6c6;
2617 border-right:1px solid #DDD;
2618 border-bottom:1px solid #c6c6c6;
2619 color:#515151;
2620 margin:0;
2621 padding:6px 12px;
2622 }
2623 2577
2624 2578 #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 {
2625 2579 background:#b4b4b4 url("../images/button_selected.png") repeat-x;
2626 2580 border-top:1px solid #ccc;
2627 2581 border-left:1px solid #bebebe;
2628 2582 border-right:1px solid #b1b1b1;
2629 2583 border-bottom:1px solid #afafaf;
2630 2584 color:#515151;
2631 2585 margin:0;
2632 2586 padding:6px 12px;
2633 2587 }
2634 2588
2635 2589 #content div.box div.pagination div.results,#content div.box div.pagination-wh div.results {
2636 2590 text-align:left;
2637 2591 float:left;
2638 2592 margin:0;
2639 2593 padding:0;
2640 2594 }
2641 2595
2642 2596 #content div.box div.pagination div.results span,#content div.box div.pagination-wh div.results span {
2643 2597 height:1%;
2644 2598 display:block;
2645 2599 float:left;
2646 2600 background:#ebebeb url("../images/pager.png") repeat-x;
2647 2601 border-top:1px solid #dedede;
2648 2602 border-left:1px solid #cfcfcf;
2649 2603 border-right:1px solid #c4c4c4;
2650 2604 border-bottom:1px solid #c4c4c4;
2651 2605 color:#4A4A4A;
2652 2606 font-weight:700;
2653 2607 margin:0;
2654 2608 padding:6px 8px;
2655 2609 }
2656 2610
2657 2611 #content div.box div.pagination ul.pager li.disabled,#content div.box div.pagination-wh a.disabled {
2658 2612 color:#B4B4B4;
2659 2613 padding:6px;
2660 2614 }
2661 2615
2662 2616 #login,#register {
2663 2617 width:520px;
2664 2618 margin:10% auto 0;
2665 2619 padding:0;
2666 2620 }
2667 2621
2668 2622 #login div.color,#register div.color {
2669 2623 clear:both;
2670 2624 overflow:hidden;
2671 2625 background:#FFF;
2672 2626 margin:10px auto 0;
2673 2627 padding:3px 3px 3px 0;
2674 2628 }
2675 2629
2676 2630 #login div.color a,#register div.color a {
2677 2631 width:20px;
2678 2632 height:20px;
2679 2633 display:block;
2680 2634 float:left;
2681 2635 margin:0 0 0 3px;
2682 2636 padding:0;
2683 2637 }
2684 2638
2685 2639 #login div.title h5,#register div.title h5 {
2686 2640 color:#fff;
2687 2641 margin:10px;
2688 2642 padding:0;
2689 2643 }
2690 2644
2691 2645 #login div.form div.fields div.field,#register div.form div.fields div.field {
2692 2646 clear:both;
2693 2647 overflow:hidden;
2694 2648 margin:0;
2695 2649 padding:0 0 10px;
2696 2650 }
2697 2651
2698 2652 #login div.form div.fields div.field span.error-message,#register div.form div.fields div.field span.error-message {
2699 2653 height:1%;
2700 2654 display:block;
2701 2655 color:red;
2702 2656 margin:8px 0 0;
2703 2657 padding:0;
2704 2658 max-width: 320px;
2705 2659 }
2706 2660
2707 2661 #login div.form div.fields div.field div.label label,#register div.form div.fields div.field div.label label {
2708 2662 color:#000;
2709 2663 font-weight:700;
2710 2664 }
2711 2665
2712 2666 #login div.form div.fields div.field div.input,#register div.form div.fields div.field div.input {
2713 2667 float:left;
2714 2668 margin:0;
2715 2669 padding:0;
2716 2670 }
2717 2671
2718 2672 #login div.form div.fields div.field div.checkbox,#register div.form div.fields div.field div.checkbox {
2719 2673 margin:0 0 0 184px;
2720 2674 padding:0;
2721 2675 }
2722 2676
2723 2677 #login div.form div.fields div.field div.checkbox label,#register div.form div.fields div.field div.checkbox label {
2724 2678 color:#565656;
2725 2679 font-weight:700;
2726 2680 }
2727 2681
2728 2682 #login div.form div.fields div.buttons input,#register div.form div.fields div.buttons input {
2729 2683 color:#000;
2730 2684 font-size:1em;
2731 2685 font-weight:700;
2732 2686 font-family:Verdana, Helvetica, Sans-Serif;
2733 2687 margin:0;
2734 2688 }
2735 2689
2736 2690 #changeset_content .container .wrapper,#graph_content .container .wrapper {
2737 2691 width:600px;
2738 2692 }
2739 2693
2740 2694 #changeset_content .container .left,#graph_content .container .left {
2741 2695 float:left;
2742 2696 width:70%;
2743 2697 padding-left:5px;
2744 2698 }
2745 2699
2746 2700 #changeset_content .container .left .date,.ac .match {
2747 2701 font-weight:700;
2748 2702 padding-top: 5px;
2749 2703 padding-bottom:5px;
2750 2704 }
2751 2705
2752 2706 div#legend_container table td,div#legend_choices table td {
2753 2707 border:none !important;
2754 2708 height:20px !important;
2755 2709 padding:0 !important;
2756 2710 }
2757 2711
2758 2712 #q_filter{
2759 2713 border:0 none;
2760 2714 color:#AAAAAA;
2761 2715 margin-bottom:-4px;
2762 2716 margin-top:-4px;
2763 2717 padding-left:3px;
2764 2718 }
2765 2719
2766 2720 #node_filter{
2767 2721 border:0px solid #545454;
2768 2722 color:#AAAAAA;
2769 2723 padding-left:3px;
2770 2724 }
@@ -1,211 +1,211
1 1 ## -*- coding: utf-8 -*-
2 2 <%inherit file="/base/base.html"/>
3 3
4 4 <%def name="title()">
5 5 ${_('My account')} ${c.rhodecode_user.username} - ${c.rhodecode_name}
6 6 </%def>
7 7
8 8 <%def name="breadcrumbs_links()">
9 9 ${_('My Account')}
10 10 </%def>
11 11
12 12 <%def name="page_nav()">
13 13 ${self.menu('admin')}
14 14 </%def>
15 15
16 16 <%def name="main()">
17 17
18 18 <div class="box box-left">
19 19 <!-- box / title -->
20 20 <div class="title">
21 21 ${self.breadcrumbs()}
22 22 </div>
23 23 <!-- end box / title -->
24 24 <div>
25 25 ${h.form(url('admin_settings_my_account_update'),method='put')}
26 26 <div class="form">
27 27
28 28 <div class="field">
29 29 <div class="gravatar_box">
30 30 <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(c.user.email)}"/></div>
31 31 <p>
32 32 <strong>${_('Change your avatar at')} <a href="http://gravatar.com">gravatar.com</a></strong><br/>
33 33 ${_('Using')} ${c.user.email}
34 34 </p>
35 35 </div>
36 36 </div>
37 37 <div class="field">
38 38 <div class="label">
39 39 <label>${_('API key')}</label> ${c.user.api_key}
40 40 </div>
41 41 </div>
42 42 <div class="fields">
43 43 <div class="field">
44 44 <div class="label">
45 45 <label for="username">${_('Username')}:</label>
46 46 </div>
47 47 <div class="input">
48 48 ${h.text('username',class_="medium")}
49 49 </div>
50 50 </div>
51 51
52 52 <div class="field">
53 53 <div class="label">
54 54 <label for="new_password">${_('New password')}:</label>
55 55 </div>
56 56 <div class="input">
57 57 ${h.password('new_password',class_="medium",autocomplete="off")}
58 58 </div>
59 59 </div>
60 60
61 61 <div class="field">
62 62 <div class="label">
63 63 <label for="name">${_('First Name')}:</label>
64 64 </div>
65 65 <div class="input">
66 66 ${h.text('name',class_="medium")}
67 67 </div>
68 68 </div>
69 69
70 70 <div class="field">
71 71 <div class="label">
72 72 <label for="lastname">${_('Last Name')}:</label>
73 73 </div>
74 74 <div class="input">
75 75 ${h.text('lastname',class_="medium")}
76 76 </div>
77 77 </div>
78 78
79 79 <div class="field">
80 80 <div class="label">
81 81 <label for="email">${_('Email')}:</label>
82 82 </div>
83 83 <div class="input">
84 84 ${h.text('email',class_="medium")}
85 85 </div>
86 86 </div>
87 87
88 88 <div class="buttons">
89 89 ${h.submit('save',_('Save'),class_="ui-button")}
90 90 ${h.reset('reset',_('Reset'),class_="ui-button")}
91 91 </div>
92 92 </div>
93 93 </div>
94 94 ${h.end_form()}
95 95 </div>
96 96 </div>
97 97
98 98 <div class="box box-right">
99 99 <!-- box / title -->
100 100 <div class="title">
101 101 <h5>${_('My repositories')}
102 102 <input class="top-right-rounded-corner top-left-rounded-corner bottom-left-rounded-corner bottom-right-rounded-corner" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
103 103 </h5>
104 104 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
105 105 <ul class="links">
106 106 <li>
107 107 <span>${h.link_to(_('ADD REPOSITORY'),h.url('admin_settings_create_repository'))}</span>
108 108 </li>
109 109 </ul>
110 110 %endif
111 111 </div>
112 112 <!-- end box / title -->
113 113 <div class="table">
114 114 <table>
115 115 <thead>
116 116 <tr>
117 117 <th class="left">${_('Name')}</th>
118 118 <th class="left">${_('revision')}</th>
119 119 <th colspan="2" class="left">${_('action')}</th>
120 120 </thead>
121 121 <tbody>
122 122 %if c.user_repos:
123 123 %for repo in c.user_repos:
124 124 <tr>
125 125 <td>
126 126 %if repo['dbrepo']['repo_type'] =='hg':
127 127 <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url("/images/icons/hgicon.png")}"/>
128 128 %elif repo['dbrepo']['repo_type'] =='git':
129 129 <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url("/images/icons/giticon.png")}"/>
130 130 %else:
131 131
132 132 %endif
133 133 %if repo['dbrepo']['private']:
134 134 <img class="icon" alt="${_('private')}" src="${h.url("/images/icons/lock.png")}"/>
135 135 %else:
136 136 <img class="icon" alt="${_('public')}" src="${h.url("/images/icons/lock_open.png")}"/>
137 137 %endif
138 138
139 139 ${h.link_to(repo['name'], h.url('summary_home',repo_name=repo['name']),class_="repo_name")}
140 140 %if repo['dbrepo_fork']:
141 141 <a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}">
142 142 <img class="icon" alt="${_('public')}"
143 143 title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}"
144 src="${h.url("/images/icons/arrow_divide.png")}"/></a>
144 src="${h.url('/images/icons/arrow_divide.png')}"/></a>
145 145 %endif
146 146 </td>
147 <td><span class="tooltip" title="${repo['repo'].last_change}">${("r%s:%s") % (h.get_changeset_safe(repo['repo'],'tip').revision,h.short_id(h.get_changeset_safe(repo['repo'],'tip').raw_id))}</span></td>
148 <td><a href="${h.url('repo_settings_home',repo_name=repo['name'])}" title="${_('edit')}"><img class="icon" alt="${_('private')}" src="${h.url("/images/icons/application_form_edit.png")}"/></a></td>
147 <td><span class="tooltip" title="${repo['last_change']}">${("r%s:%s") % (repo['rev'],h.short_id(repo['tip']))}</span></td>
148 <td><a href="${h.url('repo_settings_home',repo_name=repo['name'])}" title="${_('edit')}"><img class="icon" alt="${_('private')}" src="${h.url('/images/icons/application_form_edit.png')}"/></a></td>
149 149 <td>
150 150 ${h.form(url('repo_settings_delete', repo_name=repo['name']),method='delete')}
151 151 ${h.submit('remove_%s' % repo['name'],'',class_="delete_icon action_button",onclick="return confirm('Confirm to delete this repository');")}
152 152 ${h.end_form()}
153 153 </td>
154 154 </tr>
155 155 %endfor
156 156 %else:
157 157 ${_('No repositories yet')}
158 158 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
159 159 ${h.link_to(_('create one now'),h.url('admin_settings_create_repository'))}
160 160 %endif
161 161 %endif
162 162 </tbody>
163 163 </table>
164 164 </div>
165 165
166 166 </div>
167 167 <script type="text/javascript">
168 168 var D = YAHOO.util.Dom;
169 169 var E = YAHOO.util.Event;
170 170 var S = YAHOO.util.Selector;
171 171
172 172 var q_filter = D.get('q_filter');
173 173 var F = YAHOO.namespace('q_filter');
174 174
175 175 E.on(q_filter,'click',function(){
176 176 q_filter.value = '';
177 177 });
178 178
179 179 F.filterTimeout = null;
180 180
181 181 F.updateFilter = function() {
182 182 // Reset timeout
183 183 F.filterTimeout = null;
184 184
185 185 var obsolete = [];
186 186 var nodes = S.query('div.table tr td a.repo_name');
187 187 var req = q_filter.value.toLowerCase();
188 188 for (n in nodes){
189 189 D.setStyle(nodes[n].parentNode.parentNode,'display','')
190 190 }
191 191 if (req){
192 192 for (n in nodes){
193 193 if (nodes[n].innerHTML.toLowerCase().indexOf(req) == -1) {
194 194 obsolete.push(nodes[n]);
195 195 }
196 196 }
197 197 if(obsolete){
198 198 for (n in obsolete){
199 199 D.setStyle(obsolete[n].parentNode.parentNode,'display','none');
200 200 }
201 201 }
202 202 }
203 203 }
204 204
205 205 E.on(q_filter,'keyup',function(e){
206 206 clearTimeout(F.filterTimeout);
207 207 F.filterTimeout = setTimeout(F.updateFilter,600);
208 208 });
209 209
210 210 </script>
211 211 </%def>
@@ -1,371 +1,377
1 1 ## -*- coding: utf-8 -*-
2 2 <%inherit file="root.html"/>
3 3
4 4 <!-- HEADER -->
5 5 <div id="header">
6 6 <!-- user -->
7 7 <ul id="logged-user">
8 8 <li class="first">
9 9 <div id="quick_login" style="display:none">
10 10 ${h.form(h.url('login_home',came_from=h.url.current()))}
11 11 <div class="form">
12 12 <div class="fields">
13 13 <div class="field">
14 14 <div class="label">
15 15 <label for="username">${_('Username')}:</label>
16 16 </div>
17 17 <div class="input">
18 18 ${h.text('username',class_='focus',size=40)}
19 19 </div>
20 20
21 21 </div>
22 22 <div class="field">
23 23 <div class="label">
24 24 <label for="password">${_('Password')}:</label>
25 25 </div>
26 26 <div class="input">
27 27 ${h.password('password',class_='focus',size=40)}
28 28 </div>
29 29
30 30 </div>
31 31 <div class="buttons">
32 <div class="password_forgoten">${h.link_to(_('Forgot password ?'),h.url('reset_password'))}</div>${h.submit('sign_in','Sign In',class_="ui-button")}
32 <div class="password_forgoten">${h.link_to(_('Forgot password ?'),h.url('reset_password'))}</div>
33 <div class="register">
34 %if h.HasPermissionAny('hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')():
35 ${h.link_to(_("Don't have an account ?"),h.url('register'))}
36 %endif
37 </div>
38 ${h.submit('sign_in','Sign In',class_="ui-button")}
33 39 </div>
34 40 </div>
35 41 </div>
36 42 ${h.end_form()}
37 43 </div>
38 44
39 45 <div class="gravatar">
40 46 <img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,20)}" />
41 47 </div>
42 48 <div class="account">
43 49 %if c.rhodecode_user.username == 'default':
44 50 <a href="${h.url('public_journal')}">${_('Public journal')}</a>
45 51 %else:
46 52 ${h.link_to(c.rhodecode_user.username,h.url('admin_settings_my_account'),title='%s %s'%(c.rhodecode_user.name,c.rhodecode_user.lastname))}
47 53 %endif
48 54 </div>
49 55 </li>
50 56 <li>
51 57 <a href="${h.url('home')}">${_('Home')}</a>
52 58 </li>
53 59 %if c.rhodecode_user.username != 'default':
54 60 <li>
55 61 <a href="${h.url('journal')}">${_('Journal')}</a>
56 62 ##(${c.unread_journal}
57 63 </li>
58 64 %endif
59 65 %if c.rhodecode_user.username == 'default':
60 66 <li class="last highlight">${h.link_to(_(u'Login'),h.url('login_home'),id='quick_login_link')}</li>
61 67 %else:
62 68 <li class="last highlight">${h.link_to(_(u'Log Out'),h.url('logout_home'))}</li>
63 69 %endif
64 70 </ul>
65 71 <!-- end user -->
66 <div id="header-inner" class="title top-left-rounded-corner top-right-rounded-corner">
72 <div id="header-inner" class="title">
67 73 <div id="logo">
68 74 <h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1>
69 75 </div>
70 76 <!-- MENU -->
71 77 ${self.page_nav()}
72 78 <!-- END MENU -->
73 79 ${self.body()}
74 80 </div>
75 81 </div>
76 82 <!-- END HEADER -->
77 83
78 84 <!-- CONTENT -->
79 85 <div id="content">
80 86 <div class="flash_msg">
81 87 <% messages = h.flash.pop_messages() %>
82 88 % if messages:
83 89 <ul id="flash-messages">
84 90 % for message in messages:
85 91 <li class="${message.category}_msg">${message}</li>
86 92 % endfor
87 93 </ul>
88 94 % endif
89 95 </div>
90 96 <div id="main">
91 97 ${next.main()}
92 98 </div>
93 99 </div>
94 100 <!-- END CONTENT -->
95 101
96 102 <!-- FOOTER -->
97 103 <div id="footer">
98 <div id="footer-inner" class="title bottom-left-rounded-corner bottom-right-rounded-corner">
104 <div id="footer-inner" class="title">
99 105 <div>
100 106 <p class="footer-link">
101 107 <a href="${h.url('bugtracker')}">${_('Submit a bug')}</a>
102 108 </p>
103 109 <p class="footer-link-right">
104 110 <a href="${h.url('rhodecode_official')}">RhodeCode</a>
105 111 ${c.rhodecode_version} &copy; 2010-${h.datetime.today().year} by Marcin Kuzminski
106 112 </p>
107 113 </div>
108 114 </div>
109 115 </div>
110 116 <!-- END FOOTER -->
111 117
112 118 ### MAKO DEFS ###
113 119 <%def name="page_nav()">
114 120 ${self.menu()}
115 121 </%def>
116 122
117 123 <%def name="breadcrumbs()">
118 124 <div class="breadcrumbs">
119 125 ${self.breadcrumbs_links()}
120 126 </div>
121 127 </%def>
122 128
123 129
124 130 <%def name="menu(current=None)">
125 131 <%
126 132 def is_current(selected):
127 133 if selected == current:
128 134 return h.literal('class="current"')
129 135 %>
130 136 %if current not in ['home','admin']:
131 137 ##REGULAR MENU
132 138 <ul id="quick">
133 139 <!-- repo switcher -->
134 140 <li>
135 141 <a id="repo_switcher" title="${_('Switch repository')}" href="#">
136 142 <span class="icon">
137 143 <img src="${h.url('/images/icons/database.png')}" alt="${_('Products')}" />
138 144 </span>
139 145 <span>&darr;</span>
140 146 </a>
141 147 <ul id="repo_switcher_list" class="repo_switcher">
142 148 <li>
143 149 <a href="#">${_('loading...')}</a>
144 150 </li>
145 151 </ul>
146 152 <script type="text/javascript">
147 153 YUE.on('repo_switcher','mouseover',function(){
148 154 function qfilter(){
149 155 var S = YAHOO.util.Selector;
150 156
151 157 var q_filter = YUD.get('q_filter_rs');
152 158 var F = YAHOO.namespace('q_filter_rs');
153 159
154 160 YUE.on(q_filter,'click',function(){
155 161 q_filter.value = '';
156 162 });
157 163
158 164 F.filterTimeout = null;
159 165
160 166 F.updateFilter = function() {
161 167 // Reset timeout
162 168 F.filterTimeout = null;
163 169
164 170 var obsolete = [];
165 171 var nodes = S.query('ul#repo_switcher_list li a.repo_name');
166 172 var req = YUD.get('q_filter_rs').value;
167 173 for (n in nodes){
168 174 YUD.setStyle(nodes[n].parentNode,'display','')
169 175 }
170 176 if (req){
171 177 for (n in nodes){
172 178 if (nodes[n].innerHTML.toLowerCase().indexOf(req) == -1) {
173 179 obsolete.push(nodes[n]);
174 180 }
175 181 }
176 182 if(obsolete){
177 183 for (n in obsolete){
178 184 YUD.setStyle(obsolete[n].parentNode,'display','none');
179 185 }
180 186 }
181 187 }
182 188 }
183 189
184 190 YUE.on(q_filter,'keyup',function(e){
185 191 clearTimeout(F.filterTimeout);
186 192 F.filterTimeout = setTimeout(F.updateFilter,600);
187 193 });
188 194 }
189 195 var loaded = YUD.hasClass('repo_switcher','loaded');
190 196 if(!loaded){
191 197 YUD.addClass('repo_switcher','loaded');
192 198 ypjax("${h.url('repo_switcher')}",'repo_switcher_list',
193 199 function(o){qfilter();},
194 200 function(o){YUD.removeClass('repo_switcher','loaded');}
195 201 ,null);
196 202 }
197 203 return false;
198 204 });
199 205 </script>
200 206 </li>
201 207
202 208 <li ${is_current('summary')}>
203 209 <a title="${_('Summary')}" href="${h.url('summary_home',repo_name=c.repo_name)}">
204 210 <span class="icon">
205 211 <img src="${h.url('/images/icons/clipboard_16.png')}" alt="${_('Summary')}" />
206 212 </span>
207 213 <span>${_('Summary')}</span>
208 214 </a>
209 215 </li>
210 216 ##<li ${is_current('shortlog')}>
211 217 ## <a title="${_('Shortlog')}" href="${h.url('shortlog_home',repo_name=c.repo_name)}">
212 218 ## <span class="icon">
213 219 ## <img src="${h.url('/images/icons/application_view_list.png')}" alt="${_('Shortlog')}" />
214 220 ## </span>
215 221 ## <span>${_('Shortlog')}</span>
216 222 ## </a>
217 223 ##</li>
218 224 <li ${is_current('changelog')}>
219 225 <a title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=c.repo_name)}">
220 226 <span class="icon">
221 227 <img src="${h.url('/images/icons/time.png')}" alt="${_('Changelog')}" />
222 228 </span>
223 229 <span>${_('Changelog')}</span>
224 230 </a>
225 231 </li>
226 232
227 233 <li ${is_current('switch_to')}>
228 234 <a title="${_('Switch to')}" href="#">
229 235 <span class="icon">
230 236 <img src="${h.url('/images/icons/arrow_switch.png')}" alt="${_('Switch to')}" />
231 237 </span>
232 238 <span>${_('Switch to')}</span>
233 239 </a>
234 240 <ul>
235 241 <li>
236 242 ${h.link_to('%s (%s)' % (_('branches'),len(c.rhodecode_repo.branches.values()),),h.url('branches_home',repo_name=c.repo_name),class_='branches childs')}
237 243 <ul>
238 244 %if c.rhodecode_repo.branches.values():
239 245 %for cnt,branch in enumerate(c.rhodecode_repo.branches.items()):
240 246 <li>${h.link_to('%s - %s' % (branch[0],h.short_id(branch[1])),h.url('files_home',repo_name=c.repo_name,revision=branch[1]))}</li>
241 247 %endfor
242 248 %else:
243 249 <li>${h.link_to(_('There are no branches yet'),'#')}</li>
244 250 %endif
245 251 </ul>
246 252 </li>
247 253 <li>
248 254 ${h.link_to('%s (%s)' % (_('tags'),len(c.rhodecode_repo.tags.values()),),h.url('tags_home',repo_name=c.repo_name),class_='tags childs')}
249 255 <ul>
250 256 %if c.rhodecode_repo.tags.values():
251 257 %for cnt,tag in enumerate(c.rhodecode_repo.tags.items()):
252 258 <li>${h.link_to('%s - %s' % (tag[0],h.short_id(tag[1])),h.url('files_home',repo_name=c.repo_name,revision=tag[1]))}</li>
253 259 %endfor
254 260 %else:
255 261 <li>${h.link_to(_('There are no tags yet'),'#')}</li>
256 262 %endif
257 263 </ul>
258 264 </li>
259 265 </ul>
260 266 </li>
261 267 <li ${is_current('files')}>
262 268 <a title="${_('Files')}" href="${h.url('files_home',repo_name=c.repo_name)}">
263 269 <span class="icon">
264 270 <img src="${h.url('/images/icons/file.png')}" alt="${_('Files')}" />
265 271 </span>
266 272 <span>${_('Files')}</span>
267 273 </a>
268 274 </li>
269 275
270 276 <li ${is_current('options')}>
271 277 <a title="${_('Options')}" href="#">
272 278 <span class="icon">
273 279 <img src="${h.url('/images/icons/table_gear.png')}" alt="${_('Admin')}" />
274 280 </span>
275 281 <span>${_('Options')}</span>
276 282 </a>
277 283 <ul>
278 284 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
279 285 %if h.HasPermissionAll('hg.admin')('access settings on repository'):
280 286 <li>${h.link_to(_('settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
281 287 %else:
282 288 <li>${h.link_to(_('settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
283 289 %endif
284 290 %endif
285 291 <li>${h.link_to(_('fork'),h.url('repo_fork_home',repo_name=c.repo_name),class_='fork')}</li>
286 292 <li>${h.link_to(_('search'),h.url('search_repo',search_repo=c.repo_name),class_='search')}</li>
287 293
288 294 % if h.HasPermissionAll('hg.admin')('access admin main page'):
289 295 <li>
290 296 ${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
291 297 <%def name="admin_menu()">
292 298 <ul>
293 299 <li>${h.link_to(_('journal'),h.url('admin_home'),class_='journal')}</li>
294 300 <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
295 301 <li>${h.link_to(_('repositories groups'),h.url('repos_groups'),class_='repos_groups')}</li>
296 302 <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
297 303 <li>${h.link_to(_('users groups'),h.url('users_groups'),class_='groups')}</li>
298 304 <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
299 305 <li>${h.link_to(_('ldap'),h.url('ldap_home'),class_='ldap')}</li>
300 306 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
301 307 </ul>
302 308 </%def>
303 309
304 310 ${admin_menu()}
305 311 </li>
306 312 % endif
307 313 </ul>
308 314 </li>
309 315
310 316 <li>
311 317 <a title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
312 318 <span class="icon_short">
313 319 <img src="${h.url('/images/icons/heart.png')}" alt="${_('Followers')}" />
314 320 </span>
315 321 <span id="current_followers_count" class="short">${c.repository_followers}</span>
316 322 </a>
317 323 </li>
318 324 <li>
319 325 <a title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
320 326 <span class="icon_short">
321 327 <img src="${h.url('/images/icons/arrow_divide.png')}" alt="${_('Forks')}" />
322 328 </span>
323 329 <span class="short">${c.repository_forks}</span>
324 330 </a>
325 331 </li>
326 332
327 333 </ul>
328 334 %else:
329 335 ##ROOT MENU
330 336 <ul id="quick">
331 337 <li>
332 338 <a title="${_('Home')}" href="${h.url('home')}">
333 339 <span class="icon">
334 340 <img src="${h.url('/images/icons/home_16.png')}" alt="${_('Home')}" />
335 341 </span>
336 342 <span>${_('Home')}</span>
337 343 </a>
338 344 </li>
339 345 % if c.rhodecode_user.username != 'default':
340 346 <li>
341 347 <a title="${_('Journal')}" href="${h.url('journal')}">
342 348 <span class="icon">
343 349 <img src="${h.url('/images/icons/book.png')}" alt="${_('Journal')}" />
344 350 </span>
345 351 <span>${_('Journal')}</span>
346 352 </a>
347 353 </li>
348 354 % endif
349 355 <li>
350 356 <a title="${_('Search')}" href="${h.url('search')}">
351 357 <span class="icon">
352 358 <img src="${h.url('/images/icons/search_16.png')}" alt="${_('Search')}" />
353 359 </span>
354 360 <span>${_('Search')}</span>
355 361 </a>
356 362 </li>
357 363
358 364 %if h.HasPermissionAll('hg.admin')('access admin main page'):
359 365 <li ${is_current('admin')}>
360 366 <a title="${_('Admin')}" href="${h.url('admin_home')}">
361 367 <span class="icon">
362 368 <img src="${h.url('/images/icons/cog_edit.png')}" alt="${_('Admin')}" />
363 369 </span>
364 370 <span>${_('Admin')}</span>
365 371 </a>
366 372 ${admin_menu()}
367 373 </li>
368 374 %endif
369 375 </ul>
370 376 %endif
371 377 </%def>
General Comments 0
You need to be logged in to leave comments. Login now