+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