+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
+ module which shows each selected user's calendar in a different
+ column instead of mixing their events together.
+
+ * UI/Scheduler/UIxCalView.m ([UIxCalView -redirectForUIDsAction]):
+ replaced use of [NSString stringByTrimmingWhiteSpaces] with
+ [NSString stringByTrimmingSpaces].
+
+ * UI/MailPartViewers/UIxMailPartICalViewer.m: request the key
+ "cnWithoutQuotes" instead of "cnForDisplay", which no longer
+ exists.
+
+ * UI/Scheduler/UIxCalDayOverview.m,
+ UI/Scheduler/UIxCalDayChartview.m,
+ UI/Scheduler/UIxCalDayListview.m,
+ UI/Scheduler/UIxCalWeekOverview.m,
+ UI/Scheduler/UIxCalWeekChartview.m,
+ UI/Scheduler/UIxCalWeekListview.m,
+ UI/Scheduler/UIxCalInlineMonthOverview.m,
+ UI/Scheduler/UIxCalYearOverview.m: removed unused modules.
+
+2007-02-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
+ -appendPersonalSourcesInContext:context]): release connectoin
+ channel when everything is done.
+
+ * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
+ -newAbAction]): new action method to crate a new contact folder
+ from the web UI.
+
+ * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -create]): new method
+ that requests the folder manager to create a folder table with the
+ specified type at the specified path. The type is taken from [self
+ folderType].
+
+ * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
+ -folderType]): implemented.
+
+ * SoObjects/Appointments/SOGoAppointmentFolder.m
+ ([SOGoAppointmentFolder -folderType]): implemented.
+
+ * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
+ -appendPersonalSourcesInContext:context]): we now fetch all
+ folders with type "Contact" that belong to the current user.
+ ([SOGoContactFolders -newFolderWithName:name]): new method to
+ create a new contact folder.
+
+ * UI/SOGoUI/UIxComponent.m ([UIxComponent -userFolderPath]): treat
+ resulting url with [NSString+Utilities hostlessURL] instead of
+ using NSURL. This is because the url in question sometimes has a
+ hostname and sometimes not. "hostlessURL" ensure the hostname is
+ removed anyway.
+ ([UIxComponent -applicationPath]): same as above.
+
+2007-02-08 Ludovic Marcotte <ludovic@inverse.ca>
+
+ * SoObjects/Mailer/SOGoMailFolder.m: priorize the lookup of
+ folders before doing the one on messages.
+
+2007-02-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/SOGo/NSArray+Utilities.m: added an implementation of
+ makeObjectsPerform:withObject:withObject: for GNUstep
+ compatibility.
+
+ * OGoContentStore/GNUmakefile, Protocols/common.make,
+ SoObjects/common.make, UI/common.make: install in
+ GNUSTEP_INSTALLATION_DIR instead of GNUSTEP_USER_DIR.
+
+2007-02-07 Ludovic Marcotte <ludovic@inverse.ca>
+
+ * UI/Scheduler/English.lproj/Localizable.strings: fixed typo for
+ "Agendas"
+
+2007-02-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/MailerUI/UIxMailTree.m ([UIxMailTree
+ -getTitle:folderType:andIcon:forObject:]): disabled Sieve folders
+ for the moment.
+
+ * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
+ -checkLogin:_loginpassword:_pwd]): fixed a bug where a wrong
+ password would be accepted anyway as long as its length was > 0.
+ This can be the case ONLY when LDAP is disabled otherwise we have
+ a serious security issue...
+
+ * SoObjects/Appointments/SOGoAppointmentObject.m
+ ([SOGoAppointmentObject -roleOfUser:logininContext:context]): if a
+ user is not an organizer nor a participant, he is declared as
+ "Owner" if he owns the calendar the entry where the entry is
+ contained. Other cases should not be possible.
+
+2007-02-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * UI/Contacts/UIxContactEditor.m: display and handle the new
+ Freebusy URL entry.
+
+ * SoObjects/Contacts/SOGoContactLDAPFolder.m
+ ([SOGoContactLDAPFolder -_searchAttributes]): retrieve "calFBURL"
+ from the server.
+
+ * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
+ -vCard]): put the LDAP "calFBURL" field in the vCard's "FBURL"
+ entry.
+
+2007-01-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/Appointments/SOGoCalendarComponent.m
+ ([SOGoCalendarComponent -sendEMailNotifications]): new method that
+ returns the value of ud "SOGoAppointmentSendEMailNotifications"
+ (iMIP/iTIP).
+ ([SOGoCalendarComponent
+ -sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]): method moved from SOGoAppointmentObject/SOGoTaskObject, replacing occurences of "appointment" to "object" in its name.
+