]> err.no Git - scalable-opengroupware.org/blobdiff - ChangeLog
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1147 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / ChangeLog
index 3169fec90f83055aab65c38f4dbd8f5fe4445c30..cf536a10df715d1a56142277e7eef6da9526ed8a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2007-08-16  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailEditor.m ([-patchFlagsInStore]): removed
+       useless stub method, of which the intention was implemented in
+       SOGoDraftObject.
+       ([-lookupSentFolderUsingAccount]): removed obsolete method.
+       ([-selectedMailIdentity]): removed obsolete method.
+       ([-lookupSentFolderUsingFrom]): removed obsolete method.
+       ([-storeMailInSentFolder:_path]): removed obsolete method, of
+       which the mechanism has been put in -[SOGoDraftObject sendMail]
+       method.
+       ([UIxMailEditor -_saveFormInfo], [UIxMailEditor -defaultAction])
+       ([UIxMailEditor -saveAction], [UIxMailEditor -sendAction]):
+       adapted algorithms to the new SOGoDraftObject methods.
+       ([-deleteAction]): removed method since local draft objects cannot
+       be removed by the user.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -expungeAction]): new method replacing the one previously found in
+       UIxMailListView.
+       ([UIxMailFolderActions -createFolderAction])
+       ([UIxMailFolderActions -renameFolderAction])
+       ([UIxMailFolderActions -deleteFolderAction])
+       ([UIxMailFolderActions -emptyTrashAction])
+       ([UIxMailFolderActions -subscribeAction])
+       ([UIxMailFolderActions -unsubscribeAction]): error situations
+       should have http return code 500 instead of 403.
+
+       * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
+       -composeAction]): new method replacing the one previously in
+       UIxMailMainFrame.
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -imap4URLString]): removed overriden method (see below).
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder -aclUsers]):
+       cache the mailbox acl.
+       ([SOGoMailFolder -aclsForUser:uid]): cache the mailbox acl.
+       ([SOGoMailFolder -setRoles:rolesforUser:uid]): reset the mailbox
+       acl cache.
+       ([SOGoMailFolder -httpURLForAdvisoryToUser:uid]): modified to use
+       the new method of determining the users mail accounts.
+
+       * SoObjects/Mailer/SOGoMailBaseObject.m ([-imap4URLString]): no
+       longer adds a "/" at the end of the string (the default for
+       folders), therefore this will be overriden in SOGoMailFolder
+       rather than in SOGoMailObject.
+
+       * UI/MailerUI/UIxMailListView.m ([-expungeAction]): removed
+       method, moved into the new UIxMailActions module class.
+
+       * SoObjects/Mailer/SOGoDraftsFolder.m ([SOGoDraftsFolder
+       -newDraft]): new method that returns a new SOGoDraftObject
+       instance with a unique filename based on the current timestamp and
+       the "newDraft" prefix.
+       ([SOGoDraftsFolder
+       -lookupName:nameinContext:localContextacquire:acquire]): overriden
+       method by detecting local drafts with their "newDraft" prefix.
+       ([SOGoDraftsFolder -isInDraftsFolder]): returns YES.
+
+       * SoObjects/Mailer/SOGoDraftsFolder.[hm]: rewrote class module
+       from scratch by making it a subclass of SOGoMailFolder.
+
+       * UI/MailerUI/UIxMailReplyAction.m: removed obsolete class
+       module.
+
+       * UI/MailerUI/UIxMailForwardAction.m: removed obsolete class
+       module.
+
+       * UI/MailerUI/UIxMailEditorAction.[hm]: removed obsolete class
+       module.
+
+       * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject -init]):
+       new method, initializing the new ivars: IMAP4ID, headers, text,
+       sourceURL and sourceFlag.
+       ([-spoolFileManager], [SOGoDraftObject -userSpoolFolderPath])
+       ([-_ensureUserSpoolFolderPath])
+       ([-saveMimeMessageToTemporaryFileWithHeaders:])
+       ([SOGoDraftObject -mimeMessageWithHeaders:_headers])
+       ([-deleteTemporaryMessageFile:], [-delete], [-content])
+       ([-GETAction:_ctx], [-DELETEAction:_ctx], [-fetchParts:])
+       ([-uid], [-flags], [-size], [-envelope]): removed methods.
+       ([SOGoDraftObject -storeInfo]): rewrote method to take the new
+       ivars into account.
+       ([SOGoDraftObject -setSourceURL:newSourceURL])
+       ([SOGoDraftObject -setSourceFlag:newSourceFlag]): new accessor
+       methods to store the url of the original message between accesses
+       so that, depending on the action taken (forward or reply), the
+       correct flag can be given.
+       ([SOGoDraftObject -setIMAP4ID:]): new accessor method that sets
+       the imap4 id that is returned for the message whenever it is saved
+       into the drafts folder.
+       ([SOGoDraftObject -save]): new method that takes in charge the
+       saving of the message in the IMAP drafts folder.
+       ([SOGoDraftObject -fetchMailForReplying:sourceMailtoAll:toAll]):
+       new method that fills the original data of the new message with
+       the reply content of the original message.
+       ([SOGoDraftObject -fetchMailForForwarding:sourceMail]): same as
+       above for message forwarding.
+       ([-spoolFileManager]): removed useless method (only returned the
+       default filemanager...)
+       ([SOGoDraftObject -mimeMessageAsData]): new method that returns
+       the resulting message as an NSData chunk.
+
+       * SoObjects/Mailer/SOGoMailObject+Draft.m: new extension module
+       containing a rewrite of the mail action methods found in
+       UI/Mailer/, that needed to be put in the SOGoMailObject class.
+       ([SOGoMailObject -subjectForReply]): new method that returns a
+       subject suitable for replies.
+       ([SOGoMailObject -contentForReply]): new method that returns the
+       textual content of an email, quoted for replying.
+       ([SOGoMailObject -filenameForForward]): new method that returns
+       the name of the filename that should contain the forwarded
+       message, based on its subject.
+       ([SOGoMailObject -subjectForForward]): explicit.
+
+2007-08-15  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
+       -mailAccounts]): rewrote method to return the name of the mail
+       accounts now available with the -[SOGoUser mailAccounts] method.
+       ([UIxMailMainFrame -showLinkBanner]): removed method.
+       ([UIxMailMainFrame -bannerToolbarStyle]): removed method.
+       ([UIxMailMainFrame -bannerConsumeStyle]): removed method.
+       ([UIxMailMainFrame -rootURL]): removed method.
+       ([UIxMailMainFrame -userRootURL]): removed method.
+       ([UIxMailMainFrame -calendarRootURL]): removed method.
+       ([UIxMailMainFrame -contactsRootURL]): removed method.
+       ([UIxMailMainFrame -hasErrorText])
+       ([UIxMailMainFrame -errorText])
+       ([UIxMailMainFrame -errorAlertJavaScript]): removed methods.
+       ([-composeAction]): removed method. Now provided by
+       UIxMailAccountActions.
+       ([UIxMailMainFrame -setHideFolderTree:_flag]): removed method.
+       ([UIxMailMainFrame -hideFolderTree]): removed method.
+       ([UIxMailMainFrame -treeRootClassName]): removed method.
+       ([UIxMailMainFrame +initialize]): removed method.
+       SOGoMailTreeRootClass userdefaults will no longer have any effect.
+
+       * UI/Common/WODirectAction+SOGo.m ([WODirectAction
+       -redirectToLocation:newLocation]): new method that implements the
+       same functionality as WOComponent.
+
+       * UI/Common/WODirectAction+SOGo.[hm]: new class extension module.
+
+       * UI/MailerUI/UIxMailView.m ([UIxMailView -mailIsDraft]): new
+       method that returns whether the current mail is store in the
+       drafts folder hierarchy.
+
+       * SoObjects/SOGo/SOGoUser.m ([-fullEmail]): removed method.
+       ([-primaryEmail]): removed method.
+       ([SOGoUser -primaryIMAP4AccountString]): removed method.
+       ([SOGoUser -mailAccounts]): new method that returns an array
+       containing description dictionaries for all the user mail
+       accounts. Each account also contain the user's identities for that
+       account.
+       ([SOGoUser -allIdentities]): new utility method that returns all
+       the user identities on all accounts.
+       ([SOGoUser -primaryIdentity]): new method return the first
+       identity of the first account.
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder -httpURLForAdvisoryToUser:uid]): 
+
+       * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
+       -isInDraftsFolder]): returns NO.
+       ([-preferredIdentity]): removed method, replaced with -[SOGoUser
+       primaryIdentity].
+       ([SOGoMailAccount -draftsFolderInContext:_ctx]): new method.
+
+       * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
+       -isInDraftsFolder]): new method that detects if self is contained
+       by the drafts folder by calling itself on the container object.
+
+       * SoObjects/Mailer/SOGoMailAccounts.m ([-fetchAllIdentities]):
+       removed method.
+       ([-fetchIdentitiesWithEmitterPermissions]): removed method.
+       ([SOGoMailAccounts -toManyRelationshipKeys]): rewrote method to
+       return the name of the mail accounts now available with the
+       -[SOGoUser mailAccounts] method.
+
+       * SoObjects/Mailer/SOGoUser+Mail.[hm]: removed useless class
+       extension module.
+
+       * SoObjects/Mailer/SOGoMailIdentity.[hm]: removed useless class
+       module.
+
+       * SoObjects/SOGo/NSArray+Utilities.m ([NSArray
+       -keysWithFormat:format]): method that forward the method of the
+       same name to each member of the array, considering they all are
+       instances of NSDictionary.
+       ([NSArray -objectsForKey:key]): same principle as above.
+       ([NSArray -flattenedArray]): new method that transforms an array
+       of arrays into a single array containing all the elements of the
+       subarrays.
+
+       * SoObjects/SOGo/NSDictionary+Utilities.m ([NSDictionary
+       -keysWithFormat:keyFormat]): new method inspired by the python
+       string formatting system and which replaces occurences of "%{key}"
+       by the corresponding keys.
+
+2007-08-13  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * Main/SOGo.m ([SOGo -run]): check for channel-type specific
+       sql script before the generic one when initializing mandatory
+       system tables.
+
+2007-08-09  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/NSString+Utilities.m ([NSString
+       -pureEMailAddress]): new utility method inspired by the
+       "_rawSender" private method in SOGoDraftObject, which it now
+       replaces.
+
+       * SoObjects/SOGo/SOGoMailer.m: new abstraction class module that
+       provides a common API for sending emails, no matter what the
+       transport is.
+
+2007-08-08  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -quotasAction]): invoke "relativeImap4Name" instead of
+       "nameInContainer" since the latter also returns the "folder"
+       prefix.
+
+       * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
+       -listMailboxesAction]): declare the output as text/plain in UTF-8.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -deleteFolderAction]): fixed the url of the destination folder.
+
+       * Main/SOGo.m ([SOGo +initialize]): show the build date and
+       hostname at startup.
+
+2007-08-07  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent
+       -sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]):
+       set the mail date to the current date string returned by our
+       rfc822DateString extension method.
+
+       * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
+       -_gcsFoldersFromFolder:): ignore the personal folders who are
+       returned but don't really exist.
+
+2007-08-02  Francis Lachapelle  <flachapelle@inverse.ca>
+
+       * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView _responseForResults:]):
+       has to return only one element.
+
+2007-08-01  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
+       -content]): new method returning the decoded content of the
+       corresponding attachment as an NSData instance.
+       ([UIxMailPartViewer -filename]): if the "filename" parameter of
+       the metadata parameterList is empty, try to find out the filename
+       from the "disposition" metadata returned with the BODYSTRUCTURE
+       imap4 tag.
+
+       * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
+       -composeAction]): prefix the INBOX folder with "folder".
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailBaseObject
+       -relativeImap4Name]): return nameInContainer stripped from its
+       first 6 characters since all folder names are prefixed with
+       "folder".
+
+       * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
+       -imap4URLString]): invoke -relativeImap4Name instead of
+       "nameInContainer" since the former will return the fixed IMAP4
+       foldername and the latter the SoObject name.
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       +initialize]): we now fetch the "BODYSTRUCTURE" key instead of "BODY".
+
+       * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -inboxFolderNameInContext:])
+       ([SOGoMailAccount -draftsFolderNameInContext:_ctx])
+       ([SOGoMailAccount -sieveFolderNameInContext:_ctx])
+       ([SOGoMailAccount -sentFolderNameInContext:])
+       ([SOGoMailAccount -trashFolderNameInContext:]): prefix the folder
+       names with "folder".
+       ([SOGoMailAccount -inboxFolderInContext:_ctx])
+       ([SOGoMailAccount -sentFolderInContext:_ctx])
+       ([SOGoMailAccount -trashFolderInContext:_ctx]): no longer prefix
+       the folder names with "folder" since they are prefixed earlier.
+
+2007-07-30  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -inboxFolderInContext:_ctx])
+       ([-sentFolderInContext:], [-trashFolderInContext:]): folder keys
+       all starts with "folder".
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): no
+       longer declare security info from here.
+
+       * SoObjects/Mailer/SOGoMailFolder.m
+       ([-isMessageKey:_keyinContext:_ctx]): removed useless method.
+       ([SOGoMailFolder -lookupName:_keyinContext:acquire:_acquire]):
+       folder names now always start with "folder".
+
+       * SoObjects/Mailer/SOGoMailAccount.m
+       ([-lookupName:inContext:acquire:]): folder names now always start
+       with "folder".
+
+2007-07-27  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailForwardAction.m ([UIxMailForwardAction
+       -forwardAction]): adapted to the new saveAttachment:withMetadata:
+       method (see below).
+
+       * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -saveAction]): added
+       code to save the attached filenames with the filename returned by
+       the web server as well as their mime types.
+
+       * UI/MailPartViewers/UIxMailPartMessageViewer.m ([UIxMailPartMessageViewer -fromAddresses])
+       ([UIxMailPartMessageViewer -toAddresses])
+       ([UIxMailPartMessageViewer -ccAddresses]): new methods returning
+       the corresponding fields separated with a ", " (if needed).
+
+       * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
+       -saveAttachment:_attachwithMetadata:metadata]): new method
+       replacing -saveAttachment:withName: and which takes a dictionary
+       as parameter with the filename and the mime type of the
+       attachment.
+       The mimetype is then saved in a hidden text file.
+       ([SOGoDraftObject -contentTypeForAttachmentWithName:]): if exists,
+       take the mime type from the hidden text file related to the
+       attachment.
+
+       * SoObjects/Contacts/SOGoContactGCSFolder.m ()
+       ([SOGoContactGCSFolder
+       -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
+       return records if the db records are > 0 and not just > 1...
+
+2007-07-24  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Contacts/UIxContactsListView.m ([-displayName]): removed
+       method.
+       ([UIxContactsListView -defaultSortKey]): changed to "displayName".
+
+       * SoObjects/Contacts/SOGoContactLDAPFolder.m
+       ([SOGoContactLDAPFolder
+       -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
+       translate the returned records to a normalized form.
+
+       * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
+       -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
+       translate the returned records to a normalized form.
+
+       * UI/Scheduler/UIxCalListingActions.m,
+       UI/Contacts/UIxContactsListView.m, SoObjects/SOGo/SOGoUser.m,
+       SoObjects/SOGo/AgenorUserDefaults.m,
+       SoObjects/Contacts/SOGoContactGCSFolder.m,
+       SoObjects/Appointments/SOGoAppointmentFolder.m,
+       OGoContentStore/OCSiCalFieldExtractor.m,
+       OGoContentStore/OCSContactFieldExtractor.m: prefixed all quick
+       table fields with "c_".
+
+2007-07-23  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/LDAPSource.m ([LDAPSource +initialize]): query
+       the values for SOGoLDAPQueryLimit and SOGoLDAPQueryTimeout from
+       the application settings. If set, both limit will influence the
+       maximum size of the resultsets and the time taken to solve them.
+       ([LDAPSource -_initLDAPConnection]): initialize the limits.
+
+2007-07-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder -davNamespaces]): added new overriden
+       method that declares the DAV namespace related to CardDAV.
+       ([SOGoContactGCSFolder -davComplianceClassesInContext:]): new
+       method that declares the "access-control" and "addressbook-access"
+       classes to the list.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([-lookupActionForCalDAVMethod:]): removed method.
+       ([SOGoAppointmentFolder -davNamespaces]): added new overriden
+       method that declares the DAV namespace related to CalDAV.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -davNamespaces]): new
+       optional method for subclasses which handle specific extensions to
+       the DAV protocol: CardDAV or CalDAV.
+       ([SOGoFolder
+       -lookupName:lookupNameinContext:localContextacquire:acquire]):
+       new overriden method that handles dav invocations for extensions
+       to DAV by returning an appropriate SoSelectorInvocation.
+
+       * SoObjects/SOGo/NSString+Utilities.m ([NSString
+       -asDavInvocation]): new method returning a dictionary with a "ns"
+       key representing the dav namespace and a "method" key representing
+       the dav method name of the request.
+
+       * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
+       +initialize]): scan the value of SOGoUIxUserCanChangePassword.
+       Default is "no".
+       ([UIxPreferences -shouldDisplayPasswordChange]): new template
+       method that returns the value of SOGoUIxUserCanChangePassword.
+
+       * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage +initialize]):
+       scan the value of SOGoUIxDefaultModule. If not set, the default
+       module defaults to "Calendar".
+       ([SOGoUserHomePage -defaultAction]): redirect the user to the
+       value of "SOGoUIxDefaultModule".
+
+2007-07-20  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Contacts/UIxContactsListView.m ([UIxContactsListView
+       -contactInfos]): cache the results to avoid multiple invocations.
+
+       * SoObjects/Contacts/SOGoContactLDAPFolder.m
+       ([SOGoContactLDAPFolder -toOneRelationshipKeys]): check whether we
+       really should return something or if we fake to return nil...
+
+2007-07-13  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): set
+       acceptAnyUser to YES only when the SOGoAuthentificationMethod user
+       default is set to "bypass".
+
+       * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
+       -checkLogin:_loginpassword:_pwd]): accepts unverified connections
+       when authMethod is set to "bypass" from now on. This would avoid a
+       security concern with a default installation of SOGo.
+       AuthentificationMethod is now prefixed with "SOGo" for better
+       clarity.
+
+2007-07-11  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -quotasAction]): new method that returns a json representation of
+       the mailbox quotas.
+
+2007-07-10  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
+       -imap4URL]): rewrote method to support accented mailbox names.
+       ([SOGoMailBaseObject imap4Password]): rewrote to simply use
+       SOGoAuthenticator's passwordInContext:.
+
+       * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
+       -takeValuesFromRequest:_rqinContext:_ctx]): explicitly set the
+       start and due dates to nil if hasStartDate and hasDueDate are
+       false.
+
+       * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
+       -passwordInContext:context]): made method public.
+
+       * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
+       -extractQuickFieldsFromTodo:_task]): set "isallday" and "isopaque"
+       to false to avoid a null violation.
+
+2007-07-04  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -contentAsString]): returns the message encoded in ISO Latin 1
+       again.
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): read the
+       SOGoSuperUsername user defaults.
+       ([SOGoUser -initWithLogin:newLoginroles:newRoles]): simplified
+       method.
+       ([SOGoUser -rolesForObject:objectinContext:context]): if the
+       current user is the superuser, grant him/her the "owner" role.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): create
+       the folder only if the current user is the owner of the future
+       folder.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -contentAsString]): we return the content
+       based on the permissions returned by the security manager instead
+       of by looking at the user roles.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -calendarFolders]): read the calendar
+       folders of the user to whom this folder belongs instead of the
+       active user. This way, a delegate user will be able to have the
+       same view that the original user has if he connects from his user
+       directory.
+
+       * Main/SOGo.m ([SOGo -lookupUser:_keyinContext:]): check if the
+       user exists before creating the SOGoUserFolder instance. If not,
+       returns nil.
+
+       * UI/MailerUI/UIxMailSourceView.[hm]: new class module designed to
+       return the message source code in plain text.
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -contentAsString]): returns the message encoded in UTF8.
+
+2007-07-03  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * OGoContentStore/iCalRepeatableEntityObject+OCS.m
+       ([iCalRepeatableEntityObject -cycleInfo]): no longer take the
+       leading tagname into account when serializing the element values.
+
+       * Main/SOGoProductLoader.m: only load bundle directories ending
+       with the "SOGo" extension.
+
+       * Main/SOGo.m ([SOGo
+       -_checkTableWithCM:cmtableURL:urlandType:tableType]): empty the
+       result set if the query has caused no exception. Otherwise we get
+       an "evaluation is in progress exception".
+
+2007-06-29  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
+       -generateSQLForInsert]): initialize error to nil before the
+       serialization. Otherwise the method can get confused if it ever is
+       initialized to something else.
+
+       * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
+       -folderIsMandatory]): returns NO unconditionnally.
+
+       * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
+       -appendPersonalSources]): add the "personal" folder to the list of
+       user folders even if it doesn't exist, so that it is created when
+       the user accesses it.
+
+       * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
+       -folderIsMandatory]): returns YES if nameInContainer is set to
+       "personal", which is the default address book.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -folderIsMandatory]): returns YES since
+       users must have one Calendar folder (one and only one).
+       ([SOGoAppointmentFolder -_privacySqlString]): unescape the
+       escaping '\' so make the carriage return a real one. This way,
+       PgSQL 8 won't complain about escaping the string.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): new
+       method that create the folder if considered mandatory.
+       ([SOGoFolder -folderIsMandatory]): new method that determines
+       whether the folder should be created automatically or not. To be
+       overriden by subclasses.
+
+       * Main/SOGo.m ([SOGo -run]): override method and create the
+       missing system tables if needed.
+
+2007-06-28  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/WOContext+UIxMailer.m ([WOContext
+       -mailDateFormatter]): returns the user's date formatter.
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject -date]):
+       applies the user timezone to the date object before returning it.
+
+       * UI/Common/UIxSortButton.m: removed useless class module.
+
+       * UI/Common/UIxSortableTableHeader.m: removed useless class
+       module.
+
+       * UI/Contacts/UIxContactsListView.m ([UIxContactsListView
+       -contactInfos]): use the "asc" url parameter instead of "desc" to
+       determine the ordering.
+       ([-sortOrdering]): removed method.
+       ([UIxContactsListView -init]): removed the "searchText" ivar.
+       (general): the template no longer use the UIxSortableTableHeader
+       components.
+
+       * UI/MailerUI/UIxMailListView.m ([UIxMailListView
+       -defaultSortKey]): default sort following the messages arrival
+       instead of their date.
+       ([-isSortedDescending]): removed method.
+       ([-imap4SortOrdering]): use the "asc" url parameter instead of
+       "desc" to determine the ordering.
+       (general): the template no longer use the UIxSortableTableHeader
+       components.
+
+2007-06-27  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailListView.m ([UIxMailListView -sleep]):
+       removed method.
+       ([-setQualifier:_msg], [-qualifier]): removed methods.
+       ([UIxMailListView -defaultAction]): added code to handle the
+       search criteria and value passed as url parameters. Also, we now
+       handle the same search criterias as Thunderbird/Icedove.
+
+2007-06-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/PreferencesUI/UIxJSONPreferences.m ([UIxJSONPreferences
+       -jsonDefaultsAction]): bug fix: returns a WOResponse instance with
+       the string instead of the string itself.
+       ([UIxJSONPreferences -jsonSettingsAction]): same as above.
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): new module
+       bool var "acceptAnyUser" that is set when the AuthenticationMethod
+       user default is nil.
+       ([SOGoUser -initWithLogin:newLoginroles:newRoles]):
+       unconditionnally returns an instance whenever acceptAnyUser is set.
+
+2007-06-21  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * Main/sogod.m (main): prevent SOGo from running as root.
+
+2007-06-19  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser
+       -setCurrentPassword:newPassword]): new stub method.
+       ([SOGoUser -dateFormatterInContext:context]): new method that
+       returns an instance of SOGoDateFormatter configured based on the
+       user defaults.
+
+       * UI/Common/UIxPageFrame.m ([UIxPageFrame
+       -relativePreferencesPath]): new method.
+
+       * UI/Scheduler/UIxComponentEditor.m ([-titleDateFormatter]):
+       removed useless method.
+
+       * SoObjects/SOGo/SOGoDateFormatter.m: rewrote class to accept
+       different configurable formats (long and short date + time).
+
+       * SoObjects/SOGo/SOGoDateFormatter.[hm]: moved from UI/SOGoUI/.
+
+       * SoObjects/Mailer/SOGoMailAccounts.m ([SOGoMailAccounts
+       -isInternetRequest]): removed method.
+
+       * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
+       -jsonRepresentation]): new method with an explicit name.
+
+       * UI/PreferencesUI/product.plist: new bundle that provides a web
+       ui for handling user defaults.
+
+       * UI/Scheduler/UIxTaskView.[hm]: removed unused module.
+
+       * UI/Scheduler/UIxAppointmentView.[hm]: removed unused module.
+
+       * SoObjects/SOGo/WOContext+Agenor.[hm]: removed unused module.
+
+2007-06-14  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoLRUCache.m: removed unused module.
+
+2007-06-13  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Scheduler/NSArray+Scheduler.m ([NSArray
+       -compareEventsAscending:otherEvent]): no longer use compare: on
+       the time objects since one of them could be an NSNull, which
+       crashes when comparing with anything.
+
+       * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
+       -eventsListAction]): sort events from here.
+       ([UIxCalListingActions -tasksListAction]): sort tasks from here.
+
+       * SoObjects/SOGo/NSObject+AptComparison.[hm]: removed category
+       module, replaced with NSArray+Scheduler in UI/SchedulerUI/.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder
+       -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]):
+       no longer sort elements from here.
+
+2007-06-12  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -aclsForUser:uid]): implemented method by forwarding the request
+       to the container. This fixes a bug where users could no longer
+       read emails from shared folders.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -init]): "isNew" is no longer defined
+       here, but rather in its parent class.
+
+       * UI/SOGoUI/SOGoDateFormatter.m ([SOGoDateFormatter
+       -stringForSecondsSinceThe70s:seconds]): new utility method.
+
+       * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
+       -eventsListAction]): no longer reduce the end day of one day for
+       all day events since everything has been fixed in
+       OCSiCalFieldExtractor.
+
+       * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
+       -extractQuickFieldsFromEvent:_event]): reduce the seconds/70 of
+       the end date of all day events of 1 so that they stay on their
+       real last day.
+
+2007-06-11  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Scheduler/UIxCalMonthView.m: no longer retrieve appointments.
+
+       * UI/Scheduler/UIxCalView.m ([-fetchCoreAppointmentsInfos]):
+       removed method.
+       ([-fetchCoreTasksInfos]): removed method.
+
+       * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
+       -init]): initialize an instance of SOGoDateFormatter.
+       ([UIxCalListingActions -eventsListAction]): the display start and
+       end dates are added to the listing for each event.
+
+       * UI/Scheduler/UIxCalDayTable.m: no longer retrieve appointments.
+
+       * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
+       -isAllDay]): returns YES if the "hm" url parameter is set to
+       "allday".
+       ([UIxAppointmentEditor -defaultAction]): if isAllDay, the enddate
+       is displayed one day earlier.
+
+2007-06-07  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
+       -_setupContext]): take the range of dates specified by the popup
+       into account.
+
+       * UI/Scheduler/UIxCalListingActions.[hm]: new subclass of
+       WODirectAction that returns WOResponse objects with the events or
+       todos satisfying the parameters passed in the url.
+
+       * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
+       -takeValuesFromRequest:_rqinContext:_ctx]): take the new ivar
+       "isAllDay" into account and compute the amount of days to pass to
+       the iCalEvent.
+
+2007-06-06  Francis Lachapelle <flachapelle@inverse.ca>
+
+       * SoObjects/SOGo/NSNumber+Utilities.m: initial import.
+       * SoObjects/SOGo/NSNull+Utilities.m: initial import.
+       * UI/Scheduler/UIxCalTasksListView.m ([WOResponse -tasksListAction]): 
+       new method that returns a json-formatted array of the visible tasks
+       for the current user.
+
+2007-06-05  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoAppointmentObject.m: the owner of the
+       object must be present in the list of UIDs we delete the object
+       from. Otherwise Calendar objects having no organizer and no
+       attendees will remain in their owner's Calendar.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject
+       -_urlPreferringParticle:expectedoverThisOne:possible]): remove the
+       first 3 elements of the path array if the url returned by
+       baseURLInContext: returns a hostname.
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -_adjustOwner]): sharedFolderName and otherUsersFolderName may be
+       nil, in which case a crash happens when calling hasPrefix:.
+       ([SOGoMailFolder -_sharesACLs]): same as above.
+       ([SOGoMailFolder -otherUsersPathToFolder]): same as above. If
+       otherUsersFolderName is nil, we return nil.
+       ([SOGoMailFolder -httpURLForAdvisoryToUser:uid]): if we receive
+       nil from [self otherUsersPathToFolder], we return nil too.
+
+2007-06-01  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject
+       -_urlPreferringParticle:expectedoverThisOne:possible]): unescape
+       the result of [self baseURLInContext:] to avoid a double escaping
+       in the resulting string.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -aclsForUser:uid]): if
+       the user has the "ObjectReader" role on the parent container, then
+       he is granted the "ObjectViewer" role on this object. Same for
+       "ObjectEraser", although this might change later.
+
+       * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+       -toolbar]): determine the toolbar filename based on the
+       permissions declared by the securitymanager. The role mechanism
+       has been adjusted on a lowerlevel so we can simplify the code.
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+       -initWithName:newNameinContainer:newContainer]): read the content
+       directly from here. That way we can determine whether the object
+       is being created.
+       ([SOGoContentObject -aclsForUser:uid]): if the object is new and
+       the ObjectCreator role is enabled, we also grant the ObjectEditor
+       role to the current user.
+
+       * UI/Common/UIxFolderActions.m ([-canAccessContentAction]):
+       changed the method paradigm to only return HTTP code 204. Not test
+       is done whatsoever since the security manager does it for us.
+
+       * UI/Contacts/UIxContactsListView.m ([-canAccessContentAction]):
+       removed method because the same exists in UIxFolderActions.m
+
+       * UI/Contacts/UIxContactsUserRightsEditor.m
+       ([UIxContactsUserRightsEditor
+       -setUserCanReadObjects:userCanReadObjects]): new method.
+
+       * SoObjects/SOGo/SOGoPermissions.m: added roles "FolderViewer" and
+       "FolderEraser" and special permission "Access Object". Removed
+       role "SOGoMailRole_MessageEraser" since "SOGoRole_ObjectEraser"
+       can be used instead. Removed "FolderReader" since it is useless.
+
+       * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
+       -vCard]): directly use the "content" ivar since it is initialized
+       during object creation.
+
+       * SoObjects/Contacts/SOGoContactLDAPFolder.m
+       ([SOGoContactLDAPFolder -init]): no longer handle the
+       nameInContainer no the container ivars. They were removed because
+       this class is a descendant of SOGoObject which already has them.
+       ([SOGoContactLDAPFolder -davDisplayName]): new overriden method
+       returning "displayName".
+       ([SOGoContactLDAPFolder -isFolderish]): new overriden method
+       returning "YES".
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -isOrganizerOrOwner:user]): commented out.
+       ([SOGoCalendarComponent -findParticipant:user]): new name for
+       method "participant:".
+       ([SOGoCalendarComponent -findParticipantWithUID:uid]): same as
+       findparticipant but taking a uid string as parameter.
+       ([SOGoCalendarComponent -contentAsString]): don't regenerate the
+       iCalendar automatically. Instead, this is done only when the user
+       is a "date and time viewer".
+       ([SOGoCalendarComponent -aclsForUser:uid]): take delegation roles
+       (modifier and responder) into account by compiling them with the
+       owner's roles.
+
+       * SoObjects/Contacts/SOGoContactFolder.h: removed
+       "nameInContainer" from the list of required methods.
+
+       * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
+       -davContentType]): returns "text/calendar".
+
+       * SoObjects/Contacts/SOGoContactLDAPFolder.m
+       ([SOGoContactLDAPFolder -davResourceType]): declare the correct
+       groupdav resource-type.
+
+       * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
+       -davContentType]): same as below.
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -initWithName:newNameinContainer:newContainer]): new overriden
+       method setting the custom owner directly.
+
+       * SoObjects/Mailer/SOGoMailAccounts.m ([SOGoMailAccounts
+       -davContentType]): same as below.
+
+       * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
+       -davContentType]): same as below.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -davContentType]):
+       declare "httpd/unix-directory".
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): declare
+       "UTC" as fallback timezone instead of "Canada/Eastern".
+       ([-hasEmail:email]): make use of the new NSArray's
+       containsCaseInsensitiveString: method.
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -davContentType]): declare "message/rfc822" as content type.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -_privacySqlString]): "owner" is now an
+       ivar in SOGoObject.
+       ([SOGoAppointmentFolder
+       -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): same as above.
+       ([-fetchContentObjectNames]): commented out method since it was
+       usefull only for testing Funambol.
+
+       * SoObjects/SOGo/NSArray+Utilities.m ([NSArray
+       -containsCaseInsensitiveString:match]): an enhanced version of
+       containsObject:.
+
+       * UI/MailerUI/UIxMailView.m ([-isTrashingAllowed]): removed
+       useless method.
+       ([-showMarkDeletedButton]): removed useless method.
+       ([-showTrashButton]): removed useless method.
+
+       * SoObjects/Appointments/iCalEntityObject+SOGo.m
+       ([iCalEntityObject -userIsParticipant:user]): new proxy method
+       that invoked isParticipant on self for each possible email
+       addresses of the user passed as parameter.
+       ([iCalEntityObject -userIsOrganizer:user]): same as above.
+
+       * SoObjects/Appointments/iCalEntityObject+SOGo.[hm]: new class
+       extension module.
+
+       * SoObjects/Appointments/SOGoAppointmentObject.m
+       ([SOGoAppointmentObject
+       -saveContentString:contentStringbaseVersion:baseVersion]): remove
+       method since an event may not have an organizer.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject
+       -GETAction:localContext]): clarified method. Added support for
+       content-type (thanks to Helge Hess).
+       ([SOGoObject -initWithName:_nameinContainer:_container]):
+       initialize and retain the owner.
+       ([SOGoObject -davContentType]): returns "text/plain".
+
+2007-05-30  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxObjectActions.m ([UIxObjectActions
+       -addUserInAclsAction]): send an acl addition mail.
+       ([UIxObjectActions -removeUserFromAclsAction]): send an acl
+       removal mail.
+
+       * UI/Common/UIxFolderActions.m ([UIxFolderActions
+       -_realActionWithFolderName:folderDict]): handle the possible
+       presence of the "mail-invitation" url parameter. If present, the
+       user will be redirected to the relevant folder.
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser -fullEmail]): new proxy method.
+       ([SOGoUser -language]): new method that returns the user's
+       preferred language, or the system's if none has been set yet.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL]): new method
+       that returns the full dav url to self.
+       ([SOGoObject -soURL]): same as above but for the so url (Web UI).
+       ([SOGoObject -soURLToBaseContainerForUser:uid]): new method that
+       returns the full so url to the base of the SOGo module to which
+       self belongs, and for the specified user.
+       ([SOGoObject -soURLToBaseContainerForCurrentUser]): same as above
+       but for the current user.
+       ([SOGoObject -httpURLForAdvisoryToUser:uid]): new protocol method
+       required by the acl advisory templates and which returns a link
+       the target user can click to activate its new subscription.
+       ([SOGoObject -resourceURLForAdvisoryToUser:uid]): same as above
+       but for inclusion of the application/x-sogo-notification part,
+       which will be handled by the Lightning enhancer plugin.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions -subscribeAction]) 
+       ([UIxMailFolderActions -unsubscribeAction]): new stub methods that
+       do nothing yet since imap folder subscription is not handled yet.
+
+       * SoObjects/SOGo/SOGoContentObject.m
+       ([-hasSupportForDefaultRoles]): removed method.
+
+       * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
+       -getFullEmailForUID:uid]): new method that returns the username +
+       email pair.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent +initialize]): the default language for
+       mail templates is now set to English.
+
+       * UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.[hm]: new subclass of
+       SOGoACLAdvisory implementing the french template for user removal
+       from acls.
+
+       * UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.[hm]: new subclass of
+       SOGoACLAdvisory implementing the french template for user
+       additions to acls.
+
+       * UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.[hm]: new subclass of
+       SOGoACLAdvisory implementing the english template for user removal
+       from acls.
+
+       * UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.[hm]: new subclass of
+       SOGoACLAdvisory implementing the english template for user
+       additions to acls.
+
+       * UI/SOGoUI/SOGoACLAdvisory.[hm]: new class module implemented the
+       supercall of all the acl advistory templates. The model is based
+       on SOGoAptMailNotification except that the template encapsulates
+       the message to be sent. Later, we might create a superclass common
+       to all template-based emails.
+
+       * SoObjects/SOGo/NSArray+Utilities.m ([NSMutableArray
+       -addRange:newRange]): new method that store a string
+       representation of the NSRange passed as parameter.
+       ([NSMutableArray -hasRangeIntersection:testRange]): tests whether
+       any range contained in self intersect with the one passed as parameter.
+
+       * SoObjects/SOGo/NSString+Utilities.m ([-stringByDetectingURLs]):
+       store ranges in an array to prevent them from intersecting with
+       each other during the passes.
+
+2007-05-29  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -primaryFetchMailboxInfo]): useless method. Removed.
+
+2007-05-28  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -toManyRelationshipKeys]): invoke [self subfolders].
+       ([SOGoMailFolder -subfolders]): new method containing what used to
+       be in toManyRelationshipKeys.
+       ([SOGoMailFolder -subfoldersURL]): same as above but returns imap
+       urls.
+
+       * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
+       -allFolderPaths]): renamed version of "allFolderPathes", sorted by
+       named and at the beginning of which we put the predefined folders.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -emptyTrashAction]): new method inspired by a similar one from
+       UIxMailListView, to which we added the ability to remove
+       subfolders.
+
+       * UI/MailerUI/UIxMailListView.m ([-emptyTrashAction]): removed
+       method. Replaced with a similar one in UIxMailFolderActions.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -renameFolderAction]): implemented method.
+       ([UIxMailFolderActions -deleteFolderAction]): no longer delete the
+       specified folder. Instead, we put it in the trash folder.
+
+       * UI/MailerUI/UIxMailListView.m ([-createFolderAction]): removed
+       method, replaced with a similar method in the new
+       UIxMailFolderAction class module.
+       ([-deleteFolderAction]): idem.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -createFolderAction]): new method implementing subfolder creation.
+       ([UIxMailFolderActions -renameFolderAction]): new method
+       implementing subfolder renaming (basic implementation to be
+       finalized later).
+       ([UIxMailFolderActions -deleteFolderAction]): new method
+       implementing folder deletion.
+
+       * UI/MailerUI/UIxMailFolderActions.[hm]: new module implementing
+       web actions related to the handling of imap folder.
+
+2007-05-25  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -ownerInContext:localContext]): overriden method because we are an
+       IMAP4 client and we need a bit more intelligence to deduce the
+       owner of the current folder.
+       ([SOGoMailFolder -aclsForUser:uid]): aclForMailboxAtURL might
+       return an NSException so we need to be careful here to avoid a
+       crash.
+       ([SOGoMailFolder -aclUsers]): aclForMailboxAtURL might return an
+       NSException so we need to be careful here to avoid a crash.
+
+       * SoObjects/Mailer/SOGoMailAccounts.m
+       ([SOGoMailAccounts -fetchIdentitiesWithOnlyEmitterAccess:_flag])
+       there is no longer any concept of Intranet or Internet connection
+       handling.
+
+       * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
+       -sharedFolderName]): new method.
+       ([SOGoMailAccount -otherUsersFolderName]): new method.
+
+       * UI/MailerUI/UIxMailFolderMenu.[hm]: removed module, obsoleted by
+       new javascript code and the new UIxMailAccountActions class.
+
+       * UI/MailerUI/UIxMailTree.[hm]: removed module, obsoleted by new
+       javascript code and the new UIxMailAccountActions class.
+
+       * UI/MailerUI/UIxMailTreeBlock.[hm]: removed module, obsoleted by
+       new javascript code and the new UIxMailAccountActions class.
+
+       * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
+       -listMailboxesAction]): new method that returns a json-formatted
+       tree of all the mailboxes available to the current user.
+
+       * UI/MailerUI/UIxMailAccountActions.[hm]: new module implementing
+       web actions related to the handling of mail accounts.
+
+       * SoObjects/SOGo/NSDictionary+Utilities.[hm]: new extension
+       module.
+
+       * SoObjects/SOGo/NSObject+Utilities.m ([NSObject
+       -jsonRepresentation]): new interface method meant to be overriden
+       by the primitive classes.
+
+2007-05-23  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailSplashView.m: removed.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -getUIDsForICalPersons:iCalPersons]): add
+       the uid to the list only when the user email is recognized by the
+       user manager.
+
+2007-05-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -isDeletionAllowed]): completed method with the new imap acl api.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -defaultAclRoles]):
+       removed method.
+
+       * SoObjects/SOGo/SOGoPermissions.m: added the new role
+       "SOGoMailRole_MessageEraser".
+
+       * UI/Common/UIxAclEditor.m ([UIxAclEditor -defaultUserID]) 
+       ([UIxAclEditor -_prepareUsers]): take the new SOGoObject's
+       "defaultUserID" method into account.
+
+       * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor -userIsDefaultUser]) 
+       ([UIxUserRightsEditor -_initRights]): take the new SOGoObject's
+       "defaultUserID" method into account.
+
+       * UI/MailerUI/UIxMailUserRightsEditor.m: added all the missing
+       methods to support the IMAP acls mentionned in the RFC 4314,
+       removed the ones specific to Cyrus.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -defaultUserID]): new
+       mandatory method for subclasses. Removed the SOGoDefaultUserID
+       global var.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -defaultUserID]):
+       overriden method to return @"<default>".
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+       -defaultUserID]): overriden method to return @"<default>".
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -aclsForUser:uid]): overriden method.
+       ([SOGoMailFolder -removeAclsForUsers:users]): overriden method.
+       ([SOGoMailFolder -setRoles:rolesforUser:uid]): overriden method.
+       ([SOGoMailFolder -defaultUserID]): overriden method.
+       ([SOGoMailFolder -hasSupportForDefaultRoles]): overriden method.
+
+2007-05-18  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+       -aclUsersForObjectAtPath:objectPathArray]): new method that being
+       forwarded the calles to aclUsers for the GCS-based subclasses of
+       SOGoObject.
+
+       * SoObjects/Mailer/SOGoMailFolder.m: removed all the previous
+       methods that would have been used to support IMAP acls. Replaced
+       them with the new protocol for them that has been implemented in
+       SOGo during the last few weeks.
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+       -hasSupportForDefaultRoles]): override method by returning "YES".
+
+       * SoObjects/SOGo/NSArray+Utilities.m ([NSMutableArray
+       -addObjectUniquely:object]): new method with an explicit name.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -aclUsers]): renamed
+       "acl" to "aclUsers". Now designed to return only the uid of the
+       users involved in an ACL.
+       ([SOGoObject -hasSupportForDefaultRoles]): new method returning
+       "NO" by default. To indicate to the acl editor that we don't want
+       to handle a default user.
+
+       * SoObjects/SOGo/SOGoPermissions.[hm]: added the
+       SOGoRole_ObjectReader, SOGoRole_Folder*, and SOGoMailRole_*
+       symbols.
+
+       * UI/MailerUI/UIxMailUserRightsEditor.[hm]: new class module that
+       provides a view to the IMAP acls.
+
+       * UI/MailerUI/UIxMailFolderACLEditor.m: removed obsolete module.
+
+       * UI/WebServerResources/MailerUI.js: replaced all invocations of
+       addEventListener to the use of prototype's Event object. Also,
+       configured all menus programmatically following descriptions lists
+       containing their callbacks, or nulls, submenus id or separators.
+
+2007-05-17  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxObjectActions.m ([UIxObjectActions
+       -addUserInAclsAction]): save the previous roles of the user
+       (unlikely) or the default roles, or None instead of saving the
+       roles that should appear the first time in the role editor when no
+       default has been set...
+
+       * SoObjects/SOGo/SOGoObject.m: defined a new constant
+       "SOGoDefaultUserID".
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+       -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]):
+       ignore the "AuthorizedSubscriber" role and add the "None" role
+       when no other role is found.
+
+       * UI/Common/UIxAclEditor.m: added a button for the new default
+       user roles feature.
+
+       * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor
+       -_initRights]): don't take the "None" role into account when
+       initializing the list of current roles.
+
+       * SoObjects/SOGo/SOGoPermissions.m: added a new void role
+       "SOGoRole_None".
+
+2007-05-16  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/NSString+Utilities.m ([NSString
+       -_rangeOfURLInRange:refRange]): urls cannot end with "&" nor "=".
+       There is no need to subscract the start from the length if a space
+       is not found since the range has not changed either. Finally, the
+       first character before the url might also be a tab or a cr, so we
+       match it against the "urlAfterEndingChars" custom NSCharacterSet.
+       ([NSString -stringByDetectingURLs]): modified to handle email
+       addresses and add a correct "mailto:" link.
+
+2007-05-15  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -fetchContentObjectNames]): override
+       method to return the events in the range of 2 weeks ago up to 4
+       weeks from "now".
+
+       * UI/MailPartViewers/UIxMailPartTextViewer.m
+       ([UIxMailPartTextViewer -flatContentAsString]): use the new
+       "stringByDetectingURLs" method to offer clickable urls.
+
+       * SoObjects/SOGo/NSString+Utilities.m ([NSString
+       -stringByDetectingURLs]): this new method replaces passive URLS
+       with active ones for HTML resolution of the text.
+
+2007-05-14  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoDraftObject.m ([NSString
+       -asQPSubjectString:encoding]): simplified method.
+       The headers indicates "utf-8" again thank to our fix in
+       sope-mime.
+
+       * SoObjects/SOGo/SOGoObject.m: fail to build if libFoundation is
+       being used.
+
+2007-05-11  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxObjectActions.m ([UIxObjectActions
+       -removeUserFromAclsAction]): implemented this method which was
+       missing and is required to remove users from ACLs.
+
+       * UI/Common/UIxFolderActions.m ([UIxFolderActions
+       -subscribeAction]): folderDict was not autoreleased, resulting in
+       a leak...
+
+       * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
+       -primaryFetchProfile]): when building with libFoundation, don't
+       use the "propertyList" method from NSString. Rather, we convert
+       the string to an NSData instance and passit as parameter to
+       NSDeserializer. This way, we obtain a mutable dictionary rather
+       than an immutable one.
+
+       * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject -bodyPartForText]) 
+       ([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): use the
+       constant string "contentTypeValue".
+       contentTypeValue is now set back to iso-8859-1 since NGMime
+       converts extracts the data in that encoding.
+
+2007-05-10  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/LDAPSource.m ([LDAPSource
+       -checkLogin:loginToCheckandPassword:passwordToCheck]): if a
+       "bindFields" value is present in the user defaults, use the
+       specified fields to find the dn of the user to bind.
+       ([LDAPSource -allEntryIDs]) 
+       ([LDAPSource -fetchContactsMatching:match]) 
+       ([LDAPSource -lookupContactEntry:entryID]) 
+       ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]):
+       bind and unbind the connection on each request.
+
+       * UI/MailerUI/UIxMailAddressbook.m: removed obsolete module.
+
+       * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
+       -contactSearchAction]): simplified method to use the facilities
+       provided by the LDAPUserManager. No longer takes care of the
+       "ldap-only" url parameter since all requests are handled by the
+       usermanager now.
+
+       * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
+       -primaryFetchProfile]): check that the value returned is not null
+       before interpreting it.
+
+       * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
+       -contactInfosForUserWithUIDorEmail:uid]): check that uid is not empty.
+       ([LDAPUserManager -_fillContactMailRecords:contact]): if the
+       system email is already present, remove it before adding it.
+
+       * SoObjects/SOGo/LDAPSource.m ([LDAPSource
+       -checkLogin:loginToCheckandPassword:passwordToCheck]): check that
+       loginToCheck is not empty.
+       ([LDAPSource -fetchContactsMatching:match]): check that match is
+       not empty.
+       ([LDAPSource -lookupContactEntry:entryID]): check that entryID is
+       not empty.
+       ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): check that
+       uid is not empty.
+
+2007-05-09  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser -primaryEmail]): new name
+       for "mail" method.
+       ([SOGoUser -systemEmail]): returns the email formed from the
+       username and the default mail domain.
+       ([SOGoUser -hasEmail:email]): test whether the user has the
+       specified email, in a case-insensitive way.
+
+       * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
+       -LDAPCheckLogin:_loginpassword:_pwd]): use the user manager to
+       check login information.
+
+       * SoObjects/Contacts/SOGoContactLDAPFolder.m
+       ([SOGoContactLDAPFolder
+       +contactFolderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]):
+       no longer manage LDAP connections. The requests are forwarded to
+       the relevant LDAPSource instead.
+
+       * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
+       -appendSystemSources]): pass LDAPSource objects to
+       SOGoContactLDAPFolder instances.
+
+       * SoObjects/Mailer/SOGoDraftObject.m: extract the raw email
+       address of the "from" field before sending the message. Otherwise,
+       sending the mail won't work.
+
+       * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -fromEMails]):
+       rewrote this method to request all the available email identities
+       for the current user. Also, the from field also contains the full
+       name of the user, not just his/her email address.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -iCalPersonWithUID:uid]): new method taken
+       from the previous module iCalEntityObject+Agenor.
+       ([SOGoCalendarComponent -getUIDForICalPerson:person]): idem.
+       ([SOGoCalendarComponent -getUIDsForICalPersons:iCalPersons]):
+       idem.
+
+       * SoObjects/Contacts/SOGoContactLDIFEntry.[hm]: new class module
+       replacing the SOGoContactLDAPEntry module. It was renamed as such
+       because it now receives a dictionary instead of an NGLdapEntry.
+       It thus can now handle data from any source of LDIF data, not
+       only coming from LDAP.
+
+       * SoObjects/SOGo/LDAPUserManager.[hm]: new class module
+       implementing most of what used to be the AgenorUserManager class.
+       The difference is that users are cached in the forme of
+       dictionaries and many sources are used. Also, it can be used to
+       search LDAP contacts.
+
+       * SoObjects/SOGo/LDAPSource.[hm]: new class module implementing
+       the concept of "ldap source", to be used by all the classes
+       needing access to LDAP-provided information: addressbooks and the
+       user manager. Most the method thereing are transcriptions of
+       methods previously found in SOGoContactLDAPFolder. It also contain
+       utility methods for user matching and authentification.
+
+       * SoObjects/Appointments/iCalEntityObject+Agenor.[hm]: removed
+       module, rendered useless by code refactoring.
+
+       * SoObjects/SOGo/AgenorUserManager.[hm]: removed module, replaced
+       with the freshly written "LDAPUserManager".
+
+2007-05-08  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Contacts/SOGoContactLDAPEntry.[hm]: renamed to
+       SOGOContactLDIFEntry.
+
+       * SoObjects/Contacts/NGLdapEntry+Contact.[hm]: removed class
+       module, obsoleted by code in SOGo/LDAPSource.[hm].
+
+2007-05-04  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]):
+       new method with an explicit name.
+
+2007-05-03  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -isOrganizerOrOwner:user]): new method
+       replacing "isOrganizer:orOwner:" by taking only one instance of
+       SOGoUser as parameter.
+       ([SOGoCalendarComponent -participant:user]): new method replacing
+       the previous "isParticipant" boolean method by returning the first
+       participant matching the user passed as parameter. This method is
+       used so that both the regular email address and the "system email
+       address" of the user are matched against the participants emails.
+
+       * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
+       -getSystemEMailForUID:uid]): new method that returns the email
+       formed with the user's uid and the default mail domain.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -rolesOfUser:login]): removed method that
+       was previously commented out.
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser -systemEmail]): new method
+       forwared to [AgenorUserManager getSystemEmailForUID:].
+
+       * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+       -toolbar]): method replacing the one with the same name in the
+       task and appointment editor classes. This method makes also use of
+       the new method "isOrganizerOrOwner:" and "participant:" in
+       SOGoCalendarComponent.
+
+       * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
+       -toolbar]): removed method, replaced with a method with the same
+       name in UIxComponentEditor.
+
+       * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -toolbar]): removed
+       method, replaced with a method with the same name in
+       UIxComponentEditor.
+
+       * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
+       -primaryFetchProfile]): the values returned from the database are
+       converted to a put dictionary first, since the dictionary returned
+       is actually an immutable one, which can cause a crash afterwards.
+
+2007-04-27  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoPermissions.m: added "SOGoRole_ObjectViewer"
+       and "SOGoRole_ObjectEditor".
+
+       * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor
+       -prepareRightsForm]): this method is no longer mandatory.
+
+       * UI/Contacts/UIxContactsUserRightsEditor.m
+       ([UIxContactsUserRightsEditor
+       -setUserCanCreateObjects:userCanCreateObjects]): new subclass
+       module to handle acls related to the address books. Partial
+       implementation.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+       -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): cache
+       newly set roles.
+       ([SOGoFolder
+       -removeAclsForUsers:usersforObjectAtPath:objectPathArray]): remove
+       specified roles from cache.
+       ([SOGoFolder -aclsForUser:uidforObjectAtPath:objectPathArray]):
+       put resulting roles in cache.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -init]): do not invoke
+       initWithName:inContainer:. Instead, directly initialize the ivars
+       as it is supposed to be to avoid an infinite loop whenever one of
+       those two methods are overriden.
+
+       * SoObjects/SOGo/SOGoContentObject.m ([-rolesOfUser:login]):
+       removed method.
+
+       * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
+       -aclsForUser:uid]): override method so that SOGo won't crash when
+       loading the contact card.
+
+2007-04-26  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -_privacySqlString]): the string for the
+       "freebusy" special user should only require opaque elements.
+
+2007-04-25  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -davResourceType]): fixed a problem with
+       our double declaration where the resulting XML would be screwed.
+       There is only one collection per namespace.
+
+       * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate
+       rfc822DateString]): new method that returns a string conform to
+       rfc 822 and suitable for email headers.
+
+       * SoObjects/Mailer/SOGoDraftObject.m: invoke the new
+       "rfc822DateString" category method on the date we put in the
+       header.
+
+2007-04-24  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor -defaultAction]) 
+       ([UIxUserRightsEditor -saveUserRightsAction]): new action methods
+       which should never be overriden.
+       ([UIxUserRightsEditor -appendRight:newRight]) 
+       ([UIxUserRightsEditor -removeRight:right]) 
+       ([UIxUserRightsEditor -appendExclusiveRight:newRightfromList:list]) 
+       ([UIxUserRightsEditor -removeAllRightsFromList:list]): new utility
+       methods that can be used by the subclasses.
+       ([UIxUserRightsEditor -prepareRightsForm]): new method that should
+       mandatorily be overriden to prepare the elements of the subclassed
+       form.
+       ([UIxUserRightsEditor -updateRights]): new method that should
+       mandatorily be overriden to update the user rights from the
+       elements of the subclassed form.
+
+       * UI/Common/UIxAclEditor.m ([UIxAclEditor -_prepareUsers]): we
+       check if the uid is already listed before adding it to our array.
+       This is because the acl table can contain more than one record per
+       user/object relationship.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+       -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): the
+       "roles" parameter is now an NSArray instead of a string. Therefore
+       we loop throughout the array to populate the table. All the
+       relevant records are removed prior to the addition of the new
+       rights.
+
+       * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
+       -aclsForUser:uid]): new override that returns nil until we add
+       support for IMAP acls.
+
+       * SoObjects/Mailer/SOGoMailAccounts.m
+       ([SOGoMailAccounts -aclsForUser:uid]): same as below.
+
+       * SoObjects/Contacts/SOGoContactLDAPFolder.m
+       ([SOGoContactLDAPFolder -aclsForUser:uid]): same as below.
+
+       * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
+       -aclsForUser:uid]): override this method which will always return
+       nil.
+
+       * SoObjects/SOGo/SOGoPermissions.[hm]: added
+       [Public,Private,Confidential]
+       x[Viewer,DAndTViewer,Responder,Modifier]. Renamed
+       SOGoRole_ORganizer to SOGoCalendarRole_Organizer. Same for
+       ..._Participant. Removed SOGoRole_Assistant and SOGoRole_Delegate.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -defaultAclRoles]): new overriden method
+       that defines default roles for new elements in the acl.
+
+       * UI/Scheduler/UIxCalUserRightsEditor.[hm]: new component class
+       module and subclass of UIxUserRightsEditor specific to the
+       handling of user rights on calendar folders.
+
+2007-04-23  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -groupDavResourceType]): return both
+       "vevent-collection" and "vtodo-collection".
+
+       * UI/Common/UIxUserRightsEditor.[hm]: new template class module
+       that implements the detailed editor of user rights per-object.
+
+2007-04-17  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser
+       -rolesForObject:objectinContext:context]): no longer query objects
+       for "roleForUser:". Instead, all objects should implement
+       "rolesForUser:".
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject -acls]):
+       new method to comply with the new acl "protocol" in SOGoObject.
+       Uses SOGoFolder's new facilities for ACLS.
+       ([SOGoContentObject -aclsForUser:uid]): idem.
+       ([SOGoContentObject -setRoles:rolesforUser:uid]): idem.
+       ([SOGoContentObject -removeAclsForUsers:users]): idem.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+       -aclsForObjectAtPath:objectPathArray]): new method generic to GCS
+       based folders. This method is derived from the code that was in
+       UIxAclFolder before its removal.
+       ([SOGoFolder -aclsForUser:uidforObjectAtPath:objectPathArray]):
+       idem.
+       ([SOGoFolder
+       -removeAclsForUsers:usersforObjectAtPath:objectPathArray]): idem.
+       ([SOGoFolder
+       -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): idem.
+       ([SOGoFolder -setRoleForUsers:uidsto:role]) 
+       ([SOGoFolder -setRoleForUsers:uidsto:role]): removed method.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -acls]): stub method
+       that requires overriding by subclasses.
+       ([SOGoObject -aclsForUser:uid]): idem.
+       ([SOGoObject -defaultAclRoles]): idem.
+       ([SOGoObject -setRoles:rolesforUser:uid]): idem.
+       ([SOGoObject -removeAclsForUsers:users]): idem.
+
+       * UI/Common/UIxObjectActions.m: new module implementing the web
+       actions common to SOGoObject and all its subclasses.
+       ([UIxObjectActions -addUserInAclsAction]): new method that adds a
+       user with the clientObject defaults user rights to the object's
+       acl.
+
+       * UI/Common/UIxAclEditor.m: modified module so as to simplify it
+       to the point where it will only list the users (and their name)
+       associated with an object acl.
+
+       * SoObjects/SOGo/SOGoAclsFolder.m: removed module because its
+       methods have been moved into SOGoObject and SOGoFolder during a
+       refactoring.
+
+       * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+       -iCalParticipantsAndResourcesStringFromQueryParameters]): removed
+       method made useless by the programmatic handling of iCalendar
+       objects.
+       ([UIxComponentEditor -iCalParticipantsStringFromQueryParameters]): idem.
+       ([UIxComponentEditor -iCalResourcesStringFromQueryParameters]): idem.
+       ([UIxComponentEditor -iCalStringFromQueryParameter:_qpformat:_format]): idem.
+
+       * UI/WebServerResources/MailerUI.js (initDnd): enable drag and
+       drop on all folder nodes, not just on leaves.
+
+       * SoObjects/Contacts/SOGoContactLDAPFolder.m
+       ([SOGoContactLDAPFolder
+       -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): request field "uid" when doing a search.
+
+2007-04-16  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * Main/SOGo.m ([SOGo +initialize]): on GNUstep, trigger some
+       debugging facilities when the SOGoDebugObjectAllocation user
+       default is set.
+
+2007-04-11  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/NSString+Utilities.m ([NSString -boolValue]): new
+       method that SOGo will need with non-gnustep Foundation
+       implementation.
+       ([NSString -stringByAppendingPathComponent:component]): new method
+       that SOGo will need when building with libFoundation. Method
+       removed later since it is available from
+       Foundation/NSPathUtilities.h.
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser -timeZone]): method moved
+       from SOGoObject.m.
+
+       * SoObjects/SOGo/SOGoObject.m: new ivar "context" that permits
+       every subclass to access [WOApplication context] without having to
+       invoke it more than once.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -changeParticipationStatus:_status]):
+       moved method from SOGoTaskObject and SOGoAppointmentObject up to
+       their parent class.
+
+       * UI/Scheduler/UIxCalSelectTab.m: removed module.
+
+2007-04-10  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
+       -vCard]): test the prefix of the card in a case-independent way.
+
+       * OGoContentStore/OCSContactFieldExtractor.m
+       ([OCSContactFieldExtractor
+       -extractQuickFieldsFromContent:content]): we no longer accept
+       records in a format other than versit vCard so we can get rid of a
+       lot of code.
+
 2007-04-04  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
 
        * UI/Contacts/UIxContactsListView.m ([UIxContactsListView