##// END OF EJS Templates
fixed #396 fixed problems with revoking users in nested groups
marcink -
r2126:de72388c beta
parent child Browse files
Show More
@@ -1,588 +1,589 b''
1 .. _changelog:
1 .. _changelog:
2
2
3 =========
3 =========
4 Changelog
4 Changelog
5 =========
5 =========
6
6
7
7
8 1.3.4 (**2012-XX-XX**)
8 1.3.4 (**2012-XX-XX**)
9 ----------------------
9 ----------------------
10
10
11 :status: in-progress
11 :status: in-progress
12 :branch: beta
12 :branch: beta
13
13
14 news
14 news
15 ++++
15 ++++
16
16
17 - Whoosh logging is now controlled by the .ini files logging setup
17 - Whoosh logging is now controlled by the .ini files logging setup
18 - added clone-url into edit form on /settings page
18 - added clone-url into edit form on /settings page
19 - added help text into repo add/edit forms
19 - added help text into repo add/edit forms
20 - created rcextensions module with additional mappings (ref #322) and
20 - created rcextensions module with additional mappings (ref #322) and
21 post push/pull/create repo hooks callbacks
21 post push/pull/create repo hooks callbacks
22
22
23 fixes
23 fixes
24 +++++
24 +++++
25
25
26 - fixed #390 cache invalidation problems on repos inside group
26 - fixed #390 cache invalidation problems on repos inside group
27 - fixed #385 clone by ID url was loosing proxy prefix in URL
27 - fixed #385 clone by ID url was loosing proxy prefix in URL
28 - fixed some unicode problems with waitress
28 - fixed some unicode problems with waitress
29 - fixed issue with escaping < and > in changeset commits
29 - fixed issue with escaping < and > in changeset commits
30 - fixed error occurring during recursive group creation in API
30 - fixed error occurring during recursive group creation in API
31 create_repo function
31 create_repo function
32 - fixed #393 py2.5 fixes for routes url generator
32 - fixed #393 py2.5 fixes for routes url generator
33 - fixed #397 Private repository groups shows up before login
33 - fixed #397 Private repository groups shows up before login
34
34 - fixed #396 fixed problems with revoking users in nested groups
35
35 1.3.3 (**2012-03-02**)
36 1.3.3 (**2012-03-02**)
36 ----------------------
37 ----------------------
37
38
38 news
39 news
39 ++++
40 ++++
40
41
41
42
42 fixes
43 fixes
43 +++++
44 +++++
44
45
45 - fixed some python2.5 compatibility issues
46 - fixed some python2.5 compatibility issues
46 - fixed issues with removed repos was accidentally added as groups, after
47 - fixed issues with removed repos was accidentally added as groups, after
47 full rescan of paths
48 full rescan of paths
48 - fixes #376 Cannot edit user (using container auth)
49 - fixes #376 Cannot edit user (using container auth)
49 - fixes #378 Invalid image urls on changeset screen with proxy-prefix
50 - fixes #378 Invalid image urls on changeset screen with proxy-prefix
50 configuration
51 configuration
51 - fixed initial sorting of repos inside repo group
52 - fixed initial sorting of repos inside repo group
52 - fixes issue when user tried to resubmit same permission into user/user_groups
53 - fixes issue when user tried to resubmit same permission into user/user_groups
53 - bumped beaker version that fixes #375 leap error bug
54 - bumped beaker version that fixes #375 leap error bug
54 - fixed raw_changeset for git. It was generated with hg patch headers
55 - fixed raw_changeset for git. It was generated with hg patch headers
55 - fixed vcs issue with last_changeset for filenodes
56 - fixed vcs issue with last_changeset for filenodes
56 - fixed missing commit after hook delete
57 - fixed missing commit after hook delete
57 - fixed #372 issues with git operation detection that caused a security issue
58 - fixed #372 issues with git operation detection that caused a security issue
58 for git repos
59 for git repos
59
60
60 1.3.2 (**2012-02-28**)
61 1.3.2 (**2012-02-28**)
61 ----------------------
62 ----------------------
62
63
63 news
64 news
64 ++++
65 ++++
65
66
66
67
67 fixes
68 fixes
68 +++++
69 +++++
69
70
70 - fixed git protocol issues with repos-groups
71 - fixed git protocol issues with repos-groups
71 - fixed git remote repos validator that prevented from cloning remote git repos
72 - fixed git remote repos validator that prevented from cloning remote git repos
72 - fixes #370 ending slashes fixes for repo and groups
73 - fixes #370 ending slashes fixes for repo and groups
73 - fixes #368 improved git-protocol detection to handle other clients
74 - fixes #368 improved git-protocol detection to handle other clients
74 - fixes #366 When Setting Repository Group To Blank Repo Group Wont Be
75 - fixes #366 When Setting Repository Group To Blank Repo Group Wont Be
75 Moved To Root
76 Moved To Root
76 - fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
77 - fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
77 - fixed #373 missing cascade drop on user_group_to_perm table
78 - fixed #373 missing cascade drop on user_group_to_perm table
78
79
79 1.3.1 (**2012-02-27**)
80 1.3.1 (**2012-02-27**)
80 ----------------------
81 ----------------------
81
82
82 news
83 news
83 ++++
84 ++++
84
85
85
86
86 fixes
87 fixes
87 +++++
88 +++++
88
89
89 - redirection loop occurs when remember-me wasn't checked during login
90 - redirection loop occurs when remember-me wasn't checked during login
90 - fixes issues with git blob history generation
91 - fixes issues with git blob history generation
91 - don't fetch branch for git in file history dropdown. Causes unneeded slowness
92 - don't fetch branch for git in file history dropdown. Causes unneeded slowness
92
93
93 1.3.0 (**2012-02-26**)
94 1.3.0 (**2012-02-26**)
94 ----------------------
95 ----------------------
95
96
96 news
97 news
97 ++++
98 ++++
98
99
99 - code review, inspired by github code-comments
100 - code review, inspired by github code-comments
100 - #215 rst and markdown README files support
101 - #215 rst and markdown README files support
101 - #252 Container-based and proxy pass-through authentication support
102 - #252 Container-based and proxy pass-through authentication support
102 - #44 branch browser. Filtering of changelog by branches
103 - #44 branch browser. Filtering of changelog by branches
103 - mercurial bookmarks support
104 - mercurial bookmarks support
104 - new hover top menu, optimized to add maximum size for important views
105 - new hover top menu, optimized to add maximum size for important views
105 - configurable clone url template with possibility to specify protocol like
106 - configurable clone url template with possibility to specify protocol like
106 ssh:// or http:// and also manually alter other parts of clone_url.
107 ssh:// or http:// and also manually alter other parts of clone_url.
107 - enabled largefiles extension by default
108 - enabled largefiles extension by default
108 - optimized summary file pages and saved a lot of unused space in them
109 - optimized summary file pages and saved a lot of unused space in them
109 - #239 option to manually mark repository as fork
110 - #239 option to manually mark repository as fork
110 - #320 mapping of commit authors to RhodeCode users
111 - #320 mapping of commit authors to RhodeCode users
111 - #304 hashes are displayed using monospace font
112 - #304 hashes are displayed using monospace font
112 - diff configuration, toggle white lines and context lines
113 - diff configuration, toggle white lines and context lines
113 - #307 configurable diffs, whitespace toggle, increasing context lines
114 - #307 configurable diffs, whitespace toggle, increasing context lines
114 - sorting on branches, tags and bookmarks using YUI datatable
115 - sorting on branches, tags and bookmarks using YUI datatable
115 - improved file filter on files page
116 - improved file filter on files page
116 - implements #330 api method for listing nodes ar particular revision
117 - implements #330 api method for listing nodes ar particular revision
117 - #73 added linking issues in commit messages to chosen issue tracker url
118 - #73 added linking issues in commit messages to chosen issue tracker url
118 based on user defined regular expression
119 based on user defined regular expression
119 - added linking of changesets in commit messages
120 - added linking of changesets in commit messages
120 - new compact changelog with expandable commit messages
121 - new compact changelog with expandable commit messages
121 - firstname and lastname are optional in user creation
122 - firstname and lastname are optional in user creation
122 - #348 added post-create repository hook
123 - #348 added post-create repository hook
123 - #212 global encoding settings is now configurable from .ini files
124 - #212 global encoding settings is now configurable from .ini files
124 - #227 added repository groups permissions
125 - #227 added repository groups permissions
125 - markdown gets codehilite extensions
126 - markdown gets codehilite extensions
126 - new API methods, delete_repositories, grante/revoke permissions for groups
127 - new API methods, delete_repositories, grante/revoke permissions for groups
127 and repos
128 and repos
128
129
129
130
130 fixes
131 fixes
131 +++++
132 +++++
132
133
133 - rewrote dbsession management for atomic operations, and better error handling
134 - rewrote dbsession management for atomic operations, and better error handling
134 - fixed sorting of repo tables
135 - fixed sorting of repo tables
135 - #326 escape of special html entities in diffs
136 - #326 escape of special html entities in diffs
136 - normalized user_name => username in api attributes
137 - normalized user_name => username in api attributes
137 - fixes #298 ldap created users with mixed case emails created conflicts
138 - fixes #298 ldap created users with mixed case emails created conflicts
138 on saving a form
139 on saving a form
139 - fixes issue when owner of a repo couldn't revoke permissions for users
140 - fixes issue when owner of a repo couldn't revoke permissions for users
140 and groups
141 and groups
141 - fixes #271 rare JSON serialization problem with statistics
142 - fixes #271 rare JSON serialization problem with statistics
142 - fixes #337 missing validation check for conflicting names of a group with a
143 - fixes #337 missing validation check for conflicting names of a group with a
143 repositories group
144 repositories group
144 - #340 fixed session problem for mysql and celery tasks
145 - #340 fixed session problem for mysql and celery tasks
145 - fixed #331 RhodeCode mangles repository names if the a repository group
146 - fixed #331 RhodeCode mangles repository names if the a repository group
146 contains the "full path" to the repositories
147 contains the "full path" to the repositories
147 - #355 RhodeCode doesn't store encrypted LDAP passwords
148 - #355 RhodeCode doesn't store encrypted LDAP passwords
148
149
149 1.2.5 (**2012-01-28**)
150 1.2.5 (**2012-01-28**)
150 ----------------------
151 ----------------------
151
152
152 news
153 news
153 ++++
154 ++++
154
155
155 fixes
156 fixes
156 +++++
157 +++++
157
158
158 - #340 Celery complains about MySQL server gone away, added session cleanup
159 - #340 Celery complains about MySQL server gone away, added session cleanup
159 for celery tasks
160 for celery tasks
160 - #341 "scanning for repositories in None" log message during Rescan was missing
161 - #341 "scanning for repositories in None" log message during Rescan was missing
161 a parameter
162 a parameter
162 - fixed creating archives with subrepos. Some hooks were triggered during that
163 - fixed creating archives with subrepos. Some hooks were triggered during that
163 operation leading to crash.
164 operation leading to crash.
164 - fixed missing email in account page.
165 - fixed missing email in account page.
165 - Reverted Mercurial to 2.0.1 for windows due to bug in Mercurial that makes
166 - Reverted Mercurial to 2.0.1 for windows due to bug in Mercurial that makes
166 forking on windows impossible
167 forking on windows impossible
167
168
168 1.2.4 (**2012-01-19**)
169 1.2.4 (**2012-01-19**)
169 ----------------------
170 ----------------------
170
171
171 news
172 news
172 ++++
173 ++++
173
174
174 - RhodeCode is bundled with mercurial series 2.0.X by default, with
175 - RhodeCode is bundled with mercurial series 2.0.X by default, with
175 full support to largefiles extension. Enabled by default in new installations
176 full support to largefiles extension. Enabled by default in new installations
176 - #329 Ability to Add/Remove Groups to/from a Repository via AP
177 - #329 Ability to Add/Remove Groups to/from a Repository via AP
177 - added requires.txt file with requirements
178 - added requires.txt file with requirements
178
179
179 fixes
180 fixes
180 +++++
181 +++++
181
182
182 - fixes db session issues with celery when emailing admins
183 - fixes db session issues with celery when emailing admins
183 - #331 RhodeCode mangles repository names if the a repository group
184 - #331 RhodeCode mangles repository names if the a repository group
184 contains the "full path" to the repositories
185 contains the "full path" to the repositories
185 - #298 Conflicting e-mail addresses for LDAP and RhodeCode users
186 - #298 Conflicting e-mail addresses for LDAP and RhodeCode users
186 - DB session cleanup after hg protocol operations, fixes issues with
187 - DB session cleanup after hg protocol operations, fixes issues with
187 `mysql has gone away` errors
188 `mysql has gone away` errors
188 - #333 doc fixes for get_repo api function
189 - #333 doc fixes for get_repo api function
189 - #271 rare JSON serialization problem with statistics enabled
190 - #271 rare JSON serialization problem with statistics enabled
190 - #337 Fixes issues with validation of repository name conflicting with
191 - #337 Fixes issues with validation of repository name conflicting with
191 a group name. A proper message is now displayed.
192 a group name. A proper message is now displayed.
192 - #292 made ldap_dn in user edit readonly, to get rid of confusion that field
193 - #292 made ldap_dn in user edit readonly, to get rid of confusion that field
193 doesn't work
194 doesn't work
194 - #316 fixes issues with web description in hgrc files
195 - #316 fixes issues with web description in hgrc files
195
196
196 1.2.3 (**2011-11-02**)
197 1.2.3 (**2011-11-02**)
197 ----------------------
198 ----------------------
198
199
199 news
200 news
200 ++++
201 ++++
201
202
202 - added option to manage repos group for non admin users
203 - added option to manage repos group for non admin users
203 - added following API methods for get_users, create_user, get_users_groups,
204 - added following API methods for get_users, create_user, get_users_groups,
204 get_users_group, create_users_group, add_user_to_users_groups, get_repos,
205 get_users_group, create_users_group, add_user_to_users_groups, get_repos,
205 get_repo, create_repo, add_user_to_repo
206 get_repo, create_repo, add_user_to_repo
206 - implements #237 added password confirmation for my account
207 - implements #237 added password confirmation for my account
207 and admin edit user.
208 and admin edit user.
208 - implements #291 email notification for global events are now sent to all
209 - implements #291 email notification for global events are now sent to all
209 administrator users, and global config email.
210 administrator users, and global config email.
210
211
211 fixes
212 fixes
212 +++++
213 +++++
213
214
214 - added option for passing auth method for smtp mailer
215 - added option for passing auth method for smtp mailer
215 - #276 issue with adding a single user with id>10 to usergroups
216 - #276 issue with adding a single user with id>10 to usergroups
216 - #277 fixes windows LDAP settings in which missing values breaks the ldap auth
217 - #277 fixes windows LDAP settings in which missing values breaks the ldap auth
217 - #288 fixes managing of repos in a group for non admin user
218 - #288 fixes managing of repos in a group for non admin user
218
219
219 1.2.2 (**2011-10-17**)
220 1.2.2 (**2011-10-17**)
220 ----------------------
221 ----------------------
221
222
222 news
223 news
223 ++++
224 ++++
224
225
225 - #226 repo groups are available by path instead of numerical id
226 - #226 repo groups are available by path instead of numerical id
226
227
227 fixes
228 fixes
228 +++++
229 +++++
229
230
230 - #259 Groups with the same name but with different parent group
231 - #259 Groups with the same name but with different parent group
231 - #260 Put repo in group, then move group to another group -> repo becomes unavailable
232 - #260 Put repo in group, then move group to another group -> repo becomes unavailable
232 - #258 RhodeCode 1.2 assumes egg folder is writable (lockfiles problems)
233 - #258 RhodeCode 1.2 assumes egg folder is writable (lockfiles problems)
233 - #265 ldap save fails sometimes on converting attributes to booleans,
234 - #265 ldap save fails sometimes on converting attributes to booleans,
234 added getter and setter into model that will prevent from this on db model level
235 added getter and setter into model that will prevent from this on db model level
235 - fixed problems with timestamps issues #251 and #213
236 - fixed problems with timestamps issues #251 and #213
236 - fixes #266 RhodeCode allows to create repo with the same name and in
237 - fixes #266 RhodeCode allows to create repo with the same name and in
237 the same parent as group
238 the same parent as group
238 - fixes #245 Rescan of the repositories on Windows
239 - fixes #245 Rescan of the repositories on Windows
239 - fixes #248 cannot edit repos inside a group on windows
240 - fixes #248 cannot edit repos inside a group on windows
240 - fixes #219 forking problems on windows
241 - fixes #219 forking problems on windows
241
242
242 1.2.1 (**2011-10-08**)
243 1.2.1 (**2011-10-08**)
243 ----------------------
244 ----------------------
244
245
245 news
246 news
246 ++++
247 ++++
247
248
248
249
249 fixes
250 fixes
250 +++++
251 +++++
251
252
252 - fixed problems with basic auth and push problems
253 - fixed problems with basic auth and push problems
253 - gui fixes
254 - gui fixes
254 - fixed logger
255 - fixed logger
255
256
256 1.2.0 (**2011-10-07**)
257 1.2.0 (**2011-10-07**)
257 ----------------------
258 ----------------------
258
259
259 news
260 news
260 ++++
261 ++++
261
262
262 - implemented #47 repository groups
263 - implemented #47 repository groups
263 - implemented #89 Can setup google analytics code from settings menu
264 - implemented #89 Can setup google analytics code from settings menu
264 - implemented #91 added nicer looking archive urls with more download options
265 - implemented #91 added nicer looking archive urls with more download options
265 like tags, branches
266 like tags, branches
266 - implemented #44 into file browsing, and added follow branch option
267 - implemented #44 into file browsing, and added follow branch option
267 - implemented #84 downloads can be enabled/disabled for each repository
268 - implemented #84 downloads can be enabled/disabled for each repository
268 - anonymous repository can be cloned without having to pass default:default
269 - anonymous repository can be cloned without having to pass default:default
269 into clone url
270 into clone url
270 - fixed #90 whoosh indexer can index chooses repositories passed in command
271 - fixed #90 whoosh indexer can index chooses repositories passed in command
271 line
272 line
272 - extended journal with day aggregates and paging
273 - extended journal with day aggregates and paging
273 - implemented #107 source code lines highlight ranges
274 - implemented #107 source code lines highlight ranges
274 - implemented #93 customizable changelog on combined revision ranges -
275 - implemented #93 customizable changelog on combined revision ranges -
275 equivalent of githubs compare view
276 equivalent of githubs compare view
276 - implemented #108 extended and more powerful LDAP configuration
277 - implemented #108 extended and more powerful LDAP configuration
277 - implemented #56 users groups
278 - implemented #56 users groups
278 - major code rewrites optimized codes for speed and memory usage
279 - major code rewrites optimized codes for speed and memory usage
279 - raw and diff downloads are now in git format
280 - raw and diff downloads are now in git format
280 - setup command checks for write access to given path
281 - setup command checks for write access to given path
281 - fixed many issues with international characters and unicode. It uses utf8
282 - fixed many issues with international characters and unicode. It uses utf8
282 decode with replace to provide less errors even with non utf8 encoded strings
283 decode with replace to provide less errors even with non utf8 encoded strings
283 - #125 added API KEY access to feeds
284 - #125 added API KEY access to feeds
284 - #109 Repository can be created from external Mercurial link (aka. remote
285 - #109 Repository can be created from external Mercurial link (aka. remote
285 repository, and manually updated (via pull) from admin panel
286 repository, and manually updated (via pull) from admin panel
286 - beta git support - push/pull server + basic view for git repos
287 - beta git support - push/pull server + basic view for git repos
287 - added followers page and forks page
288 - added followers page and forks page
288 - server side file creation (with binary file upload interface)
289 - server side file creation (with binary file upload interface)
289 and edition with commits powered by codemirror
290 and edition with commits powered by codemirror
290 - #111 file browser file finder, quick lookup files on whole file tree
291 - #111 file browser file finder, quick lookup files on whole file tree
291 - added quick login sliding menu into main page
292 - added quick login sliding menu into main page
292 - changelog uses lazy loading of affected files details, in some scenarios
293 - changelog uses lazy loading of affected files details, in some scenarios
293 this can improve speed of changelog page dramatically especially for
294 this can improve speed of changelog page dramatically especially for
294 larger repositories.
295 larger repositories.
295 - implements #214 added support for downloading subrepos in download menu.
296 - implements #214 added support for downloading subrepos in download menu.
296 - Added basic API for direct operations on rhodecode via JSON
297 - Added basic API for direct operations on rhodecode via JSON
297 - Implemented advanced hook management
298 - Implemented advanced hook management
298
299
299 fixes
300 fixes
300 +++++
301 +++++
301
302
302 - fixed file browser bug, when switching into given form revision the url was
303 - fixed file browser bug, when switching into given form revision the url was
303 not changing
304 not changing
304 - fixed propagation to error controller on simplehg and simplegit middlewares
305 - fixed propagation to error controller on simplehg and simplegit middlewares
305 - fixed error when trying to make a download on empty repository
306 - fixed error when trying to make a download on empty repository
306 - fixed problem with '[' chars in commit messages in journal
307 - fixed problem with '[' chars in commit messages in journal
307 - fixed #99 Unicode errors, on file node paths with non utf-8 characters
308 - fixed #99 Unicode errors, on file node paths with non utf-8 characters
308 - journal fork fixes
309 - journal fork fixes
309 - removed issue with space inside renamed repository after deletion
310 - removed issue with space inside renamed repository after deletion
310 - fixed strange issue on formencode imports
311 - fixed strange issue on formencode imports
311 - fixed #126 Deleting repository on Windows, rename used incompatible chars.
312 - fixed #126 Deleting repository on Windows, rename used incompatible chars.
312 - #150 fixes for errors on repositories mapped in db but corrupted in
313 - #150 fixes for errors on repositories mapped in db but corrupted in
313 filesystem
314 filesystem
314 - fixed problem with ascendant characters in realm #181
315 - fixed problem with ascendant characters in realm #181
315 - fixed problem with sqlite file based database connection pool
316 - fixed problem with sqlite file based database connection pool
316 - whoosh indexer and code stats share the same dynamic extensions map
317 - whoosh indexer and code stats share the same dynamic extensions map
317 - fixes #188 - relationship delete of repo_to_perm entry on user removal
318 - fixes #188 - relationship delete of repo_to_perm entry on user removal
318 - fixes issue #189 Trending source files shows "show more" when no more exist
319 - fixes issue #189 Trending source files shows "show more" when no more exist
319 - fixes issue #197 Relative paths for pidlocks
320 - fixes issue #197 Relative paths for pidlocks
320 - fixes issue #198 password will require only 3 chars now for login form
321 - fixes issue #198 password will require only 3 chars now for login form
321 - fixes issue #199 wrong redirection for non admin users after creating a repository
322 - fixes issue #199 wrong redirection for non admin users after creating a repository
322 - fixes issues #202, bad db constraint made impossible to attach same group
323 - fixes issues #202, bad db constraint made impossible to attach same group
323 more than one time. Affects only mysql/postgres
324 more than one time. Affects only mysql/postgres
324 - fixes #218 os.kill patch for windows was missing sig param
325 - fixes #218 os.kill patch for windows was missing sig param
325 - improved rendering of dag (they are not trimmed anymore when number of
326 - improved rendering of dag (they are not trimmed anymore when number of
326 heads exceeds 5)
327 heads exceeds 5)
327
328
328 1.1.8 (**2011-04-12**)
329 1.1.8 (**2011-04-12**)
329 ----------------------
330 ----------------------
330
331
331 news
332 news
332 ++++
333 ++++
333
334
334 - improved windows support
335 - improved windows support
335
336
336 fixes
337 fixes
337 +++++
338 +++++
338
339
339 - fixed #140 freeze of python dateutil library, since new version is python2.x
340 - fixed #140 freeze of python dateutil library, since new version is python2.x
340 incompatible
341 incompatible
341 - setup-app will check for write permission in given path
342 - setup-app will check for write permission in given path
342 - cleaned up license info issue #149
343 - cleaned up license info issue #149
343 - fixes for issues #137,#116 and problems with unicode and accented characters.
344 - fixes for issues #137,#116 and problems with unicode and accented characters.
344 - fixes crashes on gravatar, when passed in email as unicode
345 - fixes crashes on gravatar, when passed in email as unicode
345 - fixed tooltip flickering problems
346 - fixed tooltip flickering problems
346 - fixed came_from redirection on windows
347 - fixed came_from redirection on windows
347 - fixed logging modules, and sql formatters
348 - fixed logging modules, and sql formatters
348 - windows fixes for os.kill issue #133
349 - windows fixes for os.kill issue #133
349 - fixes path splitting for windows issues #148
350 - fixes path splitting for windows issues #148
350 - fixed issue #143 wrong import on migration to 1.1.X
351 - fixed issue #143 wrong import on migration to 1.1.X
351 - fixed problems with displaying binary files, thanks to Thomas Waldmann
352 - fixed problems with displaying binary files, thanks to Thomas Waldmann
352 - removed name from archive files since it's breaking ui for long repo names
353 - removed name from archive files since it's breaking ui for long repo names
353 - fixed issue with archive headers sent to browser, thanks to Thomas Waldmann
354 - fixed issue with archive headers sent to browser, thanks to Thomas Waldmann
354 - fixed compatibility for 1024px displays, and larger dpi settings, thanks to
355 - fixed compatibility for 1024px displays, and larger dpi settings, thanks to
355 Thomas Waldmann
356 Thomas Waldmann
356 - fixed issue #166 summary pager was skipping 10 revisions on second page
357 - fixed issue #166 summary pager was skipping 10 revisions on second page
357
358
358
359
359 1.1.7 (**2011-03-23**)
360 1.1.7 (**2011-03-23**)
360 ----------------------
361 ----------------------
361
362
362 news
363 news
363 ++++
364 ++++
364
365
365 fixes
366 fixes
366 +++++
367 +++++
367
368
368 - fixed (again) #136 installation support for FreeBSD
369 - fixed (again) #136 installation support for FreeBSD
369
370
370
371
371 1.1.6 (**2011-03-21**)
372 1.1.6 (**2011-03-21**)
372 ----------------------
373 ----------------------
373
374
374 news
375 news
375 ++++
376 ++++
376
377
377 fixes
378 fixes
378 +++++
379 +++++
379
380
380 - fixed #136 installation support for FreeBSD
381 - fixed #136 installation support for FreeBSD
381 - RhodeCode will check for python version during installation
382 - RhodeCode will check for python version during installation
382
383
383 1.1.5 (**2011-03-17**)
384 1.1.5 (**2011-03-17**)
384 ----------------------
385 ----------------------
385
386
386 news
387 news
387 ++++
388 ++++
388
389
389 - basic windows support, by exchanging pybcrypt into sha256 for windows only
390 - basic windows support, by exchanging pybcrypt into sha256 for windows only
390 highly inspired by idea of mantis406
391 highly inspired by idea of mantis406
391
392
392 fixes
393 fixes
393 +++++
394 +++++
394
395
395 - fixed sorting by author in main page
396 - fixed sorting by author in main page
396 - fixed crashes with diffs on binary files
397 - fixed crashes with diffs on binary files
397 - fixed #131 problem with boolean values for LDAP
398 - fixed #131 problem with boolean values for LDAP
398 - fixed #122 mysql problems thanks to striker69
399 - fixed #122 mysql problems thanks to striker69
399 - fixed problem with errors on calling raw/raw_files/annotate functions
400 - fixed problem with errors on calling raw/raw_files/annotate functions
400 with unknown revisions
401 with unknown revisions
401 - fixed returned rawfiles attachment names with international character
402 - fixed returned rawfiles attachment names with international character
402 - cleaned out docs, big thanks to Jason Harris
403 - cleaned out docs, big thanks to Jason Harris
403
404
404 1.1.4 (**2011-02-19**)
405 1.1.4 (**2011-02-19**)
405 ----------------------
406 ----------------------
406
407
407 news
408 news
408 ++++
409 ++++
409
410
410 fixes
411 fixes
411 +++++
412 +++++
412
413
413 - fixed formencode import problem on settings page, that caused server crash
414 - fixed formencode import problem on settings page, that caused server crash
414 when that page was accessed as first after server start
415 when that page was accessed as first after server start
415 - journal fixes
416 - journal fixes
416 - fixed option to access repository just by entering http://server/<repo_name>
417 - fixed option to access repository just by entering http://server/<repo_name>
417
418
418 1.1.3 (**2011-02-16**)
419 1.1.3 (**2011-02-16**)
419 ----------------------
420 ----------------------
420
421
421 news
422 news
422 ++++
423 ++++
423
424
424 - implemented #102 allowing the '.' character in username
425 - implemented #102 allowing the '.' character in username
425 - added option to access repository just by entering http://server/<repo_name>
426 - added option to access repository just by entering http://server/<repo_name>
426 - celery task ignores result for better performance
427 - celery task ignores result for better performance
427
428
428 fixes
429 fixes
429 +++++
430 +++++
430
431
431 - fixed ehlo command and non auth mail servers on smtp_lib. Thanks to
432 - fixed ehlo command and non auth mail servers on smtp_lib. Thanks to
432 apollo13 and Johan Walles
433 apollo13 and Johan Walles
433 - small fixes in journal
434 - small fixes in journal
434 - fixed problems with getting setting for celery from .ini files
435 - fixed problems with getting setting for celery from .ini files
435 - registration, password reset and login boxes share the same title as main
436 - registration, password reset and login boxes share the same title as main
436 application now
437 application now
437 - fixed #113: to high permissions to fork repository
438 - fixed #113: to high permissions to fork repository
438 - fixed problem with '[' chars in commit messages in journal
439 - fixed problem with '[' chars in commit messages in journal
439 - removed issue with space inside renamed repository after deletion
440 - removed issue with space inside renamed repository after deletion
440 - db transaction fixes when filesystem repository creation failed
441 - db transaction fixes when filesystem repository creation failed
441 - fixed #106 relation issues on databases different than sqlite
442 - fixed #106 relation issues on databases different than sqlite
442 - fixed static files paths links to use of url() method
443 - fixed static files paths links to use of url() method
443
444
444 1.1.2 (**2011-01-12**)
445 1.1.2 (**2011-01-12**)
445 ----------------------
446 ----------------------
446
447
447 news
448 news
448 ++++
449 ++++
449
450
450
451
451 fixes
452 fixes
452 +++++
453 +++++
453
454
454 - fixes #98 protection against float division of percentage stats
455 - fixes #98 protection against float division of percentage stats
455 - fixed graph bug
456 - fixed graph bug
456 - forced webhelpers version since it was making troubles during installation
457 - forced webhelpers version since it was making troubles during installation
457
458
458 1.1.1 (**2011-01-06**)
459 1.1.1 (**2011-01-06**)
459 ----------------------
460 ----------------------
460
461
461 news
462 news
462 ++++
463 ++++
463
464
464 - added force https option into ini files for easier https usage (no need to
465 - added force https option into ini files for easier https usage (no need to
465 set server headers with this options)
466 set server headers with this options)
466 - small css updates
467 - small css updates
467
468
468 fixes
469 fixes
469 +++++
470 +++++
470
471
471 - fixed #96 redirect loop on files view on repositories without changesets
472 - fixed #96 redirect loop on files view on repositories without changesets
472 - fixed #97 unicode string passed into server header in special cases (mod_wsgi)
473 - fixed #97 unicode string passed into server header in special cases (mod_wsgi)
473 and server crashed with errors
474 and server crashed with errors
474 - fixed large tooltips problems on main page
475 - fixed large tooltips problems on main page
475 - fixed #92 whoosh indexer is more error proof
476 - fixed #92 whoosh indexer is more error proof
476
477
477 1.1.0 (**2010-12-18**)
478 1.1.0 (**2010-12-18**)
478 ----------------------
479 ----------------------
479
480
480 news
481 news
481 ++++
482 ++++
482
483
483 - rewrite of internals for vcs >=0.1.10
484 - rewrite of internals for vcs >=0.1.10
484 - uses mercurial 1.7 with dotencode disabled for maintaining compatibility
485 - uses mercurial 1.7 with dotencode disabled for maintaining compatibility
485 with older clients
486 with older clients
486 - anonymous access, authentication via ldap
487 - anonymous access, authentication via ldap
487 - performance upgrade for cached repos list - each repository has its own
488 - performance upgrade for cached repos list - each repository has its own
488 cache that's invalidated when needed.
489 cache that's invalidated when needed.
489 - performance upgrades on repositories with large amount of commits (20K+)
490 - performance upgrades on repositories with large amount of commits (20K+)
490 - main page quick filter for filtering repositories
491 - main page quick filter for filtering repositories
491 - user dashboards with ability to follow chosen repositories actions
492 - user dashboards with ability to follow chosen repositories actions
492 - sends email to admin on new user registration
493 - sends email to admin on new user registration
493 - added cache/statistics reset options into repository settings
494 - added cache/statistics reset options into repository settings
494 - more detailed action logger (based on hooks) with pushed changesets lists
495 - more detailed action logger (based on hooks) with pushed changesets lists
495 and options to disable those hooks from admin panel
496 and options to disable those hooks from admin panel
496 - introduced new enhanced changelog for merges that shows more accurate results
497 - introduced new enhanced changelog for merges that shows more accurate results
497 - new improved and faster code stats (based on pygments lexers mapping tables,
498 - new improved and faster code stats (based on pygments lexers mapping tables,
498 showing up to 10 trending sources for each repository. Additionally stats
499 showing up to 10 trending sources for each repository. Additionally stats
499 can be disabled in repository settings.
500 can be disabled in repository settings.
500 - gui optimizations, fixed application width to 1024px
501 - gui optimizations, fixed application width to 1024px
501 - added cut off (for large files/changesets) limit into config files
502 - added cut off (for large files/changesets) limit into config files
502 - whoosh, celeryd, upgrade moved to paster command
503 - whoosh, celeryd, upgrade moved to paster command
503 - other than sqlite database backends can be used
504 - other than sqlite database backends can be used
504
505
505 fixes
506 fixes
506 +++++
507 +++++
507
508
508 - fixes #61 forked repo was showing only after cache expired
509 - fixes #61 forked repo was showing only after cache expired
509 - fixes #76 no confirmation on user deletes
510 - fixes #76 no confirmation on user deletes
510 - fixes #66 Name field misspelled
511 - fixes #66 Name field misspelled
511 - fixes #72 block user removal when he owns repositories
512 - fixes #72 block user removal when he owns repositories
512 - fixes #69 added password confirmation fields
513 - fixes #69 added password confirmation fields
513 - fixes #87 RhodeCode crashes occasionally on updating repository owner
514 - fixes #87 RhodeCode crashes occasionally on updating repository owner
514 - fixes #82 broken annotations on files with more than 1 blank line at the end
515 - fixes #82 broken annotations on files with more than 1 blank line at the end
515 - a lot of fixes and tweaks for file browser
516 - a lot of fixes and tweaks for file browser
516 - fixed detached session issues
517 - fixed detached session issues
517 - fixed when user had no repos he would see all repos listed in my account
518 - fixed when user had no repos he would see all repos listed in my account
518 - fixed ui() instance bug when global hgrc settings was loaded for server
519 - fixed ui() instance bug when global hgrc settings was loaded for server
519 instance and all hgrc options were merged with our db ui() object
520 instance and all hgrc options were merged with our db ui() object
520 - numerous small bugfixes
521 - numerous small bugfixes
521
522
522 (special thanks for TkSoh for detailed feedback)
523 (special thanks for TkSoh for detailed feedback)
523
524
524
525
525 1.0.2 (**2010-11-12**)
526 1.0.2 (**2010-11-12**)
526 ----------------------
527 ----------------------
527
528
528 news
529 news
529 ++++
530 ++++
530
531
531 - tested under python2.7
532 - tested under python2.7
532 - bumped sqlalchemy and celery versions
533 - bumped sqlalchemy and celery versions
533
534
534 fixes
535 fixes
535 +++++
536 +++++
536
537
537 - fixed #59 missing graph.js
538 - fixed #59 missing graph.js
538 - fixed repo_size crash when repository had broken symlinks
539 - fixed repo_size crash when repository had broken symlinks
539 - fixed python2.5 crashes.
540 - fixed python2.5 crashes.
540
541
541
542
542 1.0.1 (**2010-11-10**)
543 1.0.1 (**2010-11-10**)
543 ----------------------
544 ----------------------
544
545
545 news
546 news
546 ++++
547 ++++
547
548
548 - small css updated
549 - small css updated
549
550
550 fixes
551 fixes
551 +++++
552 +++++
552
553
553 - fixed #53 python2.5 incompatible enumerate calls
554 - fixed #53 python2.5 incompatible enumerate calls
554 - fixed #52 disable mercurial extension for web
555 - fixed #52 disable mercurial extension for web
555 - fixed #51 deleting repositories don't delete it's dependent objects
556 - fixed #51 deleting repositories don't delete it's dependent objects
556
557
557
558
558 1.0.0 (**2010-11-02**)
559 1.0.0 (**2010-11-02**)
559 ----------------------
560 ----------------------
560
561
561 - security bugfix simplehg wasn't checking for permissions on commands
562 - security bugfix simplehg wasn't checking for permissions on commands
562 other than pull or push.
563 other than pull or push.
563 - fixed doubled messages after push or pull in admin journal
564 - fixed doubled messages after push or pull in admin journal
564 - templating and css corrections, fixed repo switcher on chrome, updated titles
565 - templating and css corrections, fixed repo switcher on chrome, updated titles
565 - admin menu accessible from options menu on repository view
566 - admin menu accessible from options menu on repository view
566 - permissions cached queries
567 - permissions cached queries
567
568
568 1.0.0rc4 (**2010-10-12**)
569 1.0.0rc4 (**2010-10-12**)
569 --------------------------
570 --------------------------
570
571
571 - fixed python2.5 missing simplejson imports (thanks to Jens BΓ€ckman)
572 - fixed python2.5 missing simplejson imports (thanks to Jens BΓ€ckman)
572 - removed cache_manager settings from sqlalchemy meta
573 - removed cache_manager settings from sqlalchemy meta
573 - added sqlalchemy cache settings to ini files
574 - added sqlalchemy cache settings to ini files
574 - validated password length and added second try of failure on paster setup-app
575 - validated password length and added second try of failure on paster setup-app
575 - fixed setup database destroy prompt even when there was no db
576 - fixed setup database destroy prompt even when there was no db
576
577
577
578
578 1.0.0rc3 (**2010-10-11**)
579 1.0.0rc3 (**2010-10-11**)
579 -------------------------
580 -------------------------
580
581
581 - fixed i18n during installation.
582 - fixed i18n during installation.
582
583
583 1.0.0rc2 (**2010-10-11**)
584 1.0.0rc2 (**2010-10-11**)
584 -------------------------
585 -------------------------
585
586
586 - Disabled dirsize in file browser, it's causing nasty bug when dir renames
587 - Disabled dirsize in file browser, it's causing nasty bug when dir renames
587 occure. After vcs is fixed it'll be put back again.
588 occure. After vcs is fixed it'll be put back again.
588 - templating/css rewrites, optimized css. No newline at end of file
589 - templating/css rewrites, optimized css.
@@ -1,270 +1,270 b''
1 <table id="permissions_manage" class="noborder">
1 <table id="permissions_manage" class="noborder">
2 <tr>
2 <tr>
3 <td>${_('none')}</td>
3 <td>${_('none')}</td>
4 <td>${_('read')}</td>
4 <td>${_('read')}</td>
5 <td>${_('write')}</td>
5 <td>${_('write')}</td>
6 <td>${_('admin')}</td>
6 <td>${_('admin')}</td>
7 <td>${_('member')}</td>
7 <td>${_('member')}</td>
8 <td></td>
8 <td></td>
9 </tr>
9 </tr>
10 ## USERS
10 ## USERS
11 %for r2p in c.repos_group.repo_group_to_perm:
11 %for r2p in c.repos_group.repo_group_to_perm:
12 <tr id="id${id(r2p.user.username)}">
12 <tr id="id${id(r2p.user.username)}">
13 <td>${h.radio('u_perm_%s' % r2p.user.username,'group.none')}</td>
13 <td>${h.radio('u_perm_%s' % r2p.user.username,'group.none')}</td>
14 <td>${h.radio('u_perm_%s' % r2p.user.username,'group.read')}</td>
14 <td>${h.radio('u_perm_%s' % r2p.user.username,'group.read')}</td>
15 <td>${h.radio('u_perm_%s' % r2p.user.username,'group.write')}</td>
15 <td>${h.radio('u_perm_%s' % r2p.user.username,'group.write')}</td>
16 <td>${h.radio('u_perm_%s' % r2p.user.username,'group.admin')}</td>
16 <td>${h.radio('u_perm_%s' % r2p.user.username,'group.admin')}</td>
17 <td style="white-space: nowrap;">
17 <td style="white-space: nowrap;">
18 <img style="vertical-align:bottom" src="${h.url('/images/icons/user.png')}"/>${r2p.user.username}
18 <img style="vertical-align:bottom" src="${h.url('/images/icons/user.png')}"/>${r2p.user.username}
19 </td>
19 </td>
20 <td>
20 <td>
21 %if r2p.user.username !='default':
21 %if r2p.user.username !='default':
22 <span class="delete_icon action_button" onclick="ajaxActionUser(${r2p.user.user_id},'${'id%s'%id(r2p.user.username)}')">
22 <span class="delete_icon action_button" onclick="ajaxActionUser(${r2p.user.user_id},'${'id%s'%id(r2p.user.username)}')">
23 ${_('revoke')}
23 ${_('revoke')}
24 </span>
24 </span>
25 %endif
25 %endif
26 </td>
26 </td>
27 </tr>
27 </tr>
28 %endfor
28 %endfor
29
29
30 ## USERS GROUPS
30 ## USERS GROUPS
31 %for g2p in c.repos_group.users_group_to_perm:
31 %for g2p in c.repos_group.users_group_to_perm:
32 <tr id="id${id(g2p.users_group.users_group_name)}">
32 <tr id="id${id(g2p.users_group.users_group_name)}">
33 <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.none')}</td>
33 <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.none')}</td>
34 <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.read')}</td>
34 <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.read')}</td>
35 <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.write')}</td>
35 <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.write')}</td>
36 <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.admin')}</td>
36 <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.admin')}</td>
37 <td style="white-space: nowrap;">
37 <td style="white-space: nowrap;">
38 <img style="vertical-align:bottom" src="${h.url('/images/icons/group.png')}"/>${g2p.users_group.users_group_name}
38 <img style="vertical-align:bottom" src="${h.url('/images/icons/group.png')}"/>${g2p.users_group.users_group_name}
39 </td>
39 </td>
40 <td>
40 <td>
41 <span class="delete_icon action_button" onclick="ajaxActionUsersGroup(${g2p.users_group.users_group_id},'${'id%s'%id(g2p.users_group.users_group_name)}')">
41 <span class="delete_icon action_button" onclick="ajaxActionUsersGroup(${g2p.users_group.users_group_id},'${'id%s'%id(g2p.users_group.users_group_name)}')">
42 ${_('revoke')}
42 ${_('revoke')}
43 </span>
43 </span>
44 </td>
44 </td>
45 </tr>
45 </tr>
46 %endfor
46 %endfor
47 <tr id="add_perm_input">
47 <tr id="add_perm_input">
48 <td>${h.radio('perm_new_member','group.none')}</td>
48 <td>${h.radio('perm_new_member','group.none')}</td>
49 <td>${h.radio('perm_new_member','group.read')}</td>
49 <td>${h.radio('perm_new_member','group.read')}</td>
50 <td>${h.radio('perm_new_member','group.write')}</td>
50 <td>${h.radio('perm_new_member','group.write')}</td>
51 <td>${h.radio('perm_new_member','group.admin')}</td>
51 <td>${h.radio('perm_new_member','group.admin')}</td>
52 <td class='ac'>
52 <td class='ac'>
53 <div class="perm_ac" id="perm_ac">
53 <div class="perm_ac" id="perm_ac">
54 ${h.text('perm_new_member_name',class_='yui-ac-input')}
54 ${h.text('perm_new_member_name',class_='yui-ac-input')}
55 ${h.hidden('perm_new_member_type')}
55 ${h.hidden('perm_new_member_type')}
56 <div id="perm_container"></div>
56 <div id="perm_container"></div>
57 </div>
57 </div>
58 </td>
58 </td>
59 <td></td>
59 <td></td>
60 </tr>
60 </tr>
61 <tr>
61 <tr>
62 <td colspan="6">
62 <td colspan="6">
63 <span id="add_perm" class="add_icon" style="cursor: pointer;">
63 <span id="add_perm" class="add_icon" style="cursor: pointer;">
64 ${_('Add another member')}
64 ${_('Add another member')}
65 </span>
65 </span>
66 </td>
66 </td>
67 </tr>
67 </tr>
68 </table>
68 </table>
69 <script type="text/javascript">
69 <script type="text/javascript">
70 function ajaxActionUser(user_id, field_id) {
70 function ajaxActionUser(user_id, field_id) {
71 var sUrl = "${h.url('delete_repos_group_user_perm',group_name=c.repos_group.name)}";
71 var sUrl = "${h.url('delete_repos_group_user_perm',group_name=c.repos_group.group_name)}";
72 var callback = {
72 var callback = {
73 success: function (o) {
73 success: function (o) {
74 var tr = YUD.get(String(field_id));
74 var tr = YUD.get(String(field_id));
75 tr.parentNode.removeChild(tr);
75 tr.parentNode.removeChild(tr);
76 },
76 },
77 failure: function (o) {
77 failure: function (o) {
78 alert("${_('Failed to remove user')}");
78 alert("${_('Failed to remove user')}");
79 },
79 },
80 };
80 };
81 var postData = '_method=delete&user_id=' + user_id;
81 var postData = '_method=delete&user_id=' + user_id;
82 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
82 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
83 };
83 };
84
84
85 function ajaxActionUsersGroup(users_group_id,field_id){
85 function ajaxActionUsersGroup(users_group_id,field_id){
86 var sUrl = "${h.url('delete_repos_group_users_group_perm',group_name=c.repos_group.name)}";
86 var sUrl = "${h.url('delete_repos_group_users_group_perm',group_name=c.repos_group.group_name)}";
87 var callback = {
87 var callback = {
88 success:function(o){
88 success:function(o){
89 var tr = YUD.get(String(field_id));
89 var tr = YUD.get(String(field_id));
90 tr.parentNode.removeChild(tr);
90 tr.parentNode.removeChild(tr);
91 },
91 },
92 failure:function(o){
92 failure:function(o){
93 alert("${_('Failed to remove users group')}");
93 alert("${_('Failed to remove users group')}");
94 },
94 },
95 };
95 };
96 var postData = '_method=delete&users_group_id='+users_group_id;
96 var postData = '_method=delete&users_group_id='+users_group_id;
97 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
97 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
98 };
98 };
99
99
100 YUE.onDOMReady(function () {
100 YUE.onDOMReady(function () {
101 if (!YUD.hasClass('perm_new_member_name', 'error')) {
101 if (!YUD.hasClass('perm_new_member_name', 'error')) {
102 YUD.setStyle('add_perm_input', 'display', 'none');
102 YUD.setStyle('add_perm_input', 'display', 'none');
103 }
103 }
104 YAHOO.util.Event.addListener('add_perm', 'click', function () {
104 YAHOO.util.Event.addListener('add_perm', 'click', function () {
105 YUD.setStyle('add_perm_input', 'display', '');
105 YUD.setStyle('add_perm_input', 'display', '');
106 YUD.setStyle('add_perm', 'opacity', '0.6');
106 YUD.setStyle('add_perm', 'opacity', '0.6');
107 YUD.setStyle('add_perm', 'cursor', 'default');
107 YUD.setStyle('add_perm', 'cursor', 'default');
108 });
108 });
109 });
109 });
110
110
111 YAHOO.example.FnMultipleFields = function () {
111 YAHOO.example.FnMultipleFields = function () {
112 var myUsers = ${c.users_array|n};
112 var myUsers = ${c.users_array|n};
113 var myGroups = ${c.users_groups_array|n};
113 var myGroups = ${c.users_groups_array|n};
114
114
115 // Define a custom search function for the DataSource of users
115 // Define a custom search function for the DataSource of users
116 var matchUsers = function (sQuery) {
116 var matchUsers = function (sQuery) {
117 // Case insensitive matching
117 // Case insensitive matching
118 var query = sQuery.toLowerCase();
118 var query = sQuery.toLowerCase();
119 var i = 0;
119 var i = 0;
120 var l = myUsers.length;
120 var l = myUsers.length;
121 var matches = [];
121 var matches = [];
122
122
123 // Match against each name of each contact
123 // Match against each name of each contact
124 for (; i < l; i++) {
124 for (; i < l; i++) {
125 contact = myUsers[i];
125 contact = myUsers[i];
126 if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) {
126 if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) {
127 matches[matches.length] = contact;
127 matches[matches.length] = contact;
128 }
128 }
129 }
129 }
130 return matches;
130 return matches;
131 };
131 };
132
132
133 // Define a custom search function for the DataSource of usersGroups
133 // Define a custom search function for the DataSource of usersGroups
134 var matchGroups = function (sQuery) {
134 var matchGroups = function (sQuery) {
135 // Case insensitive matching
135 // Case insensitive matching
136 var query = sQuery.toLowerCase();
136 var query = sQuery.toLowerCase();
137 var i = 0;
137 var i = 0;
138 var l = myGroups.length;
138 var l = myGroups.length;
139 var matches = [];
139 var matches = [];
140
140
141 // Match against each name of each contact
141 // Match against each name of each contact
142 for (; i < l; i++) {
142 for (; i < l; i++) {
143 matched_group = myGroups[i];
143 matched_group = myGroups[i];
144 if (matched_group.grname.toLowerCase().indexOf(query) > -1) {
144 if (matched_group.grname.toLowerCase().indexOf(query) > -1) {
145 matches[matches.length] = matched_group;
145 matches[matches.length] = matched_group;
146 }
146 }
147 }
147 }
148 return matches;
148 return matches;
149 };
149 };
150
150
151 //match all
151 //match all
152 var matchAll = function (sQuery) {
152 var matchAll = function (sQuery) {
153 u = matchUsers(sQuery);
153 u = matchUsers(sQuery);
154 g = matchGroups(sQuery);
154 g = matchGroups(sQuery);
155 return u.concat(g);
155 return u.concat(g);
156 };
156 };
157
157
158 // DataScheme for members
158 // DataScheme for members
159 var memberDS = new YAHOO.util.FunctionDataSource(matchAll);
159 var memberDS = new YAHOO.util.FunctionDataSource(matchAll);
160 memberDS.responseSchema = {
160 memberDS.responseSchema = {
161 fields: ["id", "fname", "lname", "nname", "grname", "grmembers"]
161 fields: ["id", "fname", "lname", "nname", "grname", "grmembers"]
162 };
162 };
163
163
164 // DataScheme for owner
164 // DataScheme for owner
165 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
165 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
166 ownerDS.responseSchema = {
166 ownerDS.responseSchema = {
167 fields: ["id", "fname", "lname", "nname"]
167 fields: ["id", "fname", "lname", "nname"]
168 };
168 };
169
169
170 // Instantiate AutoComplete for perms
170 // Instantiate AutoComplete for perms
171 var membersAC = new YAHOO.widget.AutoComplete("perm_new_member_name", "perm_container", memberDS);
171 var membersAC = new YAHOO.widget.AutoComplete("perm_new_member_name", "perm_container", memberDS);
172 membersAC.useShadow = false;
172 membersAC.useShadow = false;
173 membersAC.resultTypeList = false;
173 membersAC.resultTypeList = false;
174
174
175 // Instantiate AutoComplete for owner
175 // Instantiate AutoComplete for owner
176 var ownerAC = new YAHOO.widget.AutoComplete("user", "owner_container", ownerDS);
176 var ownerAC = new YAHOO.widget.AutoComplete("user", "owner_container", ownerDS);
177 ownerAC.useShadow = false;
177 ownerAC.useShadow = false;
178 ownerAC.resultTypeList = false;
178 ownerAC.resultTypeList = false;
179
179
180
180
181 // Helper highlight function for the formatter
181 // Helper highlight function for the formatter
182 var highlightMatch = function (full, snippet, matchindex) {
182 var highlightMatch = function (full, snippet, matchindex) {
183 return full.substring(0, matchindex) + "<span class='match'>" + full.substr(matchindex, snippet.length) + "</span>" + full.substring(matchindex + snippet.length);
183 return full.substring(0, matchindex) + "<span class='match'>" + full.substr(matchindex, snippet.length) + "</span>" + full.substring(matchindex + snippet.length);
184 };
184 };
185
185
186 // Custom formatter to highlight the matching letters
186 // Custom formatter to highlight the matching letters
187 var custom_formatter = function (oResultData, sQuery, sResultMatch) {
187 var custom_formatter = function (oResultData, sQuery, sResultMatch) {
188 var query = sQuery.toLowerCase();
188 var query = sQuery.toLowerCase();
189
189
190 if (oResultData.grname != undefined) {
190 if (oResultData.grname != undefined) {
191 var grname = oResultData.grname;
191 var grname = oResultData.grname;
192 var grmembers = oResultData.grmembers;
192 var grmembers = oResultData.grmembers;
193 var grnameMatchIndex = grname.toLowerCase().indexOf(query);
193 var grnameMatchIndex = grname.toLowerCase().indexOf(query);
194 var grprefix = "${_('Group')}: ";
194 var grprefix = "${_('Group')}: ";
195 var grsuffix = " (" + grmembers + " ${_('members')})";
195 var grsuffix = " (" + grmembers + " ${_('members')})";
196
196
197 if (grnameMatchIndex > -1) {
197 if (grnameMatchIndex > -1) {
198 return grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix;
198 return grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix;
199 }
199 }
200
200
201 return grprefix + oResultData.grname + grsuffix;
201 return grprefix + oResultData.grname + grsuffix;
202 } else if (oResultData.fname != undefined) {
202 } else if (oResultData.fname != undefined) {
203
203
204 var fname = oResultData.fname,
204 var fname = oResultData.fname,
205 lname = oResultData.lname,
205 lname = oResultData.lname,
206 nname = oResultData.nname || "",
206 nname = oResultData.nname || "",
207 // Guard against null value
207 // Guard against null value
208 fnameMatchIndex = fname.toLowerCase().indexOf(query),
208 fnameMatchIndex = fname.toLowerCase().indexOf(query),
209 lnameMatchIndex = lname.toLowerCase().indexOf(query),
209 lnameMatchIndex = lname.toLowerCase().indexOf(query),
210 nnameMatchIndex = nname.toLowerCase().indexOf(query),
210 nnameMatchIndex = nname.toLowerCase().indexOf(query),
211 displayfname, displaylname, displaynname;
211 displayfname, displaylname, displaynname;
212
212
213 if (fnameMatchIndex > -1) {
213 if (fnameMatchIndex > -1) {
214 displayfname = highlightMatch(fname, query, fnameMatchIndex);
214 displayfname = highlightMatch(fname, query, fnameMatchIndex);
215 } else {
215 } else {
216 displayfname = fname;
216 displayfname = fname;
217 }
217 }
218
218
219 if (lnameMatchIndex > -1) {
219 if (lnameMatchIndex > -1) {
220 displaylname = highlightMatch(lname, query, lnameMatchIndex);
220 displaylname = highlightMatch(lname, query, lnameMatchIndex);
221 } else {
221 } else {
222 displaylname = lname;
222 displaylname = lname;
223 }
223 }
224
224
225 if (nnameMatchIndex > -1) {
225 if (nnameMatchIndex > -1) {
226 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
226 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
227 } else {
227 } else {
228 displaynname = nname ? "(" + nname + ")" : "";
228 displaynname = nname ? "(" + nname + ")" : "";
229 }
229 }
230
230
231 return displayfname + " " + displaylname + " " + displaynname;
231 return displayfname + " " + displaylname + " " + displaynname;
232 } else {
232 } else {
233 return '';
233 return '';
234 }
234 }
235 };
235 };
236 membersAC.formatResult = custom_formatter;
236 membersAC.formatResult = custom_formatter;
237 ownerAC.formatResult = custom_formatter;
237 ownerAC.formatResult = custom_formatter;
238
238
239 var myHandler = function (sType, aArgs) {
239 var myHandler = function (sType, aArgs) {
240
240
241 var myAC = aArgs[0]; // reference back to the AC instance
241 var myAC = aArgs[0]; // reference back to the AC instance
242 var elLI = aArgs[1]; // reference to the selected LI element
242 var elLI = aArgs[1]; // reference to the selected LI element
243 var oData = aArgs[2]; // object literal of selected item's result data
243 var oData = aArgs[2]; // object literal of selected item's result data
244 //fill the autocomplete with value
244 //fill the autocomplete with value
245 if (oData.nname != undefined) {
245 if (oData.nname != undefined) {
246 //users
246 //users
247 myAC.getInputEl().value = oData.nname;
247 myAC.getInputEl().value = oData.nname;
248 YUD.get('perm_new_member_type').value = 'user';
248 YUD.get('perm_new_member_type').value = 'user';
249 } else {
249 } else {
250 //groups
250 //groups
251 myAC.getInputEl().value = oData.grname;
251 myAC.getInputEl().value = oData.grname;
252 YUD.get('perm_new_member_type').value = 'users_group';
252 YUD.get('perm_new_member_type').value = 'users_group';
253 }
253 }
254
254
255 };
255 };
256
256
257 membersAC.itemSelectEvent.subscribe(myHandler);
257 membersAC.itemSelectEvent.subscribe(myHandler);
258 if(ownerAC.itemSelectEvent){
258 if(ownerAC.itemSelectEvent){
259 ownerAC.itemSelectEvent.subscribe(myHandler);
259 ownerAC.itemSelectEvent.subscribe(myHandler);
260 }
260 }
261
261
262 return {
262 return {
263 memberDS: memberDS,
263 memberDS: memberDS,
264 ownerDS: ownerDS,
264 ownerDS: ownerDS,
265 membersAC: membersAC,
265 membersAC: membersAC,
266 ownerAC: ownerAC,
266 ownerAC: ownerAC,
267 };
267 };
268 }();
268 }();
269
269
270 </script>
270 </script>
General Comments 0
You need to be logged in to leave comments. Login now