+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
+ -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
+ -selectorComponentClass]): restored method.
+
+2007-04-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Scheduler/UIxCalTasksListView.m ([UIxCalTasksListView
+ -shouldDisplayCurrentTask]): the current task is not displayed if
+ it is NOT completed or if the "showCompletedTasks" flag is set.
+ The logic was inverted in Lightning and is now in SOGo too.
+
+2007-04-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Contacts/UIxContactView.m ([UIxContactView -workUrl]): we
+ want the "work" url instead of the "home".
+
+ * UI/Contacts/UIxContactEditor.m ([UIxContactEditor
+ -_saveSnapshot]): save url values from snapshot.
+ ([UIxContactEditor -initSnapshot]): load url values from snapshot.
+
+ * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+ -calendarList]): new method replacing "availableCalendars".
+
+ * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector
+ -calendarFolders]): we now take the list of subscribed calendar
+ from the container.
+
+ * SoObjects/Appointments/SOGoAppointmentFolder.m
+ ([SOGoAppointmentFolder -calendarFoldersInContext:context]): new
+ method derived from and replacing [UIxCalView calendarFolders].
+
+2007-03-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
+ -toManyRelationshipKeys]): don't put the predefined folders in the
+ list if they are returned by the server.
+
+ * UI/MailerUI/UIxMailTree.m ([UIxMailTree -flattenedNodes]): we no
+ longer store the "flattenedBlocks" in a dictionary since the
+ object will be deleted anyway and we don't need to put the folders
+ in cache.
+
+ * UI/MailPartViewers/UIxMailPartHTMLViewer.m
+ ([UIxMailPartHTMLViewer -_attachmentIds]): take the current
+ attachment path into account when computing the part urls.
+
+2007-03-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Contacts/UIxContactsListViewContainer.m
+ ([UIxContactsListViewContainer -additionalFolders]): take the list
+ of subscribed folders from the new property list used for the user
+ settings. The value of its key is SubscribedFolders for the
+ dictionary entry named "Contacts".
+
+ * UI/Contacts/UIxContactsListView.m ([UIxContactsListView
+ -canAccessContentAction]): new method to override the one from
+ UIxFoldersActions by taking into account the fact that, this time,
+ the clientObject is an ldap folder. Removed many method that used
+ to be related to the handling of the user selector.
+
+ * UI/Scheduler/UIxCalDayView.m: commented out many unused methods
+ to make sure they can be removed.
+
+ * UI/Scheduler/UIxCalView.m ([UIxCalView -_setupCalendarFolders]):
+ populate the calendar entries based on the user settings plist.
+
+ * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
+ -selectForMailerAction]): restored method.
+
+ * UI/Scheduler/UIxCalendarSelector.m: new template module derived
+ from a simplified version of the old UIxContactEditor (removed).
+
+ * UI/Contacts/UIxContactsUserFolders.m: new template module for
+ selecting users or user folders through an LDAP search of which
+ the results are displayed as a tree.
+
+ * UI/WebServerResources/UIxMailEditor.js: moved previous generic
+ method "onContactAdd" here since the Mailer is now the only module
+ to use it when composing emails.
+
+ * UI/WebServerResources/generic.js: added code for handling the
+ new scheme used for describing SOGo folders, common code to handle
+ folder addition or removal.
+
+ * UI/Common/UIxFolderActions.m ([UIxFolderActions
+ -activateFolderAction]): new method that change the "active"
+ settings in the folder-related fields in the user settings.
+ ([UIxFolderActions -deactivateFolderAction]): see above.
+
+ * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
+ -checkRightsAction]): removed method.
+
+ * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
+ -updateAdditionalAddressBooksAction]): removed method.
+
+ * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
+ -updateCalendarsAction]): removed method.
+
+2007-03-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
+ -checkRightsAction]): removed method.
+
+ * UI/Common/UIxFolderActions.m ([UIxFolderActions
+ -canAccessContentAction]): new method designed to replace
+ [UIxCalMainView checkRightsAction] in a more universal way.
+
+2007-03-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
+ -roleOfUser:uidinContext:context]): take all the subkeys into
+ account, not only the "personal" folder.
+
+ * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+ -takeValuesFromRequest:_rqinContext:_ctx]): append a "uid" field
+ to the new components.
+
+ * SoObjects/SOGo/SOGoUser.m ([SOGoUser -userSettings]): new method
+ (see below).
+
+ * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
+ -getUserDefaultsForUID:uid]): rewrote method to use the "defaults"
+ field of the sogo_user_profile table, where the user-customizable
+ changes will be saved.
+ ([AgenorUserManager -getUserSettingsForUID:uid]): new method
+ similar to the one above, using the "settings" field where the
+ automatic settings will be saved.
+
+ * SoObjects/SOGo/AgenorUserDefaults.m: rewrote a big part of the
+ module to bind the userdefaults to a property list contained in a
+ specified field of the sogo_user_profile table.
+ ([AgenorUserDefaults
+ -initWithTableURL:tableURLuid:userIDfieldName:defaultsFieldName]):
+ added a "fieldName" parameter.
+
+ * UI/Common/UIxFolderActions.m: new module implementing web
+ actions common to all GCS-based folders.
+
+2007-03-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -labelForDay]):
+ put a carriage return after the day name.
+
+ * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
+ -readFreeBusyAction]): restored method.
+
+2007-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
+ -defaultAction]): remade module to redirect automatically to the
+ Calendar url.
+
+ * SoObjects/Contacts/NSDictionary+Contact.m: removed module.
+
+2007-03-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Contacts/UIxContactsListView.m ([UIxContactsListView
+ -deleteAction]): new web method to delete personal addressbook
+ folders.
+
+ * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
+ -delete]): override method to refuse the deletion of the folder if
+ its nameInContainer is "personal".
+
+ * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -delete]): new method
+ that forwards the deletion request to the folder manager.
+
+2007-03-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Scheduler/UIxAttendeesEditor.m ([UIxAttendeesEditor
+ -zoomList]): new method that returns the list of available zoom factors.
+
+ * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
+ -changeStatusAction]): rewrote method.
+
+ * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+ -_handleAttendeesEdition]): make sure "attendeesNames" has a
+ length > 0 before computing the attendees. Otherwise there will be
+ an invalid empty entry.
+ ([UIxComponentEditor -_handleOrganizer]): new method that adds the
+ organizer when there are attendees and remove it when the
+ attendees are removed.
+
+2007-03-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Scheduler/UIxAttendeesEditor.m): new component.
+
+ * UI/Scheduler/UIxComponentEditor.m: no longer a superclass for
+ the task and appointment editors. Now a container component
+ handling the common elements of tasks and events.
+
+ * UI/Scheduler/UIxTaskEditor.m: same as below.
+
+ * UI/Scheduler/UIxAppointmentEditor.m: rewrote template. No longer
+ a subclass of UIxComponentEditor but a subcomponent of it.
+
+ * UI/Common/UIxToolbar.m ([UIxToolbar -toolbarConfig]): the
+ toolbar can have the special value "none" to indicate there is
+ none attached to the window.
+
+ * SoObjects/Appointments/SOGoCalendarComponent.m
+ ([SOGoCalendarComponent -isOrganizer:emailorOwner:login]): new
+ method.
+ ([SOGoCalendarComponent -isParticipant:email]): new method.
+ ([SOGoCalendarComponent -calendar:create]): takes one parameter
+ "create" which is a boolean indicating whether we want to create
+ the calendar if it does not exist.
+
+2007-03-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Scheduler/UIxCalMonthView.m: changed view to use divs instead
+ of a table, the same way the dayly and weekly views have been for
+ a few months now.
+
+2007-02-09 Helge Hess <helge.hess@opengroupware.org>
+
+ * SoObjects/Appointments/SOGoAppointmentFolder.m: added CalDAV
+ resourcetype
+
+ * SoObjects/SOGo/SOGoUserFolder.m: added davCalendarHomeSet CalDAV
+ property to point at the user folder
+
+2007-03-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
+ -userInContext:]): returns "SOGoUser".
+
+ * SoObjects/Appointments/SOGoCalendarComponent.m
+ ([SOGoCalendarComponent -contentAsString]): overriden method that
+ takes the privacy into account and discard the relevant fields if
+ needed by generating a new content string and caching it.
+ ([SOGoCalendarComponent
+ -saveContentString:contentStringbaseVersion:baseVersion]): if the
+ new method above has cached a content string, release it and set
+ it to nil so that it will have to be regenerated in the case it is
+ requested further.
+ ([SOGoCalendarComponent -_filterPrivateComponent:component]):
+ discard the fields that have to be hidden when the card is
+ private.
+
+ * SoObjects/Appointments/SOGoAppointmentFolder.m
+ ([SOGoAppointmentFolder
+ -appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): make
+ sure the cards are now handled as instances of
+ SOGoCalendarComponent instead of SOGoContentObject so that their
+ content string is taking the privacy classifiction into account.
+ ([SOGoAppointmentFolder -_privacySqlString]): new method that
+ generates a query to determine what information can be given and
+ if the card itself has to be shown.
+
+ * UI/Scheduler/UIxComponent+Agenor.m ([UIxComponent
+ -getICalPersonsFromValue:selectorValue]): removed useless
+ "isAccessRestricted" method.
+
+ * UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView
+ -setStyle:_style]): test whether the values of orgmail and
+ partmails are null before manipulating them, otherwise SOGo sends
+ a "rangeOfString:" message to an NSNull, which makes it crashes.
+
+ * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
+ -extractQuickFieldsFromEvent:_event]): we now use the new
+ "symbolicAccessClass" method from iCalEntity to determine the
+ value of the "classifiction" field.
+ ([OCSiCalFieldExtractor -extractQuickFieldsFromTodo:_task]): same
+ as above.
+
+2007-03-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/Appointments/SOGoAppointmentFolder.m
+ ([SOGoAppointmentFolder
+ -fetchCoreInfosFrom:_startDateto:_endDatecomponent:_component]):
+ see below, the query is adapted consequently.
+
+ * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
+ -extractQuickFieldsFromTodo:_task]): the field "ispublic" was
+ renamed to "classification" and can any integer as value.
+ ([OCSiCalFieldExtractor -extractQuickFieldsFromEvent:_event]):
+ idem.
+
+2007-02-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/MailPartViewers/UIxMailPartHTMLViewer.m
+ ([_UIxHTMLMailContentHandler -_appendStyle:_charslength:_len]):
+ don't prepend anything to the class and id named. Instead, we
+ make each style embedded in the ".SOGoHTMLMail-CSS-Delimiter"
+ class.
+
+2007-02-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+ -rolesOfUser:logininContext:context]): if object does not exists
+ (for example when it's being created), the current user has the
+ same rights on it than he/she has on its parent container.
+
+ * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+ -nameExistsInFolder:objectName]): methods that tests if a c_name
+ corresponding to the name passed as parameter is present in the db
+ folder.
+
+2007-02-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/SOGo/SOGoUser.m ([SOGoUser
+ -rolesForObject:objectinContext:context]): test for
+ "rolesOfUser:inContext:" in addition to "roleOfUser:...".
+
+ * SoObjects/Appointments/SOGoCalendarComponent.m
+ ([SOGoCalendarComponent -rolesOfUser:logininContext:context]):
+ returns the roles of the user on the container object if the event
+ is uncreated.
+
+2007-02-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/MailPartViewers/UIxMailRenderingContext.m: returns the
+ alternativeViewer a multipart/related message is being handled.
+
+ * UI/MailPartViewers/UIxMailPartHTMLViewer.m: reimplemented module
+ from scratch.
+
+ * UI/MailPartViewers/UIxMailPartAlternativeViewer.m: select the
+ text/html component before text/plain.
+
+ * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+ -addRequiredKeysOfStructure:path:toArray:recurse:]): accepts the
+ fetching of HTML parts.
+
+ * SoObjects/Appointments/SOGoCalendarComponent.m
+ ([SOGoCalendarComponent -componentTag]): new template method that
+ returns the vcalendar tag of the current object.
+ ([SOGoCalendarComponent -component]): new method that returns the
+ first object matching [self componentTag] within the current
+ calendar object. This method replaces 'firstEventInCalendar:' as
+ well as "firstTaskInCalendar:".
+ ([SOGoCalendarComponent -roleOfUser:logininContext:context]):
+ moved method from SOGoAppointmentObject.m.
+
2007-02-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* UI/Scheduler/UIxCalMulticolumnDayView.[hm]: new daily view