+2007-09-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
+ -appendPersonalSources]): make sure the value of the "c_path4" of
+ the returned rows are not NSNull, otherwise, discard them.
+
+2007-09-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
+ -compare:otherFolder]): new overriden method that compares two
+ contact foldes based on their class and then transfer the control
+ to the super method in SOGoFolder.
+
+ * SoObjects/Contacts/SOGoContactLDAPFolder.m
+ ([SOGoContactLDAPFolder -compare:otherFolder]): new method that
+ compare two contact folders based on their class and then their
+ display name.
+
+ * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -compare:otherFolder]):
+ new method for sorting folders. The folders are compared based on
+ their ownership, whether they are a main folder and finally
+ depending on their display name.
+
+ * SoObjects/SOGo/SOGoObject.m ([SOGoObject
+ -pathArrayToSOGoObject]): do not reorder the paths if the third
+ element is an instance of NSNull.
+
+ * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
+ -subFolders]): returns a sorted array using the "compare:"
+ selector.
+
+2007-09-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector
+ -calendars]): also returns the owner of the listed folders.
+
+ * SoObjects/Appointments/SOGoAppointmentFolder.m
+ ([-deleteEntriesWithIds:ids]): moved method into SOGoFolder.
+
+ * UI/Scheduler/UIxCalMainView.m ([-batchDeleteAction]): moved
+ method into UIxFolderActions.
+
+ * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
+ -fetchFreeBusyInfosFrom:_startDateto:_endDate]): fetch the
+ freebusy info from the "personal" calendar.
+
+ * UI/Common/UIxParentFolderActions.m ([UIxParentFolderActions
+ -createFolderAction]): new standardized method for requesting
+ folder creations among gcs-based modules.
+
+ * UI/Common/UIxParentFolderActions.[hm]: new action class module.
+
+ * SoObjects/Appointments/SOGoAppointmentFolders.m: new class
+ module, equivalent to the SOGoParentFolder's child
+ SOGoContactFolders, but for calendars.
+
+ * SoObjects/SOGo/SOGoObject.m ([SOGoObject -labelForKey:key]): new
+ method that returns translated strings for controller bundles
+ (same as what UIxComponent does for view bundles).
+ ([SOGoObject -pathArrayToSOGoObject]): new method that returns
+ the real path to a subscribed folder (if subscribed).
+ ([SOGoObject +globallyUniqueObjectId]): move method from SOGoFolder.
+ ([SOGoObject -globallyUniqueObjectId]): new instance method
+ calling its class equivalent.
+
+2007-09-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -defaultAction]): test
+ whether the user is logged in and if so, redirect to his/her
+ homepage.
+ ([SOGoRootPage -appendToResponse:inContext:]): removed useless
+ method.
+
+2007-09-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+ +folderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]):
+ new method.
+ ([SOGoFolder -displayName]): new method.
+ ([SOGoFolder -delete]): accept to proceed only if nameInContainer
+ != "personal".
+
+ * SoObjects/Contacts/SOGoContactLDAPFolder.m
+ ([SOGoContactLDAPFolder
+ +folderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]):
+ renamed from "contactFolderWithName..." for compatibility with SOGoFolder.
+
+ * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
+ +contactFolderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]):
+ removed method, reimplemented in SOGoFolder.
+ ([SOGoContactGCSFolder -displayName]): removed method,
+ reimplemented in SOGoFolder.
+ ([-delete]): removed method, modified in SOGoFolder.
+
+ * SoObjects/Contacts/SOGoContactFolders.[hm]: modified class to be
+ a subclass of SOGoParentFolder.
+
+ * SoObjects/SOGo/SOGoParentFolder.[hm]: new class module derived
+ from SOGoContactFolders and modified to be more content-independent.
+
+ * UI/MailerUI/UIxMailActions.m ([UIxMailActions -markMessageUnreadAction])
+ ([UIxMailActions -markMessageReadAction]): new methods moved from
+ UIxMailListView and adapted to invoke the client object directly,
+ since the previous versions had to to a lookup from the parent
+ SOGoMailFolder.
+
+ * UI/MailerUI/UIxMailListView.m ([-markMessageUnreadAction]): move
+ method into UIxMailActions.
+ ([-markMessageReadAction]): same as above.
+ ([-viewAction]): removed useless method.
+ ([-javaScriptOK]): removed useless method.
+ ([-isJavaScriptRequest]): removed useless method.
+ ([-lookupActiveMessage]): removed useless method.
+
+ * UI/Common/WODirectAction+SOGo.m ([WODirectAction
+ -responseWithStatus:status]): new method that returns a WOResponse
+ initialized with the specified status code.
+ ([WODirectAction -responseWith204]): new method that invokes the
+ above one with "204" as parameter.
+ ([WODirectAction -redirectToLocation:newLocation]): rewrote method
+ to make use of -responseWithStatus:.
+
+ * UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWith204]): new
+ method that returns a WOResponse initialized with the 204 status
+ code.
+
+ * UI/MailerUI/UIxMailListView.m ([UIxMailListView -sortedUIDs]):
+ always use a "not deleted" search qualifier along with the user
+ qualifier (if present).
+
2007-09-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
+ -contactSearchAction]): only return the records which have an
+ email set.
+
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
-trashInContext:_ctx]): no longer expunge the mailbox after
marking a message deleted.