]> err.no Git - scalable-opengroupware.org/blobdiff - ChangeLog
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1166 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / ChangeLog
index b0c5f04e1e81978db009c0ea2a260cb8d02a9ce9..d542f488f4379043637216051824274108d50b63 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,617 @@
+2007-09-04  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]):
+       set the cookie path to "/".
+
+       * Main/SOGo.m ([SOGo -authenticatorInContext:_ctx]): choose the
+       authenticator based on the request handler key. "dav" returns the
+       SOGoDAVAuthenticator, anything else returns the Web authenticator.
+
+       * SoObjects/SOGo/SOGoDAVAuthenticator.m: renamed module from
+       "SOGoAuthenticator".
+
+       * SoObjects/SOGo/SOGoWebAuthenticator.m: new class module
+       implementing a subclass of SoCookieAuthenticator, designed for
+       web-based cookie authentication of users.m
+
+       * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]):
+       new method that resets the authentification cookie.
+
+2007-08-29  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/LDAPSource.m ([LDAPSource
+       -checkLogin:loginToCheckandPassword:passwordToCheck]): initialize
+       didBind to NO to make sure no false authentication is returned if
+       the bind operation is not executed.
+
+2007-08-28  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoDraftObject.m: added support for the
+       "In-Reply-To" header field when replying.
+
+       * UI/MainUI/SOGoUserHomePage.m: add the "c_" prefix to the quick
+       table field names that are queried.
+
+       * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
+       -iCalStringForFreeBusyInfos:_infosfrom:_startDateto:_endDate]):
+       add the "c_" prefix to the quick table field names that are
+       queried.
+
+2007-08-24  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): add
+       "personal" to the ocs path of the appointment folder.
+
+       * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
+       -flatContentAsString]): use latin1 when the encoding is not
+       specified, and to reencode data chunk which were not correctly
+       decoded with the original charset.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -aclUsersForObjectAtPath:objectPathArray])
+       ([SOGoAppointmentFolder -aclsForUser:uidforObjectAtPath:objectPathArray])
+       ([SOGoAppointmentFolder -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray])
+       ([SOGoAppointmentFolder
+       -removeAclsForUsers:usersforObjectAtPath:objectPathArray]):
+       override those methods to use the "personal" additional directory.
+
+       * SoObjects/SOGo/SOGoUserFolder.m ([-ocsPrivateCalendarPath]):
+       append "/personal" to the calendar path to simulate a single
+       calendar in a choice of many.
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -lookupName:_keyinContext:acquire:_acquire]): moved the lookup
+       methods back here. Moved the folder existence check here, and do
+       it on self only when the lookup happens for a non-folder object.
+       This permits to accept entries for folders with parents who
+       don't really exist.
+
+2007-08-23  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
+       -shouldTakeValuesFromRequest:requestinContext:context]): same as
+       below.
+
+       * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
+       -shouldTakeValuesFromRequest:requestinContext:context]):
+       redesigned method since any method called can be received from a
+       POST or a GET. Instead we check the method call itself and we
+       accept only if it has the "save" prefix.
+
+       * SoObjects/Appointments/SOGoAptMailNotification.m
+       ([SOGoAptMailNotification -getSubject]): returns the subject an a
+       quoted-printable encoded string, if needed.
+
+       * SoObjects/Mailer/SOGoDraftObject.m ([NSString
+       -asQPSubjectString:encoding]): moved method into
+       NSString+Utilities.m.
+
+2007-08-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
+       -messageForwardingList])
+       ([UIxPreferences -itemMessageForwardingText])D
+       ([UIxPreferences -userMessageForwarding])
+       ([UIxPreferences -setUserMessageForwarding:newMessageForwarding]):
+       new template methods for manage the user preference regarding
+       message forwarding.
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser -language]): change the
+       algorithm to return, in order, the user's defined language or the
+       first browser language or, finally, the default language.
+       ([SOGoUser -messageForwarding]): new method that returns the user
+       preference for message forwarding: "inline" or "attached",
+       defaulting to "attached".
+
+       * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
+       -contentForInlineForward]): new method that returns the content of
+       the message for inline forwarding based on the SOGoMailForward
+       templates.
+
+       * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
+       -fetchMailForForwarding:sourceMail]): check the user preference
+       for message forwarding and compose inline forwarded messages if required.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent
+       -sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]):
+       now use a template based on the language returned from the
+       SOGoUser object.
+
+       * SoObjects/Mailer/SOGoMailEnglishForward.m: new module containing
+       a subclass of SOGoMailForward for English locale.
+
+       * SoObjects/Mailer/SOGoMailFrenchForward.m: new module containing
+       a subclass of SOGoMailForward for French locale.
+
+       * SoObjects/Mailer/SOGoMailForward.[hm]: new module class that
+       helps build template for inline forwarded messages.
+
+2007-08-21  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/SOGoElements/SOGoIEConditional.m: new extension module class
+       to handle "<var:if-ie>" template tags.
+
+       * UI/SOGoElements: new extension bundle containing sogo-specific
+       dynamic elements.
+
+       * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+       -takeValuesFromRequest:_rqinContext:_ctx]): save the category
+       selected in the dialog.
+       ([UIxComponentEditor -setComponent:newComponent]): retrieve the
+       first category, if ever, of the calendar entity.
+
+       * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
+       -composeAction]): restored method since it is needed by the
+       address book.
+
+       * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
+       -composeAction]): the address fields should be arrays and not
+       simple strings.
+
+       * UI/Common/UIxPageFrame.m ([UIxPageFrame -buildDate]): new method
+       that returns the build date of SOGo in the template.
+
+2007-08-20  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
+       -_flattenedRecords:records]): when the c_cn field is empty,
+       returns set a formatted string with the concatenation of
+       c_givenname and c_sn as the displayName.
+
+       * SoObjects/Mailer/SOGoMailAccounts.m ([SOGoMailAccounts
+       -isValidMailAccountName:_key]): prevent unknown accounts from
+       being accessed.
+
+       * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
+       -pathToAttachmentObject]): we no longer need the filename
+       extension for SoLookup...
+
+       * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
+       -lookupName:_keyinContext:_ctxacquire:_flag]): do not require the
+       filename to have an extension, and thus accept any filename.
+
+       * UI/Contacts/UIxContactsListView.m ([UIxContactsListView
+       -currentCName]): new method that returns the c_name of the
+       contact, correctly escaped to be passed by url afterwards.
+
+       * UI/MailPartViewers/UIxMailPartHTMLViewer.m
+       ([UIxMailPartHTMLViewer -flatContentAsString]): pass the NSData
+       instance of [self decodedFlatContent] instead of the buggy
+       NSString from [super flatContentAsString] to the parser.
+
+2007-08-18  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailActions.m ([UIxMailActions -deleteAction]):
+       new category method to reponds to the "delete" web command on
+       drafts.
+       ([UIxMailActions -deleteAttachmentAction]): new category method to
+       reponds to the "deleteAttachment" web command on drafts, taking
+       the "filename" url parameter into account.
+
+       * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
+       -contentForEditing]): new method that retrieve the editable mail
+       content.
+       ([SOGoMailObject -fetchFileAttachmentKeys]): new method that
+       returns the body keys for attached files (parts with a "filename"
+       attribute).
+
+       * SoObjects/Mailer/SOGoDraftObject.m ([NSString
+       -asQPSubjectString:encoding]): do not change the string if the
+       encoded string has the same length (which means it is already
+       7bit-safe).
+       ([SOGoDraftObject -fetchMailForEditing:sourceMail]): new method
+       that retrieve a draft along with its attachments for editing.
+       ([SOGoDraftObject -mimeHeaderMapWithHeaders:_headers]): no longer
+       choke if the "to" header field is empty.
+       ([SOGoDraftObject -delete]): new method to delete the draft folder
+       whenever operations are done.
+
+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